ramses-rf 0.51.6__tar.gz → 0.51.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.pre-commit-config.yaml +4 -4
  2. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/PKG-INFO +1 -1
  3. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/README-developers.md +11 -2
  4. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/helpers.py +1 -1
  5. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/version.py +1 -1
  6. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/helpers.py +4 -7
  7. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/logger.py +0 -27
  8. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/parsers.py +21 -19
  9. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/transport.py +44 -3
  10. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/version.py +1 -1
  11. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/requirements_dev.txt +1 -1
  12. ramses_rf-0.51.7/tests/tests/devices/device_02.log +12 -0
  13. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/10e0_xxxx.log +19 -16
  14. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMN-15LF01.log +2 -1
  15. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/37_VMI-15MC01log +1 -0
  16. ramses_rf-0.51.7/tests/tests/parsers/code_0008.log +3 -0
  17. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22d0.log +3 -0
  18. ramses_rf-0.51.7/tests/tests/parsers/code_22f3.log +24 -0
  19. ramses_rf-0.51.7/tests/tests/parsers/code_30c9.log +16 -0
  20. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3150.log +3 -0
  21. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_31da.log +4 -4
  22. ramses_rf-0.51.6/tests/tests/devices/device_02.log +0 -7
  23. ramses_rf-0.51.6/tests/tests/parsers/code_22f3.log +0 -17
  24. ramses_rf-0.51.6/tests/tests/parsers/code_30c9.log +0 -14
  25. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  26. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.github/dependabot.yml +0 -0
  27. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.github/workflows/check-lint.yml +0 -0
  28. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.github/workflows/check-test.yml +0 -0
  29. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.github/workflows/check-type.yml +0 -0
  30. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.github/workflows/publish-hatch.yml +0 -0
  31. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/.gitignore +0 -0
  32. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/LICENSE +0 -0
  33. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/README.md +0 -0
  34. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/client.py +0 -0
  35. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/misc/fingerprints.log +0 -0
  36. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/misc/ser2net.yaml +0 -0
  37. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/misc/ti_3410/notes.sh +0 -0
  38. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/misc/ti_3410/ti_3410.fw +0 -0
  39. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/pyproject.toml +0 -0
  40. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_cli/__init__.py +0 -0
  41. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_cli/client.py +0 -0
  42. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_cli/debug.py +0 -0
  43. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_cli/discovery.py +0 -0
  44. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_cli/utils/cat_slow.py +0 -0
  45. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_cli/utils/convert.py +0 -0
  46. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/__init__.py +0 -0
  47. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/binding_fsm.py +0 -0
  48. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/const.py +0 -0
  49. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/database.py +0 -0
  50. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/device/__init__.py +0 -0
  51. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/device/base.py +0 -0
  52. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/device/heat.py +0 -0
  53. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/device/hvac.py +0 -0
  54. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/dispatcher.py +0 -0
  55. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/entity_base.py +0 -0
  56. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/exceptions.py +0 -0
  57. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/gateway.py +0 -0
  58. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/py.typed +0 -0
  59. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/schemas.py +0 -0
  60. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/system/__init__.py +0 -0
  61. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/system/faultlog.py +0 -0
  62. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/system/heat.py +0 -0
  63. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/system/schedule.py +0 -0
  64. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_rf/system/zones.py +0 -0
  65. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/__init__.py +0 -0
  66. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/address.py +0 -0
  67. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/command.py +0 -0
  68. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/const.py +0 -0
  69. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/exceptions.py +0 -0
  70. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/fingerprints.py +0 -0
  71. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/frame.py +0 -0
  72. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/gateway.py +0 -0
  73. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/message.py +0 -0
  74. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/opentherm.py +0 -0
  75. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/packet.py +0 -0
  76. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/protocol.py +0 -0
  77. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/protocol_fsm.py +0 -0
  78. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/py.typed +0 -0
  79. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/ramses.py +0 -0
  80. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/schemas.py +0 -0
  81. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/typed_dicts.py +0 -0
  82. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/ramses_tx/typing.py +0 -0
  83. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/requirements.txt +0 -0
  84. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/_test_apis_mock.py +0 -0
  85. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/_test_mock_faultlog.py +0 -0
  86. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/_test_mock_schedule.py +0 -0
  87. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/_test_packets_bad.py +0 -0
  88. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/_test_performance_WIP.py +0 -0
  89. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/_test_state_mgt.py +0 -0
  90. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/common.py +0 -0
  91. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/mocked_devices/__init__.py +0 -0
  92. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/mocked_devices/command.py +0 -0
  93. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/mocked_devices/const.py +0 -0
  94. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/mocked_devices/device_heat.py +0 -0
  95. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/mocked_devices/device_hvac.py +0 -0
  96. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/deprecated/mocked_devices/transport.py +0 -0
  97. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/__init__.py +0 -0
  98. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/heat/ctl_bdr_91t.log +0 -0
  99. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/heat/dts_ctl_sensor.log +0 -0
  100. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/heat/hcw_ctl_sensor.log +0 -0
  101. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/heat/rnd_ctl_sensor.log +0 -0
  102. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/heat/rnd_ctl_sensor.yaml +0 -0
  103. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/heat/trv_ctl.log +0 -0
  104. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/co2_fan_itho.json +0 -0
  105. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/co2_fan_itho.log +0 -0
  106. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/co2_fan_itho.yaml +0 -0
  107. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/dis_fan_orcon.json +0 -0
  108. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/dis_fan_orcon.log +0 -0
  109. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/rem_fan_climarad.log +0 -0
  110. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/rem_fan_nuaire.json +0 -0
  111. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/rem_fan_nuaire.log +0 -0
  112. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/rem_fan_nuaire.yaml +0 -0
  113. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/rem_fan_vasco.log +0 -0
  114. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/bindings/hvac/rem_fan_ventura.log +0 -0
  115. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/devices/device_04.log +0 -0
  116. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/devices/device_10.log +0 -0
  117. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/devices/device_13.log +0 -0
  118. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/devices/device_22.log +0 -0
  119. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_off.json +0 -0
  120. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_on.json +0 -0
  121. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_dev_class/hvac/packet.log +0 -0
  122. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_trv_actuator_long/packet.log +0 -0
  123. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_off.json +0 -0
  124. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_on.json +0 -0
  125. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/packet.log +0 -0
  126. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_off.json +0 -0
  127. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_on.json +0 -0
  128. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_ufh_circuits/packet.log +0 -0
  129. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_off.json +0 -0
  130. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_on.json +0 -0
  131. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/app_cntrl/packet.log +0 -0
  132. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_off.json +0 -0
  133. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_on.json +0 -0
  134. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/trv_actuators/packet.log +0 -0
  135. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_off.json +0 -0
  136. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_on.json +0 -0
  137. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_000/packet.log +0 -0
  138. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_off.json +0 -0
  139. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_on.json +0 -0
  140. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_001/packet.log +0 -0
  141. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_off.json +0 -0
  142. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_on.json +0 -0
  143. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_002/packet.log +0 -0
  144. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_off.json +0 -0
  145. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_on.json +0 -0
  146. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_003/packet.log +0 -0
  147. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_off.json +0 -0
  148. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_on.json +0 -0
  149. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_004/packet.log +0 -0
  150. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_off.json +0 -0
  151. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_on.json +0 -0
  152. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/_gather.sh +0 -0
  153. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/01_EvoTouch_Colour.log +0 -0
  154. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/01_Evo_Color.log +0 -0
  155. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/01_IONA_RAI_Prototype.log +0 -0
  156. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/02_HCE80_V3.10_061117..log +0 -0
  157. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/04_HR92 Radiator Ctrl_.log +0 -0
  158. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/08_Jasper_EIM.log +0 -0
  159. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/10_R8810A_Bridge.log +0 -0
  160. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/10_R8820.log +0 -0
  161. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/30_Internet_Gateway.log +0 -0
  162. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/31_Jasper_Stat_TXXX.log +0 -0
  163. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/heat/34_T87RF2025.log +0 -0
  164. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/18_BRDG-02A55.log +0 -0
  165. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/18_HRA82.log +0 -0
  166. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/20.log +0 -0
  167. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/21_CCU-12T20.log +0 -0
  168. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMC-07RP01.log +0 -0
  169. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMC-15RP01.log +0 -0
  170. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMC-17RP01.log +0 -0
  171. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMN-07LM01.log +0 -0
  172. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMN-17LMP01.log +0 -0
  173. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMS-15C16.log +0 -0
  174. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/29_VMS-17HB01.log +0 -0
  175. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/30_BRDG-02EM23.log +0 -0
  176. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/30_BRDG-02JAS01.log +0 -0
  177. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMC-15RPS34.log +0 -0
  178. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMD-15RMS64.log +0 -0
  179. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMD-15RMS86.log +0 -0
  180. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMD-17RPS01.log +0 -0
  181. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMN-23LM33.log +0 -0
  182. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMN-23LMH23.log +0 -0
  183. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMS-15CM17.log +0 -0
  184. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMS-23C33.log +0 -0
  185. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMS-23HB33.log +0 -0
  186. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/32_VMZ-15V13.log +0 -0
  187. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/37_VMD-07RPS13.log +0 -0
  188. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/37_VMI-15WSJ53.log +0 -0
  189. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/37_VMS-02J52.log +0 -0
  190. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/37_VMS-12C39.log +0 -0
  191. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/99_CVE-RF.log +0 -0
  192. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/fingerprints/hvac/99_VMS-17C01.log +0 -0
  193. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/helpers.py +0 -0
  194. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/logger/packet_in.log +0 -0
  195. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/logger/packet_out.log +0 -0
  196. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/logs/pkts_bad_000.log +0 -0
  197. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/logs/pkts_tba_000.log +0 -0
  198. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/logs/system_cache.json +0 -0
  199. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parser_helpers/pkt_addr_set.log +0 -0
  200. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parser_helpers/pkt_dev_class.log +0 -0
  201. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0001_wip.log +0 -0
  202. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0002.log +0 -0
  203. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0004_wip.log +0 -0
  204. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0005.log +0 -0
  205. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0006.log +0 -0
  206. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0009.log +0 -0
  207. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_000a.log +0 -0
  208. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_000c.log +0 -0
  209. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_000e.log +0 -0
  210. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_01ff_wip.log +0 -0
  211. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_0418.log +0 -0
  212. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_042f.log +0 -0
  213. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1030.log +0 -0
  214. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1060.log +0 -0
  215. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_10d0.log +0 -0
  216. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_10e0.log +0 -0
  217. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1260.log +0 -0
  218. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1298.log +0 -0
  219. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_12a0.log +0 -0
  220. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_12c0.log +0 -0
  221. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1300.log +0 -0
  222. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1f09.log +0 -0
  223. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1fc9.log +0 -0
  224. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_1fd4.log +0 -0
  225. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_2210.log +0 -0
  226. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22c9.log +0 -0
  227. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22d9.log +0 -0
  228. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22e0.log +0 -0
  229. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22e5.log +0 -0
  230. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22e9.log +0 -0
  231. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22f1.log +0 -0
  232. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22f2.log +0 -0
  233. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22f4.log +0 -0
  234. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_22f7.log +0 -0
  235. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_2309.log +0 -0
  236. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_2349.log +0 -0
  237. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_2411_wip.log +0 -0
  238. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_2e04.log +0 -0
  239. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_2e10_wip.log +0 -0
  240. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3110_wip.log +0 -0
  241. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3120.log +0 -0
  242. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_313e_wip.log +0 -0
  243. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_31d9.log +0 -0
  244. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3200.log +0 -0
  245. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3210.log +0 -0
  246. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3220.log +0 -0
  247. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3222.log +0 -0
  248. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3ef0_wip.log +0 -0
  249. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_3ef1_wip.log +0 -0
  250. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_4e01.log +0 -0
  251. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_4e02.log +0 -0
  252. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_4e04.log +0 -0
  253. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/parsers/code_4e15.log +0 -0
  254. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schedules/_sched_002/packet.log +0 -0
  255. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schedules/_sched_002/schedule.json +0 -0
  256. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schedules/sched_001/packet.log +0 -0
  257. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schedules/sched_001/schedule.json +0 -0
  258. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schedules/sched_dhw/packet.log +0 -0
  259. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schedules/sched_dhw/schedule.json +0 -0
  260. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_100.json +0 -0
  261. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_101.json +0 -0
  262. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_102.json +0 -0
  263. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_103.json +0 -0
  264. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_104.json +0 -0
  265. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_105.json +0 -0
  266. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/jsn_files/schema_108.json +0 -0
  267. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_000.json +0 -0
  268. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_000.log +0 -0
  269. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_001.json +0 -0
  270. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_001.log +0 -0
  271. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_002.json +0 -0
  272. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_002.log +0 -0
  273. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_010.json +0 -0
  274. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_010.log +0 -0
  275. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_011.json +0 -0
  276. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_011.log +0 -0
  277. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_012.json +0 -0
  278. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_012.log +0 -0
  279. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_013.json +0 -0
  280. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_013.log +0 -0
  281. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_014.json +0 -0
  282. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_014.log +0 -0
  283. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_300.json +0 -0
  284. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_300.log +0 -0
  285. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_301.json +0 -0
  286. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_301.log +0 -0
  287. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_302.json +0 -0
  288. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_302.log +0 -0
  289. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_303.json +0 -0
  290. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_303.log +0 -0
  291. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_304.json +0 -0
  292. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_304.log +0 -0
  293. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_310.json +0 -0
  294. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/schemas/log_files/schema_310.log +0 -0
  295. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_heat_trv_00/config.json +0 -0
  296. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_heat_trv_00/packet.log +0 -0
  297. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_heat_trv_00/schema.json +0 -0
  298. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_hvac_nuaire/config.json +0 -0
  299. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_hvac_nuaire/known_list.json +0 -0
  300. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_hvac_nuaire/packet.log +0 -0
  301. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_hvac_nuaire/schema.json +0 -0
  302. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/_hvac_nuaire/status.json +0 -0
  303. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_otb_00/config.json +0 -0
  304. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_otb_00/packet.log +0 -0
  305. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_otb_00/schema.json +0 -0
  306. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_simple/packet.log +0 -0
  307. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_simple/schema.json +0 -0
  308. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_ufc_00/config.json +0 -0
  309. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_ufc_00/packet.log +0 -0
  310. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_ufc_01/packet.log +0 -0
  311. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_zxdavb/config.json +0 -0
  312. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_zxdavb/known_list.json +0 -0
  313. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_zxdavb/packet.log +0 -0
  314. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/systems/heat_zxdavb/schema.json +0 -0
  315. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_api_faultlog.py +0 -0
  316. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_api_schedule.py +0 -0
  317. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_apis_binding.py +0 -0
  318. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_apis_common.py +0 -0
  319. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_apis_heat.py +0 -0
  320. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_apis_hvac.py +0 -0
  321. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_cli_utility.py +0 -0
  322. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_devices.py +0 -0
  323. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_eavesdrop_dev_class.py +0 -0
  324. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_eavesdrop_schema.py +0 -0
  325. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_helpers.py +0 -0
  326. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_parser_helpers.py +0 -0
  327. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_parsers.py +0 -0
  328. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_ramses_schema.py +0 -0
  329. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_schema_bits.py +0 -0
  330. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_schemas.py +0 -0
  331. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_systems.py +0 -0
  332. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests/test_vol_schemas.py +0 -0
  333. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/__init__.py +0 -0
  334. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/configs/config_heat.json +0 -0
  335. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/configs/config_hvac.json +0 -0
  336. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/conftest.py +0 -0
  337. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/logs/test_api_faultlog.log +0 -0
  338. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_api_faultlog.py +0 -0
  339. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_api_schedule.py +0 -0
  340. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_binding_fsm.py +0 -0
  341. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_create_stack.py +0 -0
  342. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_hgi_behaviors.py +0 -0
  343. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_protocol_fsm.py +0 -0
  344. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_use_regex.py +0 -0
  345. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/test_virt_network.py +0 -0
  346. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/virtual_rf/__init__.py +0 -0
  347. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/virtual_rf/const.py +0 -0
  348. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/virtual_rf/helpers.py +0 -0
  349. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_rf/virtual_rf/virtual_rf.py +0 -0
  350. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_tx/__init__.py +0 -0
  351. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/tests_tx/test_command.py +0 -0
  352. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/wip/_test_eavesdrop_dhw_sensor.py +0 -0
  353. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/wip/_test_eavesdrop_htg_control.py +0 -0
  354. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/wip/_test_eavesdrop_ufc_circuits.py +0 -0
  355. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/wip/_test_eavesdrop_zone_sensors.py +0 -0
  356. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/wip/_test_eavesdrop_zone_type.py +0 -0
  357. {ramses_rf-0.51.6 → ramses_rf-0.51.7}/tests/wip/test_wip_cli.sh +0 -0
@@ -3,9 +3,9 @@ exclude: ^(.secrets|docs|misc|tests/deprecated)/
3
3
 
4
4
  repos:
5
5
  - repo: https://github.com/astral-sh/ruff-pre-commit
6
- rev: v0.8.1
6
+ rev: v0.13.0
7
7
  hooks:
8
- - id: ruff # linter
8
+ - id: ruff-check # linter
9
9
  - id: ruff-format # formatter
10
10
 
11
11
  - repo: https://github.com/cdce8p/python-typing-update
@@ -24,7 +24,7 @@ repos:
24
24
  files: ^(src|tests)/.+\.py$
25
25
 
26
26
  - repo: https://github.com/codespell-project/codespell
27
- rev: v2.3.0
27
+ rev: v2.4.1
28
28
  hooks:
29
29
  - id: codespell
30
30
  args:
@@ -35,7 +35,7 @@ repos:
35
35
  exclude: ^(tests/.+/fixtures|tests/.+/snapshots)/
36
36
 
37
37
  - repo: https://github.com/pre-commit/pre-commit-hooks
38
- rev: v5.0.0
38
+ rev: v6.0.0
39
39
  hooks:
40
40
  - id: check-executables-have-shebangs
41
41
  # id: check-json # don't enable this one
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ramses_rf
3
- Version: 0.51.6
3
+ Version: 0.51.7
4
4
  Summary: A stateful RAMSES-II protocol decoder & analyser.
5
5
  Project-URL: Homepage, https://github.com/ramses-rf/ramses_rf
6
6
  Project-URL: Bug Tracker, https://github.com/ramses-rf/ramses_rf/issues
@@ -48,7 +48,12 @@ pip install -r requirements_dev.txt
48
48
  Repeat this after a release update and also when dev_requirements change in master.
49
49
 
50
50
  ### Install pre-commit hook
51
- Install the repo's pre-commit hook
51
+ First, verify the installed pre-commit version (compare to requirements_dev.txt):
52
+ ```
53
+ pre-commit --version
54
+ ```
55
+
56
+ Install the repo's pre-commit hook:
52
57
  ```
53
58
  pre-commit install
54
59
  ```
@@ -56,5 +61,9 @@ pre-commit install
56
61
  Running `pre-commit run` will only check staged files before a commit, while
57
62
  `pre-commit run -a` will check all files.
58
63
 
64
+ Your IDE should automatically activate the pre-commit check when you try to commit.
65
+ The rules for pre-commit are in git in `.pre-commit-config.yaml`.
66
+ Check [issue 170](https://github.com/ramses-rf/ramses_rf/issues/170) when you run into troubles here.
67
+
59
68
  ## More
60
- For more hints, see the [How to submit a PR wiki page](https://github.com/ramses-rf/ramses_rf/wiki/How-to-submit-a-PR)
69
+ For more hints, see the [How to submit a PR wiki page](https://github.com/ramses-rf/ramses_cc/wiki/7.-How-to-submit-a-PR)
@@ -67,7 +67,7 @@ def shrink(
67
67
  """Return a minimized dict, after removing all the meaningless items.
68
68
 
69
69
  Specifically, removes items with:
70
- - uwanted keys (starting with '_')
70
+ - unwanted keys (starting with '_')
71
71
  - falsey values
72
72
  """
73
73
 
@@ -1,4 +1,4 @@
1
1
  """RAMSES RF - a RAMSES-II protocol decoder & analyser (application layer)."""
2
2
 
3
- __version__ = "0.51.6"
3
+ __version__ = "0.51.7"
4
4
  VERSION = __version__
@@ -470,7 +470,7 @@ def parse_valve_demand(
470
470
  if int(value, 16) & 0xF0 == 0xF0:
471
471
  return _faulted_device(SZ_HEAT_DEMAND, value)
472
472
 
473
- result = int(value, 16) / 200 # c.f. hex_to_percentage
473
+ result = int(value, 16) / 200 # c.f. hex_to_percent
474
474
  if result == 1.01: # HACK - does it mean maximum?
475
475
  result = 1.0
476
476
  elif result > 1.0:
@@ -606,12 +606,9 @@ def _parse_hvac_humidity(
606
606
  if int(value, 16) & 0xF0 == 0xF0:
607
607
  return _faulted_sensor(param_name, value)
608
608
 
609
- percentage = int(value, 16) / 100 # TODO: confirm not 200
610
- assert percentage <= 1.0, value # TODO: raise exception if > 1.0?
609
+ percentage = hex_to_percent(value, False) # TODO: confirm not /200
611
610
 
612
- result: dict[str, float | str | None] = {
613
- param_name: percentage
614
- } # was: percent_from_hex(value, high_res=False)
611
+ result: dict[str, float | str | None] = {param_name: percentage}
615
612
  if temp:
616
613
  result |= {SZ_TEMPERATURE: hex_to_temp(temp)}
617
614
  if dewpoint:
@@ -881,7 +878,7 @@ def _parse_fan_heater(param_name: str, value: HexStr2) -> Mapping[str, float | N
881
878
  if int(value, 16) & 0xF0 == 0xF0:
882
879
  return _faulted_sensor(param_name, value) # type: ignore[return-value]
883
880
 
884
- percentage = int(value, 16) / 200 # Siber DF EVO 2 is /200, not /100 (?Others)
881
+ percentage = int(value, 16) / 200 # Siber DF EVO 2 is /200, not /100 (Others?)
885
882
  assert percentage <= 1.0, value # TODO: raise exception if > 1.0?
886
883
 
887
884
  return {param_name: percentage} # was: percent_from_hex(value, high_res=False)
@@ -173,33 +173,6 @@ class TimedRotatingFileHandler(_TimedRotatingFileHandler):
173
173
  # self.doRollover()
174
174
  # return super().emit(record)
175
175
 
176
- # To fix issue ramses_cc 293, test if this override is still required
177
- # async def getFilesToDelete(self) -> list[str]: # zxdavb: my version
178
- # """Determine the files to delete when rolling over.
179
- #
180
- # Overridden as old log files were not being deleted.
181
- # """
182
- # # See bpo-44753 (this code is as was before that commit), bpo45628, bpo-46063
183
- # dirName, baseName = os.path.split(self.baseFilename)
184
- # loop = asyncio.get_running_loop()
185
- # # Must run async in executor to prevent HA blocking call on rollover (ramses_cc issue 293)
186
- # file_names = await loop.run_in_executor(None, os.listdir, dirName) < doesn't work
187
- #
188
- # result = []
189
- # prefix = baseName + "."
190
- # plen = len(prefix)
191
- # for fileName in file_names:
192
- # if fileName[:plen] == prefix:
193
- # suffix = fileName[plen:]
194
- # if self.extMatch.match(suffix):
195
- # result.append(os.path.join(dirName, fileName))
196
- # if len(result) < self.backupCount:
197
- # result = []
198
- # else:
199
- # result.sort()
200
- # result = result[: len(result) - self.backupCount]
201
- # return result
202
-
203
176
 
204
177
  def getLogger( # permits a bespoke Logger class
205
178
  name: str | None = None, pkt_log: bool = False
@@ -1648,21 +1648,17 @@ def parser_22f3(payload: str, msg: Message) -> dict[str, Any]:
1648
1648
  _LOGGER.warning(f"{msg!r} < {_INFORM_DEV_MSG} ({err})")
1649
1649
 
1650
1650
  new_speed = { # from now, until timer expiry
1651
- 0x00: "fan_boost", # # set fan off, or 'boost' mode?
1652
- 0x01: "per_request", # # set fan as per payload[6:10]?
1653
- 0x02: "per_vent_speed", # set fan as per current fan mode/speed?
1651
+ 0x00: "fan_boost", # set fan off, or 'boost' mode?
1652
+ 0x01: "per_request?", # set fan as per payload[6:10]?
1653
+ 0x02: "per_request", # set fan as per payload[6:10]
1654
1654
  }.get(int(payload[2:4], 0x10) & 0x07) # 0b0000-0111
1655
1655
 
1656
- fallback_speed: str | None
1657
- if msg.len == 7 and payload[9:10] == "06": # Vasco and ClimaRad REM
1658
- fallback_speed = "per_vent_speed" # after timer expiry
1659
- # set fan as per current fan mode/speed
1660
- else:
1661
- fallback_speed = { # after timer expiry
1662
- 0x08: "fan_off", # # set fan off?
1663
- 0x10: "per_request", # # set fan as per payload[6:10], or payload[10:]?
1664
- 0x18: "per_vent_speed", # set fan as per current fan mode/speed?
1665
- }.get(int(payload[2:4], 0x10) & 0x38) # 0b0011-1000
1656
+ fallback_speed = { # after timer expiry
1657
+ 0x00: "per_vent_speed", # set fan as per current fan mode
1658
+ 0x08: "fan_off", # set fan off?
1659
+ 0x10: "per_request", # set fan as per payload[10:14]
1660
+ 0x18: "per_vent_speed?", # set fan as per current fan mode/speed?
1661
+ }.get(int(payload[2:4], 0x10) & 0x38) # 0b0011-1000
1666
1662
 
1667
1663
  units = {
1668
1664
  0x00: "minutes",
@@ -1677,15 +1673,21 @@ def parser_22f3(payload: str, msg: Message) -> dict[str, Any]:
1677
1673
  result = {
1678
1674
  "minutes" if units != "index" else "index": duration,
1679
1675
  "flags": hex_to_flag8(payload[2:4]),
1680
- "_new_speed_mode": new_speed,
1681
- "_fallback_speed_mode": fallback_speed,
1676
+ "new_speed_mode": new_speed,
1677
+ "fallback_speed_mode": fallback_speed,
1682
1678
  }
1683
1679
 
1684
- if msg.len >= 5 and payload[6:10] != "0000": # new speed?
1685
- result["rate"] = parser_22f1(f"00{payload[6:10]}", msg).get("rate")
1680
+ if msg._addrs[0] == NON_DEV_ADDR and msg.len <= 3:
1681
+ result["_scheme"] = "itho"
1682
+
1683
+ if msg.len >= 5 and payload[6:10] != "0000": # new speed
1684
+ mode_info = parser_22f1(f"00{payload[6:10]}", msg)
1685
+ result["_scheme"] = mode_info.get("_scheme")
1686
+ result["fan_mode"] = mode_info.get("fan_mode")
1686
1687
 
1687
- if msg.len >= 7: # fallback speed?
1688
- result.update({"_unknown_5": payload[10:]})
1688
+ if msg.len >= 7 and payload[10:14] != "0000": # fallback speed
1689
+ mode_info = parser_22f1(f"00{payload[10:14]}", msg)
1690
+ result["fallback_fan_mode"] = mode_info.get("fan_mode")
1689
1691
 
1690
1692
  return result
1691
1693
 
@@ -1033,6 +1033,8 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1033
1033
  self._topic_base = validate_topic_path(self._broker_url.path)
1034
1034
  self._topic_pub = ""
1035
1035
  self._topic_sub = ""
1036
+ # Track if we've subscribed to a wildcard data topic (e.g. ".../+/rx")
1037
+ self._data_wildcard_topic = ""
1036
1038
 
1037
1039
  self._mqtt_qos = int(parse_qs(self._broker_url.query).get("qos", ["0"])[0])
1038
1040
 
@@ -1143,17 +1145,30 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1143
1145
  # Subscribe to base topic to see 'online' messages
1144
1146
  self.client.subscribe(self._topic_base) # hope to see 'online' message
1145
1147
 
1146
- # Also subscribe to data topics with wildcard for reliability after reconnect
1147
- # This ensures we get data even if we miss the 'online' message
1148
- if self._topic_base.endswith("/+"):
1148
+ # Also subscribe to data topics with wildcard for reliability, but only
1149
+ # until a specific device topic is known. Once _topic_sub is set, avoid
1150
+ # overlapping subscriptions that would duplicate messages.
1151
+ if self._topic_base.endswith("/+") and not (
1152
+ hasattr(self, "_topic_sub") and self._topic_sub
1153
+ ):
1149
1154
  data_wildcard = self._topic_base.replace("/+", "/+/rx")
1150
1155
  self.client.subscribe(data_wildcard, qos=self._mqtt_qos)
1156
+ self._data_wildcard_topic = data_wildcard
1151
1157
  _LOGGER.debug(f"Subscribed to data wildcard: {data_wildcard}")
1152
1158
 
1153
1159
  # If we already have specific topics, re-subscribe to them
1154
1160
  if hasattr(self, "_topic_sub") and self._topic_sub:
1155
1161
  self.client.subscribe(self._topic_sub, qos=self._mqtt_qos)
1156
1162
  _LOGGER.debug(f"Re-subscribed to specific topic: {self._topic_sub}")
1163
+ # If we had a wildcard subscription, drop it to prevent duplicates
1164
+ if getattr(self, "_data_wildcard_topic", ""):
1165
+ try:
1166
+ self.client.unsubscribe(self._data_wildcard_topic)
1167
+ _LOGGER.debug(
1168
+ f"Unsubscribed data wildcard after specific subscribe: {self._data_wildcard_topic}"
1169
+ )
1170
+ finally:
1171
+ self._data_wildcard_topic = ""
1157
1172
 
1158
1173
  def _on_connect_fail(
1159
1174
  self,
@@ -1225,6 +1240,17 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1225
1240
 
1226
1241
  self.client.subscribe(self._topic_sub, qos=self._mqtt_qos)
1227
1242
 
1243
+ # If we previously subscribed to a wildcard data topic, unsubscribe now
1244
+ # to avoid duplicate delivery (wildcard and specific both matching)
1245
+ if getattr(self, "_data_wildcard_topic", ""):
1246
+ try:
1247
+ self.client.unsubscribe(self._data_wildcard_topic)
1248
+ _LOGGER.debug(
1249
+ f"Unsubscribed data wildcard after device online: {self._data_wildcard_topic}"
1250
+ )
1251
+ finally:
1252
+ self._data_wildcard_topic = ""
1253
+
1228
1254
  # Only call connection_made on first connection, not reconnections
1229
1255
  if not self._connection_established:
1230
1256
  self._connection_established = True
@@ -1295,6 +1321,21 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1295
1321
  self._connection_established = True
1296
1322
  self._make_connection(gwy_id=gateway_id) # type: ignore[arg-type]
1297
1323
 
1324
+ # Ensure we subscribe specifically to the device topic and drop the
1325
+ # wildcard subscription to prevent duplicates
1326
+ try:
1327
+ self.client.subscribe(self._topic_sub, qos=self._mqtt_qos)
1328
+ except Exception as err: # pragma: no cover - defensive
1329
+ _LOGGER.debug(f"Error subscribing specific topic: {err}")
1330
+ if getattr(self, "_data_wildcard_topic", ""):
1331
+ try:
1332
+ self.client.unsubscribe(self._data_wildcard_topic)
1333
+ _LOGGER.debug(
1334
+ f"Unsubscribed data wildcard after inferring device: {self._data_wildcard_topic}"
1335
+ )
1336
+ finally:
1337
+ self._data_wildcard_topic = ""
1338
+
1298
1339
  try:
1299
1340
  payload = json.loads(msg.payload)
1300
1341
  except json.JSONDecodeError:
@@ -1,4 +1,4 @@
1
1
  """RAMSES RF - a RAMSES-II protocol decoder & analyser (transport layer)."""
2
2
 
3
- __version__ = "0.51.6"
3
+ __version__ = "0.51.7"
4
4
  VERSION = __version__
@@ -11,7 +11,7 @@
11
11
 
12
12
  # used for development (linting)
13
13
  pre-commit >= 4.2.0 # HA (core) uses 4.2.0
14
- ruff >= 0.11.0 # HA uses 0.12.1 ! also in: pre-commit-config.yaml
14
+ ruff >= 0.13.0 # HA uses 0.13.0 ! also in: pre-commit-config.yaml
15
15
 
16
16
  # used for development (typing)
17
17
  mypy-dev >= 1.16.0a8 # HA uses 1.18.0a3 !
@@ -0,0 +1,12 @@
1
+ #
2
+ # Plan is to include at least one packet of every code that devices with this id type can Tx
3
+ #
4
+
5
+ # Resideo HCE-100 UFH Controller
6
+ # 23-10-09T10:59:43.000000 ... I --- 02:066404 --:------ 02:066404 3150 008 2100220023002400
7
+ 2023-10-09T10:59:43.614000 ... I --- 02:066404 --:------ 02:066404 10E0 038 FF0001C89D6E0600FEFF140107E7010C07E64843453130302D524144494F0000000000000000
8
+
9
+ # evohome HCC80 (UFC) controlled via round thermostat talking to a BDR91 relay. FC = max all zones from cesar.florin ramses_cc issue 295
10
+ 2025-09-09T18:54:03.198471 061 I --- 02:033545 --:------ 02:033545 0008 002 FA00
11
+ 2025-09-09T18:54:03.354496 061 I --- 02:033545 --:------ 02:033545 22D0 004 00000002
12
+ 2025-09-09T18:55:18.458534 079 I --- 02:033545 --:------ 02:033545 3150 002 FC00
@@ -1,3 +1,4 @@
1
+ # sort by SRC
1
2
  2021-11-24T09:30:56.274400 ... RP --- 01:024170 18:000730 --:------ 10E0 038 000002FFFF17FFFFFFFFFFFFFFFF0B0507DC494F4E41205241492050726F746F747970650000
2
3
  2021-01-29T22:23:11.476700 ... RP --- 01:037519 18:000730 --:------ 10E0 038 000002FF0119FFFFFFFF110107DE100107DE45766F546F75636820436F6C6F75720000000000
3
4
  2022-01-31T08:01:32.330800 ... RP --- 01:040078 18:000730 --:------ 10E0 038 000002FF0119FFFFFFFF060307DE100107DE45766F546F75636820436F6C6F75720000000000
@@ -13,7 +14,7 @@
13
14
  2021-11-28T06:41:15.156900 ... RP --- 01:073976 30:258720 --:------ 10E0 038 000002FF0119FFFFFFFF0E0407DF100107DE45766F546F75636820436F6C6F75720000000000
14
15
  2021-10-26T21:51:43.454800 ... RP --- 01:076010 30:042165 --:------ 10E0 038 000002FF0119FFFFFFFF0D0507DF100107DE45766F546F75636820436F6C6F75720000000000
15
16
  2021-10-17T09:45:31.572600 ... RP --- 01:078710 18:000730 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
16
- 2021-10-17T13:55:00.880450 ... RP --- 01:081046 18:132629 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000 # 10E0|RP|01:081046
17
+ 2021-10-17T13:55:00.880450 ... RP --- 01:081046 18:132629 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
17
18
  2021-10-18T12:46:18.693271 060 RP --- 01:087939 18:073736 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
18
19
  2021-02-21T10:32:37.226400 ... RP --- 01:095966 18:000730 --:------ 10E0 038 000002FF0119FFFFFFFF190A07E0100107DE45766F546F75636820436F6C6F75720000000000
19
20
  2020-09-27T13:25:46.444218 045 RP --- 01:102458 18:009874 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
@@ -21,21 +22,21 @@
21
22
  2021-05-10T20:51:11.921349 045 RP --- 01:133689 18:009461 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
22
23
  2020-09-24T10:38:46.221637 066 RP --- 01:138490 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
23
24
  2021-02-10T14:34:03.016618 056 RP --- 01:139901 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
24
- 2021-10-01T11:14:52.519219 ... RP --- 01:140959 18:200213 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # 10E0|RP|01:140959
25
+ 2021-10-01T11:14:52.519219 ... RP --- 01:140959 18:200213 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
25
26
  2020-04-25T15:27:22.219200 ... RP --- 01:145038 18:000730 --:------ 10E0 038 000002FF0163FFFFFFFF640307E4010807DD45766F20436F6C6F720000000000000000000000
26
27
  2021-06-25T11:30:59.682580 048 RP --- 01:155341 18:203293 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
27
28
  2019-12-22T00:19:42.346345 045 RP --- 01:158182 18:013490 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
28
- 2022-01-27T15:57:49.290818 ... RP --- 01:164379 18:065802 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # 10E0|RP|01:164379
29
- 2021-10-15T05:48:09.832953 ... RP --- 01:169176 18:135447 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # 10E0|RP|01:169176
29
+ 2022-01-27T15:57:49.290818 ... RP --- 01:164379 18:065802 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
30
+ 2021-10-15T05:48:09.832953 ... RP --- 01:169176 18:135447 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
30
31
  2020-09-24T11:36:49.265805 078 RP --- 01:182472 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
31
- 2021-11-21T08:54:34.313636 ... RP --- 01:185426 18:136212 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # 10E0|RP|01:185426
32
+ 2021-11-21T08:54:34.313636 ... RP --- 01:185426 18:136212 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
32
33
  2019-12-22T08:35:18.187479 062 RP --- 01:187666 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
33
34
  2020-10-09T13:54:09.723438 060 RP --- 01:191718 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
34
35
  2021-10-17T13:55:00.005800 ... RP --- 01:196185 18:000730 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
35
36
  2021-12-08T12:48:53.959128 049 RP --- 01:201047 18:070162 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
36
37
  2021-07-02T09:15:07.469166 062 RP --- 01:205114 18:205572 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
37
38
  2021-11-13T16:13:32.327900 ... RP --- 01:205453 18:000730 --:------ 10E0 038 000002FF0163FFFFFFFF1A0507E1010807DD45766F20436F6C6F720000000000000000000000
38
- 2021-11-10T06:47:21.609128 ... RP --- 01:223036 18:005567 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # 10E0|RP|01:223036
39
+ 2021-11-10T06:47:21.609128 ... RP --- 01:223036 18:005567 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
39
40
  2022-01-02T08:39:29.001854 058 RP --- 01:225826 18:204306 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
40
41
  2021-10-01T09:06:34.785572 051 RP --- 01:239474 18:198929 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
41
42
  2021-10-01T08:42:10.826213 069 RP --- 01:239700 18:009874 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000
@@ -46,7 +47,7 @@
46
47
  2021-11-08T09:24:35.398200 ... I --- 02:010136 --:------ 02:010136 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137
47
48
  2022-01-08T03:20:28.144267 072 I --- 02:017205 --:------ 02:017205 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137
48
49
  2022-10-12T12:33:31.437841 ... I --- 02:019383 --:------ 02:019383 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137 # {'date_2': '0000-00-00', 'date_1': '2017-11-06', 'manufacturer_sub_id': 'FF', 'product_id': '02', 'oem_code': 'FF', 'description': 'HCE80 V3.10 061117'}
49
- 2022-01-27T15:57:51.394114 ... RP --- 02:020364 18:065802 --:------ 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137 # 10E0|RP|02:020364
50
+ 2022-01-27T15:57:51.394114 ... RP --- 02:020364 18:065802 --:------ 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137
50
51
  2021-02-10T14:34:01.047064 042 RP --- 02:043392 18:056026 --:------ 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137
51
52
  2021-07-01T11:22:45.410246 063 I --- 02:044328 --:------ 02:044328 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137
52
53
  2021-07-01T01:09:24.645515 052 I --- 02:044435 --:------ 02:044435 10E0 036 000003FF0203FFFF0001FFFFFFFF060B07E148434538302056332E313020303631313137
@@ -107,13 +108,13 @@
107
108
  2022-01-03T10:47:21.045858 065 RP --- 10:030670 18:010642 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
108
109
  2021-10-09T22:42:53.316800 ... I --- 10:032432 --:------ 10:032432 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
109
110
  2022-02-04T13:52:34.057414 088 I --- 10:037879 --:------ 10:037879 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
110
- 2021-10-01T11:14:52.513762 ... RP --- 10:039243 18:200213 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000 # 10E0|RP|10:039243
111
- 2021-11-10T06:47:21.610873 ... RP --- 10:040239 18:005567 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000 # 10E0|RP|10:040239
111
+ 2021-10-01T11:14:52.513762 ... RP --- 10:039243 18:200213 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
112
+ 2021-11-10T06:47:21.610873 ... RP --- 10:040239 18:005567 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
112
113
  2022-01-04T18:07:36.499732 060 I --- 10:044987 --:------ 10:044987 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
113
114
  2021-10-28T19:48:14.624196 045 I --- 10:047707 --:------ 10:047707 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
114
- 2022-01-27T15:57:51.405268 ... RP --- 10:047712 18:065802 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000 # 10E0|RP|10:047712
115
+ 2022-01-27T15:57:51.405268 ... RP --- 10:047712 18:065802 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
115
116
  2021-10-24T16:08:54.421863 042 RP --- 10:048122 18:013393 --:------ 10E0 038 000001C8810B0700FEFFFFFFFFFF140807E35238383230000000000000000000000000000000
116
- 2022-02-04T11:52:22.143704 ... RP --- 10:050360 18:200214 --:------ 10E0 038 000002FF0A0CFFFFFFFF0D0407DF1F0707DE5238383130412042726964676500160E4B000000 # 10E0|RP|10:050360
117
+ 2022-02-04T11:52:22.143704 ... RP --- 10:050360 18:200214 --:------ 10E0 038 000002FF0A0CFFFFFFFF0D0407DF1F0707DE5238383130412042726964676500160E4B000000
117
118
  2022-01-28T08:25:21.034100 ... RP --- 10:051349 18:000730 --:------ 10E0 038 000002FF0A0CFFFFFFFF170407DF1F0707DE523838313041204272696467650017114A000000
118
119
  2021-11-03T10:06:08.464600 ... RP --- 10:052644 18:000730 --:------ 10E0 038 000002FF0A0CFFFFFFFF130507DF1F0707DE5238383130412042726964676500B5A478000000
119
120
  2021-01-20T16:49:02.523300 ... RP --- 10:067219 18:000730 --:------ 10E0 038 000002FF0A0CFFFFFFFF0F0107E01F0707DE5238383130412042726964676500030A48007633
@@ -135,7 +136,7 @@
135
136
  2021-07-01T07:29:31.278044 092 I --- 20:010779 --:------ 20:010779 10E0 038 000001001B281501FEFFFFFFFFFF0B0B07E04356452D52460000000000000000000000000000
136
137
  2020-05-30T21:36:52.314294 069 I --- 20:016443 --:------ 20:016443 10E0 038 000001001B281501FEFFFFFFFFFF0B0B07E04356452D52460000000000000000000000000000
137
138
  2021-03-19T10:50:36.251647 083 RP --- 20:018860 18:073736 --:------ 10E0 019 000001001B190B010000FFFFFFFFFFFFFFFF00
138
- 2022-01-19T10:20:41.562994 ... RP --- 20:024743 18:200214 --:------ 10E0 019 000001001B190B010000FFFFFFFFFFFFFFFF00 # 10E0|RP|20:024743
139
+ 2022-01-19T10:20:41.562994 ... RP --- 20:024743 18:200214 --:------ 10E0 019 000001001B190B010000FFFFFFFFFFFFFFFF00
139
140
  2022-02-01T20:48:30.814324 092 I --- 20:025286 --:------ 20:025286 10E0 038 000001001B221201FEFFFFFFFFFF0C0507DF4356452D52460000000000000000000000000000
140
141
  2021-02-24T21:28:26.013200 ... RP --- 20:026866 18:000730 --:------ 10E0 019 00000100140C06010000FFFFFFFFFFFFFFFF00
141
142
  2021-10-18T12:46:31.269600 ... RP --- 20:032436 18:000730 --:------ 10E0 019 000001001B190B010000FFFFFFFFFFFFFFFF00
@@ -165,6 +166,10 @@
165
166
  2022-02-05T08:05:56.604400 ... I --- 29:215374 63:262142 --:------ 10E0 029 000001C8260A0367FFFFFFFFFFFFFFFFFFFF564D432D31355250303100
166
167
  2022-08-17T20:04:34.053889 079 I --- 29:226075 63:262142 --:------ 10E0 029 000001C8260D0467FFFFFFFFFFFFFFFFFFFF564D432D31355250303100
167
168
  2021-07-01T13:00:09.215900 ... I --- 29:237552 63:262142 --:------ 10E0 029 000001C8260D0467FFFFFFFFFFFFFFFFFFFF564D432D31355250303100
169
+ 2025-09-18T10:52:59.922182 ... I --- 29:123456 63:262142 --:------ 10E0 029 000001C827070167FFFFFFFFFFFFFFFFFFFF564D4E2D31354C46303100 # {'description': 'VMN-15LF01', 'manufacturer_sub_id': 'C8', 'product_id': '27', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '67'} # Orcon remote
170
+ 2024-03-04T16:54:24.502000 ... I --- 29:206851 63:262142 --:------ 10E0 029 000001C826090367FFFFFFFFFFFFFFFFFFFF564D432D31355250303100 # {'description': 'VMC-15RP01', 'manufacturer_sub_id': 'C8', 'oem_code': '67', 'product_id': '26', 'date_1': '0000-00-00', 'date_2': '0000-00-00'} # Orcon MVS-15RHB fan
171
+ 2024-10-04 22:24:58.581000 ... I --- 29:091138 63:262142 --:------ 10E0 038 000001C8400F0166FFFFFFFFFFFF0E0207E3564D4E2D31374C4D503031000000000000000000 # {'description': 'VMN-17LMP01', 'manufacturer_sub_id': 'C8', 'product_id': '40', 'date_1': '2019-02-14', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco 4 button RF remote
172
+ 2024-10-16T18:43:52.761437 087 I --- 29:099029 63:262142 --:------ 10E0 029 000001C81D150765FFFFFFFFFFFFFFFFFFFF564D432D30375250303100 # {'description': 'VMC-07RP01', 'manufacturer_sub_id': 'C8', 'product_id': '1D', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad MiniBox Fan
168
173
  2023-02-19T11:37:53.826773 032 I --- 30:006056 63:262142 --:------ 10E0 038 000001C848260066FEFEFFFFFFFF1C0B07E3425244472D3032454D3233000000000000000000 # {'description': 'BRDG-02EM23', 'date_2': '0000-00-00', 'date_1': '2019-11-28', 'manufacturer_sub_id': 'C8', 'product_id': '48', 'oem_code': '66'} # Vasco gateway (more like a CTL, but also RFG)
169
174
  2021-02-26T09:37:24.022200 ... RP --- 30:027402 18:000730 --:------ 10E0 038 000002FF1E03FFFFFFFF110407DF150407E1496E7465726E6574204761746577617900000000
170
175
  2021-10-26T21:55:00.596800 ... I --- 30:042165 --:------ 30:042165 10E0 038 000002FF1E03FFFFFFFF1E0A07DF150407E1496E7465726E6574204761746577617900000000
@@ -195,7 +200,7 @@
195
200
  2022-01-01T00:00:00.000000 000 I --- 32:172522 63:262142 --:------ 10E0 029 000001C85901016CFFFFFFFFFFFF1F0507E0564D4E2D32334C4D333300 # {'description': 'VMN-23LM33', 'date_2': '0000-00-00', 'date_1': '2016-05-31', 'manufacturer_sub_id': 'C8', 'product_id': '59', 'oem_code': '6C'} # '_signature': '0001C85901016CFFFF',
196
201
  2022-02-19T18:00:35.234656 062 I --- 32:206250 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300 # {'description': 'VMN-23LMH23', 'manufacturer_sub_id': 'C8', 'product_id': '5A', 'oem_code': '6C', 'date_1': '2016-06-01', 'date_2': '0000-00-00'}
197
202
  2022-11-10T20:43:45.452809 060 I --- 32:236773 63:262142 --:------ 10E0 030 000001C85F0E0267FFFFFFFFFFFFFFFFFFFF564D432D3135525053333400 # {'description': 'VMC-15RPS34', 'date_2': '0000-00-00', 'date_1': '0000-00-00', 'manufacturer_sub_id': 'C8', 'product_id': '5F', 'oem_code': '67'} # Orcon MVS-15?
198
- 2024-03-04T16:54:24.502000 ... I --- 29:206851 63:262142 --:------ 10E0 029 000001C826090367FFFFFFFFFFFFFFFFFFFF564D432D31355250303100 # {'description': 'VMC-15RP01', 'manufacturer_sub_id': 'C8', 'oem_code': '67', 'product_id': '26', 'date_1': '0000-00-00', 'date_2': '0000-00-00'} # Orcon MVS-15RHB fan
203
+ 2024-10-15T21:01:19.293000 083 I --- 32:022222 63:262142 --:------ 10E0 030 000001C83A190F66FFFFFFFFFFFFFFFFFFFF564D442D3137525053303100 # {'description': 'VMD-17RPS01', 'manufacturer_sub_id': 'C8', 'product_id': '3A', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco D60 HRU
199
204
  2021-12-20T08:24:09.117900 ... I --- 34:021943 63:262142 --:------ 10E0 038 000001C8380A0100F1FF0C0107E1030B07DE5438375246323032350000000000000000000000
200
205
  2021-11-08T15:26:00.654600 ... I --- 34:041323 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1E0407E4030507E15438375246323032350000000000000000000000
201
206
  2019-12-22T14:26:07.736118 045 I --- 34:044201 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1D0807E2030507E15438375246323032350000000000000000000000
@@ -281,8 +286,6 @@
281
286
  2022-07-04T14:35:13.010859 095 I --- 37:240038 63:262142 --:------ 10E0 038 0000010028040101FEFFFFFFFFFF030B07E0564D532D31324333390000000000000000000000
282
287
  2021-07-01T04:44:33.312900 ... I --- 37:258565 63:262142 --:------ 10E0 038 0000010028080101FEFFFFFFFFFF1D0407E3564D532D31324333390000000000000000000000
283
288
  2021-07-01T09:15:00.949226 083 I --- 37:261128 --:------ 37:261128 10E0 038 000001001B361B01FEFFFFFFFFFF0B0407E34356452D52460000000000000000000000000000
284
- 2024-10-16T18:43:52.761437 087 I --- 29:099029 63:262142 --:------ 10E0 029 000001C81D150765FFFFFFFFFFFFFFFFFFFF564D432D30375250303100 # {'description': 'VMC-07RP01', 'manufacturer_sub_id': 'C8', 'product_id': '1D', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad MiniBox Fan
285
289
  2024-10-09T11:50:24.287879 123 I --- 37:153226 63:262142 --:------ 10E0 038 000001C8830C0A65FEFFFFFFFFFF110C07E4564D442D30375250533133000000000000000000 # {'description': 'VMD-07RPS13', 'manufacturer_sub_id': 'C8', 'product_id': '83', 'date_1': '2020-12-17', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad Ventura V1x HRU
286
- 2024-10-15T21:01:19.293000 083 I --- 32:022222 63:262142 --:------ 10E0 030 000001C83A190F66FFFFFFFFFFFFFFFFFFFF564D442D3137525053303100 # {'description': 'VMD-17RPS01', 'manufacturer_sub_id': 'C8', 'product_id': '3A', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco D60 HRU
287
- 2024-10-04 22:24:58.581000 ... I --- 29:091138 63:262142 --:------ 10E0 038 000001C8400F0166FFFFFFFFFFFF0E0207E3564D4E2D31374C4D503031000000000000000000 # {'description': 'VMN-17LMP01', 'manufacturer_sub_id': 'C8', 'product_id': '40', 'date_1': '2019-02-14', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco 4 button RF remote
288
290
  2024-10-09T11:51:49.472184 059 I --- 37:117647 63:262142 --:------ 10E0 038 000001C822060166FEFFFFFFFFFF160C07E0564D532D31374330310000000000000000000000 # {'description': 'VMS-17C01', 'manufacturer_sub_id': 'C8', 'product_id': '22', 'date_1': '2016-12-22', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco CO2 sensor
291
+ 2025-09-05T05:04:03.781873 ... I --- 37:123456 63:262142 --:------ 10E0 038 000001C88D030167FEFFFFFFFFFF1C0707E5564D492D31354D43303100000000000000000000 # {'description': 'VMI-15MC01', 'manufacturer_sub_id': 'C8', 'product_id': '8D', 'date_1': '2021-07-28', 'date_2': '0000-00-00', 'oem_code': '67'} # Orcon CO2 sensor
@@ -1,4 +1,5 @@
1
- 2021-05-21T19:34:59.336100 ... I --- 29:151550 63:262142 --:------ 10E0 029 000001C827070167FFFFFFFFFFFFFFFFFFFF564D4E2D31354C46303100
1
+ # Orcon remote
2
+ 2025-09-18T10:52:59.922182 ... I --- 29:123456 63:262142 --:------ 10E0 029 000001C827070167FFFFFFFFFFFFFFFFFFFF564D4E2D31354C46303100
2
3
  2022-01-14T13:33:40.652000 ... I --- 29:156898 63:262142 --:------ 10E0 029 000001C827050167FFFFFFFFFFFFFFFFFFFF564D4E2D31354C46303100
3
4
 
4
5
  2022-06-02T23:35:45.279114 073 I --- 29:158183 63:262142 --:------ 10E0 038 000001C827090167FFFFFFFFFFFF0D0207E3564D4E2D31354C46303100000000000000000000
@@ -8,3 +8,4 @@
8
8
  2022-08-19T16:21:32.671972 081 I --- 37:006470 63:262142 --:------ 10E0 038 000001C88D030167FEFFFFFFFFFF1C0707E5564D492D31354D43303100000000000000000000
9
9
  2022-08-21T03:51:37.252214 079 I --- 37:006488 63:262142 --:------ 10E0 038 000001C88D030167FEFFFFFFFFFF1C0707E5564D492D31354D43303100000000000000000000
10
10
  2023-03-19T07:51:15.789665 081 I --- 37:014196 63:262142 --:------ 10E0 038 000001C88D030167FEFFFFFFFFFF1C0707E5564D492D31354D43303100000000000000000000
11
+ 2025-09-05T05:04:03.781873 ... I --- 37:123456 63:262142 --:------ 10E0 038 000001C88D030167FEFFFFFFFFFF1C0707E5564D492D31354D43303100000000000000000000
@@ -0,0 +1,3 @@
1
+ # evohome from cesar.florin HCC80 (UFC) controlled via round thermostat talking to a BDR91 relay. FC = max all zones
2
+ 2025-09-09T18:54:03.198471 061 I --- 02:033545 --:------ 02:033545 0008 002 FA00 # {'domain_id': 'FA', 'relay_demand': 0.0}
3
+ 2025-09-09T18:55:18.250506 078 I --- 02:033545 --:------ 02:033545 0008 002 FC00 # {'domain_id': 'FC', 'relay_demand': 0.0}
@@ -4,3 +4,6 @@
4
4
 
5
5
  # another pair that is in heating mode:
6
6
  2023-03-18T23:53:26.811524 037 W --- 21:033160 02:250704 --:------ 22D0 008 0304001E14030020 # {'zone_idx': '03', 'idx': '03', '_flags': [0, 0, 0, 0, 0, 1, 0, 0], 'cool_mode': False, 'heat_mode': True, 'is_active': False, '_unknown': '001E14030020'}
7
+
8
+ # evohome from cesar.florin HCC80 (UFC) controlled via round thermostat talking to a BDR91 relay
9
+ 2025-09-09T18:54:03.354496 061 I --- 02:033545 --:------ 02:033545 22D0 004 00000002 # {'zone_idx': '00', 'idx': '00', '_flags': [0, 0, 0, 0, 0, 0, 0, 0], 'cool_mode': False, 'heat_mode': False, 'is_active': False, '_unknown': '0002'}
@@ -0,0 +1,24 @@
1
+ # Itho remote
2
+ 2024-01-01T01:00:00.000000 ... I 019 --:------ --:------ 39:159057 22F3 003 00000A # {'minutes': 10, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '019'}
3
+ 2024-01-01T01:00:00.000000 ... I 022 --:------ --:------ 39:159057 22F3 003 000014 # {'minutes': 20, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '022'}
4
+ 2024-01-01T01:00:00.000000 ... I 026 --:------ --:------ 39:159057 22F3 003 00001E # {'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '026'}
5
+
6
+ # Orcon remote
7
+ 2024-01-01T01:00:00.000000 ... I --- 29:151550 29:237552 --:------ 22F3 007 00023C03040000 # {'minutes': 60, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'orcon', 'fan_mode': 'high'}
8
+ 2024-01-01T01:00:00.000000 ... I --- 29:162374 29:237552 --:------ 22F3 007 00020F03040000 # {'minutes': 15, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'orcon', 'fan_mode': 'high'}
9
+ 2024-01-01T01:00:00.000000 ... I --- 29:162374 29:237552 --:------ 22F3 007 00020F03040000 # {'minutes': 15, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'orcon', 'fan_mode': 'high'}
10
+
11
+ # Orcon CO2 sensor / remote
12
+ 2025-09-06T13:09:26.049759 ... I --- 37:123456 32:123456 --:------ 22F3 007 00520C00040404 # {'minutes': 720, 'flags': [0, 1, 0, 1, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_request', '_scheme': 'orcon', 'fan_mode': 'away', 'fallback_fan_mode': 'auto'}
13
+ 2025-09-06T22:31:19.792895 ... I --- 37:123456 32:123456 --:------ 22F3 007 00123C03040404 # {'minutes': 60, 'flags': [0, 0, 0, 1, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_request', '_scheme': 'orcon', 'fan_mode': 'high', 'fallback_fan_mode': 'auto'}
14
+
15
+ # Vasco remote (VMN-17LMP01) boost
16
+ 2024-10-14T20:51:11.263018 049 I --- 29:091138 32:022222 --:------ 22F3 007 00021E04060000 # {'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'vasco', 'fan_mode': 'high'}
17
+ # repeated 5 times total
18
+
19
+ # ClimaRad 4-button remote boost, lasts 20 mins
20
+ 2024-10-14T08:50:34.322538 072 I --- 29:123150 29:099029 --:------ 22F3 007 00021E04060000 # {'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'vasco', 'fan_mode': 'high'}
21
+ # repeated 2 times total but that could be caused by reception/confirm problem. LED is slow to confirm
22
+
23
+ # curious 22f3 packet: invalid button combi pressed?
24
+ 2024-01-01T01:00:00.000000 123 I --- 29:123150 29:099029 --:------ 22F3 007 00020F00060000 # {'minutes': 15, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], 'new_speed_mode': 'per_request', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'vasco', 'fan_mode': 'off'}
@@ -0,0 +1,16 @@
1
+
2
+ 2021-11-16T07:15:02.075569 050 I --- 01:050858 --:------ 01:050858 30C9 024 00086001078102073503070F04070E0507B206073F0707A3 # [{'zone_idx': '00', 'temperature': 21.44}, {'zone_idx': '01', 'temperature': 19.21}, {'zone_idx': '02', 'temperature': 18.45}, {'zone_idx': '03', 'temperature': 18.07}, {'zone_idx': '04', 'temperature': 18.06}, {'zone_idx': '05', 'temperature': 19.7}, {'zone_idx': '06', 'temperature': 18.55}, {'zone_idx': '07', 'temperature': 19.55}]
3
+
4
+ 2021-11-16T07:14:05.970532 000 RQ --- 18:141846 01:050858 --:------ 30C9 001 07 # {}
5
+ 2021-11-16T07:14:05.985522 050 RP --- 01:050858 18:141846 --:------ 30C9 003 0707A7 # {'temperature': 19.59, 'zone_idx': '07'}
6
+
7
+ 2021-01-23T23:06:34.817345 067 I --- 00:000558 --:------ 00:000558 30C9 003 00075D
8
+ 2021-11-16T07:14:43.815222 059 I --- 04:055480 --:------ 04:055480 30C9 003 00070F # {'temperature': 18.07}
9
+ 2019-12-16T10:46:01.433680 064 I --- 12:010740 --:------ 12:010740 30C9 003 000785
10
+ 2020-12-07T05:56:23.790693 053 I --- 22:131874 --:------ 22:131874 30C9 003 000636
11
+ 2020-01-03T22:14:29.833375 056 I --- 34:242504 --:------ 34:242504 30C9 003 000838
12
+
13
+ 2020-12-30T08:16:18.653883 068 I --- --:------ --:------ 12:193204 30C9 003 01086A # {'temperature': 21.54, 'zone_idx': '01'}
14
+
15
+ # evohome from cesar.florin HCC80 controlled via round thermostat talking to a BDR91 relay
16
+ 2025-09-09T18:54:06.865752 054 I --- 34:030020 --:------ 34:030020 30C9 003 0009D7 # {'temperature': 25.19}
@@ -27,3 +27,6 @@
27
27
 
28
28
  # VenturaV1x (VMD-07RPS13, no heater, only HRU)
29
29
  2024-10-14T20:59:09.716874 060 I --- 37:153226 --:------ 37:153226 3150 006 00F201F202F2 # [{'zone_idx': '00', 'heat_demand_fault': 'unavailable'}, {'zone_idx': '01', 'heat_demand_fault': 'unavailable'}, {'zone_idx': '02', 'heat_demand_fault': 'unavailable'}]
30
+
31
+ # evohome from cesar.florin HCC80 (UFC) controlled via round thermostat talking to a BDR91 relay. FC = max all zones
32
+ 2025-09-09T18:55:18.458534 079 I --- 02:033545 --:------ 02:033545 3150 002 FC00 # {'domain_id': 'FC', 'heat_demand': 0.0}
@@ -260,13 +260,13 @@
260
260
  # No null value - No time is 0000
261
261
  2022-07-04T17:15:56.591751 ... I --- 37:239356 --:------ 37:239356 31DA 029 00C84002E334EF7FFF7FFF7FFF7FFFF808EF0115000000EFEF7FFF7FFF # {'hvac_id': '00', 'remaining_mins': 0, 'air_quality': 1.0, 'air_quality_basis': 'rel_humidity', 'co2_level': 739, 'indoor_humidity': 0.52, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost', 'auto', 'auto_night'], 'bypass_position': None, 'fan_info': 'speed 1, low', '_unknown_fan_info_flags': [0, 0, 0], 'exhaust_fan_speed': 0.105, 'supply_fan_speed': 0.0, 'post_heat': None, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
262
262
  # various times
263
- 2022-07-04T15:11:21.793118 ... I 135 --:------ --:------ 29:052148 22F3 003 63000A # { 'minutes': 10, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], '_new_speed_mode': 'fan_boost', '_fallback_speed_mode': None, 'seqx_num': '135'}
263
+ 2022-07-04T15:11:21.793118 ... I 135 --:------ --:------ 29:052148 22F3 003 63000A # { 'minutes': 10, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '135'}
264
264
  2022-07-04T15:11:21.860590 ... I --- --:------ --:------ 37:237616 31DA 029 00C84001DA2EEF7FFF7FFF7FFF7FFFF808EF0DC800000AEFEF7FFF7FFF # {'hvac_id': '00', 'remaining_mins': 10, 'air_quality': 1.0, 'air_quality_basis': 'rel_humidity', 'co2_level': 474, 'indoor_humidity': 0.46, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost', 'auto', 'auto_night'], 'bypass_position': None, 'fan_info': 'speed 3 temporary override', '_unknown_fan_info_flags': [0, 0, 0], 'exhaust_fan_speed': 1.0, 'supply_fan_speed': 0.0, 'post_heat': None, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
265
- 2021-02-12T17:29:11.859716 ... I 019 --:------ --:------ 39:159057 22F3 003 00000A # { 'minutes': 10, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], '_new_speed_mode': 'fan_boost', '_fallback_speed_mode': None, 'seqx_num': '019'}
265
+ 2021-02-12T17:29:11.859716 ... I 019 --:------ --:------ 39:159057 22F3 003 00000A # { 'minutes': 10, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '019'}
266
266
  2021-02-12T17:29:11.897592 ... I --- --:------ --:------ 20:008749 31DA 029 00EF007FFFEFEF7FFF7FFF7FFF7FFFF000EF0DB600000AEFEF7FFF7FFF # {'hvac_id': '00', 'remaining_mins': 10, 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost'], 'bypass_position': None, 'fan_info': 'speed 3 temporary override', '_unknown_fan_info_flags': [0, 0, 0], 'exhaust_fan_speed': 0.91, 'supply_fan_speed': 0.0, 'post_heat': None, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
267
- 2021-02-12T17:29:30.662408 ... I 025 --:------ --:------ 39:159057 22F3 003 000014 # { 'minutes': 20, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], '_new_speed_mode': 'fan_boost', '_fallback_speed_mode': None, 'seqx_num': '025'}
267
+ 2021-02-12T17:29:30.662408 ... I 025 --:------ --:------ 39:159057 22F3 003 000014 # { 'minutes': 20, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '025'}
268
268
  2021-02-12T17:29:30.699459 ... I --- --:------ --:------ 20:008749 31DA 029 00EF007FFFEFEF7FFF7FFF7FFF7FFFF000EF0DB0000014EFEF7FFF7FFF # {'hvac_id': '00', 'remaining_mins': 20, 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost'], 'bypass_position': None, 'fan_info': 'speed 3 temporary override', '_unknown_fan_info_flags': [0, 0, 0], 'exhaust_fan_speed': 0.88, 'supply_fan_speed': 0.0, 'remaining_mins': 20.0, 'post_heat': None, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
269
- 2021-02-12T17:29:30.862259 ... I 026 --:------ --:------ 39:159057 22F3 003 00001E # { 'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], '_new_speed_mode': 'fan_boost', '_fallback_speed_mode': None, 'seqx_num': '026'}
269
+ 2021-02-12T17:29:30.862259 ... I 026 --:------ --:------ 39:159057 22F3 003 00001E # { 'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 0, 0], 'new_speed_mode': 'fan_boost', 'fallback_speed_mode': 'per_vent_speed', '_scheme': 'itho', 'seqx_num': '026'}
270
270
  2021-02-12T17:29:30.897969 ... I --- --:------ --:------ 20:008749 31DA 029 00EF007FFFEFEF7FFF7FFF7FFF7FFFF000EF0DB000001EEFEF7FFF7FFF # {'hvac_id': '00', 'remaining_mins': 30, 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost'], 'bypass_position': None, 'fan_info': 'speed 3 temporary override', '_unknown_fan_info_flags': [0, 0, 0], 'exhaust_fan_speed': 0.88, 'supply_fan_speed': 0.0, 'remaining_mins': 30.0, 'post_heat': None, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
271
271
  #
272
272
  2022-07-28T14:20:26.582700 ... I --- 32:134446 --:------ 32:134446 31DA 030 00EF007FFF38280852088E087A0834F800000B2222003BEFEF0ABE0ABE00 # {'hvac_id': '00', 'remaining_mins': 59, 'air_quality': None, 'co2_level': None, 'indoor_humidity': 0.56, 'outdoor_humidity': 0.4, 'exhaust_temp': 21.3, 'supply_temp': 21.9, 'indoor_temp': 21.7, 'outdoor_temp': 21.0, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost', 'auto'], 'bypass_position': 0.0, 'fan_info': 'speed 1 temporary override', '_unknown_fan_info_flags': [0, 0, 0], 'exhaust_fan_speed': 0.17, 'supply_fan_speed': 0.17, 'post_heat': None, 'pre_heat': None, 'supply_flow': 27.5, 'exhaust_flow': 27.5, '_extra': '00'}
@@ -1,7 +0,0 @@
1
- #
2
- # Plan is to include at least one packet of every code that devices with this id type can Tx
3
- #
4
-
5
- # Resideo HCE-100 UFH Controller
6
- # 23-10-09T10:59:43.000000 ... I --- 02:066404 --:------ 02:066404 3150 008 2100220023002400
7
- 2023-10-09T10:59:43.614000 ... I --- 02:066404 --:------ 02:066404 10E0 038 FF0001C89D6E0600FEFF140107E7010C07E64843453130302D524144494F0000000000000000
@@ -1,17 +0,0 @@
1
- 2024-01-01T01:00:00.000000 ... I 019 --:------ --:------ 39:159057 22F3 003 00000A # 10 mins
2
- 2024-01-01T01:00:00.000000 ... I 022 --:------ --:------ 39:159057 22F3 003 000014 # 20 mins
3
- 2024-01-01T01:00:00.000000 ... I 026 --:------ --:------ 39:159057 22F3 003 00001E # 30 mins
4
- 2024-01-01T01:00:00.000000 ... I --- 29:151550 29:237552 --:------ 22F3 007 00023C03040000 # 60 mins
5
- 2024-01-01T01:00:00.000000 ... I --- 29:162374 29:237552 --:------ 22F3 007 00020F03040000 # 15 mins
6
- 2024-01-01T01:00:00.000000 ... I --- 29:162374 29:237552 --:------ 22F3 007 00020F03040000 # 15 mins
7
-
8
- # Vasco remote (VMN-17LMP01) boost
9
- 2024-10-14T20:51:11.263018 049 I --- 29:091138 32:022222 --:------ 22F3 007 00021E04060000 # {'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], '_new_speed_mode': 'per_vent_speed', '_fallback_speed_mode': None, 'rate': None, '_unknown_5': '0000'}
10
- # repeated 5 times total
11
-
12
- # ClimaRad 4-button remote boost, lasts 20 mins
13
- 2024-10-14T08:50:34.322538 072 I --- 29:123150 29:099029 --:------ 22F3 007 00021E04060000 # {'minutes': 30, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], '_new_speed_mode': 'per_vent_speed', '_fallback_speed_mode': None, 'rate': None, '_unknown_5': '0000'}
14
- # repeated 2 times total but that could be caused by reception/confirm problem. LED is slow to confirm
15
-
16
- # curious 22f3 packet: invalid button combi pressed?
17
- 2024-01-01T01:00:00.000000 123 I --- 29:123150 29:099029 --:------ 22F3 007 00020F00060000 # {'minutes': 15, 'flags': [0, 0, 0, 0, 0, 0, 1, 0], '_new_speed_mode': 'per_vent_speed', '_fallback_speed_mode': None, 'rate': None, '_unknown_5': '0000'}