|
Home IO Control
ESPHome add-on for IO-Homecontrol devices
|
Status: Accepted ยท Recorded: 2026-08
After a command, the hub polls a device until it reports a stable state. Two sources have an opinion about how soon to poll again: many devices report a settle hint in their status reply, and the user may configure a poll interval per entity.
They disagree constantly, and each has a legitimate claim. The device knows how long its own movement takes. The user knows how much radio traffic they are willing to spend โ the single radio is shared with everything else the hub does (ADR 0013), so polling too eagerly directly delays other commands.
The follow-up delay is min(device hint, configured interval) โ the device may shorten the user's interval, never extend it. The configured interval is a ceiling on the cadence, not a target.
Three rules fall out of that:
flowchart LR
I{"status_poll_interval<br/>configured?"}
D1["configured interval"]
D2["short fixed fallback"]
M["clamp to the<br/>device hint<br/><i>if one was sent</i>"]
K["clamp to ~1 s<br/><i>if this was a STOP</i>"]
R(["final delay"])
I -->|yes| D1
I -->|no| D2
D1 --> M
D2 --> M
M --> K --> R
classDef start stroke:#2d6a4f,stroke-width:3px
classDef clamp stroke:#5c6785,stroke-width:3px
class D1,D2 start
class M,K clamp
Read left to right: a starting point, then two clamps. Both clamps use min, so every stage can only reduce the delay โ there is no path on which a device's hint makes the interval longer than the user configured.
Resolving the delay is a pure function of those three inputs, testable directly per ADR 0005.
Recorded: 2026-10. The device's value is its remaining travel time in seconds, bytes 6-7 (big-endian) of the 0x04 answer to a status poll, the field order of the "main info" status answer in the public VELUX KLF 200 API. The hub reads it only from status-poll replies, because the reply to a command uses those bytes for other data (a Somfy Izymo acknowledges an EXECUTE with 06 00 there). The delay is the remaining time plus one second. A count of 0 in a report that says moving, from a device that has sent a count before, means the device is about to stop: the next poll comes after about one second (issue #178). The decision above is unchanged: the value only ever shortens the delay.