Open rooi opened 6 years ago
Unfortunately I’ve not spent too much of my (limited) time on that. It seems that there is a fixed number of possible schedule change per day, those not used are set to 0xFF, and then this pattern is repeated for the 7 days. You may try changing the data that I passed you and see what happens. This is apparently to read schedule from the accessory. It is completely unclear how to write it, though.
Evo app writes the schedule, the thermo is supposed to implement and respond with the same data if successful.
I'm not into it a lot because the app won't let you program individual days, anyway Evo app sends "ff04f6" for schedule off and "001301f4241a24fc360e1f0112fa2472ffffffffffff2472ffffffffffff2472ffffffffffff2472ffffffffffff2472ffffffffffff2472ffffffffffff2472ffffffffffff1a2472ffffffffffff" for "basement" setting.
Consider that bytes 8-13 are T&D so they change at each request.
so Eve writes on 12C and the Accessory answers with the current schedule on 12F (i.e. that in its memory if Eve sent OFF schedule, or the one Eve's just sent for an active schedule)?
Yes
Some information about the Thermo schedule:
Custom characteristics E863F12F
(ProgramData), E863F12C
(ProgramCommand) are used to handle data transfer between Eve App and the accessory. The App writes to E863F12C
(ProgramCommand) and the accessory answers with E863F12F
(ProgramData).
A typical command for setting up the default bathroom schedule is:
001301f426262efc370b1b0b131a2a426c84fffffffffa1e336c7effffffff1e336c7effffffff1e336c7effffffff1e336c7effffffff1e336c7effffffff2a426c84ffffffff2a426c84ffffffff06
This command is divided into several single commands, starting with an OpCode and followed by some bytes (length depends on the OpCode).
In this case:
00
: Maybe indication that this is a set command? (In other cases there is also FF
as start byte)13 01
: Enable schedule (01: enable, 00: disable)f4 26262e
: Temperature levels (NOW,LOW,HIGH) in 0.5°C steps (0x26=38, 38*0.5=19°C, 0x2e=46, 46*0.5=23°C), (0x80 for invalid, e.g. for NOW-temp when schedule is disabled)fc 370b1b0b13
: Date and Time (mmhhDDMMYY: 55 11 27 11 19 = "27.11.20 11:55")1a 2a426c84ffffffff
: Program for free dayfa 1e336c7effffffff 1e336c7effffffff 1e336c7effffffff 1e336c7effffffff 1e336c7effffffff 2a426c84ffffffff 2a426c84ffffffff
: Program for week (MO, TU, WE, DO, FR, SA, SU)06
: Maybe indication for end of command?Each program (8 byte section) contains the individual switching times in 10-minute steps. For example 1e336c7effffffff
means:
1e
: 0x1e=30, 30*10min = 300min = 05:00 Start33
: 0x33=51, 51*10min = 510min = 08:00 End6c
: 0x6c=108, 108*10min = 1080min = 18:00 Start7e
: 0x7e=126, 126*10min = 1260min = 21:00 Endff
: no valueOther commands:
00 1301 06
/00 1300 06
ff04 f6
is triggered (maybe an announcement for following get-request?)ff00 f22076
?00 11 ff00 f22076
(11
is the relevant byte)00 12e7 f480262e
12 e7
: 0xe7 = -25 (Two's complement), -25*0.1 = -2.5°Cf4 80262e
: Temperature levels (see above)00 190122 06 7f
/ 00 1900ff 06 7f
19 XX TT
: XX=01(enable), XX=00(disable), TT=vacationTemperature (0x22=34, 34*0.5 = 17°C)00 10
???Status value in ProgramData:
The current status must be reflected in E863F12F
(ProgramData), but without the leading 00
(!) and some small discrepancies. The NOTIFY event is not used to send data back to the App. Eve App is using GET request right after the SET request to read back data.
A typical status value for for a disabled default schedule could be:
12e7130014c01900fffc2c0c1b0b13f41010222af60000001a24366684fffffffffa24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff
In this case:
12 e7
: Actual temperature offset: -25*0.1 = -2.5°C13 00
: 00 = Schedule disabled14 c0
: OpCode 0x14 has anything to do with the installation page (value C0 results in a green checkmark, 0xC1-0xC7 for other steps)19 00ff
: vacation mode (00=disabled, ff=invalid(temperature))fc 2c0c1b0b13
: Date and Time (see above)f4 2222222a
: Temperature levels (Attention: In status we need 4(!) data bytes. First 2 bytes unclear (no effect?), last 2 bytes: low and high temperature)f6 000000
: Open Window detection (00????
: ok, 10????
: open Window detected)1a 24366684ffffffff
: Program for free dayfa 24366684ffffffff 24366684ffffffff 24366684ffffffff 24366684ffffffff 24366684ffffffff 24366684ffffffff 24366684ffffffff
: Program for weekOther status values:
17 040a
: ??? (seen in someones dumps?)F3 XXXXXXXX
: ???I added a Pull Request: #80
@tobekas did you get anywhere with finding how to set the valve protection from Status value in ProgramData?? Seems just returning "1101" doesn't show an enabled setting for it and invalidates the remaining entires in the string
Hm, it was a while ago… but no. Sorry. Could not find out what to return for valve protection etc.
Hi,
Any chance you’re able to decode the thermo schedule format? I’ve included the data from your example and it show nice schedules for regular, bathroom and basement. It would be nice to add honeywell evohome’s schedule in there.
Thx!