Add support for the air circulation feature - #163
Open
mathieuletyrant wants to merge 2 commits into
Open
Conversation
The Cozytouch app exposes an air circulation mode with a duration, none of which reached HA -- the three capabilities behind it were unmapped, so the feature simply did not exist in the integration. Identified by diffing the setupviewv2 payload before and after switching it on for 30 minutes from the app. All three rooms changed together: t=612413 102024 : 0 -> 1 on/off t=612419 102021 : 0 -> 30 duration, in minutes t=612424 102023 : 0 -> 30 remaining A second dump two minutes later separated the last two: 102021 stayed at 30 while 102023 had dropped to 28, so 102021 is the setpoint and 102023 counts down. Nothing else moved in either dump. 102025 and 102026 sit next to them at a static 15 and 300 and look like the bounds, so they are used as the number's range. That part is inferred rather than observed. The fan speed the app also offers is still unmapped: it was left untouched during both captures, so nothing in the payload identifies it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
This was referenced Aug 13, 2026
Completes the air circulation feature: 102004 is the speed the app calls "Vitesse de brassage". Isolated by changing only the speed between dumps. It read 2 while the app showed "Moyenne", moved to 3 on "Rapide" and to 1 on "Lente", on all three rooms at once, so it is exposed as a select over the model's speed list. The same captures confirm the bounds guessed in the previous commit: the app's duration picker runs from 00:15 to 05:00 in 15 minute steps, which is exactly the 15 and 300 sitting in 102025 and 102026. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
mathieuletyrant
force-pushed
the
air-circulation
branch
from
August 13, 2026 10:29
173df42 to
aae61e0
Compare
Author
|
Update: the last inferred value is now observed. |
Author
|
The bounds are no longer inferred. The capability list shared in #86 names them outright:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



The Cozytouch app exposes an air circulation mode — "Brassage d'air", described in the app as harmonising temperature and air quality between the rooms of the system — with a speed and a duration. None of it reached HA: the four capabilities behind it were unmapped, so the feature simply did not exist in the integration.
How they were identified
By diffing the raw
setupviewv2payload around each action in the app. Switching it on for 30 minutes moved three capabilities on all three of my rooms at once:A second dump two minutes later separated the last two:
102021stayed at 30 while102023had dropped to 28, so102021is the setpoint and102023counts down.A third capture changed only the speed.
102004read2while the app showed Moyenne and moved to3on Rapide, again on all three rooms, which identifies it as the speed.What this adds
selectswitchnumbersensorThe bounds are not guessed: the app's duration picker runs from
00:15to05:00in 15 minute steps, which is exactly the static15and300sitting in102025and102026next to the duration.Translations added for
enandfr, plusstrings.json.All three speeds observed
102004read2with the app showing Moyenne,3on Rapide and1on Lente, each time on all three rooms at once. Nothing in this mapping is inferred.Independent of #160, #161 and #162 — it touches
capability.pyonly in newelifbranches.🤖 Generated with Claude Code