Let the on/off switch on a wide tile switch, instead of sending the opposite of what it shows (0.2.86)
A tap on the On/off switch of a wide or full-page tile moved the knob to on and back, and the light stayed off. Since firmware 0.2.59 control_event drew the new position first (Tile::optimistic writes it into state) and then asked key_action for the action, which read that new position: an off light got light.turn_off, an on light light.turn_on. A tap on the tile itself was never affected. tile_controls::press_key chooses the action first and then shows the new position; control_event uses it. Unit tests cover a light, a fan, a sensor and a cover key. Checked with tools/check.sh (471 Python tests, 19/19 C++) and compiled for both boards: CYD 1,677,504 B (91.4 %, +16 B), Guition 2,054,640 B (25.3 %). On Max's Guition Wallbox (OTA from this branch) every tap on the switch sent the right action and Home Assistant's logbook followed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2872,8 +2872,7 @@ inline void control_event(lv_event_t *e) {
|
||||
return;
|
||||
}
|
||||
if(t.waiting(now))return;
|
||||
if(command==tile_controls::TOGGLE)t.optimistic(t.state!="on");
|
||||
auto a=tile_controls::key_action(t,command,w.key_args[n]);
|
||||
auto a=tile_controls::press_key(t,command,w.key_args[n]);
|
||||
if(a.valid())action(a.service,t.entity,a.key,a.value);
|
||||
}
|
||||
// A busy card is covered by a translucent white sheet with a small spinner until
|
||||
|
||||
Reference in New Issue
Block a user