Skip to content

feat: add V1 product nicknames from the Roborock app - #1046

Open
infy1995 wants to merge 3 commits into
Python-roborock:mainfrom
infy1995:feat/v1-product-nicknames
Open

infy1995 wants to merge 3 commits into
Python-roborock:mainfrom
infy1995:feat/v1-product-nicknames

Conversation

@infy1995

@infy1995 infy1995 commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Part of #738 (dock controls): the per-model option lists need these product nicknames.

Adds the V1 vacuum product nicknames that the Roborock app knows but RoborockProductNickname lacked, with the base product features the app gives them. Today these models fall back to PEARLPLUS, so they get Qrevo MaxV product features.

The data comes from the model config module of the current V1 app plugins, where each product is created with createDeviceModelConfig({product, shortModels, features, inheritedConfig, remake, ...}). Applying the app's merge rules (inherited features, defaults with the same exclusion lists as PRODUCTS_WITHOUT_*, the remake filter) reproduces the library's existing entries, and the new entries are derived the same way.

New nicknames

Nickname Short models Base features
BERYLLITE, BERYL, BERYLS, BERYLE, BERYLC, CRAG a244/a245, a120/a121, a306/a307, a311/a312, a327/a328, a390/a391 BERYL_FEATURES (Max+, RGB camera)
BERYLCE a388, a389 Max+, AI pet, single-line camera
VIVIANSPROC, VIDA, VIDAS, CORALPROSAW a297/a298, a295/a296, a373/a376, a287/a288 VIVIANSPROC_FEATURES (Max+, RGB camera, spin mop)
VIVIANF, VIVIANS, VIVIANSC, VIVIANSPRO, HERA, PANDORA, PEARLFPRO, CORALPROS, R50 a182, a184/a185, a196/a197, a225/a226, a224/a249, a243/a250, a216/a217, a219/a220, a157/a179 PEARL_PLUS_FEATURES
PEARLCLITE, PEARLEH, QUINN, QUINNE, QUINNS, VIVIANSPROE a198/a199/a205, a325/a326, a293/a294, a358/a359, a404/a405, a374/a375 PEARL_FEATURES
VERDELITES a278, a279 Max+, RGB camera, shake mop
TALCSC a360, a361 electronic mop

Existing nicknames also get the short models the app lists for them: VIVIANC + a186, a187, a209, a210, a246; CORALPRO + a231, a232, a236, a308.

None of the new products joins a PRODUCTS_WITHOUT_* set. Existing nicknames keep exactly their features: the first commit adds a per-nickname snapshot of PRODUCT_FEATURE_MAP generated on main, and those entries do not change. PEARLELITE (a169/a170) keeps its name; newer app versions call it PearlEPro, with the same features.

Roller-mop models

The Beryl products (e.g. P30 Pro a306, Saros 20 Flow a307, Qrevo Curv 2 Flow a245) use a roller mop and have no mop-module product feature. The app enables water modes for them through the roller-mop capability, and its custom-mode check treats the roller mop like a shake or spin module. is_support_water_mode and is_customized_clean_supported now also follow is_roller_mop_supported, as is_clean_route_setting_supported already does.

Behaviour changes

Models that used to fall back to PEARLPLUS now get their own features:

  • All new products except those with PEARL_PLUS_FEATURES (and the VivianC extras) no longer report is_new_remote_view_supported; the app does not give them Remote_Back.
  • VERDELITES (Saros 20 Sonic) gets the shake module, so its water modes are named mild / standard / intense instead of low / medium / high (same codes).
  • TALCSC loses Max+ suction and obstacle photos (no camera).
  • Beryl products that do not report the roller-mop bit get no water modes.

The only existing test sample affected is the P30 Pro (a306): is_new_remote_view_supported True -> False. Device features are cached, so existing installs keep their old values until the cache is rebuilt; recomputing them from the cached raw flags could be a follow-up.

The app differs from three existing entries, left unchanged here: TOPAZSPOWER (remote_back), TANOSSPLUS (map3d) and ULTRONSE (no electronic mop or pure clean mop). Happy to follow up separately.

Overlap with open PRs

Happy to rebase on any of them.

Test plan

  • uv run pre-commit run --all-files
  • uv run pytest
  • New tests: per-nickname PRODUCT_FEATURE_MAP snapshot, short model to nickname table, short-model uniqueness, product_nickname fallback, roller-mop water mode and custom clean.

@infy1995 infy1995 mentioned this pull request Nov 14, 2026
9 tasks

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant