diff --git a/src/ramses_tx/parsers.py b/src/ramses_tx/parsers.py index 780fb873d..1861fc4f4 100644 --- a/src/ramses_tx/parsers.py +++ b/src/ramses_tx/parsers.py @@ -1294,6 +1294,7 @@ def _parser(seqx: str) -> list[str]: if seqx[:2] not in ( "21", # HVAC, Nuaire "63", # HVAC + "65", # HVAC, ClimaRad "66", # HVAC, Vasco "67", # HVAC "6C", # HVAC diff --git a/tests/tests/bindings/hvac/rem_fan_climarad.log b/tests/tests/bindings/hvac/rem_fan_climarad.log new file mode 100644 index 000000000..06221f47e --- /dev/null +++ b/tests/tests/bindings/hvac/rem_fan_climarad.log @@ -0,0 +1,32 @@ +#################################################################################################### +# Climarad Remote binding to a PIV +# - Supplicant, REM: Climarad 4-button remote (VMN-07LM01) +# - Respondent, FAN: Climarad MiniBox FAN (VMC-07RP01) + + + +#################################################################################################### +# 1. For reference, 10E0s (if any), oem_code='65' (Note: REM/FAN won't RP|10E0): +2024-10-16T21:32:07.084793 073 I --- 29:123150 63:262142 --:------ 10E0 029 000001C8410D0165FFFFFFFFFFFF0D0407DF564D4E2D30374C4D303100 # {'description': 'VMN-07LM01', 'manufacturer_sub_id': 'C8', 'product_id': '41', 'date_1': '2015-04-13', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad 4-button remote +2024-10-16T18:43:52.761437 087 I --- 29:099029 63:262142 --:------ 10E0 029 000001C81D150765FFFFFFFFFFFFFFFFFFFF564D432D30375250303100 # {'description': 'VMC-07RP01', 'manufacturer_sub_id': 'C8', 'product_id': '1D', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad MiniBox Fan + + + +#################################################################################################### +# 2. The handshake (NB: FAN|W|1FC9|00): +2024-11-09T09:56:31.417079 064 I --- 29:123150 63:262142 --:------ 1FC9 018 0022F175E10E6510E075E10E001FC975E10E # {'phase': 'offer', 'bindings': [['00', '22F1', '29:123150'], ['65', '10E0', '29:123150'], ['00', '1FC9', '29:123150']]} +2024-11-07T13:01:37.338144 090 W --- 29:099029 29:123150 --:------ 1FC9 006 0031D97582D5 # {'phase': 'accept', 'bindings': [['00', '31D9', '29:099029']]} +2024-11-07T13:01:37.355235 092 I --- 29:123150 29:099029 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} + +# It appears the subsequent/spontaneous REM|I|10E0 *is required* for a successful bind (otherwise the FAN will RQ|10E0, see below): +2024-10-16T21:32:07.084793 073 I --- 29:123150 63:262142 --:------ 10E0 029 000001C8410D0165FFFFFFFFFFFF0D0407DF564D4E2D30374C4D303100 # {'description': 'VMN-07LM01', 'manufacturer_sub_id': 'C8', 'product_id': '41', 'date_1': '2015-04-13', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad 4-button remote + + + +#################################################################################################### +# 3. Other notes: +# - domain IS appears to be 00: +# 31DA not seen + +# 3. Other notes: +# - it is unclear if these spontaneous I|1060s are needed too (unlikely): diff --git a/tests/tests/bindings/hvac/rem_fan_vasco.log b/tests/tests/bindings/hvac/rem_fan_vasco.log new file mode 100644 index 000000000..fd0c9fc4e --- /dev/null +++ b/tests/tests/bindings/hvac/rem_fan_vasco.log @@ -0,0 +1,32 @@ +#################################################################################################### +# Vasco Remote binding to a PIV +# - Supplicant, REM: Vasco 4-button remote (VMN-17LMP01) +# - Respondent, FAN: Vasco D60 HRU (VMD-17RPS01) + + + +#################################################################################################### +# 1. For reference, 10E0s (if any), oem_code='66' (Note: REM/FAN won't RP|10E0): +2024-10-04 22:24:58.581000 ... I --- 29:091138 63:262142 --:------ 10E0 038 000001C8400F0166FFFFFFFFFFFF0E0207E3564D4E2D31374C4D503031000000000000000000 # {'description': 'VMN-17LMP01', 'manufacturer_sub_id': 'C8', 'product_id': '40', 'date_1': '2019-02-14', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco 4-button remote +2024-10-15T21:01:19.293000 083 I --- 32:022222 63:262142 --:------ 10E0 030 000001C83A190F66FFFFFFFFFFFFFFFFFFFF564D442D3137525053303100 # {'description': 'VMD-17RPS01', 'manufacturer_sub_id': 'C8', 'product_id': '3A', 'date_1': '0000-00-00', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco D60 HRU + + + +#################################################################################################### +# 2. The handshake (NB: FAN|W|1FC9|00): +2024-11-07T14:39:29.639500 072 I --- 29:091138 --:------ 29:091138 1FC9 024 0022F17564020022F37564026610E0756402001FC9756402 # {'phase': 'offer', 'bindings': [['00', '22F1', '29:091138'], ['00', '22F3', '29:091138'], ['66', '10E0', '29:091138'], ['00', '1FC9', '29:091138']]} +2024-11-07T14:39:29.687203 083 W --- 32:022222 29:091138 --:------ 1FC9 012 0031D98056CE0031DA8056CE # {'phase': 'accept', 'bindings': [['00', '31D9', '32:022222'], ['00', '31DA', '32:022222']]} +2024-11-07T14:39:29.693284 071 I --- 29:091138 32:022222 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} + +# It appears the subsequent/spontaneous REM|I|10E0 *is required* for a successful bind (otherwise the FAN will RQ|10E0, see below): +2024-10-04 22:24:58.581000 ... I --- 29:091138 63:262142 --:------ 10E0 038 000001C8400F0166FFFFFFFFFFFF0E0207E3564D4E2D31374C4D503031000000000000000000 # {'description': 'VMN-17LMP01', 'manufacturer_sub_id': 'C8', 'product_id': '40', 'date_1': '2019-02-14', 'date_2': '0000-00-00', 'oem_code': '66'} # Vasco 4-button remote + + + +#################################################################################################### +# 3. Other notes: +# - domain IS appears to be 00: +# 2024-10-15T12:46:03.623447 082 I --- 32:022222 --:------ 32:022222 31DA 030 00EF007FFFEFEF058506EE0773051FA800EF0232320000EF00051902EE00 + +# 3. Other notes: +# - it is unclear if these spontaneous I|1060s are needed too (unlikely): diff --git a/tests/tests/bindings/hvac/rem_fan_ventura.log b/tests/tests/bindings/hvac/rem_fan_ventura.log new file mode 100644 index 000000000..c2e1d80f3 --- /dev/null +++ b/tests/tests/bindings/hvac/rem_fan_ventura.log @@ -0,0 +1,52 @@ +#################################################################################################### +# ClimaRad Remote binding to a PIV +# - Supplicant, REM: ClimaRad 4-button remote faked (VMN-07LM01) +# - Respondent, FAN: ClimaRad VenturaV1x HRU (VMD-07RPS13) + + + +#################################################################################################### +# 1. For reference, 10E0s (if any), oem_code='65' (Note: REM/FAN won't RP|10E0): +2024-10-16T21:32:07.084793 073 I --- 29:123150 63:262142 --:------ 10E0 029 000001C8410D0165FFFFFFFFFFFF0D0407DF564D4E2D30374C4D303100 # {'description': 'VMN-07LM01', 'manufacturer_sub_id': 'C8', 'product_id': '41', 'date_1': '2015-04-13', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad 4-button remote +2024-10-09T11:50:24.287879 123 I --- 37:153226 63:262142 --:------ 10E0 038 000001C8830C0A65FEFFFFFFFFFF110C07E4564D442D30375250533133000000000000000000 # {'description': 'VMD-07RPS13', 'manufacturer_sub_id': 'C8', 'product_id': '83', 'date_1': '2020-12-17', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad VenturaV1x + + + +#################################################################################################### +# 2. The handshake - faked in ramses_rf (NB: FAN|W|1FC9|00): +# actual remote 1FC9 packet gets no response. Ventura is known to only bind to a CO2 sensor +2024-11-09T18:33:29.744238 ... I --- 29:123160 --:------ 29:123160 1FC9 018 0022F175E1180010E075E118001FC975E118 +# extended 1FC9. Added 1298 and 22F4, got response from HRU +2024-11-09T18:32:41.837359 000 I --- 29:123160 --:------ 29:123160 1FC9 024 00129875E1180022F175E1180022F475E118001FC975E118 # {} +2024-11-09T18:32:43.058046 075 W --- 37:153226 29:123160 --:------ 1FC9 012 0031D996568A00230996568A # {'phase': 'accept', 'bindings': [['00', '31D9', '37:153226'], ['00', '2309', '37:153226']]} # 2309 reports a constant , set? +2024-11-09T18:32:47.032998 000 I --- 29:123160 37:153226 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} + +2024-11-09T18:33:29.744238 000 I --- 29:123160 --:------ 29:123160 1FC9 024 00129875E1180022F175E1180022F475E118001FC975E118 # {'phase': 'offer', 'bindings': [['00', '22F1', '29:123160'], ['00', '10E0', '29:123160'], ['00', '1FC9', '29:123160']]} +2024-11-09T18:33:29.759645 ... W --- 37:153226 29:123160 --:------ 1FC9 012 0031D996568A00230996568A # {'phase': 'accept', 'bindings': [['00', '31D9', '37:153226'], ['00', '2309', '37:153226']]} # 2309 reports a constant , set? +2024-11-09T18:33:29.763814 ... I --- 29:123160 37:153226 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} + +# no errors in ramses_cc +2024-11-11T14:36:41.725043 000 I --- 29:123160 --:------ 29:123160 1FC9 024 00129875E1180022F175E1180022F475E118001FC975E118 # {'phase': 'offer', 'bindings': [['00', '22F1', '29:123160'], ['00', '10E0', '29:123160'], ['00', '1FC9', '29:123160']]} +2024-11-11T14:36:41.741511 075 W --- 37:153226 29:123160 --:------ 1FC9 012 0031D996568A00230996568A # {'phase': 'accept', 'bindings': [['00', '31D9', '37:153226'], ['00', '2309', '37:153226']]} # 2309 reports a constant , set? +2024-11-11T14:36:41.745628 ... I --- 29:123160 37:153226 --:------ 1FC9 006 001FC975E118 # {'phase': 'confirm', 'bindings': [['00', '1FC9', '29:123160']]} # made up by ramses_rf, config was "21" + +# A subsequent/spontaneous REM|I|10E0 *is required* for a successful bind???: +2024-10-16T21:32:07.084793 073 I --- 29:123150 63:262142 --:------ 10E0 029 000001C8410D0165FFFFFFFFFFFF0D0407DF564D4E2D30374C4D303100 # {'description': 'VMN-07LM01', 'manufacturer_sub_id': 'C8', 'product_id': '41', 'date_1': '2015-04-13', 'date_2': '0000-00-00', 'oem_code': '65'} # ClimaRad 4-button remote + + + +#################################################################################################### +# 3. Other notes: +# - domain IS appears to be EF: +066 I --- 37:153226 --:------ 37:153226 31DA 030 00 EF0001F600EF064C7FFF07F5073EBE09001F0000000000008500850000 +# 4. ramses_cc.bind_device action +data: + device_id: "29:123160" + offer: + "10E0": "65" + 1FC9: "00" # or "21" as in orcon? + 22F1: "00" + # confirm: reports an error in ramses_cc + # 1FC9: "00" + device_info: + " I --- 29:123160 63:262142 --:------ 10E0 029 000001C8410D0165FFFFFFFFFFFF0D0407DF564D4E2D30374C4D303100" diff --git a/tests/tests/parsers/code_1fc9.log b/tests/tests/parsers/code_1fc9.log index b61507498..e26481be7 100644 --- a/tests/tests/parsers/code_1fc9.log +++ b/tests/tests/parsers/code_1fc9.log @@ -102,12 +102,24 @@ 2022-08-17T19:32:34.825700 ... W --- 32:155617 37:155617 --:------ 1FC9 012 0031D9825FE10031DA825FE1 # {'phase': 'accept', 'bindings': [['00', '31D9', '32:155617'], ['00', '31DA', '32:155617']]} 2022-08-17T19:32:35.418914 ... I --- 37:155617 32:155617 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} -# Vasco remote (22F1/3) binding to a D60 HRU FAN (31D9/A) +# Vasco remote binding to a D60 HRU FAN (31D9/A) - oem_code 66 (vasco) 2024-11-07T14:39:29.639500 072 I --- 29:091138 --:------ 29:091138 1FC9 024 0022F17564020022F37564026610E0756402001FC9756402 # {'phase': 'offer', 'bindings': [['00', '22F1', '29:091138'], ['00', '22F3', '29:091138'], ['66', '10E0', '29:091138'], ['00', '1FC9', '29:091138']]} 2024-11-07T14:39:29.687203 083 W --- 32:022222 29:091138 --:------ 1FC9 012 0031D98056CE0031DA8056CE # {'phase': 'accept', 'bindings': [['00', '31D9', '32:022222'], ['00', '31DA', '32:022222']]} 2024-11-07T14:39:29.693284 071 I --- 29:091138 32:022222 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} -# ClimaRad remote (31D9) binding to a ClimaRad MiniBox FAN (31D9) -2024-11-07T19:32:38.578052 ... I --- 29:123160 --:------ 29:123160 1FC9 012 0031D975E118001FC975E118 # {'phase': 'offer', 'bindings': [['00', '31D9', '29:123160'], ['00', '1FC9', '29:123160']]} +# ClimaRad remote binding to a ClimaRad MiniBox FAN (31D9) - oem_code 65 (climarad) +2024-11-09T09:56:31.417079 064 I --- 29:123150 63:262142 --:------ 1FC9 018 0022F175E10E6510E075E10E001FC975E10E # {'phase': 'offer', 'bindings': [['00', '22F1', '29:123150'], ['65', '10E0', '29:123150'], ['00', '1FC9', '29:123150']]} +# also seen in log, same remote +# 2024-11-07T19:32:38.578052 ... I --- 29:123150 --:------ 29:123150 1FC9 012 0031D975E118001FC975E118 # {'phase': 'offer', 'bindings': [['00', '31D9', '29:123160'], ['00', '1FC9', '29:123160']]} 2024-11-07T13:01:37.338144 090 W --- 29:099029 29:123150 --:------ 1FC9 006 0031D97582D5 # {'phase': 'accept', 'bindings': [['00', '31D9', '29:099029']]} 2024-11-07T13:01:37.355235 092 I --- 29:123150 29:099029 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} + +# ClimaRad faked remote binding to Ventura V1X (adapted from MiniBox binding, added 1298 and 22F4) +2024-11-09T18:32:41.837359 000 I --- 29:123160 --:------ 29:123160 1FC9 024 00129875E1180022F175E1180022F475E118001FC975E118 # {'phase': 'offer', 'bindings': [['00', '1298', '29:123160'], ['00', '22F1', '29:123160'], ['00', '22F4', '29:123160'], ['00', '1FC9', '29:123160']]} +2024-11-09T18:32:42.036189 079 W --- 37:153226 29:123160 --:------ 1FC9 012 0031D996568A00230996568A # {'phase': 'accept', 'bindings': [['00', '31D9', '37:153226'], ['00', '2309', '37:153226']]} # 2309 reports a constant , set? +2024-11-09T18:32:42.045171 ... I --- 29:123160 37:153226 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} +# copied ClimaRad REM packet, gets 'accept' reply, but still can't control via 22F1/22F4, should follow up with 10E0? +2024-11-09T18:33:29.744238 ... I --- 29:123160 --:------ 29:123160 1FC9 018 0022F175E1180010E075E118001FC975E118 # {'phase': 'offer', 'bindings': [['00', '22F1', '29:123160'], ['00', '10E0', '29:123160'], ['00', '1FC9', '29:123160']]} +2024-11-09T18:33:29.759645 ... W --- 37:153226 29:123160 --:------ 1FC9 012 0031D996568A00230996568A # {'phase': 'accept', 'bindings': [['00', '31D9', '37:153226'], ['00', '2309', '37:153226']]} # 2309 reports a constant , set? +2024-11-09T18:33:29.763814 ... I --- 29:123160 37:153226 --:------ 1FC9 001 00 # {'phase': 'confirm', 'bindings': [['00']]} +2024-11-11T14:36:41.745628 ... I --- 29:123160 37:153226 --:------ 1FC9 006 001FC975E118 # {'phase': 'confirm', 'bindings': [['00', '1FC9', '29:123160']]} # made up by ramses_rf, config was "21"