我将 0x3c00 和 0xb400 作为次。
>>> struct.pack("<h",60).hex() # 1 hours
'3c00'
>>> struct.pack("<h",180).hex() # 3 hours
'b400'
>>> struct.pack("<h",720).hex() # 12 hours
'd002'
>>> struct.pack("<h",1440).hex() # 24 hours
'a005'
假设数据都是小端的。我怀疑时间的 2 次重复在特定范围内(例如一天中下午 5 点到早上 8 点之间)的报告数据中扮演了一些角色。
我想我已经找到了学位。我将 f40114 换成了 Bits。我认为这是子字节格式。
ACTION PAYLOAD
INCREASE_BY_5_IN_ONE_HOUR Value: 01 |f40114| 3c00 3c00 01 | 111 101 00 00000001 00010100 | 3c00 3c00
DECREASE_BY_5_IN_ONE_HOUR Value: 00 |f40114| 3c00 3c00 00 | 111 101 00 00000001 00010100 | 3c00 3c00
INCREASE_BY_3_IN_ONE_HOUR Value: 01 |2c010a| 3c00 3c00 01 | 001 011 00 00000001 00001010 | 3c00 3c00
DECREASE_BY_3_IN_ONE_HOUR Value: 00 |2c010a| 3c00 3c00 00 | 001 011 00 00000001 00001010 | 3c00 3c00
INCREASE_BY_1_IN_3_HOURS Value: 01 |640014| b400 b400 01 | 011 001 00 00000000 00010100 | b400 b400
DECREASE_BY_1_IN_3_HOURS Value: 00 |640014| b400 b400 00 | 011 001 00 00000000 00010100 | b400 b400
^^^Degrees ^^^^Minutes
所以在Ensto 网站上挖掘一些有用的东西......首先,欧洲产品,所以也许我们可以假设单位是摄氏度(至少对于这个数据集)。Extremely accurate (+/-0.1°C) and completely silent intelligent thermostat
告诉我们精度。The new Beta heaters are equipped with smart electronic thermostats (for 5–30 °C) that can be controlled manually or with Ensto’s Heat Control application (for Android and iOS)
告诉我们范围。就单位而言,这是 50 到 300……这是 250 个离散值,这意味着我们可能只有一个字节来表示温度。如果 OP 可以告诉我们采集这些样本时的温度,我们就可以查看消息中是否包含温度。