ramses-rf 0.51.1__tar.gz → 0.51.3__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 (351) hide show
  1. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/PKG-INFO +1 -1
  2. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/device/hvac.py +24 -31
  3. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/entity_base.py +4 -1
  4. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/version.py +1 -1
  5. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/version.py +1 -1
  6. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_apis_hvac.py +73 -3
  7. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.github/dependabot.yml +0 -0
  9. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.github/workflows/check-lint.yml +0 -0
  10. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.github/workflows/check-test.yml +0 -0
  11. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.github/workflows/check-type.yml +0 -0
  12. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.github/workflows/publish-hatch.yml +0 -0
  13. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.gitignore +0 -0
  14. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/.pre-commit-config.yaml +0 -0
  15. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/LICENSE +0 -0
  16. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/README-developers.md +0 -0
  17. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/README.md +0 -0
  18. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/client.py +0 -0
  19. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/misc/fingerprints.log +0 -0
  20. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/misc/ser2net.yaml +0 -0
  21. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/misc/ti_3410/notes.sh +0 -0
  22. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/misc/ti_3410/ti_3410.fw +0 -0
  23. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/pyproject.toml +0 -0
  24. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_cli/__init__.py +0 -0
  25. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_cli/client.py +0 -0
  26. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_cli/debug.py +0 -0
  27. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_cli/discovery.py +0 -0
  28. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_cli/utils/cat_slow.py +0 -0
  29. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_cli/utils/convert.py +0 -0
  30. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/__init__.py +0 -0
  31. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/binding_fsm.py +0 -0
  32. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/const.py +0 -0
  33. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/database.py +0 -0
  34. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/device/__init__.py +0 -0
  35. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/device/base.py +0 -0
  36. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/device/heat.py +0 -0
  37. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/dispatcher.py +0 -0
  38. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/exceptions.py +0 -0
  39. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/gateway.py +0 -0
  40. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/helpers.py +0 -0
  41. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/py.typed +0 -0
  42. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/schemas.py +0 -0
  43. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/system/__init__.py +0 -0
  44. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/system/faultlog.py +0 -0
  45. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/system/heat.py +0 -0
  46. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/system/schedule.py +0 -0
  47. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_rf/system/zones.py +0 -0
  48. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/__init__.py +0 -0
  49. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/address.py +0 -0
  50. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/command.py +0 -0
  51. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/const.py +0 -0
  52. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/exceptions.py +0 -0
  53. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/fingerprints.py +0 -0
  54. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/frame.py +0 -0
  55. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/gateway.py +0 -0
  56. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/helpers.py +0 -0
  57. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/logger.py +0 -0
  58. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/message.py +0 -0
  59. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/opentherm.py +0 -0
  60. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/packet.py +0 -0
  61. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/parsers.py +0 -0
  62. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/protocol.py +0 -0
  63. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/protocol_fsm.py +0 -0
  64. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/py.typed +0 -0
  65. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/ramses.py +0 -0
  66. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/schemas.py +0 -0
  67. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/transport.py +0 -0
  68. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/typed_dicts.py +0 -0
  69. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/ramses_tx/typing.py +0 -0
  70. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/requirements.txt +0 -0
  71. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/requirements_dev.txt +0 -0
  72. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/_test_apis_mock.py +0 -0
  73. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/_test_mock_faultlog.py +0 -0
  74. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/_test_mock_schedule.py +0 -0
  75. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/_test_packets_bad.py +0 -0
  76. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/_test_performance_WIP.py +0 -0
  77. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/_test_state_mgt.py +0 -0
  78. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/common.py +0 -0
  79. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/mocked_devices/__init__.py +0 -0
  80. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/mocked_devices/command.py +0 -0
  81. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/mocked_devices/const.py +0 -0
  82. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/mocked_devices/device_heat.py +0 -0
  83. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/mocked_devices/device_hvac.py +0 -0
  84. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/deprecated/mocked_devices/transport.py +0 -0
  85. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/__init__.py +0 -0
  86. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/heat/ctl_bdr_91t.log +0 -0
  87. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/heat/dts_ctl_sensor.log +0 -0
  88. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/heat/hcw_ctl_sensor.log +0 -0
  89. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/heat/rnd_ctl_sensor.log +0 -0
  90. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/heat/rnd_ctl_sensor.yaml +0 -0
  91. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/heat/trv_ctl.log +0 -0
  92. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/co2_fan_itho.json +0 -0
  93. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/co2_fan_itho.log +0 -0
  94. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/co2_fan_itho.yaml +0 -0
  95. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/dis_fan_orcon.json +0 -0
  96. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/dis_fan_orcon.log +0 -0
  97. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/rem_fan_climarad.log +0 -0
  98. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/rem_fan_nuaire.json +0 -0
  99. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/rem_fan_nuaire.log +0 -0
  100. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/rem_fan_nuaire.yaml +0 -0
  101. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/rem_fan_vasco.log +0 -0
  102. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/bindings/hvac/rem_fan_ventura.log +0 -0
  103. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/devices/device_02.log +0 -0
  104. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/devices/device_04.log +0 -0
  105. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/devices/device_10.log +0 -0
  106. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/devices/device_13.log +0 -0
  107. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/devices/device_22.log +0 -0
  108. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_off.json +0 -0
  109. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_on.json +0 -0
  110. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_dev_class/hvac/packet.log +0 -0
  111. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_trv_actuator_long/packet.log +0 -0
  112. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_off.json +0 -0
  113. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_on.json +0 -0
  114. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/packet.log +0 -0
  115. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_off.json +0 -0
  116. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_on.json +0 -0
  117. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_ufh_circuits/packet.log +0 -0
  118. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_off.json +0 -0
  119. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_on.json +0 -0
  120. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/app_cntrl/packet.log +0 -0
  121. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_off.json +0 -0
  122. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_on.json +0 -0
  123. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/trv_actuators/packet.log +0 -0
  124. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_off.json +0 -0
  125. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_on.json +0 -0
  126. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_000/packet.log +0 -0
  127. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_off.json +0 -0
  128. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_on.json +0 -0
  129. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_001/packet.log +0 -0
  130. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_off.json +0 -0
  131. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_on.json +0 -0
  132. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_002/packet.log +0 -0
  133. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_off.json +0 -0
  134. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_on.json +0 -0
  135. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_003/packet.log +0 -0
  136. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_off.json +0 -0
  137. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_on.json +0 -0
  138. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_004/packet.log +0 -0
  139. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_off.json +0 -0
  140. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_on.json +0 -0
  141. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/10e0_xxxx.log +0 -0
  142. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/_gather.sh +0 -0
  143. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/01_EvoTouch_Colour.log +0 -0
  144. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/01_Evo_Color.log +0 -0
  145. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/01_IONA_RAI_Prototype.log +0 -0
  146. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/02_HCE80_V3.10_061117..log +0 -0
  147. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/04_HR92 Radiator Ctrl_.log +0 -0
  148. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/08_Jasper_EIM.log +0 -0
  149. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/10_R8810A_Bridge.log +0 -0
  150. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/10_R8820.log +0 -0
  151. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/30_Internet_Gateway.log +0 -0
  152. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/31_Jasper_Stat_TXXX.log +0 -0
  153. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/heat/34_T87RF2025.log +0 -0
  154. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/18_BRDG-02A55.log +0 -0
  155. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/18_HRA82.log +0 -0
  156. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/20.log +0 -0
  157. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/21_CCU-12T20.log +0 -0
  158. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMC-07RP01.log +0 -0
  159. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMC-15RP01.log +0 -0
  160. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMC-17RP01.log +0 -0
  161. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMN-07LM01.log +0 -0
  162. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMN-15LF01.log +0 -0
  163. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMN-17LMP01.log +0 -0
  164. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMS-15C16.log +0 -0
  165. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/29_VMS-17HB01.log +0 -0
  166. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/30_BRDG-02EM23.log +0 -0
  167. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/30_BRDG-02JAS01.log +0 -0
  168. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMC-15RPS34.log +0 -0
  169. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMD-15RMS64.log +0 -0
  170. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMD-15RMS86.log +0 -0
  171. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMD-17RPS01.log +0 -0
  172. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMN-23LM33.log +0 -0
  173. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMN-23LMH23.log +0 -0
  174. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMS-15CM17.log +0 -0
  175. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMS-23C33.log +0 -0
  176. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMS-23HB33.log +0 -0
  177. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/32_VMZ-15V13.log +0 -0
  178. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/37_VMD-07RPS13.log +0 -0
  179. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/37_VMI-15MC01log +0 -0
  180. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/37_VMI-15WSJ53.log +0 -0
  181. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/37_VMS-02J52.log +0 -0
  182. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/37_VMS-12C39.log +0 -0
  183. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/99_CVE-RF.log +0 -0
  184. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/fingerprints/hvac/99_VMS-17C01.log +0 -0
  185. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/helpers.py +0 -0
  186. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/logger/packet_in.log +0 -0
  187. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/logger/packet_out.log +0 -0
  188. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/logs/pkts_bad_000.log +0 -0
  189. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/logs/pkts_tba_000.log +0 -0
  190. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/logs/system_cache.json +0 -0
  191. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parser_helpers/pkt_addr_set.log +0 -0
  192. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parser_helpers/pkt_dev_class.log +0 -0
  193. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0001_wip.log +0 -0
  194. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0002.log +0 -0
  195. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0004_wip.log +0 -0
  196. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0005.log +0 -0
  197. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0006.log +0 -0
  198. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0009.log +0 -0
  199. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_000a.log +0 -0
  200. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_000c.log +0 -0
  201. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_000e.log +0 -0
  202. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_01ff_wip.log +0 -0
  203. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_0418.log +0 -0
  204. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_042f.log +0 -0
  205. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_1030.log +0 -0
  206. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_1060.log +0 -0
  207. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_10d0.log +0 -0
  208. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_10e0.log +0 -0
  209. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_1260.log +0 -0
  210. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_1298.log +0 -0
  211. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_12a0.log +0 -0
  212. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_12c0.log +0 -0
  213. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_1300.log +0 -0
  214. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_1fc9.log +0 -0
  215. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_2210.log +0 -0
  216. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22c9.log +0 -0
  217. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22d0.log +0 -0
  218. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22d9.log +0 -0
  219. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22e0.log +0 -0
  220. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22e5.log +0 -0
  221. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22e9.log +0 -0
  222. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22f1.log +0 -0
  223. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22f2.log +0 -0
  224. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22f3.log +0 -0
  225. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22f4.log +0 -0
  226. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_22f7.log +0 -0
  227. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_2309.log +0 -0
  228. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_2349.log +0 -0
  229. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_2411_wip.log +0 -0
  230. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_2e04.log +0 -0
  231. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_2e10_wip.log +0 -0
  232. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_30c9.log +0 -0
  233. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3110_wip.log +0 -0
  234. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3120.log +0 -0
  235. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_313e_wip.log +0 -0
  236. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3150.log +0 -0
  237. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_31d9.log +0 -0
  238. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_31da.log +0 -0
  239. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3200.log +0 -0
  240. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3210.log +0 -0
  241. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3220.log +0 -0
  242. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3222.log +0 -0
  243. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3ef0_wip.log +0 -0
  244. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_3ef1_wip.log +0 -0
  245. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_4e01.log +0 -0
  246. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_4e02.log +0 -0
  247. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_4e04.log +0 -0
  248. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/parsers/code_4e15.log +0 -0
  249. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schedules/_sched_002/packet.log +0 -0
  250. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schedules/_sched_002/schedule.json +0 -0
  251. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schedules/sched_001/packet.log +0 -0
  252. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schedules/sched_001/schedule.json +0 -0
  253. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schedules/sched_dhw/packet.log +0 -0
  254. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schedules/sched_dhw/schedule.json +0 -0
  255. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_100.json +0 -0
  256. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_101.json +0 -0
  257. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_102.json +0 -0
  258. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_103.json +0 -0
  259. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_104.json +0 -0
  260. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_105.json +0 -0
  261. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/jsn_files/schema_108.json +0 -0
  262. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_000.json +0 -0
  263. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_000.log +0 -0
  264. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_001.json +0 -0
  265. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_001.log +0 -0
  266. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_002.json +0 -0
  267. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_002.log +0 -0
  268. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_010.json +0 -0
  269. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_010.log +0 -0
  270. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_011.json +0 -0
  271. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_011.log +0 -0
  272. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_012.json +0 -0
  273. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_012.log +0 -0
  274. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_013.json +0 -0
  275. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_013.log +0 -0
  276. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_014.json +0 -0
  277. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_014.log +0 -0
  278. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_300.json +0 -0
  279. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_300.log +0 -0
  280. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_301.json +0 -0
  281. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_301.log +0 -0
  282. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_302.json +0 -0
  283. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_302.log +0 -0
  284. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_303.json +0 -0
  285. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_303.log +0 -0
  286. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_304.json +0 -0
  287. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_304.log +0 -0
  288. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_310.json +0 -0
  289. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/schemas/log_files/schema_310.log +0 -0
  290. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_heat_trv_00/config.json +0 -0
  291. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_heat_trv_00/packet.log +0 -0
  292. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_heat_trv_00/schema.json +0 -0
  293. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_hvac_nuaire/config.json +0 -0
  294. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_hvac_nuaire/known_list.json +0 -0
  295. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_hvac_nuaire/packet.log +0 -0
  296. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_hvac_nuaire/schema.json +0 -0
  297. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/_hvac_nuaire/status.json +0 -0
  298. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_otb_00/config.json +0 -0
  299. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_otb_00/packet.log +0 -0
  300. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_otb_00/schema.json +0 -0
  301. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_simple/packet.log +0 -0
  302. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_simple/schema.json +0 -0
  303. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_ufc_00/config.json +0 -0
  304. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_ufc_00/packet.log +0 -0
  305. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_ufc_01/packet.log +0 -0
  306. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_zxdavb/config.json +0 -0
  307. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_zxdavb/known_list.json +0 -0
  308. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_zxdavb/packet.log +0 -0
  309. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/systems/heat_zxdavb/schema.json +0 -0
  310. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_api_faultlog.py +0 -0
  311. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_api_schedule.py +0 -0
  312. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_apis_binding.py +0 -0
  313. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_apis_common.py +0 -0
  314. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_apis_heat.py +0 -0
  315. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_cli_utility.py +0 -0
  316. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_devices.py +0 -0
  317. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_eavesdrop_dev_class.py +0 -0
  318. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_eavesdrop_schema.py +0 -0
  319. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_helpers.py +0 -0
  320. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_parser_helpers.py +0 -0
  321. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_parsers.py +0 -0
  322. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_ramses_schema.py +0 -0
  323. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_schema_bits.py +0 -0
  324. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_schemas.py +0 -0
  325. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_systems.py +0 -0
  326. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests/test_vol_schemas.py +0 -0
  327. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/__init__.py +0 -0
  328. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/configs/config_heat.json +0 -0
  329. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/configs/config_hvac.json +0 -0
  330. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/conftest.py +0 -0
  331. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/logs/test_api_faultlog.log +0 -0
  332. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_api_faultlog.py +0 -0
  333. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_api_schedule.py +0 -0
  334. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_binding_fsm.py +0 -0
  335. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_create_stack.py +0 -0
  336. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_hgi_behaviors.py +0 -0
  337. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_protocol_fsm.py +0 -0
  338. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_use_regex.py +0 -0
  339. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/test_virt_network.py +0 -0
  340. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/virtual_rf/__init__.py +0 -0
  341. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/virtual_rf/const.py +0 -0
  342. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/virtual_rf/helpers.py +0 -0
  343. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_rf/virtual_rf/virtual_rf.py +0 -0
  344. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_tx/__init__.py +0 -0
  345. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/tests_tx/test_command.py +0 -0
  346. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/wip/_test_eavesdrop_dhw_sensor.py +0 -0
  347. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/wip/_test_eavesdrop_htg_control.py +0 -0
  348. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/wip/_test_eavesdrop_ufc_circuits.py +0 -0
  349. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/wip/_test_eavesdrop_zone_sensors.py +0 -0
  350. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/tests/wip/_test_eavesdrop_zone_type.py +0 -0
  351. {ramses_rf-0.51.1 → ramses_rf-0.51.3}/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.1
3
+ Version: 0.51.3
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
@@ -378,16 +378,11 @@ class HvacVentilator(FilterChange): # FAN: RP/31DA, I/31D[9A]
378
378
  @property
379
379
  def bypass_position(self) -> float | str | None:
380
380
  """
381
- Position info is found in 22F7 and in 31DA. Both are picked up, ignoring None.
381
+ Position info is found in 22F7 and in 31DA. The most recent packet is returned.
382
382
  :return: bypass position as percentage: 0.0 (closed) or 1.0 (open), on error: "x_faulted"
383
383
  """
384
- for code in [c for c in (Code._22F7, Code._31DA) if c in self._msgs]:
385
- if v := self._msgs[code].payload.get(SZ_BYPASS_POSITION):
386
- if v is not None: # skip none (to fetch other code)
387
- assert isinstance(v, (float | str))
388
- return v
389
- # if both packets exist and both have the key, return the most recent
390
- return None
384
+ # if both packets exist and both have the key, returns the most recent
385
+ return self._msg_value((Code._22F7, Code._31DA), key=SZ_BYPASS_POSITION)
391
386
 
392
387
  @property
393
388
  def bypass_state(self) -> str | None:
@@ -426,13 +421,6 @@ class HvacVentilator(FilterChange): # FAN: RP/31DA, I/31D[9A]
426
421
 
427
422
  @property
428
423
  def exhaust_temp(self) -> float | None:
429
- if Code._12A0 in self._msgs and isinstance(
430
- self._msgs[Code._12A0].payload, list
431
- ): # FAN Ventura sends RH/temps as a list, use element [2] for exhaust temp
432
- if v := self._msgs[Code._12A0].payload[2].get(SZ_TEMPERATURE):
433
- assert isinstance(v, (float | type(None)))
434
- return v
435
- return None
436
424
  return self._msg_value(Code._31DA, key=SZ_EXHAUST_TEMP)
437
425
 
438
426
  @property
@@ -482,32 +470,24 @@ class HvacVentilator(FilterChange): # FAN: RP/31DA, I/31D[9A]
482
470
  """
483
471
  if Code._12A0 in self._msgs and isinstance(
484
472
  self._msgs[Code._12A0].payload, list
485
- ): # FAN Ventura sends a list, use element [0]
473
+ ): # FAN Ventura sends RH/temps as a list; element [0] contains indoor_hum
486
474
  if v := self._msgs[Code._12A0].payload[0].get(SZ_INDOOR_HUMIDITY):
487
475
  assert isinstance(v, (float | type(None)))
488
476
  return v
489
- return None # prevent AttributeError: 'list' object has no attribute 'get'
490
- for code in [c for c in (Code._12A0, Code._31DA) if c in self._msgs]:
491
- if v := self._msgs[code].payload.get(SZ_INDOOR_HUMIDITY):
492
- if v is not None: # skip none (to check the other code)
493
- assert isinstance(v, float)
494
- return v
495
- return None
477
+ return self._msg_value((Code._12A0, Code._31DA), key=SZ_INDOOR_HUMIDITY)
496
478
 
497
479
  @property
498
480
  def indoor_temp(self) -> float | None:
481
+ return self._msg_value(Code._31DA, key=SZ_INDOOR_TEMP)
482
+
483
+ @property
484
+ def outdoor_humidity(self) -> float | None:
499
485
  if Code._12A0 in self._msgs and isinstance(
500
486
  self._msgs[Code._12A0].payload, list
501
- ): # FAN Ventura sends RH/temps as a list; element [0] is indoor_temp
502
- if v := self._msgs[Code._12A0].payload[0].get(SZ_TEMPERATURE):
487
+ ): # FAN Ventura sends RH/temps as a list; element [1] contains outdoor_hum
488
+ if v := self._msgs[Code._12A0].payload[1].get(SZ_OUTDOOR_HUMIDITY):
503
489
  assert isinstance(v, (float | type(None)))
504
490
  return v
505
- else:
506
- return self._msg_value(Code._31DA, key=SZ_INDOOR_TEMP)
507
- return None
508
-
509
- @property
510
- def outdoor_humidity(self) -> float | None:
511
491
  return self._msg_value(Code._31DA, key=SZ_OUTDOOR_HUMIDITY)
512
492
 
513
493
  @property
@@ -540,6 +520,13 @@ class HvacVentilator(FilterChange): # FAN: RP/31DA, I/31D[9A]
540
520
 
541
521
  @property
542
522
  def supply_temp(self) -> float | None:
523
+ if Code._12A0 in self._msgs and isinstance(
524
+ self._msgs[Code._12A0].payload, list
525
+ ): # FAN Ventura sends RH/temps as a list;
526
+ # pass element [0] in place of supply_temp, which is always None in VenturaV1x 31DA
527
+ if v := self._msgs[Code._12A0].payload[1].get(SZ_TEMPERATURE):
528
+ assert isinstance(v, (float | type(None)))
529
+ return v
543
530
  return self._msg_value(Code._31DA, key=SZ_SUPPLY_TEMP)
544
531
 
545
532
  @property
@@ -557,6 +544,12 @@ class HvacVentilator(FilterChange): # FAN: RP/31DA, I/31D[9A]
557
544
 
558
545
  @property
559
546
  def temperature(self) -> float | None: # Celsius
547
+ if Code._12A0 in self._msgs and isinstance(
548
+ self._msgs[Code._12A0].payload, list
549
+ ): # FAN Ventura sends RH/temps as a list; use element [1]
550
+ if v := self._msgs[Code._12A0].payload[0].get(SZ_TEMPERATURE):
551
+ assert isinstance(v, (float | type(None)))
552
+ return v
560
553
  # ClimaRad minibox FAN sends (indoor) temp in 12A0
561
554
  return self._msg_value(Code._12A0, key=SZ_TEMPERATURE)
562
555
 
@@ -300,7 +300,10 @@ class _MessageDB(_Entity):
300
300
  if isinstance(code, str | tuple): # a code or a tuple of codes
301
301
  return self._msg_value_code(code, *args, **kwargs)
302
302
  # raise RuntimeError
303
- return self._msg_value_msg(code, *args, **kwargs) # assume is a Message
303
+ assert isinstance(code, Message), (
304
+ f"Invalid format: _msg_value({code})"
305
+ ) # catch invalidly formatted code, only Message
306
+ return self._msg_value_msg(code, *args, **kwargs)
304
307
 
305
308
  def _msg_value_code(
306
309
  self,
@@ -1,4 +1,4 @@
1
1
  """RAMSES RF - a RAMSES-II protocol decoder & analyser (application layer)."""
2
2
 
3
- __version__ = "0.51.1"
3
+ __version__ = "0.51.3"
4
4
  VERSION = __version__
@@ -1,4 +1,4 @@
1
1
  """RAMSES RF - a RAMSES-II protocol decoder & analyser (transport layer)."""
2
2
 
3
- __version__ = "0.51.1"
3
+ __version__ = "0.51.3"
4
4
  VERSION = __version__
@@ -11,7 +11,7 @@ from ramses_tx.packet import Packet
11
11
 
12
12
 
13
13
  def _test_api(api: Callable, packets: dict[str]) -> None: # NOTE: incl. addr_set check
14
- """Test a verb|code pair that has a Command constructor."""
14
+ """Test a verb|code pair that has a Command constructor, src and dst."""
15
15
 
16
16
  for pkt_line, kwargs in packets.items():
17
17
  pkt = _create_pkt_from_frame(pkt_line)
@@ -22,6 +22,20 @@ def _test_api(api: Callable, packets: dict[str]) -> None: # NOTE: incl. addr_se
22
22
  _test_api_from_msg(api, msg)
23
23
 
24
24
 
25
+ def _test_api_one(
26
+ api: Callable, packets: dict[str]
27
+ ) -> None: # NOTE: incl. addr_set check
28
+ """Test a verb|code pair that has a Command constructor and src, but no dst."""
29
+
30
+ for pkt_line, kwargs in packets.items():
31
+ pkt = _create_pkt_from_frame(pkt_line)
32
+
33
+ msg = Message(pkt)
34
+
35
+ _test_api_one_from_kwargs(api, pkt, **kwargs)
36
+ _test_api_one_from_msg(api, msg)
37
+
38
+
25
39
  def _create_pkt_from_frame(pkt_line: str) -> Packet:
26
40
  """Create a pkt from a pkt_line and assert their frames match."""
27
41
 
@@ -31,7 +45,8 @@ def _create_pkt_from_frame(pkt_line: str) -> Packet:
31
45
 
32
46
 
33
47
  def _test_api_from_msg(api: Callable, msg: Message) -> Command:
34
- """Create a cmd from a msg and assert they're equal (*also* asserts payload)."""
48
+ """Create a cmd from a msg with a src_id, and assert they're equal
49
+ (*also* asserts payload)."""
35
50
 
36
51
  cmd: Command = api(
37
52
  msg.dst.id,
@@ -44,12 +59,39 @@ def _test_api_from_msg(api: Callable, msg: Message) -> Command:
44
59
  return cmd
45
60
 
46
61
 
62
+ def _test_api_one_from_msg(api: Callable, msg: Message) -> Command:
63
+ """Create a cmd from a msg and assert they're equal (*also* asserts payload)."""
64
+
65
+ cmd: Command = api(
66
+ msg.dst.id,
67
+ **{k: v for k, v in msg.payload.items()}, # if k[:1] != "_"},
68
+ # requirement turned off as it skips required item like _unknown_fan_info_flags
69
+ )
70
+
71
+ assert cmd == msg._pkt # must have exact same addr set
72
+
73
+ return cmd
74
+
75
+
47
76
  def _test_api_from_kwargs(api: Callable, pkt: Packet, **kwargs: Any) -> None:
77
+ """
78
+ Test comparing a created packet to an expected result.
79
+
80
+ :param api: Command lookup by Verb|Code
81
+ :param pkt: expected result to match
82
+ :param kwargs: arguments for the Command
83
+ """
48
84
  cmd = api(HRU, src_id=REM, **kwargs)
49
85
 
50
86
  assert str(cmd) == str(pkt)
51
87
 
52
88
 
89
+ def _test_api_one_from_kwargs(api: Callable, pkt: Packet, **kwargs: Any) -> None:
90
+ cmd = api(HRU, **kwargs)
91
+
92
+ assert str(cmd) == str(pkt)
93
+
94
+
53
95
  def test_set() -> None:
54
96
  for test_pkts in (SET_22F1_KWARGS, SET_22F7_KWARGS):
55
97
  pkt = list(test_pkts)[0]
@@ -57,7 +99,7 @@ def test_set() -> None:
57
99
  _test_api(api, test_pkts)
58
100
 
59
101
 
60
- HRU = "32:155617"
102
+ HRU = "32:155617" # also used as a FAN
61
103
  REM = "37:171871"
62
104
  NUL = "--:------"
63
105
 
@@ -108,3 +150,31 @@ SET_22F7_KWARGS = {
108
150
  f"002 W --- {REM} {HRU} {NUL} 22F7 002 0000": {"bypass_mode": "off"},
109
151
  f"002 W --- {REM} {HRU} {NUL} 22F7 002 00C8": {"bypass_mode": "on"},
110
152
  }
153
+
154
+
155
+ # new tests
156
+ def test_get() -> None:
157
+ for test_pkts in (GET_12A0_KWARGS, GET_1298_KWARGS):
158
+ pkt = list(test_pkts)[0]
159
+ api = CODE_API_MAP[f"{pkt[4:6]}|{pkt[41:45]}"]
160
+ _test_api_one(api, test_pkts)
161
+
162
+
163
+ GET_12A0_KWARGS = {
164
+ f"000 I --- {HRU} {NUL} {HRU} 12A0 002 00EF": {
165
+ "indoor_humidity": None
166
+ }, # shouldn't be OK
167
+ #
168
+ f"082 I --- {HRU} {NUL} {HRU} 12A0 002 0037": {"indoor_humidity": 0.55},
169
+ }
170
+
171
+ GET_1298_KWARGS = {
172
+ f"064 I --- {HRU} {NUL} {HRU} 1298 003 000322": {"co2_level": 802},
173
+ }
174
+
175
+ # TODO Add tests to get states from 31DA
176
+ # (verifies SQLite refactoring)
177
+ # set up HVAC system first from messages
178
+ #
179
+ # Example: current_temperature(self) in ramses_cc.climate.py
180
+ # simulates requesting Climate self._device.indoor_temp from a system
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes