ramses-rf 0.22.40__tar.gz → 0.51.2__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.
- ramses_rf-0.51.2/.github/ISSUE_TEMPLATE/bug_report.md +34 -0
- ramses_rf-0.51.2/.github/dependabot.yml +15 -0
- ramses_rf-0.51.2/.github/workflows/check-lint.yml +52 -0
- ramses_rf-0.51.2/.github/workflows/check-test.yml +54 -0
- ramses_rf-0.51.2/.github/workflows/check-type.yml +52 -0
- ramses_rf-0.51.2/.github/workflows/publish-hatch.yml +51 -0
- ramses_rf-0.51.2/.gitignore +185 -0
- ramses_rf-0.51.2/.pre-commit-config.yaml +99 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/LICENSE +1 -1
- ramses_rf-0.51.2/PKG-INFO +72 -0
- ramses_rf-0.51.2/README-developers.md +60 -0
- ramses_rf-0.51.2/README.md +51 -0
- ramses_rf-0.51.2/client.py +19 -0
- ramses_rf-0.51.2/misc/fingerprints.log +16 -0
- ramses_rf-0.51.2/misc/ser2net.yaml +15 -0
- ramses_rf-0.51.2/misc/ti_3410/notes.sh +16 -0
- ramses_rf-0.51.2/misc/ti_3410/ti_3410.fw +0 -0
- ramses_rf-0.51.2/pyproject.toml +274 -0
- ramses_rf-0.51.2/ramses_cli/__init__.py +18 -0
- ramses_rf-0.51.2/ramses_cli/client.py +597 -0
- ramses_rf-0.51.2/ramses_cli/debug.py +20 -0
- ramses_rf-0.51.2/ramses_cli/discovery.py +405 -0
- ramses_rf-0.51.2/ramses_cli/utils/cat_slow.py +17 -0
- ramses_rf-0.51.2/ramses_cli/utils/convert.py +60 -0
- ramses_rf-0.51.2/ramses_rf/__init__.py +59 -0
- ramses_rf-0.51.2/ramses_rf/binding_fsm.py +787 -0
- ramses_rf-0.51.2/ramses_rf/const.py +154 -0
- ramses_rf-0.51.2/ramses_rf/database.py +297 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/device/__init__.py +69 -39
- ramses_rf-0.51.2/ramses_rf/device/base.py +516 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/device/heat.py +540 -552
- ramses_rf-0.51.2/ramses_rf/device/hvac.py +691 -0
- ramses_rf-0.51.2/ramses_rf/dispatcher.py +289 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/entity_base.py +478 -361
- ramses_rf-0.51.2/ramses_rf/exceptions.py +82 -0
- ramses_rf-0.51.2/ramses_rf/gateway.py +633 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/helpers.py +57 -19
- ramses_rf-0.51.2/ramses_rf/py.typed +0 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/schemas.py +148 -194
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/system/__init__.py +16 -23
- ramses_rf-0.51.2/ramses_rf/system/faultlog.py +363 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/system/heat.py +295 -302
- ramses_rf-0.51.2/ramses_rf/system/schedule.py +548 -0
- {ramses-rf-0.22.40 → ramses_rf-0.51.2}/ramses_rf/system/zones.py +318 -238
- ramses_rf-0.51.2/ramses_rf/version.py +4 -0
- ramses_rf-0.51.2/ramses_tx/__init__.py +160 -0
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/address.py +65 -59
- ramses_rf-0.51.2/ramses_tx/command.py +1454 -0
- ramses_rf-0.51.2/ramses_tx/const.py +903 -0
- ramses_rf-0.51.2/ramses_tx/exceptions.py +92 -0
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/fingerprints.py +56 -15
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/frame.py +132 -131
- ramses_rf-0.51.2/ramses_tx/gateway.py +338 -0
- ramses_rf-0.51.2/ramses_tx/helpers.py +883 -0
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/logger.py +67 -53
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/message.py +155 -191
- ramses_rf-0.51.2/ramses_tx/opentherm.py +1260 -0
- ramses_rf-0.51.2/ramses_tx/packet.py +210 -0
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/parsers.py +1266 -1003
- ramses_rf-0.51.2/ramses_tx/protocol.py +801 -0
- ramses_rf-0.51.2/ramses_tx/protocol_fsm.py +672 -0
- ramses_rf-0.51.2/ramses_tx/py.typed +0 -0
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/ramses.py +262 -185
- {ramses-rf-0.22.40/ramses_rf/protocol → ramses_rf-0.51.2/ramses_tx}/schemas.py +150 -133
- ramses_rf-0.51.2/ramses_tx/transport.py +1471 -0
- ramses_rf-0.51.2/ramses_tx/typed_dicts.py +492 -0
- ramses_rf-0.51.2/ramses_tx/typing.py +181 -0
- ramses_rf-0.51.2/ramses_tx/version.py +4 -0
- ramses_rf-0.51.2/requirements.txt +16 -0
- ramses_rf-0.51.2/requirements_dev.txt +32 -0
- ramses_rf-0.51.2/tests/deprecated/_test_apis_mock.py +56 -0
- ramses_rf-0.51.2/tests/deprecated/_test_mock_faultlog.py +2 -0
- ramses_rf-0.51.2/tests/deprecated/_test_mock_schedule.py +382 -0
- ramses_rf-0.51.2/tests/deprecated/_test_packets_bad.py +31 -0
- ramses_rf-0.51.2/tests/deprecated/_test_performance_WIP.py +69 -0
- ramses_rf-0.51.2/tests/deprecated/_test_state_mgt.py +6 -0
- ramses_rf-0.51.2/tests/deprecated/common.py +93 -0
- ramses_rf-0.51.2/tests/deprecated/mocked_devices/__init__.py +33 -0
- ramses_rf-0.51.2/tests/deprecated/mocked_devices/command.py +57 -0
- ramses_rf-0.51.2/tests/deprecated/mocked_devices/const.py +11 -0
- ramses_rf-0.51.2/tests/deprecated/mocked_devices/device_heat.py +871 -0
- ramses_rf-0.51.2/tests/deprecated/mocked_devices/device_hvac.py +99 -0
- ramses_rf-0.51.2/tests/deprecated/mocked_devices/transport.py +253 -0
- ramses_rf-0.51.2/tests/tests/__init__.py +2 -0
- ramses_rf-0.51.2/tests/tests/bindings/heat/ctl_bdr_91t.log +25 -0
- ramses_rf-0.51.2/tests/tests/bindings/heat/dts_ctl_sensor.log +29 -0
- ramses_rf-0.51.2/tests/tests/bindings/heat/hcw_ctl_sensor.log +37 -0
- ramses_rf-0.51.2/tests/tests/bindings/heat/rnd_ctl_sensor.log +35 -0
- ramses_rf-0.51.2/tests/tests/bindings/heat/rnd_ctl_sensor.yaml +38 -0
- ramses_rf-0.51.2/tests/tests/bindings/heat/trv_ctl.log +30 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/co2_fan_itho.json +12 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/co2_fan_itho.log +26 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/co2_fan_itho.yaml +9 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/dis_fan_orcon.json +12 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/dis_fan_orcon.log +59 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/rem_fan_climarad.log +32 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/rem_fan_nuaire.json +12 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/rem_fan_nuaire.log +52 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/rem_fan_nuaire.yaml +9 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/rem_fan_vasco.log +32 -0
- ramses_rf-0.51.2/tests/tests/bindings/hvac/rem_fan_ventura.log +52 -0
- ramses_rf-0.51.2/tests/tests/devices/device_02.log +7 -0
- ramses_rf-0.51.2/tests/tests/devices/device_04.log +53 -0
- ramses_rf-0.51.2/tests/tests/devices/device_10.log +120 -0
- ramses_rf-0.51.2/tests/tests/devices/device_13.log +49 -0
- ramses_rf-0.51.2/tests/tests/devices/device_22.log +5 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_off.json +13 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_dev_class/hvac/known_list_eavesdrop_on.json +13 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_dev_class/hvac/packet.log +41 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_trv_actuator_long/packet.log +67 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_off.json +74 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_trv_actuator_long/schema_eavesdrop_on.json +73 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_trv_actuator_mixed/packet.log +5 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_off.json +21 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_trv_actuator_mixed/schema_eavesdrop_on.json +21 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_ufh_circuits/packet.log +10 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_off.json +0 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/_ufh_circuits/schema_eavesdrop_on.json +0 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/app_cntrl/packet.log +19 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_off.json +13 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/app_cntrl/schema_eavesdrop_on.json +12 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/trv_actuators/packet.log +16 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_off.json +18 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/trv_actuators/schema_eavesdrop_on.json +23 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_000/packet.log +54 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_off.json +24 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_000/schema_eavesdrop_on.json +25 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_001/packet.log +54 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_off.json +24 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_001/schema_eavesdrop_on.json +26 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_002/packet.log +54 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_off.json +23 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_002/schema_eavesdrop_on.json +25 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_003/packet.log +87 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_off.json +44 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_003/schema_eavesdrop_on.json +44 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_004/packet.log +112 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_off.json +39 -0
- ramses_rf-0.51.2/tests/tests/eavesdrop_schema/zone_sensors_004/schema_eavesdrop_on.json +39 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/10e0_xxxx.log +287 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/_gather.sh +15 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/01_EvoTouch_Colour.log +13 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/01_Evo_Color.log +29 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/01_IONA_RAI_Prototype.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/02_HCE80_V3.10_061117..log +13 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/04_HR92 Radiator Ctrl_.log +67 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/08_Jasper_EIM.log +19 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/10_R8810A_Bridge.log +12 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/10_R8820.log +13 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/30_Internet_Gateway.log +11 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/31_Jasper_Stat_TXXX.log +18 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/heat/34_T87RF2025.log +64 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/18_BRDG-02A55.log +4 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/18_HRA82.log +4 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/20.log +6 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/21_CCU-12T20.log +26 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMC-07RP01.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMC-15RP01.log +5 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMC-17RP01.log +12 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMN-07LM01.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMN-15LF01.log +5 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMN-17LMP01.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMS-15C16.log +6 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/29_VMS-17HB01.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/30_BRDG-02EM23.log +12 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/30_BRDG-02JAS01.log +17 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMC-15RPS34.log +3 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMD-15RMS64.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMD-15RMS86.log +7 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMD-17RPS01.log +3 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMN-23LM33.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMN-23LMH23.log +13 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMS-15CM17.log +3 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMS-23C33.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMS-23HB33.log +14 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/32_VMZ-15V13.log +4 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/37_VMD-07RPS13.log +3 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/37_VMI-15MC01log +10 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/37_VMI-15WSJ53.log +2 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/37_VMS-02J52.log +7 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/37_VMS-12C39.log +11 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/99_CVE-RF.log +29 -0
- ramses_rf-0.51.2/tests/tests/fingerprints/hvac/99_VMS-17C01.log +16 -0
- ramses_rf-0.51.2/tests/tests/helpers.py +146 -0
- ramses_rf-0.51.2/tests/tests/logger/packet_in.log +31 -0
- ramses_rf-0.51.2/tests/tests/logger/packet_out.log +24 -0
- ramses_rf-0.51.2/tests/tests/logs/pkts_bad_000.log +2 -0
- ramses_rf-0.51.2/tests/tests/logs/pkts_tba_000.log +102 -0
- ramses_rf-0.51.2/tests/tests/logs/system_cache.json +117 -0
- ramses_rf-0.51.2/tests/tests/parser_helpers/pkt_addr_set.log +62 -0
- ramses_rf-0.51.2/tests/tests/parser_helpers/pkt_dev_class.log +4 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0001_wip.log +43 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0002.log +8 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0004_wip.log +15 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0005.log +8 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0006.log +36 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0009.log +4 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_000a.log +74 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_000c.log +32 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_000e.log +7 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_01ff_wip.log +103 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_0418.log +42 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_042f.log +37 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_1030.log +10 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_1060.log +13 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_10d0.log +45 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_10e0.log +132 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_1260.log +18 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_1298.log +10 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_12a0.log +27 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_12c0.log +14 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_1300.log +6 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_1fc9.log +125 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_2210.log +17 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22c9.log +62 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22d0.log +6 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22d9.log +15 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22e0.log +5 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22e5.log +5 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22e9.log +17 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22f1.log +45 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22f2.log +54 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22f3.log +17 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22f4.log +26 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_22f7.log +14 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_2309.log +25 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_2349.log +18 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_2411_wip.log +263 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_2e04.log +19 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_2e10_wip.log +14 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_30c9.log +14 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3110_wip.log +60 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3120.log +16 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_313e_wip.log +29 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3150.log +29 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_31d9.log +60 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_31da.log +370 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3200.log +9 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3210.log +6 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3220.log +195 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3222.log +39 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3ef0_wip.log +143 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_3ef1_wip.log +17 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_4e01.log +18 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_4e02.log +23 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_4e04.log +88 -0
- ramses_rf-0.51.2/tests/tests/parsers/code_4e15.log +133 -0
- ramses_rf-0.51.2/tests/tests/schedules/_sched_002/packet.log +47 -0
- ramses_rf-0.51.2/tests/tests/schedules/_sched_002/schedule.json +4 -0
- ramses_rf-0.51.2/tests/tests/schedules/sched_001/packet.log +10 -0
- ramses_rf-0.51.2/tests/tests/schedules/sched_001/schedule.json +47 -0
- ramses_rf-0.51.2/tests/tests/schedules/sched_dhw/packet.log +5 -0
- ramses_rf-0.51.2/tests/tests/schedules/sched_dhw/schedule.json +61 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_100.json +6 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_101.json +9 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_102.json +18 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_103.json +36 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_104.json +33 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_105.json +27 -0
- ramses_rf-0.51.2/tests/tests/schemas/jsn_files/schema_108.json +60 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_000.json +8 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_000.log +3 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_001.json +8 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_001.log +3 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_002.json +16 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_002.log +6 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_010.json +35 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_010.log +3 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_011.json +41 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_011.log +8 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_012.json +32 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_012.log +13 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_013.json +31 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_013.log +3 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_014.json +31 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_014.log +3 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_300.json +59 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_300.log +54 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_301.json +83 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_301.log +54 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_302.json +83 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_302.log +54 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_303.json +83 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_303.log +54 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_304.json +83 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_304.log +54 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_310.json +71 -0
- ramses_rf-0.51.2/tests/tests/schemas/log_files/schema_310.log +153 -0
- ramses_rf-0.51.2/tests/tests/systems/_heat_trv_00/config.json +19 -0
- ramses_rf-0.51.2/tests/tests/systems/_heat_trv_00/packet.log +880 -0
- ramses_rf-0.51.2/tests/tests/systems/_heat_trv_00/schema.json +77 -0
- ramses_rf-0.51.2/tests/tests/systems/_hvac_nuaire/config.json +10 -0
- ramses_rf-0.51.2/tests/tests/systems/_hvac_nuaire/known_list.json +8 -0
- ramses_rf-0.51.2/tests/tests/systems/_hvac_nuaire/packet.log +33 -0
- ramses_rf-0.51.2/tests/tests/systems/_hvac_nuaire/schema.json +9 -0
- ramses_rf-0.51.2/tests/tests/systems/_hvac_nuaire/status.json +27 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_otb_00/config.json +19 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_otb_00/packet.log +172 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_otb_00/schema.json +12 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_simple/packet.log +36 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_simple/schema.json +14 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_ufc_00/config.json +37 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_ufc_00/packet.log +558 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_ufc_01/packet.log +142 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_zxdavb/config.json +29 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_zxdavb/known_list.json +216 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_zxdavb/packet.log +270 -0
- ramses_rf-0.51.2/tests/tests/systems/heat_zxdavb/schema.json +20 -0
- ramses_rf-0.51.2/tests/tests/test_api_faultlog.py +323 -0
- ramses_rf-0.51.2/tests/tests/test_api_schedule.py +83 -0
- ramses_rf-0.51.2/tests/tests/test_apis_binding.py +88 -0
- ramses_rf-0.51.2/tests/tests/test_apis_common.py +111 -0
- ramses_rf-0.51.2/tests/tests/test_apis_heat.py +369 -0
- ramses_rf-0.51.2/tests/tests/test_apis_hvac.py +110 -0
- ramses_rf-0.51.2/tests/tests/test_cli_utility.py +125 -0
- ramses_rf-0.51.2/tests/tests/test_devices.py +58 -0
- ramses_rf-0.51.2/tests/tests/test_eavesdrop_dev_class.py +82 -0
- ramses_rf-0.51.2/tests/tests/test_eavesdrop_schema.py +73 -0
- ramses_rf-0.51.2/tests/tests/test_helpers.py +129 -0
- ramses_rf-0.51.2/tests/tests/test_parser_helpers.py +175 -0
- ramses_rf-0.51.2/tests/tests/test_parsers.py +124 -0
- ramses_rf-0.51.2/tests/tests/test_ramses_schema.py +107 -0
- ramses_rf-0.51.2/tests/tests/test_schema_bits.py +96 -0
- ramses_rf-0.51.2/tests/tests/test_schemas.py +56 -0
- ramses_rf-0.51.2/tests/tests/test_systems.py +153 -0
- ramses_rf-0.51.2/tests/tests/test_vol_schemas.py +878 -0
- ramses_rf-0.51.2/tests/tests_rf/__init__.py +2 -0
- ramses_rf-0.51.2/tests/tests_rf/configs/config_heat.json +150 -0
- ramses_rf-0.51.2/tests/tests_rf/configs/config_hvac.json +28 -0
- ramses_rf-0.51.2/tests/tests_rf/conftest.py +331 -0
- ramses_rf-0.51.2/tests/tests_rf/logs/test_api_faultlog.log +108 -0
- ramses_rf-0.51.2/tests/tests_rf/test_api_faultlog.py +167 -0
- ramses_rf-0.51.2/tests/tests_rf/test_api_schedule.py +111 -0
- ramses_rf-0.51.2/tests/tests_rf/test_binding_fsm.py +436 -0
- ramses_rf-0.51.2/tests/tests_rf/test_create_stack.py +225 -0
- ramses_rf-0.51.2/tests/tests_rf/test_hgi_behaviors.py +176 -0
- ramses_rf-0.51.2/tests/tests_rf/test_protocol_fsm.py +403 -0
- ramses_rf-0.51.2/tests/tests_rf/test_use_regex.py +154 -0
- ramses_rf-0.51.2/tests/tests_rf/test_virt_network.py +223 -0
- ramses_rf-0.51.2/tests/tests_rf/virtual_rf/__init__.py +109 -0
- ramses_rf-0.51.2/tests/tests_rf/virtual_rf/const.py +91 -0
- ramses_rf-0.51.2/tests/tests_rf/virtual_rf/helpers.py +24 -0
- ramses_rf-0.51.2/tests/tests_rf/virtual_rf/virtual_rf.py +481 -0
- ramses_rf-0.51.2/tests/tests_tx/__init__.py +2 -0
- ramses_rf-0.51.2/tests/tests_tx/test_command.py +183 -0
- ramses_rf-0.51.2/tests/wip/_test_eavesdrop_dhw_sensor.py +2 -0
- ramses_rf-0.51.2/tests/wip/_test_eavesdrop_htg_control.py +2 -0
- ramses_rf-0.51.2/tests/wip/_test_eavesdrop_ufc_circuits.py +2 -0
- ramses_rf-0.51.2/tests/wip/_test_eavesdrop_zone_sensors.py +2 -0
- ramses_rf-0.51.2/tests/wip/_test_eavesdrop_zone_type.py +2 -0
- ramses_rf-0.51.2/tests/wip/test_wip_cli.sh +16 -0
- ramses-rf-0.22.40/PKG-INFO +0 -61
- ramses-rf-0.22.40/README.md +0 -39
- ramses-rf-0.22.40/pyproject.toml +0 -18
- ramses-rf-0.22.40/ramses_rf/__init__.py +0 -38
- ramses-rf-0.22.40/ramses_rf/const.py +0 -135
- ramses-rf-0.22.40/ramses_rf/device/base.py +0 -705
- ramses-rf-0.22.40/ramses_rf/device/hvac.py +0 -583
- ramses-rf-0.22.40/ramses_rf/discovery.py +0 -398
- ramses-rf-0.22.40/ramses_rf/dispatcher.py +0 -313
- ramses-rf-0.22.40/ramses_rf/gateway.py +0 -769
- ramses-rf-0.22.40/ramses_rf/protocol/__init__.py +0 -59
- ramses-rf-0.22.40/ramses_rf/protocol/backports.py +0 -42
- ramses-rf-0.22.40/ramses_rf/protocol/command.py +0 -1576
- ramses-rf-0.22.40/ramses_rf/protocol/const.py +0 -697
- ramses-rf-0.22.40/ramses_rf/protocol/exceptions.py +0 -111
- ramses-rf-0.22.40/ramses_rf/protocol/helpers.py +0 -390
- ramses-rf-0.22.40/ramses_rf/protocol/opentherm.py +0 -1170
- ramses-rf-0.22.40/ramses_rf/protocol/packet.py +0 -235
- ramses-rf-0.22.40/ramses_rf/protocol/protocol.py +0 -613
- ramses-rf-0.22.40/ramses_rf/protocol/transport.py +0 -1011
- ramses-rf-0.22.40/ramses_rf/protocol/version.py +0 -10
- ramses-rf-0.22.40/ramses_rf/system/hvac.py +0 -82
- ramses-rf-0.22.40/ramses_rf/system/schedule.py +0 -434
- ramses-rf-0.22.40/ramses_rf/version.py +0 -10
- ramses-rf-0.22.40/ramses_rf.egg-info/PKG-INFO +0 -61
- ramses-rf-0.22.40/ramses_rf.egg-info/SOURCES.txt +0 -46
- ramses-rf-0.22.40/ramses_rf.egg-info/dependency_links.txt +0 -1
- ramses-rf-0.22.40/ramses_rf.egg-info/requires.txt +0 -3
- ramses-rf-0.22.40/ramses_rf.egg-info/top_level.txt +0 -1
- ramses-rf-0.22.40/setup.cfg +0 -4
- ramses-rf-0.22.40/setup.py +0 -64
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a useful report to help us improve ramses_rf
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Describe the bug**
|
|
11
|
+
A clear and concise description of the bug.
|
|
12
|
+
|
|
13
|
+
**To Reproduce**
|
|
14
|
+
Steps to reproduce the behaviour (for example):
|
|
15
|
+
1. Go to '...'
|
|
16
|
+
2. Click on '....'
|
|
17
|
+
3. Scroll down to '....'
|
|
18
|
+
4. See error
|
|
19
|
+
|
|
20
|
+
Please provide enough details. For example, if you are having an issue with a device, provide details of the model and specs
|
|
21
|
+
|
|
22
|
+
**Expected behaviour**
|
|
23
|
+
A clear and concise description of what you expected to happen.
|
|
24
|
+
|
|
25
|
+
**Please include the following information:**
|
|
26
|
+
- your **RF Gateway** hardware type, firmware and connection (USB, MQTT)
|
|
27
|
+
- output from the **Serial Console**, if applicable
|
|
28
|
+
- contemporaneous portion of the **packet.log**, preferably for several hours
|
|
29
|
+
|
|
30
|
+
**Screenshots**
|
|
31
|
+
Only if applicable, add screenshots to help explain your problem. Do not provide a screenshot as an alternative to providing the above information.
|
|
32
|
+
|
|
33
|
+
**Additional context**
|
|
34
|
+
Add any other context about the problem here, such as the make/model of the device etc.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Please see the documentation for all configuration options:
|
|
2
|
+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
updates:
|
|
7
|
+
- package-ecosystem: "pip"
|
|
8
|
+
directory: "/"
|
|
9
|
+
schedule:
|
|
10
|
+
interval: "weekly"
|
|
11
|
+
|
|
12
|
+
- package-ecosystem: "github-actions"
|
|
13
|
+
directory: ".github/workflows"
|
|
14
|
+
schedule:
|
|
15
|
+
interval: "weekly"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Linting
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ "master", "stable" ]
|
|
7
|
+
paths: [
|
|
8
|
+
".github/workflows/check-lint.yml",
|
|
9
|
+
"src/**.py",
|
|
10
|
+
"tests/**",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
pull_request:
|
|
14
|
+
branches: [ "master", "stable" ]
|
|
15
|
+
paths: [
|
|
16
|
+
".github/workflows/check-lint.yml",
|
|
17
|
+
"src/**.py",
|
|
18
|
+
"tests/**",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
lint:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
python-version: ["3.13"]
|
|
32
|
+
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v5
|
|
35
|
+
|
|
36
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
37
|
+
uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: ${{ matrix.python-version }}
|
|
40
|
+
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install --upgrade pip
|
|
44
|
+
pip install ruff # pip install -r requirements_dev.txt
|
|
45
|
+
|
|
46
|
+
- name: Check with ruff
|
|
47
|
+
run: ruff check --output-format=github .
|
|
48
|
+
|
|
49
|
+
- name: Check with ruff (format)
|
|
50
|
+
run: ruff format --check .
|
|
51
|
+
|
|
52
|
+
- run: echo "🍏 This job's status is ${{ job.status }}."
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Testing
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ "master", "stable" ]
|
|
7
|
+
paths: [
|
|
8
|
+
".github/workflows/check-test.yml",
|
|
9
|
+
"src/**.py",
|
|
10
|
+
"tests/**",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
pull_request:
|
|
14
|
+
branches: [ "master", "stable" ]
|
|
15
|
+
paths: [
|
|
16
|
+
".github/workflows/check-test.yml",
|
|
17
|
+
"src/**.py",
|
|
18
|
+
"tests/**",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
test:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
32
|
+
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v5
|
|
35
|
+
|
|
36
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
37
|
+
uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: ${{ matrix.python-version }}
|
|
40
|
+
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install --upgrade pip
|
|
44
|
+
pip install -r requirements_dev.txt
|
|
45
|
+
|
|
46
|
+
- name: Install the package (and its dependencies)
|
|
47
|
+
run: pip install -e .
|
|
48
|
+
|
|
49
|
+
- name: Test with pytest
|
|
50
|
+
env:
|
|
51
|
+
PYTEST_ADDOPTS: "--color=yes"
|
|
52
|
+
run: pytest -v
|
|
53
|
+
|
|
54
|
+
- run: echo "🍏 This job's status is ${{ job.status }}."
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Typing
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ "master", "stable" ]
|
|
7
|
+
paths: [
|
|
8
|
+
".github/workflows/check-type.yml",
|
|
9
|
+
"src/**.py", "src/**/py.typed",
|
|
10
|
+
"tests/**.py",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
pull_request:
|
|
14
|
+
branches: [ "master", "stable" ]
|
|
15
|
+
paths: [
|
|
16
|
+
".github/workflows/check-type.yml",
|
|
17
|
+
"src/**.py", "src/**/py.typed",
|
|
18
|
+
"tests/**.py",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
type:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
python-version: ["3.13"]
|
|
32
|
+
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v5
|
|
35
|
+
|
|
36
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
37
|
+
uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: ${{ matrix.python-version }}
|
|
40
|
+
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install --upgrade pip
|
|
44
|
+
pip install -r requirements_dev.txt
|
|
45
|
+
|
|
46
|
+
- name: Install the package (its dependencies are needed for typing)
|
|
47
|
+
run: pip install -e .
|
|
48
|
+
|
|
49
|
+
- name: Check with mypy
|
|
50
|
+
run: mypy
|
|
51
|
+
|
|
52
|
+
- run: echo "🍏 This job's status is ${{ job.status }}."
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# This workflow will build a Python Package using Hatch and upload it to PyPi when a release is published
|
|
2
|
+
# No action on a release still in draft
|
|
3
|
+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
|
|
4
|
+
# and: https://github.com/pypa/hatch/issues/669 and https://github.com/marketplace/actions/pypi-publish
|
|
5
|
+
|
|
6
|
+
name: Publish via Hatch
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
release:
|
|
10
|
+
types: [published]
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build-dist:
|
|
17
|
+
name: Build release to /dist
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v5
|
|
21
|
+
|
|
22
|
+
- name: Install hatch
|
|
23
|
+
run: pipx install hatch
|
|
24
|
+
|
|
25
|
+
- name: Build dist
|
|
26
|
+
run: hatch build
|
|
27
|
+
|
|
28
|
+
- name: Upload dist
|
|
29
|
+
uses: actions/upload-artifact@v4
|
|
30
|
+
with:
|
|
31
|
+
name: dist
|
|
32
|
+
path: dist/
|
|
33
|
+
|
|
34
|
+
pypi-publish:
|
|
35
|
+
name: Upload release to PyPI
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
needs: build-dist
|
|
38
|
+
environment:
|
|
39
|
+
name: pypi
|
|
40
|
+
url: https://pypi.org/project/ramses_rf
|
|
41
|
+
steps:
|
|
42
|
+
- name: Download dist
|
|
43
|
+
uses: actions/download-artifact@v5
|
|
44
|
+
with:
|
|
45
|
+
name: dist
|
|
46
|
+
path: dist/
|
|
47
|
+
- name: Publish package distributions to PyPI
|
|
48
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
49
|
+
with:
|
|
50
|
+
password: ${{ secrets.RF_PYPI_API_TOKEN }}
|
|
51
|
+
- run: echo "🍏 This job's status is ${{ job.status }}."
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
### local .gitignore used by this repo
|
|
2
|
+
/*.json
|
|
3
|
+
/*.log
|
|
4
|
+
/*.log.*
|
|
5
|
+
/*.old
|
|
6
|
+
/*.out
|
|
7
|
+
/*.txt
|
|
8
|
+
/*.yaml
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### generic .gitignore used by https://github.com/ramses-rf
|
|
12
|
+
|
|
13
|
+
!.gitignore
|
|
14
|
+
!.pre-commit-config.yaml
|
|
15
|
+
!pyproject.toml
|
|
16
|
+
!requirements*.txt
|
|
17
|
+
|
|
18
|
+
# beware the *.log in github's default .gitignore
|
|
19
|
+
!tests/
|
|
20
|
+
!tests/**/*.ambr
|
|
21
|
+
!tests/**/*.json
|
|
22
|
+
!tests/**/*.log
|
|
23
|
+
!tests/**/*.yaml
|
|
24
|
+
|
|
25
|
+
.secrets*/
|
|
26
|
+
.ruff_cache/
|
|
27
|
+
.vscode/
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### github's default .gitignore for Python - copied 2023/11/02
|
|
31
|
+
# https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
|
|
32
|
+
|
|
33
|
+
# Byte-compiled / optimized / DLL files
|
|
34
|
+
__pycache__/
|
|
35
|
+
*.py[cod]
|
|
36
|
+
*$py.class
|
|
37
|
+
|
|
38
|
+
# C extensions
|
|
39
|
+
*.so
|
|
40
|
+
|
|
41
|
+
# Distribution / packaging
|
|
42
|
+
.Python
|
|
43
|
+
build/
|
|
44
|
+
develop-eggs/
|
|
45
|
+
dist/
|
|
46
|
+
downloads/
|
|
47
|
+
eggs/
|
|
48
|
+
.eggs/
|
|
49
|
+
lib/
|
|
50
|
+
lib64/
|
|
51
|
+
parts/
|
|
52
|
+
sdist/
|
|
53
|
+
var/
|
|
54
|
+
wheels/
|
|
55
|
+
share/python-wheels/
|
|
56
|
+
*.egg-info/
|
|
57
|
+
.installed.cfg
|
|
58
|
+
*.egg
|
|
59
|
+
MANIFEST
|
|
60
|
+
|
|
61
|
+
# PyInstaller
|
|
62
|
+
# Usually these files are written by a python script from a template
|
|
63
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
64
|
+
*.manifest
|
|
65
|
+
*.spec
|
|
66
|
+
|
|
67
|
+
# Installer logs
|
|
68
|
+
pip-log.txt
|
|
69
|
+
pip-delete-this-directory.txt
|
|
70
|
+
|
|
71
|
+
# Unit test / coverage reports
|
|
72
|
+
htmlcov/
|
|
73
|
+
.tox/
|
|
74
|
+
.nox/
|
|
75
|
+
.coverage
|
|
76
|
+
.coverage.*
|
|
77
|
+
.cache
|
|
78
|
+
nosetests.xml
|
|
79
|
+
coverage.xml
|
|
80
|
+
*.cover
|
|
81
|
+
*.py,cover
|
|
82
|
+
.hypothesis/
|
|
83
|
+
.pytest_cache/
|
|
84
|
+
cover/
|
|
85
|
+
|
|
86
|
+
# Translations
|
|
87
|
+
*.mo
|
|
88
|
+
*.pot
|
|
89
|
+
|
|
90
|
+
# Django stuff:
|
|
91
|
+
# *.log
|
|
92
|
+
local_settings.py
|
|
93
|
+
db.sqlite3
|
|
94
|
+
db.sqlite3-journal
|
|
95
|
+
|
|
96
|
+
# Flask stuff:
|
|
97
|
+
instance/
|
|
98
|
+
.webassets-cache
|
|
99
|
+
|
|
100
|
+
# Scrapy stuff:
|
|
101
|
+
.scrapy
|
|
102
|
+
|
|
103
|
+
# Sphinx documentation
|
|
104
|
+
docs/_build/
|
|
105
|
+
|
|
106
|
+
# PyBuilder
|
|
107
|
+
.pybuilder/
|
|
108
|
+
target/
|
|
109
|
+
|
|
110
|
+
# Jupyter Notebook
|
|
111
|
+
.ipynb_checkpoints
|
|
112
|
+
|
|
113
|
+
# IPython
|
|
114
|
+
profile_default/
|
|
115
|
+
ipython_config.py
|
|
116
|
+
|
|
117
|
+
# pyenv
|
|
118
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
119
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
120
|
+
# .python-version
|
|
121
|
+
|
|
122
|
+
# pipenv
|
|
123
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
124
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
125
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
126
|
+
# install all needed dependencies.
|
|
127
|
+
#Pipfile.lock
|
|
128
|
+
|
|
129
|
+
# poetry
|
|
130
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
131
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
132
|
+
# commonly ignored for libraries.
|
|
133
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
134
|
+
#poetry.lock
|
|
135
|
+
|
|
136
|
+
# pdm
|
|
137
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
138
|
+
#pdm.lock
|
|
139
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
140
|
+
# in version control.
|
|
141
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
142
|
+
.pdm.toml
|
|
143
|
+
|
|
144
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
145
|
+
__pypackages__/
|
|
146
|
+
|
|
147
|
+
# Celery stuff
|
|
148
|
+
celerybeat-schedule
|
|
149
|
+
celerybeat.pid
|
|
150
|
+
|
|
151
|
+
# SageMath parsed files
|
|
152
|
+
*.sage.py
|
|
153
|
+
|
|
154
|
+
# Environments
|
|
155
|
+
.env
|
|
156
|
+
.venv
|
|
157
|
+
env/
|
|
158
|
+
venv/
|
|
159
|
+
ENV/
|
|
160
|
+
env.bak/
|
|
161
|
+
venv.bak/
|
|
162
|
+
|
|
163
|
+
# Spyder project settings
|
|
164
|
+
.spyderproject
|
|
165
|
+
.spyproject
|
|
166
|
+
|
|
167
|
+
# Rope project settings
|
|
168
|
+
.ropeproject
|
|
169
|
+
|
|
170
|
+
# mkdocs documentation
|
|
171
|
+
/site
|
|
172
|
+
|
|
173
|
+
# mypy
|
|
174
|
+
.mypy_cache/
|
|
175
|
+
.dmypy.json
|
|
176
|
+
dmypy.json
|
|
177
|
+
|
|
178
|
+
# Pyre type checker
|
|
179
|
+
.pyre/
|
|
180
|
+
|
|
181
|
+
# pytype static type analyzer
|
|
182
|
+
.pytype/
|
|
183
|
+
|
|
184
|
+
# Cython debug symbols
|
|
185
|
+
cython_debug/
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
|
|
2
|
+
exclude: ^(.secrets|docs|misc|tests/deprecated)/
|
|
3
|
+
|
|
4
|
+
repos:
|
|
5
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
6
|
+
rev: v0.8.1
|
|
7
|
+
hooks:
|
|
8
|
+
- id: ruff # linter
|
|
9
|
+
- id: ruff-format # formatter
|
|
10
|
+
|
|
11
|
+
- repo: https://github.com/cdce8p/python-typing-update
|
|
12
|
+
rev: v0.7.0
|
|
13
|
+
hooks:
|
|
14
|
+
# Run `python-typing-update` hook manually from time to time
|
|
15
|
+
# to update python typing syntax.
|
|
16
|
+
# Will require manual work, before submitting changes!
|
|
17
|
+
# pre-commit run --hook-stage manual python-typing-update --all-files
|
|
18
|
+
- id: python-typing-update
|
|
19
|
+
stages: [manual]
|
|
20
|
+
args:
|
|
21
|
+
- --py311-plus
|
|
22
|
+
- --force
|
|
23
|
+
- --keep-updates
|
|
24
|
+
files: ^(src|tests)/.+\.py$
|
|
25
|
+
|
|
26
|
+
- repo: https://github.com/codespell-project/codespell
|
|
27
|
+
rev: v2.3.0
|
|
28
|
+
hooks:
|
|
29
|
+
- id: codespell
|
|
30
|
+
args:
|
|
31
|
+
- --ignore-words-list=childs,IndexT,OT,ser
|
|
32
|
+
- --skip="./.*,*.csv,*.json,*.ambr"
|
|
33
|
+
- --quiet-level=2
|
|
34
|
+
exclude_types: [csv, json, html]
|
|
35
|
+
exclude: ^(tests/.+/fixtures|tests/.+/snapshots)/
|
|
36
|
+
|
|
37
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
38
|
+
rev: v5.0.0
|
|
39
|
+
hooks:
|
|
40
|
+
- id: check-executables-have-shebangs
|
|
41
|
+
# id: check-json # don't enable this one
|
|
42
|
+
- id: check-toml
|
|
43
|
+
- id: check-yaml
|
|
44
|
+
- id: debug-statements
|
|
45
|
+
- id: end-of-file-fixer
|
|
46
|
+
- id: mixed-line-ending
|
|
47
|
+
- id: trailing-whitespace
|
|
48
|
+
|
|
49
|
+
- repo: https://github.com/pre-commit/pygrep-hooks
|
|
50
|
+
rev: v1.10.0
|
|
51
|
+
hooks:
|
|
52
|
+
- id: python-check-blanket-noqa
|
|
53
|
+
- id: python-check-blanket-type-ignore
|
|
54
|
+
# id: python-no-eval
|
|
55
|
+
- id: python-no-log-warn
|
|
56
|
+
|
|
57
|
+
- repo: local
|
|
58
|
+
hooks:
|
|
59
|
+
# entry: '[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+' # email address
|
|
60
|
+
|
|
61
|
+
- id: debugs
|
|
62
|
+
name: check for DEBUG flags
|
|
63
|
+
entry: '_DBG_.*=.*True'
|
|
64
|
+
language: pygrep
|
|
65
|
+
args: [-i]
|
|
66
|
+
exclude: (.pre-commit-config.yaml|^tests/.*\.py$) # avoid false +ve
|
|
67
|
+
|
|
68
|
+
- id: secrets
|
|
69
|
+
name: check for secrets
|
|
70
|
+
entry: '#.*(secret|password|pwd)'
|
|
71
|
+
language: pygrep
|
|
72
|
+
args: [-i]
|
|
73
|
+
exclude: .pre-commit-config.yaml # avoid false +ve
|
|
74
|
+
|
|
75
|
+
- id: style_1
|
|
76
|
+
name: check for 'as exc:' (should be 'as err:')
|
|
77
|
+
entry: ' as exc:'
|
|
78
|
+
language: pygrep
|
|
79
|
+
args: [-i]
|
|
80
|
+
exclude: .pre-commit-config.yaml # avoid false +ve
|
|
81
|
+
|
|
82
|
+
# - id: private imports
|
|
83
|
+
# name: check for private imports
|
|
84
|
+
# entry: 'from .* import _.*'
|
|
85
|
+
# language: pygrep
|
|
86
|
+
# args: [-i]
|
|
87
|
+
# exclude: .pre-commit-config.yaml # avoid false +ve
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
# We do not use pre-commit/mirrors-mypy, as it comes with opinionated defaults
|
|
91
|
+
# (like --ignore-missing-imports) and is difficult to configure to run
|
|
92
|
+
# with the dependencies correctly installed.
|
|
93
|
+
|
|
94
|
+
# - repo: https://github.com/pre-commit/mirrors-mypy
|
|
95
|
+
# rev: v1.8.0
|
|
96
|
+
# hooks:
|
|
97
|
+
# - id: mypy
|
|
98
|
+
# additional_dependencies: [voluptuous==0.14.1]
|
|
99
|
+
# args: ["--config-file", "./pyproject.toml"]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ramses_rf
|
|
3
|
+
Version: 0.51.2
|
|
4
|
+
Summary: A stateful RAMSES-II protocol decoder & analyser.
|
|
5
|
+
Project-URL: Homepage, https://github.com/ramses-rf/ramses_rf
|
|
6
|
+
Project-URL: Bug Tracker, https://github.com/ramses-rf/ramses_rf/issues
|
|
7
|
+
Project-URL: Wiki, https://github.com/ramses-rf/ramses_rf/wiki
|
|
8
|
+
Author-email: David Bonnes <zxdavb@bonnes.me>, Egbert Broerse <dcc2@ebroerse.nl>
|
|
9
|
+
Maintainer-email: Egbert Broerse <dcc2@ebroerse.nl>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: airios,chronotherm,climarad,evohome,hometronics,honeywell,itho,nuaire,orcon,ramses,resideo,round thermostat,sundial,vasco
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Topic :: Home Automation
|
|
15
|
+
Requires-Python: >=3.11
|
|
16
|
+
Requires-Dist: colorlog>=6.9.0
|
|
17
|
+
Requires-Dist: paho-mqtt>=2.1.0
|
|
18
|
+
Requires-Dist: pyserial-asyncio-fast>=0.16
|
|
19
|
+
Requires-Dist: voluptuous>=0.15.2
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+

|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
|
|
28
|
+
**ramses_rf** is a Python client library/CLI utility used to interface with some Honeywell-compatible HVAC & CH/DHW systems that use 868MHz RF, such as:
|
|
29
|
+
- (Heat) **evohome**, **Sundial**, **Hometronic**, **Chronotherm**
|
|
30
|
+
- (HVAC) **Itho**, **Orcon**, **Nuaire**, **Vasco**, **ClimaRad**
|
|
31
|
+
|
|
32
|
+
It requires a USB-to-RF device, either a Honeywell HGI80 (somewhat rare, expensive) or something running the [evofw3](https://github.com/ghoti57/evofw3) firmware, such as the one from [here](https://indalo-tech.onlineweb.shop/) or your own ESP32-S3-WROOM-1 N16R8 with a CC1100 transponder.
|
|
33
|
+
|
|
34
|
+
It does four things:
|
|
35
|
+
- decodes RAMSES II-compatible packets and converts them into useful JSON
|
|
36
|
+
- builds a picture (schema, config & state) of evohome-compatible CH/DHW systems - either passively (by eavesdropping), or actively (probing)
|
|
37
|
+
- allows you to send commands to CH/DHW and HVAC systems, or monitor for state changes
|
|
38
|
+
- allows you to emulate some hardware devices
|
|
39
|
+
|
|
40
|
+
> [!WARNING]
|
|
41
|
+
> This library is not affiliated with Honeywell, Airios nor any final manufacturer. The developers take no responsibility for anything that may happen to your devices because of this library.
|
|
42
|
+
|
|
43
|
+
For CH/DHW, the simplest way to know if it will work with your system is to identify the box connected to your boiler/HVAC appliance as one of:
|
|
44
|
+
- **R8810A**: OpenTherm Bridge
|
|
45
|
+
- **BDR91A**: Wireless Relay (also BDR91T)
|
|
46
|
+
- **HC60NG**: Wireless Relay (older hardware)
|
|
47
|
+
|
|
48
|
+
Other systems may well work, such as some Itho Daalderop HVAC systems, use this protocol, YMMV.
|
|
49
|
+
|
|
50
|
+
It includes a CLI and can be used as a standalone tool, but also is used as a client library by:
|
|
51
|
+
- [ramses_cc](https://github.com/ramses-rf/ramses_cc), a Home Assistant integration
|
|
52
|
+
- [evohome-Listener](https://github.com/smar000/evohome-Listener), an MQTT gateway
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
To use the `ramses_cc` Integration in Home Assistant, just install `Ramses RF` from HACS. It will take care of installing this library. See the [`Ramses_cc wiki`](https://github.com/ramses-rf/ramses_cc/wiki/1.-Installation) for details.
|
|
57
|
+
|
|
58
|
+
### Ramses_rf CLI
|
|
59
|
+
|
|
60
|
+
To install the `ramses_rf` command line client:
|
|
61
|
+
```
|
|
62
|
+
git clone https://github.com/ramses-rf/ramses_rf
|
|
63
|
+
cd ramses_rf
|
|
64
|
+
pip install -r requirements.txt
|
|
65
|
+
pip install -e .
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The CLI is called ``client.py`` and is included in the code root.
|
|
69
|
+
It has options to monitor and parse Ramses-II traffic to screen or a log file, and to parse a file containing Ramses-II messages to the screen.
|
|
70
|
+
See the [client.py CLI wiki page](https://github.com/ramses-rf/ramses_rf/wiki/The-client.py-command-line) for instructions.
|
|
71
|
+
|
|
72
|
+
For code development, some more setup is required. Please follow the steps in our [Developer's Resource](README-developers.md)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+

|
|
2
|
+

|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
# Ramses_rf developer's resource
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Confirm you have Python 3.13.x installed by running:
|
|
10
|
+
```
|
|
11
|
+
python3 --version
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Virtual environment
|
|
15
|
+
|
|
16
|
+
Create a `venv` virtual environment, for example on macOS or Linux:
|
|
17
|
+
```
|
|
18
|
+
mkdir /your-path-to/virtual-envs
|
|
19
|
+
mkdir /your-path-to/virtual-envs/ramses_rf
|
|
20
|
+
cd /your-path-to/virtual-envs/ramses_rf
|
|
21
|
+
Python3.13 -m venv ~/your-path-to/virtual-envs/ramses_rf
|
|
22
|
+
```
|
|
23
|
+
where `Python3.13` is the python version to set for the `venv`.
|
|
24
|
+
|
|
25
|
+
### Clone this repo
|
|
26
|
+
|
|
27
|
+
Clone this repo and install the requirements.
|
|
28
|
+
Using `pip`, in a location where your IDE has access:
|
|
29
|
+
```
|
|
30
|
+
git clone https://github.com/ramses-rf/ramses_rf
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Activate the venv (repeat every new session):
|
|
34
|
+
```
|
|
35
|
+
cd /your-path-to/ramses_rf
|
|
36
|
+
source /your-path-to/virtual-envs/ramses_rf/bin/activate
|
|
37
|
+
```
|
|
38
|
+
and confirm your Terminal prompt looks like:
|
|
39
|
+
`(ramses_rf) user:ramses_rf`
|
|
40
|
+
|
|
41
|
+
### Install dependencies:
|
|
42
|
+
```
|
|
43
|
+
cd /your-path-to/ramses_rf
|
|
44
|
+
pip install -r requirements.txt
|
|
45
|
+
pip install -r requirements_dev.txt
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Repeat this after a release update and also when dev_requirements change in master.
|
|
49
|
+
|
|
50
|
+
### Install pre-commit hook
|
|
51
|
+
Install the repo's pre-commit hook
|
|
52
|
+
```
|
|
53
|
+
pre-commit install
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Running `pre-commit run` will only check staged files before a commit, while
|
|
57
|
+
`pre-commit run -a` will check all files.
|
|
58
|
+
|
|
59
|
+
## More
|
|
60
|
+
For more hints, see the [How to submit a PR wiki page](https://github.com/ramses-rf/ramses_rf/wiki/How-to-submit-a-PR)
|