ramses-rf 0.51.4__tar.gz → 0.51.5__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 (353) hide show
  1. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/PKG-INFO +1 -1
  2. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/const.py +2 -0
  3. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/device/hvac.py +14 -0
  4. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/dispatcher.py +6 -6
  5. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/entity_base.py +1 -1
  6. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/system/heat.py +3 -3
  7. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/system/zones.py +3 -3
  8. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/version.py +1 -1
  9. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/const.py +2 -0
  10. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/helpers.py +1 -1
  11. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/parsers.py +19 -14
  12. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/transport.py +15 -11
  13. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/version.py +1 -1
  14. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/10e0_xxxx.log +2 -1
  15. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/34_T87RF2025.log +2 -1
  16. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMC-15RP01.log +4 -1
  17. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMD-15RMS86.log +1 -1
  18. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMN-23LMH23.log +1 -1
  19. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_10e0.log +8 -5
  20. ramses_rf-0.51.5/tests/tests/parsers/code_2210.log +26 -0
  21. ramses_rf-0.51.4/tests/tests/parsers/code_2210.log +0 -21
  22. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  23. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.github/dependabot.yml +0 -0
  24. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.github/workflows/check-lint.yml +0 -0
  25. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.github/workflows/check-test.yml +0 -0
  26. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.github/workflows/check-type.yml +0 -0
  27. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.github/workflows/publish-hatch.yml +0 -0
  28. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.gitignore +0 -0
  29. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/.pre-commit-config.yaml +0 -0
  30. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/LICENSE +0 -0
  31. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/README-developers.md +0 -0
  32. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/README.md +0 -0
  33. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/client.py +0 -0
  34. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/misc/fingerprints.log +0 -0
  35. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/misc/ser2net.yaml +0 -0
  36. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/misc/ti_3410/notes.sh +0 -0
  37. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/misc/ti_3410/ti_3410.fw +0 -0
  38. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/pyproject.toml +0 -0
  39. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_cli/__init__.py +0 -0
  40. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_cli/client.py +0 -0
  41. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_cli/debug.py +0 -0
  42. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_cli/discovery.py +0 -0
  43. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_cli/utils/cat_slow.py +0 -0
  44. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_cli/utils/convert.py +0 -0
  45. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/__init__.py +0 -0
  46. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/binding_fsm.py +0 -0
  47. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/database.py +0 -0
  48. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/device/__init__.py +0 -0
  49. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/device/base.py +0 -0
  50. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/device/heat.py +0 -0
  51. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/exceptions.py +0 -0
  52. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/gateway.py +0 -0
  53. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/helpers.py +0 -0
  54. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/py.typed +0 -0
  55. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/schemas.py +0 -0
  56. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/system/__init__.py +0 -0
  57. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/system/faultlog.py +0 -0
  58. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_rf/system/schedule.py +0 -0
  59. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/__init__.py +0 -0
  60. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/address.py +0 -0
  61. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/command.py +0 -0
  62. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/exceptions.py +0 -0
  63. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/fingerprints.py +0 -0
  64. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/frame.py +0 -0
  65. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/gateway.py +0 -0
  66. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/logger.py +0 -0
  67. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/message.py +0 -0
  68. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/opentherm.py +0 -0
  69. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/packet.py +0 -0
  70. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/protocol.py +0 -0
  71. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/protocol_fsm.py +0 -0
  72. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/py.typed +0 -0
  73. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/ramses.py +0 -0
  74. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/schemas.py +0 -0
  75. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/typed_dicts.py +0 -0
  76. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/ramses_tx/typing.py +0 -0
  77. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/requirements.txt +0 -0
  78. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/requirements_dev.txt +0 -0
  79. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/_test_apis_mock.py +0 -0
  80. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/_test_mock_faultlog.py +0 -0
  81. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/_test_mock_schedule.py +0 -0
  82. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/_test_packets_bad.py +0 -0
  83. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/_test_performance_WIP.py +0 -0
  84. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/_test_state_mgt.py +0 -0
  85. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/common.py +0 -0
  86. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/mocked_devices/__init__.py +0 -0
  87. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/mocked_devices/command.py +0 -0
  88. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/mocked_devices/const.py +0 -0
  89. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/mocked_devices/device_heat.py +0 -0
  90. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/mocked_devices/device_hvac.py +0 -0
  91. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/deprecated/mocked_devices/transport.py +0 -0
  92. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/__init__.py +0 -0
  93. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/heat/ctl_bdr_91t.log +0 -0
  94. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/heat/dts_ctl_sensor.log +0 -0
  95. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/heat/hcw_ctl_sensor.log +0 -0
  96. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/heat/rnd_ctl_sensor.log +0 -0
  97. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/heat/rnd_ctl_sensor.yaml +0 -0
  98. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/heat/trv_ctl.log +0 -0
  99. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/co2_fan_itho.json +0 -0
  100. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/co2_fan_itho.log +0 -0
  101. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/co2_fan_itho.yaml +0 -0
  102. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/dis_fan_orcon.json +0 -0
  103. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/dis_fan_orcon.log +0 -0
  104. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/rem_fan_climarad.log +0 -0
  105. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/rem_fan_nuaire.json +0 -0
  106. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/rem_fan_nuaire.log +0 -0
  107. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/rem_fan_nuaire.yaml +0 -0
  108. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/rem_fan_vasco.log +0 -0
  109. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/bindings/hvac/rem_fan_ventura.log +0 -0
  110. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/devices/device_02.log +0 -0
  111. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/devices/device_04.log +0 -0
  112. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/devices/device_10.log +0 -0
  113. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/devices/device_13.log +0 -0
  114. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/devices/device_22.log +0 -0
  115. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_off.json +0 -0
  116. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_on.json +0 -0
  117. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_dev_class/hvac/packet.log +0 -0
  118. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_trv_actuator_long/packet.log +0 -0
  119. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_off.json +0 -0
  120. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_on.json +0 -0
  121. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/packet.log +0 -0
  122. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_off.json +0 -0
  123. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_on.json +0 -0
  124. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_ufh_circuits/packet.log +0 -0
  125. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_off.json +0 -0
  126. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_on.json +0 -0
  127. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/app_cntrl/packet.log +0 -0
  128. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_off.json +0 -0
  129. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_on.json +0 -0
  130. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/trv_actuators/packet.log +0 -0
  131. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_off.json +0 -0
  132. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_on.json +0 -0
  133. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_000/packet.log +0 -0
  134. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_off.json +0 -0
  135. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_on.json +0 -0
  136. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_001/packet.log +0 -0
  137. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_off.json +0 -0
  138. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_on.json +0 -0
  139. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_002/packet.log +0 -0
  140. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_off.json +0 -0
  141. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_on.json +0 -0
  142. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_003/packet.log +0 -0
  143. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_off.json +0 -0
  144. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_on.json +0 -0
  145. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_004/packet.log +0 -0
  146. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_off.json +0 -0
  147. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_on.json +0 -0
  148. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/_gather.sh +0 -0
  149. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/01_EvoTouch_Colour.log +0 -0
  150. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/01_Evo_Color.log +0 -0
  151. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/01_IONA_RAI_Prototype.log +0 -0
  152. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/02_HCE80_V3.10_061117..log +0 -0
  153. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/04_HR92 Radiator Ctrl_.log +0 -0
  154. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/08_Jasper_EIM.log +0 -0
  155. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/10_R8810A_Bridge.log +0 -0
  156. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/10_R8820.log +0 -0
  157. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/30_Internet_Gateway.log +0 -0
  158. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/heat/31_Jasper_Stat_TXXX.log +0 -0
  159. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/18_BRDG-02A55.log +0 -0
  160. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/18_HRA82.log +0 -0
  161. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/20.log +0 -0
  162. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/21_CCU-12T20.log +0 -0
  163. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMC-07RP01.log +0 -0
  164. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMC-17RP01.log +0 -0
  165. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMN-07LM01.log +0 -0
  166. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMN-15LF01.log +0 -0
  167. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMN-17LMP01.log +0 -0
  168. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMS-15C16.log +0 -0
  169. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/29_VMS-17HB01.log +0 -0
  170. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/30_BRDG-02EM23.log +0 -0
  171. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/30_BRDG-02JAS01.log +0 -0
  172. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMC-15RPS34.log +0 -0
  173. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMD-15RMS64.log +0 -0
  174. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMD-17RPS01.log +0 -0
  175. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMN-23LM33.log +0 -0
  176. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMS-15CM17.log +0 -0
  177. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMS-23C33.log +0 -0
  178. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMS-23HB33.log +0 -0
  179. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/32_VMZ-15V13.log +0 -0
  180. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/37_VMD-07RPS13.log +0 -0
  181. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/37_VMI-15MC01log +0 -0
  182. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/37_VMI-15WSJ53.log +0 -0
  183. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/37_VMS-02J52.log +0 -0
  184. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/37_VMS-12C39.log +0 -0
  185. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/99_CVE-RF.log +0 -0
  186. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/fingerprints/hvac/99_VMS-17C01.log +0 -0
  187. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/helpers.py +0 -0
  188. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/logger/packet_in.log +0 -0
  189. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/logger/packet_out.log +0 -0
  190. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/logs/pkts_bad_000.log +0 -0
  191. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/logs/pkts_tba_000.log +0 -0
  192. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/logs/system_cache.json +0 -0
  193. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parser_helpers/pkt_addr_set.log +0 -0
  194. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parser_helpers/pkt_dev_class.log +0 -0
  195. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0001_wip.log +0 -0
  196. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0002.log +0 -0
  197. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0004_wip.log +0 -0
  198. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0005.log +0 -0
  199. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0006.log +0 -0
  200. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0009.log +0 -0
  201. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_000a.log +0 -0
  202. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_000c.log +0 -0
  203. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_000e.log +0 -0
  204. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_01ff_wip.log +0 -0
  205. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_0418.log +0 -0
  206. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_042f.log +0 -0
  207. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1030.log +0 -0
  208. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1060.log +0 -0
  209. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_10d0.log +0 -0
  210. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1260.log +0 -0
  211. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1298.log +0 -0
  212. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_12a0.log +0 -0
  213. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_12c0.log +0 -0
  214. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1300.log +0 -0
  215. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1f09.log +0 -0
  216. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_1fc9.log +0 -0
  217. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22c9.log +0 -0
  218. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22d0.log +0 -0
  219. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22d9.log +0 -0
  220. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22e0.log +0 -0
  221. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22e5.log +0 -0
  222. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22e9.log +0 -0
  223. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22f1.log +0 -0
  224. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22f2.log +0 -0
  225. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22f3.log +0 -0
  226. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22f4.log +0 -0
  227. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_22f7.log +0 -0
  228. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_2309.log +0 -0
  229. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_2349.log +0 -0
  230. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_2411_wip.log +0 -0
  231. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_2e04.log +0 -0
  232. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_2e10_wip.log +0 -0
  233. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_30c9.log +0 -0
  234. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3110_wip.log +0 -0
  235. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3120.log +0 -0
  236. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_313e_wip.log +0 -0
  237. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3150.log +0 -0
  238. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_31d9.log +0 -0
  239. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_31da.log +0 -0
  240. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3200.log +0 -0
  241. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3210.log +0 -0
  242. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3220.log +0 -0
  243. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3222.log +0 -0
  244. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3ef0_wip.log +0 -0
  245. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_3ef1_wip.log +0 -0
  246. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_4e01.log +0 -0
  247. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_4e02.log +0 -0
  248. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_4e04.log +0 -0
  249. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/parsers/code_4e15.log +0 -0
  250. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schedules/_sched_002/packet.log +0 -0
  251. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schedules/_sched_002/schedule.json +0 -0
  252. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schedules/sched_001/packet.log +0 -0
  253. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schedules/sched_001/schedule.json +0 -0
  254. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schedules/sched_dhw/packet.log +0 -0
  255. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schedules/sched_dhw/schedule.json +0 -0
  256. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_100.json +0 -0
  257. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_101.json +0 -0
  258. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_102.json +0 -0
  259. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_103.json +0 -0
  260. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_104.json +0 -0
  261. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_105.json +0 -0
  262. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/jsn_files/schema_108.json +0 -0
  263. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_000.json +0 -0
  264. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_000.log +0 -0
  265. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_001.json +0 -0
  266. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_001.log +0 -0
  267. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_002.json +0 -0
  268. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_002.log +0 -0
  269. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_010.json +0 -0
  270. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_010.log +0 -0
  271. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_011.json +0 -0
  272. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_011.log +0 -0
  273. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_012.json +0 -0
  274. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_012.log +0 -0
  275. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_013.json +0 -0
  276. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_013.log +0 -0
  277. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_014.json +0 -0
  278. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_014.log +0 -0
  279. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_300.json +0 -0
  280. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_300.log +0 -0
  281. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_301.json +0 -0
  282. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_301.log +0 -0
  283. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_302.json +0 -0
  284. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_302.log +0 -0
  285. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_303.json +0 -0
  286. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_303.log +0 -0
  287. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_304.json +0 -0
  288. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_304.log +0 -0
  289. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_310.json +0 -0
  290. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/schemas/log_files/schema_310.log +0 -0
  291. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_heat_trv_00/config.json +0 -0
  292. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_heat_trv_00/packet.log +0 -0
  293. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_heat_trv_00/schema.json +0 -0
  294. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_hvac_nuaire/config.json +0 -0
  295. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_hvac_nuaire/known_list.json +0 -0
  296. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_hvac_nuaire/packet.log +0 -0
  297. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_hvac_nuaire/schema.json +0 -0
  298. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/_hvac_nuaire/status.json +0 -0
  299. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_otb_00/config.json +0 -0
  300. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_otb_00/packet.log +0 -0
  301. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_otb_00/schema.json +0 -0
  302. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_simple/packet.log +0 -0
  303. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_simple/schema.json +0 -0
  304. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_ufc_00/config.json +0 -0
  305. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_ufc_00/packet.log +0 -0
  306. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_ufc_01/packet.log +0 -0
  307. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_zxdavb/config.json +0 -0
  308. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_zxdavb/known_list.json +0 -0
  309. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_zxdavb/packet.log +0 -0
  310. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/systems/heat_zxdavb/schema.json +0 -0
  311. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_api_faultlog.py +0 -0
  312. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_api_schedule.py +0 -0
  313. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_apis_binding.py +0 -0
  314. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_apis_common.py +0 -0
  315. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_apis_heat.py +0 -0
  316. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_apis_hvac.py +0 -0
  317. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_cli_utility.py +0 -0
  318. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_devices.py +0 -0
  319. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_eavesdrop_dev_class.py +0 -0
  320. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_eavesdrop_schema.py +0 -0
  321. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_helpers.py +0 -0
  322. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_parser_helpers.py +0 -0
  323. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_parsers.py +0 -0
  324. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_ramses_schema.py +0 -0
  325. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_schema_bits.py +0 -0
  326. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_schemas.py +0 -0
  327. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_systems.py +0 -0
  328. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests/test_vol_schemas.py +0 -0
  329. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/__init__.py +0 -0
  330. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/configs/config_heat.json +0 -0
  331. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/configs/config_hvac.json +0 -0
  332. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/conftest.py +0 -0
  333. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/logs/test_api_faultlog.log +0 -0
  334. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_api_faultlog.py +0 -0
  335. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_api_schedule.py +0 -0
  336. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_binding_fsm.py +0 -0
  337. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_create_stack.py +0 -0
  338. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_hgi_behaviors.py +0 -0
  339. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_protocol_fsm.py +0 -0
  340. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_use_regex.py +0 -0
  341. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/test_virt_network.py +0 -0
  342. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/virtual_rf/__init__.py +0 -0
  343. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/virtual_rf/const.py +0 -0
  344. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/virtual_rf/helpers.py +0 -0
  345. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_rf/virtual_rf/virtual_rf.py +0 -0
  346. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_tx/__init__.py +0 -0
  347. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/tests_tx/test_command.py +0 -0
  348. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/wip/_test_eavesdrop_dhw_sensor.py +0 -0
  349. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/wip/_test_eavesdrop_htg_control.py +0 -0
  350. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/wip/_test_eavesdrop_ufc_circuits.py +0 -0
  351. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/wip/_test_eavesdrop_zone_sensors.py +0 -0
  352. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/wip/_test_eavesdrop_zone_type.py +0 -0
  353. {ramses_rf-0.51.4 → ramses_rf-0.51.5}/tests/wip/test_wip_cli.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ramses_rf
3
- Version: 0.51.4
3
+ Version: 0.51.5
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
@@ -61,6 +61,8 @@ from ramses_tx.const import ( # noqa: F401
61
61
  SZ_REMAINING_DAYS as SZ_REMAINING_DAYS,
62
62
  SZ_REMAINING_MINS as SZ_REMAINING_MINS,
63
63
  SZ_REMAINING_PERCENT as SZ_REMAINING_PERCENT,
64
+ SZ_REQ_REASON as SZ_REQ_REASON,
65
+ SZ_REQ_SPEED as SZ_REQ_SPEED,
64
66
  SZ_SCHEDULE as SZ_SCHEDULE,
65
67
  SZ_SENSOR as SZ_SENSOR,
66
68
  SZ_SETPOINT as SZ_SETPOINT,
@@ -31,6 +31,8 @@ from ramses_rf.const import (
31
31
  SZ_REMAINING_DAYS,
32
32
  SZ_REMAINING_MINS,
33
33
  SZ_REMAINING_PERCENT,
34
+ SZ_REQ_REASON,
35
+ SZ_REQ_SPEED,
34
36
  SZ_SPEED_CAPABILITIES,
35
37
  SZ_SUPPLY_FAN_SPEED,
36
38
  SZ_SUPPLY_FLOW,
@@ -506,6 +508,18 @@ class HvacVentilator(FilterChange): # FAN: RP/31DA, I/31D[9A]
506
508
  def remaining_mins(self) -> int | None:
507
509
  return self._msg_value(Code._31DA, key=SZ_REMAINING_MINS)
508
510
 
511
+ @property
512
+ def request_fan_speed(self) -> float | None:
513
+ return self._msg_value(Code._2210, key=SZ_REQ_SPEED)
514
+
515
+ @property
516
+ def request_src(self) -> str | None:
517
+ """
518
+ Orcon, others?
519
+ :return: source sensor of auto speed request: IDL, CO2 or HUM
520
+ """
521
+ return self._msg_value(Code._2210, key=SZ_REQ_REASON)
522
+
509
523
  @property
510
524
  def speed_cap(self) -> int | None:
511
525
  return self._msg_value(Code._31DA, key=SZ_SPEED_CAPABILITIES)
@@ -91,7 +91,7 @@ def _create_devices_from_addrs(gwy: Gateway, this: Message) -> None:
91
91
  if not gwy.config.enable_eavesdrop:
92
92
  return
93
93
 
94
- if not isinstance(this.dst, Device) and this.src is not gwy.hgi: # type: ignore[unreachable]
94
+ if not isinstance(this.dst, Device) and this.src != gwy.hgi: # type: ignore[unreachable]
95
95
  with contextlib.suppress(LookupError):
96
96
  this.dst = gwy.get_device(this.dst.id) # type: ignore[assignment]
97
97
 
@@ -188,9 +188,9 @@ def process_msg(gwy: Gateway, msg: Message) -> None:
188
188
  def logger_xxxx(msg: Message) -> None:
189
189
  if _DBG_FORCE_LOG_MESSAGES:
190
190
  _LOGGER.warning(msg)
191
- elif msg.src is not gwy.hgi or (msg.code != Code._PUZZ and msg.verb != RQ):
191
+ elif msg.src != gwy.hgi or (msg.code != Code._PUZZ and msg.verb != RQ):
192
192
  _LOGGER.info(msg)
193
- elif msg.src is not gwy.hgi or msg.verb != RQ:
193
+ elif msg.src != gwy.hgi or msg.verb != RQ:
194
194
  _LOGGER.info(msg)
195
195
  elif _LOGGER.getEffectiveLevel() == logging.DEBUG:
196
196
  _LOGGER.info(msg)
@@ -215,7 +215,7 @@ def process_msg(gwy: Gateway, msg: Message) -> None:
215
215
  if (
216
216
  msg.src._SLUG != DevType.HGI # avoid: msg.src.id != gwy.hgi.id
217
217
  and msg.verb != I_
218
- and msg.dst is not msg.src
218
+ and msg.dst != msg.src
219
219
  ):
220
220
  # HGI80 can do what it likes
221
221
  # receiving an I isn't currently in the schema & so can't yet be tested
@@ -234,10 +234,10 @@ def process_msg(gwy: Gateway, msg: Message) -> None:
234
234
  # TODO: only be for fully-faked (not Fakable) dst (it picks up via RF if not)
235
235
 
236
236
  if msg.code == Code._1FC9 and msg.payload[SZ_PHASE] == SZ_OFFER:
237
- devices = [d for d in gwy.devices if d is not msg.src and d._is_binding]
237
+ devices = [d for d in gwy.devices if d != msg.src and d._is_binding]
238
238
 
239
239
  elif msg.dst == ALL_DEV_ADDR: # some offers use dst=63:, so after 1FC9 offer
240
- devices = [d for d in gwy.devices if d is not msg.src and d.is_faked]
240
+ devices = [d for d in gwy.devices if d != msg.src and d.is_faked]
241
241
 
242
242
  elif msg.dst is not msg.src and isinstance(msg.dst, Fakeable): # type: ignore[unreachable]
243
243
  # to eavesdrop pkts from other devices, but relevant to this device
@@ -387,7 +387,7 @@ class _MessageDB(_Entity):
387
387
  codes = {
388
388
  k: (CODES_SCHEMA[k][SZ_NAME] if k in CODES_SCHEMA else None)
389
389
  for k in sorted(self._msgs)
390
- if self._msgs[k].src is (self if hasattr(self, "addr") else self.ctl)
390
+ if self._msgs[k].src == (self if hasattr(self, "addr") else self.ctl)
391
391
  }
392
392
 
393
393
  return {"_sent": list(codes.keys())}
@@ -193,19 +193,19 @@ class SystemBase(Parent, Entity): # 3B00 (multi-relay)
193
193
  this.code in (Code._22D9, Code._3220) and this.verb == RQ
194
194
  ): # TODO: RPs too?
195
195
  # dst could be an Address...
196
- if this.src is self.ctl and isinstance(this.dst, OtbGateway): # type: ignore[unreachable]
196
+ if this.src == self.ctl and isinstance(this.dst, OtbGateway): # type: ignore[unreachable]
197
197
  app_cntrl = this.dst # type: ignore[unreachable]
198
198
 
199
199
  elif this.code == Code._3EF0 and this.verb == RQ:
200
200
  # dst could be an Address...
201
- if this.src is self.ctl and isinstance(
201
+ if this.src == self.ctl and isinstance(
202
202
  this.dst, # type: ignore[unreachable]
203
203
  BdrSwitch | OtbGateway,
204
204
  ):
205
205
  app_cntrl = this.dst # type: ignore[unreachable]
206
206
 
207
207
  elif this.code == Code._3B00 and this.verb == I_ and prev is not None:
208
- if this.src is self.ctl and isinstance(prev.src, BdrSwitch): # type: ignore[unreachable]
208
+ if this.src == self.ctl and isinstance(prev.src, BdrSwitch): # type: ignore[unreachable]
209
209
  if prev.code == this.code and prev.verb == this.verb: # type: ignore[unreachable]
210
210
  app_cntrl = prev.src
211
211
 
@@ -266,7 +266,7 @@ class DhwZone(ZoneSchedule): # CS92A
266
266
  # self._get_dhw(sensor=this.dst)
267
267
 
268
268
  assert (
269
- msg.src is self.ctl
269
+ msg.src == self.ctl
270
270
  and msg.code in (Code._0005, Code._000C, Code._10A0, Code._1260, Code._1F41)
271
271
  or msg.payload.get(SZ_DOMAIN_ID) in (F9, FA)
272
272
  or msg.payload.get(SZ_ZONE_IDX) == "HW"
@@ -633,13 +633,13 @@ class Zone(ZoneSchedule):
633
633
  self._update_schema(**{SZ_CLASS: ZON_ROLE_MAP[ZoneRole.UFH]})
634
634
 
635
635
  assert (
636
- msg.src is self.ctl or msg.src.type == DEV_TYPE_MAP.UFC
636
+ msg.src == self.ctl or msg.src.type == DEV_TYPE_MAP.UFC
637
637
  ) and ( # DEX
638
638
  isinstance(msg.payload, dict)
639
639
  or [d for d in msg.payload if d.get(SZ_ZONE_IDX) == self.idx]
640
640
  ), f"msg inappropriately routed to {self}"
641
641
 
642
- assert (msg.src is self.ctl or msg.src.type == DEV_TYPE_MAP.UFC) and ( # DEX
642
+ assert (msg.src == self.ctl or msg.src.type == DEV_TYPE_MAP.UFC) and ( # DEX
643
643
  isinstance(msg.payload, list)
644
644
  or msg.code == Code._0005
645
645
  or msg.payload.get(SZ_ZONE_IDX) == self.idx
@@ -1,4 +1,4 @@
1
1
  """RAMSES RF - a RAMSES-II protocol decoder & analyser (application layer)."""
2
2
 
3
- __version__ = "0.51.4"
3
+ __version__ = "0.51.5"
4
4
  VERSION = __version__
@@ -88,6 +88,8 @@ SZ_REL_HUMIDITY: Final = "rel_humidity"
88
88
  SZ_REMAINING_DAYS: Final = "days_remaining"
89
89
  SZ_REMAINING_MINS: Final = "remaining_mins"
90
90
  SZ_REMAINING_PERCENT: Final = "percent_remaining"
91
+ SZ_REQ_REASON: Final = "req_reason"
92
+ SZ_REQ_SPEED: Final = "req_speed"
91
93
  SZ_SUPPLY_FAN_SPEED: Final = "supply_fan_speed"
92
94
  SZ_SUPPLY_FLOW: Final = "supply_flow"
93
95
  SZ_SUPPLY_TEMP: Final = "supply_temp"
@@ -757,7 +757,7 @@ def parse_fan_info(value: HexStr2) -> PayDictT.FAN_INFO:
757
757
  }
758
758
 
759
759
 
760
- # 31DA[38:40]
760
+ # 31DA[38:40], also 2210
761
761
  def parse_exhaust_fan_speed(value: HexStr2) -> PayDictT.EXHAUST_FAN_SPEED:
762
762
  """Return the exhaust fan speed (% of max speed)."""
763
763
  return _parse_fan_speed(SZ_EXHAUST_FAN_SPEED, value) # type: ignore[return-value]
@@ -72,6 +72,7 @@ from .const import (
72
72
  SZ_RELAY_DEMAND,
73
73
  SZ_REMAINING_DAYS,
74
74
  SZ_REMAINING_PERCENT,
75
+ SZ_REQ_REASON,
75
76
  SZ_SETPOINT,
76
77
  SZ_SETPOINT_BOUNDS,
77
78
  SZ_SYSTEM_MODE,
@@ -1378,22 +1379,18 @@ def parser_1fd4(payload: str, msg: Message) -> PayDictT._1FD4:
1378
1379
  return {"ticker": int(payload[2:], 16)}
1379
1380
 
1380
1381
 
1381
- # WIP: unknown, HVAC
1382
+ # WIP: HVAC auto requests (confirmed for Orcon, others?)
1382
1383
  def parser_2210(payload: str, msg: Message) -> dict[str, Any]:
1383
1384
  try:
1384
1385
  assert msg.verb in (RP, I_) or payload == "00"
1385
- assert payload[10:12] == payload[38:40] and payload[
1386
- 10:12
1387
- ] in ( # auto requested fan speed step?
1388
- "58",
1389
- "64",
1390
- "96",
1391
- "FF",
1392
- ), f"expected req.speed? (58|64|96|FF), not {payload[10:12]}"
1386
+ assert payload[10:12] == payload[38:40], (
1387
+ f"expected byte 19 {payload[10:12]}, not {payload[38:40]}"
1388
+ ) # auto requested fan speed %. Identical [38:40] is for supply?
1393
1389
  assert payload[20:22] == payload[48:50] and payload[20:22] in (
1394
- "00",
1395
- "03",
1396
- ), f"expected byte 10 (00|03), not {payload[20:22]}"
1390
+ "00", # idle
1391
+ "02", # requested by CO2 level/sensor
1392
+ "03", # requested by humidity level/sensor
1393
+ ), f"expected req_reason (00|02|03), not {payload[20:22]}"
1397
1394
  assert payload[78:80] in ("00", "02"), (
1398
1395
  f"expected byte 39 (00|02), not {payload[78:80]}"
1399
1396
  )
@@ -1407,9 +1404,17 @@ def parser_2210(payload: str, msg: Message) -> dict[str, Any]:
1407
1404
  except AssertionError as err:
1408
1405
  _LOGGER.warning(f"{msg!r} < {_INFORM_DEV_MSG} ({err})")
1409
1406
 
1407
+ _req = "IDL"
1408
+ if payload[20:22] == "02":
1409
+ _req = "CO2"
1410
+ elif payload[20:22] == "03":
1411
+ _req = "HUM"
1412
+
1410
1413
  return {
1411
- "unknown_10": payload[10:12],
1412
- "unknown_20": payload[20:22],
1414
+ **parse_exhaust_fan_speed(
1415
+ payload[10:12]
1416
+ ), # for Orcon: 29 hex == 41 decimal divided by 2 gives 20.5 (%)
1417
+ SZ_REQ_REASON: _req,
1413
1418
  "unknown_78": payload[78:80],
1414
1419
  "unknown_80": payload[80:82],
1415
1420
  "unknown_82": payload[82:],
@@ -1073,7 +1073,7 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1073
1073
  self._connecting = True
1074
1074
  try:
1075
1075
  self.client.connect_async(
1076
- self._broker_url.hostname, # type: ignore[arg-type]
1076
+ str(self._broker_url.hostname or "localhost"),
1077
1077
  self._broker_url.port or 1883,
1078
1078
  60,
1079
1079
  )
@@ -1172,10 +1172,18 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1172
1172
  self,
1173
1173
  client: mqtt.Client,
1174
1174
  userdata: Any,
1175
- reason_code: Any,
1176
- properties: Any | None,
1175
+ *args: Any,
1176
+ **kwargs: Any,
1177
1177
  ) -> None:
1178
- _LOGGER.warning(f"MQTT disconnected: {reason_code.getName()}")
1178
+ # Handle different paho-mqtt callback signatures
1179
+ reason_code = args[0] if len(args) >= 1 else None
1180
+
1181
+ reason_name = (
1182
+ reason_code.getName()
1183
+ if reason_code is not None and hasattr(reason_code, "getName")
1184
+ else str(reason_code)
1185
+ )
1186
+ _LOGGER.warning(f"MQTT disconnected: {reason_name}")
1179
1187
 
1180
1188
  was_connected = self._connected
1181
1189
  self._connected = False
@@ -1191,13 +1199,9 @@ class MqttTransport(_FullTransport, _MqttTransportAbstractor):
1191
1199
  self._protocol.pause_writing()
1192
1200
 
1193
1201
  # Only attempt reconnection if we didn't deliberately disconnect
1194
- if not self._closing and not reason_code.is_failure:
1195
- # This was an unexpected disconnect, schedule reconnection
1196
- _LOGGER.debug("MQTT unexpected disconnect - scheduling reconnection")
1197
- self._schedule_reconnect()
1198
- elif reason_code.is_failure and not self._closing:
1199
- # Connection failed, also schedule reconnection
1200
- _LOGGER.debug("MQTT connection failed - scheduling reconnection")
1202
+
1203
+ if not self._closing:
1204
+ # Schedule reconnection for any disconnect (unexpected or failure)
1201
1205
  self._schedule_reconnect()
1202
1206
 
1203
1207
  def _create_connection(self, msg: mqtt.MQTTMessage) -> None:
@@ -1,4 +1,4 @@
1
1
  """RAMSES RF - a RAMSES-II protocol decoder & analyser (transport layer)."""
2
2
 
3
- __version__ = "0.51.4"
3
+ __version__ = "0.51.5"
4
4
  VERSION = __version__
@@ -193,8 +193,9 @@
193
193
  2021-07-10T10:47:13.404100 ... RP --- 32:168090 18:000730 --:------ 10E0 038 000001C85802016CFFFFFFFFFFFF0C0707E0564D532D32334842333300000000000000000000
194
194
  2021-10-11T14:21:14.518500 ... I --- 32:168240 63:262142 --:------ 10E0 038 000001C85803016CFFFFFFFFFFFF0C0907E0564D532D32334842333300000000000000000000
195
195
  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
- 2022-02-19T18:00:35.234656 062 I --- 32:206250 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300 # VMN-23LMH23
196
+ 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
197
  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
198
199
  2021-12-20T08:24:09.117900 ... I --- 34:021943 63:262142 --:------ 10E0 038 000001C8380A0100F1FF0C0107E1030B07DE5438375246323032350000000000000000000000
199
200
  2021-11-08T15:26:00.654600 ... I --- 34:041323 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1E0407E4030507E15438375246323032350000000000000000000000
200
201
  2019-12-22T14:26:07.736118 045 I --- 34:044201 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1D0807E2030507E15438375246323032350000000000000000000000
@@ -1,6 +1,7 @@
1
+ # Honeywell Round thermostat, oem_code '00' / sub-id 'C8' - heat
1
2
 
2
3
  2022-08-20T12:03:31.051414 ... I --- 34:018143 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1B0107E4030507E15438375246323032350000000000000000000000
3
- 2021-12-20T08:24:09.117900 ... I --- 34:021943 63:262142 --:------ 10E0 038 000001C8380A0100F1FF0C0107E1030B07DE5438375246323032350000000000000000000000
4
+ 2021-12-20T08:24:09.117900 ... I --- 34:021943 63:262142 --:------ 10E0 038 000001C8380A0100F1FF0C0107E1030B07DE5438375246323032350000000000000000000000 # {'description': 'T87RF2025', 'manufacturer_sub_id': 'C8', 'product_id': '38', 'oem_code': '00', 'date_1': '2014-11-03', 'date_2': '2017-01-12'}
4
5
  2021-11-08T15:26:00.654600 ... I --- 34:041323 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1E0407E4030507E15438375246323032350000000000000000000000
5
6
  2019-12-22T14:26:07.736118 045 I --- 34:044201 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1D0807E2030507E15438375246323032350000000000000000000000
6
7
  2019-12-22T13:26:13.854200 ... I --- 34:044203 63:262142 --:------ 10E0 038 000001C8380F0100F1FF1D0807E2030507E15438375246323032350000000000000000000000
@@ -1,5 +1,8 @@
1
1
 
2
- 2023-01-26T08:47:34.307872 ... I --- 29:207706 63:262142 --:------ 10E0 029 000001C8260D0467FFFFFFFFFFFFFFFFFFFF564D432D31355250303100 # 10E0| I|29:207706
2
+ 2023-01-26T08:47:34.307872 ... I --- 29:207706 63:262142 --:------ 10E0 029 000001C8260D0467FFFFFFFFFFFFFFFFFFFF564D432D31355250303100 # 10E0| I|29:207706
3
3
  2022-02-05T08:05:56.604400 ... I --- 29:215374 63:262142 --:------ 10E0 029 000001C8260A0367FFFFFFFFFFFFFFFFFFFF564D432D31355250303100
4
4
  2022-08-16T20:07:50.411731 080 I --- 29:226075 63:262142 --:------ 10E0 029 000001C8260D0467FFFFFFFFFFFFFFFFFFFF564D432D31355250303100
5
5
  2021-07-01T13:00:09.215900 ... I --- 29:237552 63:262142 --:------ 10E0 029 000001C8260D0467FFFFFFFFFFFFFFFFFFFF564D432D31355250303100
6
+
7
+ # Orcon MVS-15RHB fan from Hans-Mep
8
+ 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
@@ -1,4 +1,4 @@
1
-
1
+ # Orcon HRU VMD-15RMS86
2
2
  2021-10-26T21:51:43.143100 ... I --- 32:132125 63:262142 --:------ 10E0 038 000001C8950B0A67FEFFFFFFFFFF150107E5564D442D3135524D533836000000000000000000
3
3
  2022-08-21T10:23:55.127583 076 RP --- 32:134446 37:171685 --:------ 10E0 038 000001C8950B0A67FEFFFFFFFFFF150107E5564D442D3135524D533836000000000000000000
4
4
  2022-08-18T23:09:54.528026 ... I --- 32:143293 63:262142 --:------ 10E0 038 000001C8950B0A67FEFFFFFFFFFF150107E5564D442D3135524D533836000000000000000000 # 10E0| I|32:143293
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
  # Confirmed:
6
- 2022-02-19T18:00:35.234656 062 I --- 32:206250 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300
6
+ 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'}
7
7
  2023-04-27T16:21:21.263244 ... I --- 32:208628 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300
8
8
 
9
9
 
@@ -8,10 +8,9 @@
8
8
 
9
9
 
10
10
  # The payload changes as the firmware is updated & date_2 is updated
11
- 2019-12-21T18:29:44.104610 057 RP --- 01:145038 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000 # {'oem_code': 'FF', 'manufacturer_sub_id': 'FF', 'product_id': '01', 'date_1': '2013-08-01', 'date_2': '2017-11-20', 'description': 'Evo Color'}
12
- 2020-05-14T15:41:48.743111 045 RP --- 01:145038 18:013393 --:------ 10E0 038 000002FF0163FFFFFFFF640307E4010807DD45766F20436F6C6F720000000000000000000000 # {'oem_code': 'FF', 'manufacturer_sub_id': 'FF', 'product_id': '01', 'date_1': '2013-08-01', 'date_2': '2020-03-04', 'description': 'Evo Color'}
13
- 2021-01-25T23:23:00.520205 051 RP --- 01:145038 18:140805 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # {'oem_code': 'FF', 'manufacturer_sub_id': 'FF', 'product_id': '01', 'date_1': '2013-08-01', 'date_2': '2020-08-11', 'description': 'Evo Color'}
14
-
11
+ 2019-12-21T18:29:44.104610 057 RP --- 01:145038 18:056026 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000 # {'description': 'Evo Color', 'oem_code': 'FF', 'manufacturer_sub_id': 'FF', 'product_id': '01', 'date_1': '2013-08-01', 'date_2': '2017-11-20'}
12
+ 2020-05-14T15:41:48.743111 045 RP --- 01:145038 18:013393 --:------ 10E0 038 000002FF0163FFFFFFFF640307E4010807DD45766F20436F6C6F720000000000000000000000 # {'description': 'Evo Color', 'oem_code': 'FF', 'manufacturer_sub_id': 'FF', 'product_id': '01', 'date_1': '2013-08-01', 'date_2': '2020-03-04'}
13
+ 2021-01-25T23:23:00.520205 051 RP --- 01:145038 18:140805 --:------ 10E0 038 000002FF0163FFFFFFFF0B0807E4010807DD45766F20436F6C6F720000000000000000000000 # {'description': 'Evo Color', 'oem_code': 'FF', 'manufacturer_sub_id': 'FF', 'product_id': '01', 'date_1': '2013-08-01', 'date_2': '2020-08-11'}
15
14
 
16
15
  #
17
16
  # oem_code 'FF' - Honeywell/Resideo CH/DHW
@@ -82,6 +81,8 @@
82
81
 
83
82
 
84
83
  #
84
+ # oem_code '00' / sub-id 'C8' - heat
85
+ 2021-12-20T08:24:09.117900 ... I --- 34:021943 63:262142 --:------ 10E0 038 000001C8380A0100F1FF0C0107E1030B07DE5438375246323032350000000000000000000000 # {'description': 'T87RF2025', 'manufacturer_sub_id': 'C8', 'product_id': '38', 'oem_code': '00', 'date_1': '2014-11-03', 'date_2': '2017-01-12'}
85
86
  # oem_code '00' / sub-id 'C9', 30:069468 is a BUVA Boxstream
86
87
  2023-11-04T12:34:14.007611 062 I --- 30:068457 63:262142 --:------ 10E0 038 000001C9001B0000FEFEFFFFFFFF0E0507E2425244472D30324A415330310000000000000000 # {'description': 'BRDG-02JAS01', 'manufacturer_sub_id': 'C9', 'product_id': '00', 'date_2': '0000-00-00', 'date_1': '2018-05-14', 'oem_code': '00'}
87
88
  2022-01-01T00:00:00.000000 000 I --- 30:069468 63:262142 --:------ 10E0 038 000001C9001B0000FEFEFFFFFFFF0E0507E2425244472D30324A415330310000000000000000 # {'description': 'BRDG-02JAS01', 'manufacturer_sub_id': 'C9', 'product_id': '00', 'date_1': '2018-05-14', 'date_2': '0000-00-00', 'oem_code': '00'} # BUVA Boxstrea,
@@ -122,12 +123,14 @@
122
123
  2019-11-27T22:39:00.000000 ... I --- 32:139773 63:262142 --:------ 10E0 038 000001C8A2050367FEFFFFFFFFFF1D0807E6564D442D3135524D5338362D3200000000000000 # {'description': 'VMD-15RMS86-2', 'manufacturer_sub_id': 'C8', 'product_id': 'A2', 'oem_code': '67', 'date_1': '2022-08-29', 'date_2': '0000-00-00'} # {"_SLUG": "HRU", "make": "Orcon", "model": "HRC 425"}
123
124
  2019-11-27T22:39:00.000000 ... I --- 32:137102 63:262142 --:------ 10E0 030 000001C85E0B0567FFFFFFFFFFFFFFFFFFFF564D442D3135525053373500 # {'description': 'VMD-15RPS75', 'manufacturer_sub_id': 'C8', 'product_id': '5E', 'oem_code': '67', 'date_1': '0000-00-00', 'date_2': '0000-00-00'} # {"_SLUG": "HRU", "make": "Orcon", "model": "HRC 235"}
124
125
 
126
+ 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
127
+
125
128
  # oem_code '6C' - Nuaire HVAC
126
129
  2019-11-27T22:39:12.877929 061 RP --- 30:082155 18:013393 --:------ 10E0 038 000001C90011006CFEFFFFFFFFFF090907E0425244472D30324A415330310000000000000000 # {'description': 'BRDG-02JAS01', 'manufacturer_sub_id': 'C9', 'product_id': '00', 'oem_code': '6C', 'date_2': '0000-00-00', 'date_1': '2016-09-09'} # {"_SLUG": "PIV", "make": "Nuaire", "model": "Drimaster Eco-Heat-HC"}
127
130
  2023-04-13T10:43:39.077524 073 I --- 30:098165 63:262142 --:------ 10E0 038 000001C9001D006CFEFEFFFFFFFF120707E3425244472D30324A415330310000000000000000 # {'description': 'BRDG-02JAS01', 'manufacturer_sub_id': 'C9', 'product_id': '00', 'oem_code': '6C', 'date_2': '0000-00-00', 'date_1': '2019-07-18'} # {"_SLUG": "PIV", "make": "Nuaire", "model": "Drimaster Eco-Heat-HC"}
128
131
  2021-10-24T15:45:16.525879 055 I --- 32:168090 63:262142 --:------ 10E0 038 000001C85802016CFFFFFFFFFFFF0C0707E0564D532D32334842333300000000000000000000 # {'description': 'VMS-23HB33', 'manufacturer_sub_id': 'C8', 'product_id': '58', 'oem_code': '6C', 'date_2': '0000-00-00', 'date_1': '2016-07-12'} # {"_SLUG": "HUM", "make": "Nuaire", "model": "Drimaster RelHum Sensor"}
129
132
  2022-01-01T00:00:00.000000 000 I --- 32:172522 63:262142 --:------ 10E0 029 000001C85901016CFFFFFFFFFFFF1F0507E0564D4E2D32334C4D333300 # {'description': 'VMN-23LM33', 'manufacturer_sub_id': 'C8', 'product_id': '59', 'oem_code': '6C', 'date_2': '0000-00-00', 'date_1': '2016-05-31'} # {"_SLUG": "???", "make": "Nuaire", "model": None}
130
-
133
+ 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'}
131
134
 
132
135
  #
133
136
  # WIP
@@ -0,0 +1,26 @@
1
+ # HVAC - not well understood
2
+
3
+ # system with Orcon HRC 425 SmartComfort
4
+ 2023-11-12T00:00:11.000000 ... RP --- 32:153258 18:005904 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
5
+ 2023-11-12T00:00:22.000000 ... RP --- 32:153258 18:005904 --:------ 2210 042 00FF00FFFF960000000003FFFFFFFFFF00FFFF960000000003FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.75, 'req_reason': 'HUM', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
6
+ 2023-11-12T00:00:33.000000 ... RP --- 32:139773 18:072982 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000020800 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '02', 'unknown_80': '08', 'unknown_82': '00'}
7
+
8
+ # ClimaRad Ventura V1x
9
+ 2024-10-20T00:00:00.000000 ... I --- 37:153226 --:------ 37:153226 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000140 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '00', 'unknown_80': '01', 'unknown_82': '40'}
10
+ 2025-03-20T09:22:30.692000 000 RQ --- 18:130140 37:153226 --:------ 2210 001 00 # {}
11
+ 2025-03-20T09:22:30.732000 053 RP --- 37:153226 18:130140 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000140 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '00', 'unknown_80': '01', 'unknown_82': '40'}
12
+
13
+ # Orcon HVAC from issue #164 by @hermanbanken
14
+ 2025-01-13T00:00:00.000000 ... RP --- 32:133288 18:101036 --:------ 2210 042 00FF00FFFF580000000003FFFFFFFFFF00FFFF580000000003FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.44, 'req_reason': 'HUM', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
15
+
16
+ # Orcon RF15 control unit (log from remyderuysscher via ramses_cc issue 65)
17
+ 2022-06-26T00:00:00.000001 ... RP --- 32:155021 18:071957 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000020800 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '02', 'unknown_80': '08', 'unknown_82': '00'}
18
+ # Orcon HRC-400-EcoMax (log from AbeltjeNL via ramses_rf issue 247) unknown_10=64 when showering/auto, normally=FF
19
+ 2025-08-19T19:39:30.000000 074 RP --- 32:139370 18:025584 --:------ 2210 042 00FF00FFFF640000000003FFFFFFFFFF00FFFF640000000003FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.5, 'req_reason': 'HUM', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
20
+ 2025-08-19T19:39:30.910438 074 RP --- 32:139370 18:025584 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
21
+ 2025-08-19T20:09:31.032118 074 RP --- 32:139370 18:025584 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': None, 'req_reason': 'IDL', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
22
+ # Orcon HRU, reported as VMD-15RMS86 from Kars-de-Jong
23
+ 2025-08-29T11:43:01.693447 043 RP --- 32:123456 18:123456 --:------ 2210 042 00FF00FFFF440000000002FFFFFFFFFF00FFFF440000000002FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.34, 'req_reason': 'CO2', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
24
+ 2025-08-29T12:13:01.786453 042 RP --- 32:123456 18:123456 --:------ 2210 042 00FF00FFFF6C0000000002FFFFFFFFFF00FFFF6C0000000002FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.54, 'req_reason': 'CO2', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
25
+ 2025-08-29T21:51:48.094451 043 RP --- 32:123456 18:123456 --:------ 2210 042 00FF00FFFF2D0000000002FFFFFFFFFF00FFFF2D0000000002FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.225, 'req_reason': 'CO2', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
26
+ 2025-08-29T22:21:48.189311 043 RP --- 32:123456 18:123456 --:------ 2210 042 00FF00FFFF430000000002FFFFFFFFFF00FFFF430000000002FFFFFFFFFFFFFFFF000000000000000800 # {'exhaust_fan_speed': 0.335, 'req_reason': 'CO2', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
@@ -1,21 +0,0 @@
1
- # HVAC - not well understood
2
-
3
- # system with Orcon HRC 425 SmartComfort
4
- 2023-11-12T00:00:11.000000 ... RP --- 32:153258 18:005904 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
5
- 2023-11-12T00:00:22.000000 ... RP --- 32:153258 18:005904 --:------ 2210 042 00FF00FFFF960000000003FFFFFFFFFF00FFFF960000000003FFFFFFFFFFFFFFFF000000000000000800 # {'unknown_10': '96', 'unknown_20': '03', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
6
- 2023-11-12T00:00:33.000000 ... RP --- 32:139773 18:072982 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000020800 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '02', 'unknown_80': '08', 'unknown_82': '00'}
7
-
8
- # ClimaRad Ventura V1x
9
- 2024-10-20T00:00:00.000000 ... I --- 37:153226 --:------ 37:153226 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000140 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '00', 'unknown_80': '01', 'unknown_82': '40'}
10
- 2025-03-20T09:22:30.692000 000 RQ --- 18:130140 37:153226 --:------ 2210 001 00 # {}
11
- 2025-03-20T09:22:30.732000 053 RP --- 37:153226 18:130140 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000140 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '00', 'unknown_80': '01', 'unknown_82': '40'}
12
-
13
- # Orcon HVAC from issue #164 by @hermanbanken
14
- 2025-01-13T00:00:00.000000 ... RP --- 32:133288 18:101036 --:------ 2210 042 00FF00FFFF580000000003FFFFFFFFFF00FFFF580000000003FFFFFFFFFFFFFFFF000000000000000800 # {'unknown_10': '58', 'unknown_20': '03', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
15
-
16
- # Orcon RF15 control unit (log from remyderuysscher via ramses_cc issue 65)
17
- 2022-06-26T00:00:00.000001 ... RP --- 32:155021 18:071957 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000020800 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '02', 'unknown_80': '08', 'unknown_82': '00'}
18
- # Orcon HRC-400-EcoMax (log from AbeltjeNL via ramses_rf issue 247) unknown_10=64 when showering/auto, normally=FF
19
- 2025-08-19T19:39:30.000000 074 RP --- 32:139370 18:025584 --:------ 2210 042 00FF00FFFF640000000003FFFFFFFFFF00FFFF640000000003FFFFFFFFFFFFFFFF000000000000000800 # {'unknown_10': '64', 'unknown_20': '03', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
20
- 2025-08-19T19:39:30.910438 074 RP --- 32:139370 18:025584 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
21
- 2025-08-19T20:09:31.032118 074 RP --- 32:139370 18:025584 --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 # {'unknown_10': 'FF', 'unknown_20': '00', 'unknown_78': '00', 'unknown_80': '08', 'unknown_82': '00'}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes