From e17afb9e160428c95a43c505233cc23d0f2a7575 Mon Sep 17 00:00:00 2001 From: HomeAutoUser Date: Wed, 1 Feb 2023 19:36:32 +0100 Subject: [PATCH 01/76] Update README.md (#1156) * Update README.md added model name --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbe5831d9..7ced2707b 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Supported Devices / Protocols |Grothe Mistral SE 03.1| wireless gong | |GT-9000| Remote control based on protocol GT-9000 with encoding (EASY HOME RCT DS1, Tec Star)| |GT-TMBBQ-01| BBQ temperature sensor| -|Hama TS33C, Bresser Thermo/Hygro Sensor | Weather sensor | +|Hama TS33C, Hama TS34A, Hama TS36E, Bresser Thermo/Hygro Sensor | Weather sensor | |Heidemann, Heidemann HX, VTX-BELL | wireless bell | |Hoermann HSM2, HSM4, HS1-868-BS | Remote control | |Inkbird IBS-P01R, ITH-20R | Pool thermometer, temperature/humidity sensor | From c3b7190fda403f2db0bfc81d915d8bd8774c8212 Mon Sep 17 00:00:00 2001 From: HomeAutoUser Date: Mon, 20 Feb 2023 14:21:45 +0100 Subject: [PATCH 02/76] testData files update (#1155) --- t/FHEM/10_FS10/testData.json | 52 +- t/FHEM/10_SD_GT/testData.json | 64 +- t/FHEM/10_SD_Rojaflex/testData.json | 78 +- t/FHEM/14_FLAMINGO/testData.json | 61 +- t/FHEM/14_Hideki/testData.json | 224 +-- t/FHEM/14_SD_AS/testData.json | 32 +- t/FHEM/14_SD_BELL/testData.json | 510 +++-- t/FHEM/14_SD_UT/testData.json | 2432 ++++++++++-------------- t/FHEM/14_SD_WS/testData.json | 2177 +++++++++------------ t/FHEM/14_SD_WS07/testData.json | 167 +- t/FHEM/14_SD_WS09/testData.json | 127 +- t/FHEM/14_SD_WS_Maverick/testData.json | 8 +- t/FHEM/41_OREGON/testData.json | 154 +- t/FHEM/98_Dooya/testData.json | 26 +- 14 files changed, 2615 insertions(+), 3497 deletions(-) diff --git a/t/FHEM/10_FS10/testData.json b/t/FHEM/10_FS10/testData.json index 36b10e824..e773a0b8a 100644 --- a/t/FHEM/10_FS10/testData.json +++ b/t/FHEM/10_FS10/testData.json @@ -8,19 +8,15 @@ "DEF" : "2_13", "NAME" : "FS10_2_13" }, - "minProtocolVersion" : "1.27", "readings" : { "state" : "on" }, - "revision_entry" : "2021-04-22 22:08:51", - "revision_modul" : "10_FS10.pm 11 2020-06-06 21:30:00Z elektron-bbs", "rmsg" : "MU;P0=1776;P1=-410;P2=383;P3=-820;D=01212121212121212121212123212121232323212323232121212323232121212321212123232123212120;CP=2;R=74;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "Remote control", @@ -29,19 +25,15 @@ "DEF" : "2_13", "NAME" : "FS10_2_13" }, - "minProtocolVersion" : "1.27", "readings" : { "state" : "off" }, - "revision_entry" : "2021-04-22 22:09:16", - "revision_modul" : "10_FS10.pm 11 2020-06-06 21:30:00Z elektron-bbs", "rmsg" : "MU;P0=-27584;P1=446;P2=-349;P3=-755;D=01212121212121212121212121312121312131312131313121212131313121212131212121313131213131;CP=1;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "user" : "elektron-bbs" + ] } ], "id" : "61", @@ -53,9 +45,6 @@ { "comment" : "Remote control", "dmsg" : "P61#0011DC711A0", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-22 22:08:51", - "revision_modul" : "10_FS10.pm 11 2020-06-06 21:30:00Z elektron-bbs", "rmsg" : "MU;P0=1776;P1=-410;P2=383;P3=-820;D=01212121212121212121212123212121232323212323232121212323232121212321212123232123212120;CP=2;R=74;", "tests" : [ { @@ -67,15 +56,11 @@ "state" : "on" } } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "Remote control 2", "dmsg" : "P61#00096E388EC", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-22 22:09:16", - "revision_modul" : "10_FS10.pm 11 2020-06-06 21:30:00Z elektron-bbs", "rmsg" : "MU;P0=-27584;P1=446;P2=-349;P3=-755;D=01212121212121212121212121312121312131312131313121212131313121212131212121313131213131;CP=1;", "tests" : [ { @@ -87,15 +72,11 @@ "state" : "off" } } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "sum != rsum", "dmsg" : "P61#5A4EE12254", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-22 22:09:16", - "revision_modul" : "10_FS10.pm 11 2021-11-17 21:48:53Z sidey79", "rmsg" : "", "tests" : [ { @@ -103,15 +84,11 @@ "ParseFn" : "" } } - ], - "user" : "unknown" + ] }, { "comment" : "parity/bit5 error", "dmsg" : "P61#0011DC71120", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-22 22:09:16", - "revision_modul" : "10_FS10.pm 11 2021-11-17 21:48:53Z sidey79", "rmsg" : "MU;P0=1776;P1=-410;P2=383;P3=-820;D=01212121212121212121212123212121232323212323232121212323232121212321212123212123212120;CP=2;R=74;", "tests" : [ { @@ -119,15 +96,11 @@ "ParseFn" : "" } } - ], - "user" : "unknown" + ] }, { "comment" : "ERROR message contains too many zeros", "dmsg" : "P61#0004771C468", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-22 22:09:16", - "revision_modul" : "10_FS10.pm 11 2021-11-17 21:48:53Z sidey79", "rmsg" : "MU;P0=1776;P1=-410;P2=383;P3=-820;D=012121212121212121212121212123212121232323212323232121212323232121212321212123232123212120;CP=2;R=74;", "tests" : [ { @@ -135,15 +108,11 @@ "ParseFn" : "" } } - ], - "user" : "unknown" + ] }, { "comment" : "ERROR message too short or too long ", "dmsg" : "P61#0011DC711A", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-22 22:09:16", - "revision_modul" : "10_FS10.pm 11 2021-11-17 21:48:53Z sidey79", "rmsg" : "MU;P0=1776;P1=-410;P2=383;P3=-820;D=012121212121212121212121232121212323232123232321212123232321212123212121232321232120;CP=2;R=74;", "tests" : [ { @@ -151,8 +120,7 @@ "ParseFn" : "" } } - ], - "user" : "unknown" + ] } ], "id" : "61", diff --git a/t/FHEM/10_SD_GT/testData.json b/t/FHEM/10_SD_GT/testData.json index a2cc07245..40019461a 100644 --- a/t/FHEM/10_SD_GT/testData.json +++ b/t/FHEM/10_SD_GT/testData.json @@ -9,20 +9,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "C9AFAC", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:18:20", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=328;P1=-428;P3=1090;P4=-1190;P5=-2310;D=010131040431310431043131313131043104313104040531310404310404313104310431313131310431043131040405313104043104043131043104313131313104310431310404053131040431040431310431043131313131043104313104042;CP=0;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button C off, Rollingcode 2, V2, Penny 2335191R (ID 5,19 additionally)", @@ -32,20 +28,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "C22B9C", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:20:44", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=1090;P1=-430;P2=328;P3=-1192;P4=-2319;P5=2988;D=01012323232301232323012301230101012323010101232324010123232323012323230123012301010123230101012323240101232323230123232301230123010101232301010123232401012323232301232323012301230101012323010101232353;CP=2;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button C off, Rollingcode 3, V2, Penny 2335191R (ID 5 additionally)", @@ -55,20 +47,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "CDD41C", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:22:44", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=1086;P1=-433;P2=327;P3=-1194;P4=-2318;P5=2988;D=01012323010123010101230123012323232323010101232324010123230101230101012301230123232323230101012323240101232301012301010123012301232323232301010123232401012323010123010101230123012323232323010101232353;CP=2;", "tests" : [ { - "comment" : "Test #2" + "comment" : "#2" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button C off, Rollingcode 4, V2, Penny 2335191R (ID 5 additionally)", @@ -78,20 +66,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "C3802C", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:24:40", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=1090;P1=-428;P2=334;P3=-1190;P4=-2317;P5=2988;D=01012323232301010123232323232323232301230101232324010123232323010101232323232323232323012301012323240101232323230101012323232323232323230123010123232401012323232301010123232323232323232301230101232353;CP=2;", "tests" : [ { - "comment" : "Test #3" + "comment" : "#3" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button C on, Rollingcode 1, V2, Penny 2335191R (ID 5 additionally)", @@ -101,20 +85,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "CA627C", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:27:05", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=1092;P1=-429;P2=335;P3=-1184;P4=-2316;P5=2996;D=010123230123012323010123232301232301010101012323240101232301230123230101232323012323010101010123232401012323012301232301012323230123230101010101232355;CP=2;", "tests" : [ { - "comment" : "Test #4" + "comment" : "#4" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button C on, Rollingcode 2, V2, Penny 2335191R (ID 5 additionally)", @@ -124,20 +104,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "C6B54C", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:28:26", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=1090;P1=-429;P2=331;P3=-1189;P4=-2316;P5=2992;D=01012323230101230123010123012301230123230101232324010123232301012301230101230123012301232301012323240101232323010123012301012301230123012323010123232401012323230101230123010123012301230123230101232354;CP=2;", "tests" : [ { - "comment" : "Test #5" + "comment" : "#5" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button D off, Rollingcode 1, V2, Penny 2335191R (ID 5,19 additionally)", @@ -146,20 +122,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "C6B542", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:42:14", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=-800;P1=-422;P2=346;P3=-1176;P4=1103;P5=-2302;D=0123234141234123414123412341234123232323412325414123232341412341234141234123412341232323234123254125;CP=2;", "tests" : [ { - "comment" : "Test #6" + "comment" : "#6" } - ], - "user" : "Tom71" + ] }, { "comment" : "Button D on, Rollingcode 1, V2, Penny 2335191R (ID 5 additionally)", @@ -169,20 +141,16 @@ "DEF" : "LEARN", "NAME" : "SD_GT_LEARN" }, - "minProtocolVersion" : "1.27", "readings" : { "LearnCodes" : "C22B92", "state" : "learned code 1, please press another button" }, - "revision_entry" : "2021-03-22 14:32:21", - "revision_modul" : "10_SD_GT.pm 1 2020-05-25 21:00:00Z elektron-bbs", "rmsg" : "MU;P0=-416;P1=1100;P2=345;P3=-1176;P4=-2298;P5=3008;D=0010232323102310231010102323102323102324101023232323102323231023102310101023231023231023241010232323231023232310231023101010232310232310232410102323232310232323102310231010102323102323102351;CP=2;", "tests" : [ { - "comment" : "Test #7" + "comment" : "#7" } - ], - "user" : "Tom71" + ] } ], "id" : "49.2", diff --git a/t/FHEM/10_SD_Rojaflex/testData.json b/t/FHEM/10_SD_Rojaflex/testData.json index 1df3683da..22187a4e8 100644 --- a/t/FHEM/10_SD_Rojaflex/testData.json +++ b/t/FHEM/10_SD_Rojaflex/testData.json @@ -8,19 +8,15 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", "readings" : { "state" : "down" }, - "revision_entry" : "2021-10-23 17:07:42", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-10-19 18:00:00Z elektron-bbs", "rmsg" : "MN;D=083122FD298A018A8E;R=0;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "Button stop, https://github.com/RFD-FHEM/RFFHEM/issues/955", @@ -29,19 +25,15 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", "readings" : { "state" : "stop" }, - "revision_entry" : "2021-10-23 17:09:33", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-10-19 18:00:00Z elektron-bbs", "rmsg" : "MN;D=083122FD290A010A8E;R=244;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "Button up, https://github.com/RFD-FHEM/RFFHEM/issues/955", @@ -50,19 +42,15 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", "readings" : { "state" : "up" }, - "revision_entry" : "2021-10-23 17:10:36", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-10-19 18:00:00Z elektron-bbs", "rmsg" : "MN;D=083122FD291A011AAE;R=249;", "tests" : [ { - "comment" : "Test #2" + "comment" : "#2" } - ], - "user" : "elektron-bbs" + ] } ], "id" : "109", @@ -78,9 +66,6 @@ "DEF" : "3122FD2_5", "NAME" : "SD_Rojaflex_3122FD2_5" }, - "minProtocolVersion" : "1.39", - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "MN;D=083122FD251A011AAA;R=198;", "tests" : [ { @@ -102,8 +87,7 @@ "tpos" : "100" } } - ], - "user" : "Hofyyy" + ] }, { "comment" : "parse channel 0 message", @@ -112,16 +96,17 @@ "DEF" : "3122FD2_0", "NAME" : "SD_Rojaflex_3122FD2_0" }, - "minProtocolVersion" : "1.39", "readings" : { "motor" : "down", "state" : "down", "tpos" : "100" }, - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "", - "user" : "Hofyyy" + "tests" : [ + { + "comment" : "#1" + } + ] }, { "MatchCheckFail" : true, @@ -130,12 +115,13 @@ "internals" : { "NAME" : null }, - "minProtocolVersion" : "1.39", "readings" : {}, - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "", - "user" : "Hofyyy" + "tests" : [ + { + "comment" : "#2" + } + ] }, { "comment" : "P109# Kanal 9 - remote - drive up", @@ -144,9 +130,6 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "MN;D=083122FD291A011AAE;R=196;", "tests" : [ { @@ -174,8 +157,7 @@ "tpos" : "100" } } - ], - "user" : "Hofyyy" + ] }, { "comment" : "P109# Kanal 9 - remote - drive down", @@ -184,9 +166,6 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "MN;D=083122FD298A018A8E;R=196;", "tests" : [ { @@ -220,8 +199,7 @@ "tpos" : "0" } } - ], - "user" : "Hofyyy" + ] }, { "comment" : "P109# Kanal 9 - status 34%", @@ -230,9 +208,6 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "MN;D=083122FD29A5220A8E;R=196;", "tests" : [ { @@ -264,8 +239,7 @@ "tpos" : "0" } } - ], - "user" : "Hofyyy" + ] }, { "comment" : "P109# Kanal 9 - status 0%", @@ -274,14 +248,11 @@ "DEF" : "3122FD2_9", "NAME" : "SD_Rojaflex_3122FD2_9" }, - "minProtocolVersion" : "1.39", "readings" : { "cpos" : "0", "motor" : "stop", "state" : "open" }, - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "MN;D=083122FD2985001AAE;R=196;", "tests" : [ { @@ -308,15 +279,11 @@ "tpos" : "100" } } - ], - "user" : "Hofyyy" + ] }, { "comment" : "P109# Kanal 9 - status 100%", "dmsg" : "P109#083122FD29D5648A8E", - "minProtocolVersion" : "1.39", - "revision_entry" : "2021-11-21 20:33:59Z", - "revision_modul" : "10_SD_Rojaflex.pm 100 2021-11-21 20:33:59Z elektron-bbs", "rmsg" : "MN;D=083122FD29D5648A8E;R=196;", "tests" : [ { @@ -356,8 +323,7 @@ "tpos" : "0" } } - ], - "user" : "Hofyyy" + ] } ], "id" : "109", diff --git a/t/FHEM/14_FLAMINGO/testData.json b/t/FHEM/14_FLAMINGO/testData.json index 3922974ab..c529ca59a 100644 --- a/t/FHEM/14_FLAMINGO/testData.json +++ b/t/FHEM/14_FLAMINGO/testData.json @@ -11,21 +11,17 @@ "DEF" : "32E44F", "NAME" : "FLAMINGO_32E44F" }, - "minProtocolVersion" : "1.27", "readings" : { "alarmcounter" : "1", "lastReceive_ID" : "13", "state" : "Alarm" }, - "revision_entry" : "2021-03-24 10:20:53", - "revision_modul" : "14_FLAMINGO.pm 22619 2020-08-17 17:29:09Z HomeAuto_User", "rmsg" : "MS;P0=-1413;P1=757;P2=-2779;P3=-16079;P4=8093;P5=-954;D=1345121210101212101210101012121012121210121210101010;CP=1;SP=3;R=33;O;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "Wahrschauer" + ] } ], "id" : "13", @@ -33,56 +29,50 @@ "name" : "KD-101LA" }, { - "module" : "FLAMINGO", "data" : [ { - "revision_modul" : "14_FLAMINGO.pm 22619 2020-08-17 17:29:09Z HomeAuto_User", + "comment" : "Smoke alarm device / decode as MU", + "dispatch_repeats" : "3", + "dmsg" : "P13.1#CBFAD2", + "internals" : { + "DEF" : "CBFAD2", + "NAME" : "FLAMINGO_CBFAD2" + }, "readings" : { - "lastReceive_ID" : "13.1", "alarmcounter" : "1", + "lastReceive_ID" : "13.1", "state" : "Alarm" }, - "dispatch_repeats" : "3", - "dmsg" : "P13.1#CBFAD2", "rmsg" : "MU;P0=-5684;P1=8149;P2=-887;P3=798;P4=-1393;P5=-2746;P6=-19956;D=0123434353534353434343434343435343534343534353534353612343435353435343434343434343534353434353435353435361234343535343534343434343434353435343435343535343536123434353534353434343434343435343534343534353534353612343435353435343434343434343534353434353435;CP=3;R=0;", - "minProtocolVersion" : "1.27", - "comment" : "Smoke alarm device / decode as MU", - "user" : "HomeAuto_User", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "FA22RF" - } + }, + "comment" : "#0" } - ], - "internals" : { - "NAME" : "FLAMINGO_CBFAD2", - "DEF" : "CBFAD2" - }, - "revision_entry" : "2021-03-24 10:22:35" + ] } ], "id" : "13.1", + "module" : "FLAMINGO", "name" : "FA22RF" }, { "data" : [ { - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P1=-2708;P2=796;P3=-1387;P4=-8477;P5=8136;P6=-904;D=2456212321212323232321212121212121212123212321212121;CP=2;SP=4;", - "dmsg" : "P13#B0FFAF", "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/233#issuecomment-382070720", - "readings" : { - "alarmcounter" : "1", - "state" : "Alarm", - "lastReceive_ID" : "13" - }, - "revision_modul" : "14_FLAMINGO.pm 22619 2020-08-17 17:29:09Z HomeAuto_User", + "dmsg" : "P13#B0FFAF", "internals" : { "DEF" : "B0FFAF", "NAME" : "FLAMINGO_B0FFAF" }, + "readings" : { + "alarmcounter" : "1", + "lastReceive_ID" : "13", + "state" : "Alarm" + }, + "rmsg" : "MS;P1=-2708;P2=796;P3=-1387;P4=-8477;P5=8136;P6=-904;D=2456212321212323232321212121212121212123212321212121;CP=2;SP=4;", "tests" : [ { "attributes" : { @@ -90,14 +80,11 @@ }, "comment" : "#0" } - ], - "revision_entry" : "2021-03-24 10:24:16", - "user" : "unknown" + ] } ], + "id" : "13.2", "module" : "FLAMINGO", - "name" : "LM-101LD", - "id" : "13.2" + "name" : "LM-101LD" } - ] diff --git a/t/FHEM/14_Hideki/testData.json b/t/FHEM/14_Hideki/testData.json index ee41b8d41..1c2fab82e 100644 --- a/t/FHEM/14_Hideki/testData.json +++ b/t/FHEM/14_Hideki/testData.json @@ -8,12 +8,14 @@ "internals" : { "NAME" : "" }, - "minProtocolVersion" : "1.42", "readings" : {}, - "revision_entry" : "SD_ProtocolData.pm 3.4.4 2022-01-15 12:25:06Z elektron-bbs $", "revision_modul" : "", "rmsg" : "", - "user" : "unknown" + "tests" : [ + { + "comment" : "#0" + } + ] }, { "comment" : "to short", @@ -22,14 +24,16 @@ "DEF" : "Hideki_31_1 Hideki Hideki_31_1", "NAME" : "Hideki_31_1" }, - "minProtocolVersion" : "1.42", "readings" : { "temperature" : "1" }, - "revision_entry" : "SD_ProtocolData.pm 3.4.4 2022-01-15 12:25:06Z elektron-bbs $", "revision_modul" : "", "rmsg" : "MC;LL=-952;LH=1003;SL=-452;SH=526;D=51E4676A3F0FEC2693;C=488;L=72;R=247;", - "user" : "unknown" + "tests" : [ + { + "comment" : "#1" + } + ] }, { "comment" : "temperature only", @@ -38,14 +42,16 @@ "DEF" : "Hideki_31_1 Hideki Hideki_31_1", "NAME" : "Hideki_31_1" }, - "minProtocolVersion" : "1.42", "readings" : { "temperature" : "1.1" }, - "revision_entry" : "SD_ProtocolData.pm 3.4.4 2022-01-15 12:25:06Z elektron-bbs $", "revision_modul" : "", "rmsg" : "MC;LL=-1038;LH=918;SL=-562;SH=412;D=547D19FA9C3FFBD6BD8;C=488;L=73;", - "user" : "ralf9" + "tests" : [ + { + "comment" : "#2" + } + ] }, { "comment" : "temperature only short", @@ -54,14 +60,16 @@ "DEF" : "Hideki_31_1 Hideki Hideki_31_1", "NAME" : "Hideki_31_1" }, - "minProtocolVersion" : "1.42", "readings" : { "temperature" : "0.8" }, - "revision_entry" : "SD_ProtocolData.pm 3.4.4 2022-01-15 12:25:06Z elektron-bbs $", "revision_modul" : "", "rmsg" : "MC;LL=-1043;LH=919;SL=-503;SH=428;D=51F467EA3E0FECEEEE;C=482;L=71;", - "user" : "ralf9" + "tests" : [ + { + "comment" : "#3" + } + ] } ], "id" : "12", @@ -76,7 +84,6 @@ "DEF" : "Hideki_30_1", "NAME" : "Hideki_30_1" }, - "minProtocolVersion" : "1.27", "readings" : { "battery" : "ok", "batteryState" : "ok", @@ -87,15 +94,12 @@ "state" : "T: 29.6 H: 54", "temperature" : "29.6" }, - "revision_entry" : "2021-03-24 10:11:26", - "revision_modul" : "14_Hideki.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MC;LL=-1010;LH=938;SL=-519;SH=457;D=A8C2345ADD8E0B99F586F9C;C=487;L=90;R=57;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "HomeAuto_User" + ] } ], "id" : "12", @@ -103,24 +107,19 @@ "name" : "BRESSER 70-09993" }, { - "module" : "Hideki", "data" : [ { + "comment" : "no decode via RAWMSG MC;LL=-1018;LH=914;SL=-539;SH=436;D=A8E4F45AEDF40AF97595766;C=484;L=91;R=7; / only DMSG", "dmsg" : "P12#7536BA8A82BFC151AB6401", + "internals" : { + "DEF" : "Hideki_30_2", + "NAME" : "Hideki_30_2" + }, "readings" : { "batteryState" : "ok", "channel" : "2", "state" : "T: 18.6 H: 43" }, - "minProtocolVersion" : "unknown", - "user" : "Ralf9", - "revision_entry" : "unknown", - "revision_modul" : "unknown", - "internals" : { - "DEF" : "Hideki_30_2", - "NAME" : "Hideki_30_2" - }, - "comment" : "no decode via RAWMSG MC;LL=-1018;LH=914;SL=-539;SH=436;D=A8E4F45AEDF40AF97595766;C=484;L=91;R=7; / only DMSG", "tests" : [ { "comment" : "#0" @@ -129,72 +128,63 @@ } ], "id" : "12", + "module" : "Hideki", "name" : "Hama TS33C" }, { - "name" : "TFA 30.3176", "data" : [ { - "revision_modul" : "14_Hideki.pm 21666 2020-04-13 21:14:53Z Sidey", - "rmsg" : "MC;LL=-1022;LH=927;SL=-531;SH=442;D=A8EA345AD8BE0A3F6AA3F94;C=486;L=90;R=37;", - "revision_entry" : "2021-03-24 10:09:06", - "user" : "HomeAuto_User", - "minProtocolVersion" : "1.27", + "comment" : "Thermo-hygro sensor for base station 35.1101.02", + "dmsg" : "P12#75EABA4A17BE07A91D5801", + "internals" : { + "DEF" : "Hideki_30_1", + "NAME" : "Hideki_30_1" + }, "readings" : { + "battery" : "ok", + "batteryState" : "ok", "channel" : "1", - "temperature" : "23.9", + "comfort_level" : "Dry. Less than 40% RH", "humidity" : "9", "package_number" : "3", - "battery" : "ok", "state" : "T: 23.9 H: 9", - "comfort_level" : "Dry. Less than 40% RH", - "batteryState" : "ok" + "temperature" : "23.9" }, - "dmsg" : "P12#75EABA4A17BE07A91D5801", + "rmsg" : "MC;LL=-1022;LH=927;SL=-531;SH=442;D=A8EA345AD8BE0A3F6AA3F94;C=486;L=90;R=37;", "tests" : [ { "comment" : "#0" } - ], - "comment" : "Thermo-hygro sensor for base station 35.1101.02", - "internals" : { - "NAME" : "Hideki_30_1", - "DEF" : "Hideki_30_1" - } + ] } ], "id" : "12", - "module" : "Hideki" + "module" : "Hideki", + "name" : "TFA 30.3176" }, { - "name" : "Wireless Weather Station DV928, Wind", - "id" : "12", "data" : [ { + "comment" : "no RAWMSG / O und 90 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", "dmsg" : "P12#7585B2C471BF71BFFDF0029C605C03", - "user" : "brezel", - "revision_entry" : "2022-06-09 19:59:26", - "revision_modul" : "unknown", + "internals" : { + "DEF" : "Hideki_12_4", + "NAME" : "Hideki_12_4" + }, "readings" : { - "temperature" : "19.3", + "battery" : "ok", + "batteryState" : "ok", "channel" : "4", - "windDirectionDegree" : "90", + "package_number" : "1", "state" : "T: 19.3 Ws: 7.00 Wg: 61.00 Wd: E", + "temperature" : "19.3", + "windChill" : "19.3", + "windDirection" : "4", + "windDirectionDegree" : "90", "windDirectionText" : "E", - "package_number" : "1", - "battery" : "ok", "windGust" : "61.00", - "windSpeed" : "7.00", - "windChill" : "19.3", - "batteryState" : "ok", - "windDirection" : "4" + "windSpeed" : "7.00" }, - "minProtocolVersion" : "1.45", - "internals" : { - "NAME" : "Hideki_12_4", - "DEF" : "Hideki_12_4" - }, - "comment" : "no RAWMSG / O und 90 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", "tests" : [ { "comment" : "#0" @@ -202,56 +192,53 @@ ] }, { - "revision_modul" : "unknown", - "revision_entry" : "2022-06-09 21:24:48", - "user" : "brezel", - "minProtocolVersion" : "1.45", + "comment" : "no RAWMSG / S und 180 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", + "dmsg" : "P12#7585B244FDBEFDBEF000FE403D6C01", + "internals" : { + "DEF" : "Hideki_12_4", + "NAME" : "Hideki_12_4" + }, "readings" : { - "package_number" : "3", "battery" : "ok", - "windDirection" : "8", - "windChill" : "20.7", "batteryState" : "ok", - "windSpeed" : "10.00", - "windGust" : "20.00", - "windDirectionDegree" : "180", "channel" : "4", + "package_number" : "3", + "state" : "T: 20.7 Ws: 10.00 Wg: 20.00 Wd: S", "temperature" : "20.7", + "windChill" : "20.7", + "windDirection" : "8", + "windDirectionDegree" : "180", "windDirectionText" : "S", - "state" : "T: 20.7 Ws: 10.00 Wg: 20.00 Wd: S" + "windGust" : "20.00", + "windSpeed" : "10.00" }, - "dmsg" : "P12#7585B244FDBEFDBEF000FE403D6C01", "tests" : [ { "comment" : "#1" } - ], - "comment" : "no RAWMSG / S und 180 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", - "internals" : { - "NAME" : "Hideki_12_4", - "DEF" : "Hideki_12_4" - } + ] }, { - "minProtocolVersion" : "1.45", + "comment" : "with wind correction, no RAWMSG / O und 90 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", + "dmsg" : "P12#7585B2C471BF71BFFDF0029C605C03", + "internals" : { + "DEF" : "Hideki_12_4", + "NAME" : "Hideki_12_4" + }, "readings" : { - "windDirectionDegree" : "90", + "battery" : "ok", + "batteryState" : "ok", "channel" : "4", - "temperature" : "19.3", + "package_number" : "1", "state" : "T: 19.3 Ws: 14.00 Wg: 122.00 Wd: E", + "temperature" : "19.3", + "windChill" : "19.3", + "windDirection" : "4", + "windDirectionDegree" : "90", "windDirectionText" : "E", - "battery" : "ok", - "package_number" : "1", - "windSpeed" : "14.00", "windGust" : "122.00", - "windDirection" : "4", - "batteryState" : "ok", - "windChill" : "19.3" + "windSpeed" : "14.00" }, - "revision_modul" : "unknown", - "user" : "brezel", - "revision_entry" : "2022-06-09 19:59:26", - "dmsg" : "P12#7585B2C471BF71BFFDF0029C605C03", "tests" : [ { "attributes" : { @@ -259,48 +246,41 @@ }, "comment" : "#2" } - ], - "comment" : "with wind correction, no RAWMSG / O und 90 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", - "internals" : { - "NAME" : "Hideki_12_4", - "DEF" : "Hideki_12_4" - } + ] }, { + "comment" : "with wind correction, no RAWMSG / S und 180 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", "dmsg" : "P12#7585B244FDBEFDBEF000FE403D6C01", - "revision_entry" : "2022-06-09 21:24:48", - "user" : "brezel", - "revision_modul" : "unknown", + "internals" : { + "DEF" : "Hideki_12_4", + "NAME" : "Hideki_12_4" + }, "readings" : { - "package_number" : "3", "battery" : "ok", - "windGust" : "20.00", - "windSpeed" : "10.00", - "windChill" : "20.7", "batteryState" : "ok", - "windDirection" : "10", - "temperature" : "20.7", "channel" : "4", - "windDirectionDegree" : "225", + "package_number" : "3", "state" : "T: 20.7 Ws: 10.00 Wg: 20.00 Wd: SW", - "windDirectionText" : "SW" - }, - "minProtocolVersion" : "1.45", - "internals" : { - "NAME" : "Hideki_12_4", - "DEF" : "Hideki_12_4" + "temperature" : "20.7", + "windChill" : "20.7", + "windDirection" : "10", + "windDirectionDegree" : "225", + "windDirectionText" : "SW", + "windGust" : "20.00", + "windSpeed" : "10.00" }, - "comment" : "with wind correction, no RAWMSG / S und 180 Grad, https://forum.fhem.de/index.php/topic,126712.msg1213152.html#msg1213152", "tests" : [ { - "comment" : "#3", "attributes" : { "windDirCorr" : "2" - } + }, + "comment" : "#3" } ] } ], - "module" : "Hideki" + "id" : "12", + "module" : "Hideki", + "name" : "Wireless Weather Station DV928, Wind" } ] diff --git a/t/FHEM/14_SD_AS/testData.json b/t/FHEM/14_SD_AS/testData.json index e42d17266..adb3648eb 100644 --- a/t/FHEM/14_SD_AS/testData.json +++ b/t/FHEM/14_SD_AS/testData.json @@ -8,7 +8,6 @@ "DEF" : "voltage_0", "NAME" : "ArduinoSensor_voltage_0" }, - "minProtocolVersion" : "1.29", "readings" : { "battery" : "2", "batteryState" : "ok", @@ -17,15 +16,12 @@ "trigger" : "auto", "voltage" : "3.64" }, - "revision_entry" : "2021-05-26 23:11:19", - "revision_modul" : "14_SD_AS.pm 350 2020-10-01 20:16:11Z elektron-bbs", "rmsg" : "MS;P0=-503;P1=460;P3=-1024;P6=-9946;D=16101010101310101013101010101010101010131310131313101010101313131015;CP=1;SP=6;O;m2;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "self build arduino sensor with temp output", @@ -34,7 +30,6 @@ "DEF" : "temp_0", "NAME" : "ArduinoSensor_temp_0" }, - "minProtocolVersion" : "1.29", "readings" : { "battery" : "ok", "batteryState" : "ok", @@ -42,15 +37,12 @@ "temperature" : "22.9", "trigger" : "auto" }, - "revision_entry" : "2021-05-26 23:00:22", - "revision_modul" : "14_SD_AS.pm 350 2020-10-01 20:16:11Z elektron-bbs", "rmsg" : "MS;P1=484;P2=-474;P4=-990;P6=-9960;D=16121212121214141214121212121212121414141212141214141212121212121215;CP=1;SP=6;O;m2;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "self build arduino sensor with raw output", @@ -59,7 +51,6 @@ "DEF" : "raw_3", "NAME" : "ArduinoSensor_raw_3" }, - "minProtocolVersion" : "1.29", "readings" : { "battery" : "3", "batteryState" : "ok", @@ -67,15 +58,12 @@ "state" : "S: 270", "trigger" : "auto" }, - "revision_entry" : "2021-05-26 23:01:27", - "revision_modul" : "14_SD_AS.pm 350 2020-10-01 20:16:11Z elektron-bbs", "rmsg" : "MS;P2=-9999;P3=504;P4=-511;P5=-965;D=32323434343435343534353534343434353534343434353535343434343434343435;CP=3;SP=2;m2;", "tests" : [ { - "comment" : "Test #2" + "comment" : "#2" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "self build arduino sensor with humidity output", @@ -84,7 +72,6 @@ "DEF" : "humidity_0", "NAME" : "ArduinoSensor_humidity_0" }, - "minProtocolVersion" : "1.29", "readings" : { "battery" : "ok", "batteryState" : "ok", @@ -92,15 +79,12 @@ "state" : "H: 57", "trigger" : "auto" }, - "revision_entry" : "2021-05-26 23:03:54", - "revision_modul" : "14_SD_AS.pm 350 2020-10-01 20:16:11Z elektron-bbs", "rmsg" : "MS;P0=-9561;P1=458;P2=-527;P4=-982;D=10121212121412121414121212121212121212141414121412141212121212141215;CP=1;SP=0;m2;", "tests" : [ { - "comment" : "Test #3" + "comment" : "#3" } - ], - "user" : "elektron-bbs" + ] } ], "id" : "2", diff --git a/t/FHEM/14_SD_BELL/testData.json b/t/FHEM/14_SD_BELL/testData.json index 4cd5c1e23..e370cd38a 100644 --- a/t/FHEM/14_SD_BELL/testData.json +++ b/t/FHEM/14_SD_BELL/testData.json @@ -1,42 +1,46 @@ [ { - "module" : "SD_BELL", - "name" : "FreeTec PE-6946", "data" : [ { + "comment" : "wireless doorbell (ID 40,62,63 additionally)", + "dispatch_repeats" : "3", "dmsg" : "P32#154FFF", - "minProtocolVersion" : "1.27", + "internals" : { + "DEF" : "32 154FFF", + "NAME" : "SD_BELL_154FFF" + }, + "readings" : { + "state" : "ring" + }, + "rmsg" : "MU;P0=146;P1=245;P3=571;P4=-708;P5=-284;P7=-6689;D=14351435143514143535353535353535353535350704040435043504350435040435353535353535353535353507040404350435043504350404353535353535353535353535070404043504350435043504043535353535353535353535350704040435043504350435040435353535353535353535353507040404350435;CP=3;R=0;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "FreeTec_PE-6946" - } + }, + "comment" : "#0" } - ], - "revision_entry" : "2021-03-24 11:26:13", - "readings" : { - "state" : "ring" - }, - "user" : "SD_Protocol", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "rmsg" : "MU;P0=146;P1=245;P3=571;P4=-708;P5=-284;P7=-6689;D=14351435143514143535353535353535353535350704040435043504350435040435353535353535353535353507040404350435043504350404353535353535353535353535070404043504350435043504043535353535353535353535350704040435043504350435040435353535353535353535353507040404350435;CP=3;R=0;O;", - "internals" : { - "NAME" : "SD_BELL_154FFF", - "DEF" : "32 154FFF" - }, - "comment" : "wireless doorbell (ID 40,62,63 additionally)", - "dispatch_repeats" : "3" + ] } ], - "id" : "32" + "id" : "32", + "module" : "SD_BELL", + "name" : "FreeTec PE-6946" }, { - "name" : "VLOXO", - "module" : "SD_BELL", "data" : [ { + "comment" : "wireless doorbell (ID 40,62,63 additionally)", + "dispatch_repeats" : "3", "dmsg" : "P32#7ED403", + "internals" : { + "DEF" : "32 7ED403", + "NAME" : "SD_BELL_7ED403" + }, + "readings" : { + "state" : "ring" + }, + "rmsg" : "MU;P0=130;P1=-666;P2=533;P3=-273;P5=-6200;CP=0;R=15;D=01232301230123010101010101010123230501232323232323012323012301230101010101010101232305012323232323230123230123012301010101010101012323050123232323232301232301230123010101010101010123230501232323232323012323012301230101010101010101232305012323232323230123;O;", "tests" : [ { "attributes" : { @@ -44,42 +48,26 @@ }, "comment" : "#0" } - ], - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-24 11:28:51", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "user" : "schwatter", - "readings" : { - "state" : "ring" - }, - "dispatch_repeats" : "3", - "internals" : { - "NAME" : "SD_BELL_7ED403", - "DEF" : "32 7ED403" - }, - "rmsg" : "MU;P0=130;P1=-666;P2=533;P3=-273;P5=-6200;CP=0;R=15;D=01232301230123010101010101010123230501232323232323012323012301230101010101010101232305012323232323230123230123012301010101010101012323050123232323232301232301230123010101010101010123230501232323232323012323012301230101010101010101232305012323232323230123;O;", - "comment" : "wireless doorbell (ID 40,62,63 additionally)" + ] } ], - "id" : "32" + "id" : "32", + "module" : "SD_BELL", + "name" : "VLOXO" }, { - "id" : "41", "data" : [ { - "dmsg" : "P41#F813D593", "comment" : "doubleCode 1, autocreate need doubleCode 1&2, bell sends two codes! https://github.com/RFD-FHEM/RFFHEM/issues/70", - "rmsg" : "MS;P0=-526;P1=1450;P2=467;P3=-6949;P4=-1519;D=231010101010242424242424102424101010102410241024101024241024241010;CP=2;SP=3;O;", + "dmsg" : "P41#F813D593", "internals" : { - "NAME" : "SD_BELL_219D85D3_F813D593", - "DEF" : "41 219D85D3_F813D593" + "DEF" : "41 219D85D3_F813D593", + "NAME" : "SD_BELL_219D85D3_F813D593" }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "user" : "beatz0001", "readings" : { "state" : "ring" }, - "revision_entry" : "2021-03-25 13:16:12", + "rmsg" : "MS;P0=-526;P1=1450;P2=467;P3=-6949;P4=-1519;D=231010101010242424242424102424101010102410241024101024241024241010;CP=2;SP=3;O;", "tests" : [ { "attributes" : { @@ -87,23 +75,19 @@ }, "comment" : "#0" } - ], - "minProtocolVersion" : "1.27" + ] }, { - "dmsg" : "P41#219D85D3", - "rmsg" : "MS;P0=468;P1=-1516;P2=1450;P3=-533;P4=-7291;D=040101230101010123230101232323012323010101012301232323012301012323;CP=0;SP=4;O;", "comment" : "doubleCode 2, autocreate need doubleCode 1&2, bell sends two codes! https://github.com/RFD-FHEM/RFFHEM/issues/70", + "dmsg" : "P41#219D85D3", "internals" : { "DEF" : "41 219D85D3_F813D593", "NAME" : "SD_BELL_219D85D3_F813D593" }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", "readings" : { "state" : "ring" }, - "user" : "beatz0001", - "revision_entry" : "2021-03-25 13:17:24", + "rmsg" : "MS;P0=468;P1=-1516;P2=1450;P3=-533;P4=-7291;D=040101230101010123230101232323012323010101012301232323012301012323;CP=0;SP=4;O;", "tests" : [ { "attributes" : { @@ -111,62 +95,54 @@ }, "comment" : "#1" } - ], - "minProtocolVersion" : "1.27" + ] } ], + "id" : "41", "module" : "SD_BELL", "name" : "Doorbell DB200" }, { "data" : [ { - "internals" : { - "NAME" : "SD_BELL_1791D593_BA2885D3", - "DEF" : "41 1791D593_BA2885D3" - }, - "rmsg" : "MS;P0=1390;P1=-600;P2=409;P3=-1600;P4=-7083;D=240123010101230123232301230123232301232323230123010101230123230101;CP=2;SP=4;R=248;O;m0;", "comment" : "doubleCode 1, autocreate need doubleCode 1&2, bell sends two codes! https://github.com/RFD-FHEM/RFFHEM/issues/365", "dmsg" : "P41#BA2885D3", + "internals" : { + "DEF" : "41 1791D593_BA2885D3", + "NAME" : "SD_BELL_1791D593_BA2885D3" + }, "readings" : { "state" : "ring" }, - "user" : "trosenda", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "revision_entry" : "2021-03-25 13:19:16", - "minProtocolVersion" : "1.27", + "rmsg" : "MS;P0=1390;P1=-600;P2=409;P3=-1600;P4=-7083;D=240123010101230123232301230123232301232323230123010101230123230101;CP=2;SP=4;R=248;O;m0;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Elro_DB200_/_KANGTAI_/_unitec" - } + }, + "comment" : "#0" } ] }, { + "comment" : "doubleCode 2, autocreate need doubleCode 1&2, bell sends two codes! https://github.com/RFD-FHEM/RFFHEM/issues/365", + "dmsg" : "P41#1791D593", + "internals" : { + "DEF" : "41 1791D593_BA2885D3", + "NAME" : "SD_BELL_1791D593_BA2885D3" + }, "readings" : { "state" : "ring" }, - "user" : "trosenda", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "internals" : { - "NAME" : "SD_BELL_1791D593_BA2885D3", - "DEF" : "41 1791D593_BA2885D3" - }, "rmsg" : "MS;P1=403;P2=-7102;P3=-1608;P4=1378;P5=-620;D=121313134513454545451313451313134545451345134513454513134513134545;CP=1;SP=2;R=5;O;m0;", - "comment" : "doubleCode 2, autocreate need doubleCode 1&2, bell sends two codes! https://github.com/RFD-FHEM/RFFHEM/issues/365", - "dmsg" : "P41#1791D593", - "minProtocolVersion" : "1.27", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "Elro_DB200_/_KANGTAI_/_unitec" - } + }, + "comment" : "#1" } - ], - "revision_entry" : "2021-03-25 13:20:33" + ] } ], "id" : "41", @@ -174,110 +150,92 @@ "name" : "KANGTAI (Pollin 94-550405)" }, { - "module" : "SD_BELL", - "name" : "unitec 98156+98YK", "data" : [ { - "user" : "HomeAuto_User", + "comment" : "doubleCode 1, autocreate need doubleCode 1&2, bell sends two codes! (ID 1 additionally)", + "dmsg" : "P41#08E8D593", + "internals" : { + "DEF" : "41 754485D3_08E8D593", + "NAME" : "SD_BELL_754485D3_08E8D593" + }, "readings" : { "state" : "ring" }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "comment" : "doubleCode 1, autocreate need doubleCode 1&2, bell sends two codes! (ID 1 additionally)", "rmsg" : "MS;P0=1474;P1=-521;P2=495;P3=-1508;P4=-6996;D=242323232301232323010101230123232301012301230123010123230123230101;CP=2;SP=4;R=51;m=0;", - "internals" : { - "NAME" : "SD_BELL_754485D3_08E8D593", - "DEF" : "41 754485D3_08E8D593" - }, - "dmsg" : "P41#08E8D593", - "minProtocolVersion" : "1.27", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Elro_DB200_/_KANGTAI_/_unitec" - } + }, + "comment" : "#0" } - ], - "revision_entry" : "2021-03-25 13:22:27" + ] }, { - "revision_entry" : "2021-03-25 13:24:32", - "tests" : [ - { - "attributes" : { - "model" : "Elro_DB200_/_KANGTAI_/_unitec" - }, - "comment" : "#1" - } - ], - "minProtocolVersion" : "1.27", - "dmsg" : "P41#754485D3", "comment" : "doubleCode 2, autocreate need doubleCode 1&2, bell sends two codes!", - "rmsg" : "MS;P1=-7005;P2=482;P3=-1511;P4=1487;P5=-510;D=212345454523452345234523232345232345232323234523454545234523234545;CP=2;SP=1;R=47;m=2;", + "dmsg" : "P41#754485D3", "internals" : { "DEF" : "41 754485D3_08E8D593", "NAME" : "SD_BELL_754485D3_08E8D593" }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "user" : "HomeAuto_User", "readings" : { "state" : "ring" - } + }, + "rmsg" : "MS;P1=-7005;P2=482;P3=-1511;P4=1487;P5=-510;D=212345454523452345234523232345232345232323234523454545234523234545;CP=2;SP=1;R=47;m=2;", + "tests" : [ + { + "attributes" : { + "model" : "Elro_DB200_/_KANGTAI_/_unitec" + }, + "comment" : "#1" + } + ] } ], - "id" : "41" + "id" : "41", + "module" : "SD_BELL", + "name" : "unitec 98156+98YK" }, { - "id" : "42", "data" : [ { - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "user" : "trosenda", - "readings" : { - "state" : "ring" - }, + "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/390", "dmsg" : "P42#FE1FF87FE1FF86", - "rmsg" : "MU;P0=-491;P1=471;P2=1445;D=0101010101010101010102020202010101010101010101010202020201010101010101010101020202020101010101010101010102020202010101;CP=1;R=67;", "internals" : { "DEF" : "42 FE1FF87", "NAME" : "SD_BELL_FE1FF87" }, - "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/390", + "readings" : { + "state" : "ring" + }, + "rmsg" : "MU;P0=-491;P1=471;P2=1445;D=0101010101010101010102020202010101010101010101010202020201010101010101010101020202020101010101010101010102020202010101;CP=1;R=67;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Pollin_551227" - } + }, + "comment" : "#0" } - ], - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-25 13:26:13" + ] } ], - "name" : "Pollin_551227", - "module" : "SD_BELL" + "id" : "42", + "module" : "SD_BELL", + "name" : "Pollin_551227" }, { - "module" : "SD_BELL", - "name" : "m-e doorbell", - "id" : "57", "data" : [ { - "dmsg" : "P57#2AA4A7", "comment" : "radio gong transmitter for FG- and Basic-Serie", - "rmsg" : "MC;LL=-653;LH=665;SL=-317;SH=348;D=D55B58;C=330;L=21;", + "dmsg" : "P57#2AA4A7", "internals" : { - "NAME" : "SD_BELL_2AA4A7", - "DEF" : "57 2AA4A7" + "DEF" : "57 2AA4A7", + "NAME" : "SD_BELL_2AA4A7" }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", "readings" : { "state" : "ring" }, - "user" : "rippi46", - "revision_entry" : "2021-04-22 22:13:41", + "rmsg" : "MC;LL=-653;LH=665;SL=-317;SH=348;D=D55B58;C=330;L=21;", "tests" : [ { "attributes" : { @@ -285,74 +243,68 @@ }, "comment" : "#0" } - ], - "minProtocolVersion" : "1.27" + ] } - ] + ], + "id" : "57", + "module" : "SD_BELL", + "name" : "m-e doorbell" }, { - "id" : "79", "data" : [ { - "revision_entry" : "2021-04-21 21:50:03", - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "Heidemann_|_Heidemann_HX_|_VTX-BELL" - } - } - ], - "minProtocolVersion" : "1.27", - "dmsg" : "P79#A0E", + "comment" : "https://forum.fhem.de/index.php/topic,58397.msg828464.html#msg828464", "dispatch_repeats" : "7", - "rmsg" : "MU;P0=-7152;P1=872;P2=-593;P3=323;P4=-296;P5=622;P6=-4650;D=0123452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454;CP=3;R=26;O;", + "dmsg" : "P79#A0E", "internals" : { - "NAME" : "SD_BELL_A0E", - "DEF" : "79 A0E" + "DEF" : "79 A0E", + "NAME" : "SD_BELL_A0E" }, - "comment" : "https://forum.fhem.de/index.php/topic,58397.msg828464.html#msg828464", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", "readings" : { "state" : "ring" }, - "user" : "a13xde" + "rmsg" : "MU;P0=-7152;P1=872;P2=-593;P3=323;P4=-296;P5=622;P6=-4650;D=0123452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454545236345234523232323234545452363452345232323232345454523634523452323232323454;CP=3;R=26;O;", + "tests" : [ + { + "attributes" : { + "model" : "Heidemann_|_Heidemann_HX_|_VTX-BELL" + }, + "comment" : "#0" + } + ] } ], - "name" : "BELL-201-TX", - "module" : "SD_BELL" + "id" : "79", + "module" : "SD_BELL", + "name" : "BELL-201-TX" }, { "data" : [ { + "comment" : "Heidemann Funkklingel Sender, letztes Bit ungerade 611 619 61D", + "dispatch_repeats" : "8", "dmsg" : "P79#611", - "revision_entry" : "2021-04-21 21:48:30", - "minProtocolVersion" : "1.27", - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "Heidemann_|_Heidemann_HX_|_VTX-BELL" - } - } - ], "internals" : { "DEF" : "79 611", "NAME" : "SD_BELL_611" }, - "dispatch_repeats" : "8", - "comment" : "Heidemann Funkklingel Sender, letztes Bit ungerade 611 619 61D", - "rmsg" : "MU;P0=-668;P1=365;P2=-325;P3=692;P4=-5209;CP=1;D=01230101012341012323010101012301010123410123230101010123010101234101232301010101230101012341012323010101012301010123410123230101010123010101234101232301010101230101012341012323010101012301010123410123230101010123010101234101232301010101230101012341012323;O;", "readings" : { "state" : "ring" }, - "user" : "Holger-Arnold", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User" + "rmsg" : "MU;P0=-668;P1=365;P2=-325;P3=692;P4=-5209;CP=1;D=01230101012341012323010101012301010123410123230101010123010101234101232301010101230101012341012323010101012301010123410123230101010123010101234101232301010101230101012341012323010101012301010123410123230101010123010101234101232301010101230101012341012323;O;", + "tests" : [ + { + "attributes" : { + "model" : "Heidemann_|_Heidemann_HX_|_VTX-BELL" + }, + "comment" : "#0" + } + ] }, { - "rmsg" : "MU;P0=-29724;P1=357;P2=-666;P4=-324;P5=698;P6=-5242;CP=1;D=01214545212121214521214521612145452121212145212145216121454521212121452121452161214545212121214521214521612145452121212145212145216121454521212121452121452161214545212121214521214521612145452121212145212145216121454521212121452121452161214545212121214521;O;", - "dispatch_repeats" : "7", "comment" : "Heidemann Funkklingel Sender, letztes Bit gerade 612 616 61A 61C 61E (ID 63 additionally)", + "dispatch_repeats" : "7", + "dmsg" : "P79#612", "internals" : { "DEF" : "79 612", "NAME" : "SD_BELL_612" @@ -360,180 +312,152 @@ "readings" : { "state" : "ring" }, - "user" : "Holger-Arnold", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "revision_entry" : "2021-04-21 21:47:11", - "minProtocolVersion" : "1.27", + "rmsg" : "MU;P0=-29724;P1=357;P2=-666;P4=-324;P5=698;P6=-5242;CP=1;D=01214545212121214521214521612145452121212145212145216121454521212121452121452161214545212121214521214521612145452121212145212145216121454521212121452121452161214545212121214521214521612145452121212145212145216121454521212121452121452161214545212121214521;O;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "Heidemann_|_Heidemann_HX_|_VTX-BELL" - } + }, + "comment" : "#1" } - ], - "dmsg" : "P79#612" + ] }, { + "comment" : "Heidemann Doorbell (ID 63 additionally) https://forum.fhem.de/index.php/topic,58397.msg879878.html#msg879878", "dispatch_repeats" : "6", + "dmsg" : "P79#3FC", "internals" : { - "NAME" : "SD_BELL_3FC", - "DEF" : "79 3FC" + "DEF" : "79 3FC", + "NAME" : "SD_BELL_3FC" }, - "rmsg" : "MU;P0=-421;P1=344;P2=-699;P4=659;P6=-5203;P7=259;D=1612121040404040404040421216121210404040404040404212161212104040404040404042121612121040404040404040421216121210404040404040404272761212104040404040404042121612121040404040404040421216121210404040404040404212167272104040404040404042721612127040404040404;CP=4;R=0;O;", - "comment" : "Heidemann Doorbell (ID 63 additionally) https://forum.fhem.de/index.php/topic,58397.msg879878.html#msg879878", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "user" : "rcmcronny", "readings" : { "state" : "ring" }, - "dmsg" : "P79#3FC", - "revision_entry" : "2021-04-21 21:45:40", + "rmsg" : "MU;P0=-421;P1=344;P2=-699;P4=659;P6=-5203;P7=259;D=1612121040404040404040421216121210404040404040404212161212104040404040404042121612121040404040404040421216121210404040404040404272761212104040404040404042121612121040404040404040421216121210404040404040404212167272104040404040404042721612127040404040404;CP=4;R=0;O;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "Heidemann_|_Heidemann_HX_|_VTX-BELL" - } + }, + "comment" : "#2" } - ], - "minProtocolVersion" : "1.27" + ] } ], "id" : "79", - "name" : "HX 70372", - "module" : "SD_BELL" + "module" : "SD_BELL", + "name" : "HX 70372" }, { - "name" : "Grothe_Mistral_SE_01", - "module" : "SD_BELL", "data" : [ { - "user" : "coolheizer", - "readings" : { - "state" : "ring" - }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "rmsg" : "MC;LL=-409;LH=448;SL=-172;SH=262;D=238126DAA58;C=215;L=41;R=238;", + "comment" : "message length = 10, https://forum.fhem.de/index.php/topic,64251.msg941331.html#msg941331", + "dmsg" : "P96#47024DB54B", "internals" : { "DEF" : "96 024DB5", "NAME" : "SD_BELL_024DB5" }, - "comment" : "message length = 10, https://forum.fhem.de/index.php/topic,64251.msg941331.html#msg941331", - "dmsg" : "P96#47024DB54B", - "minProtocolVersion" : "1.27", + "readings" : { + "state" : "ring" + }, + "rmsg" : "MC;LL=-409;LH=448;SL=-172;SH=262;D=238126DAA58;C=215;L=41;R=238;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Grothe_Mistral_SE_01" - } + }, + "comment" : "#0" } - ], - "revision_entry" : "2021-03-25 15:03:07" + ] }, { - "minProtocolVersion" : "1.27", - "tests" : [ - { - "comment" : "#1", - "attributes" : { - "model" : "Grothe_Mistral_SE_01" - } - } - ], - "revision_entry" : "2021-03-25 15:04:32", - "user" : "coolheizer", - "readings" : { - "state" : "Alarm" - }, - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", + "comment" : "message length = 10, https://forum.fhem.de/index.php/topic,64251.msg942026.html#msg942026", + "dmsg" : "P96#47824DB5CB", "internals" : { "DEF" : "96 024DB5", "NAME" : "SD_BELL_024DB5" }, + "readings" : { + "state" : "Alarm" + }, "rmsg" : "MC;LL=-415;LH=454;SL=-200;SH=226;D=23C126DAE58;C=215;L=41;R=246;", - "comment" : "message length = 10, https://forum.fhem.de/index.php/topic,64251.msg942026.html#msg942026", - "dmsg" : "P96#47824DB5CB" + "tests" : [ + { + "attributes" : { + "model" : "Grothe_Mistral_SE_01" + }, + "comment" : "#1" + } + ] } ], - "id" : "96" + "id" : "96", + "module" : "SD_BELL", + "name" : "Grothe_Mistral_SE_01" }, { - "module" : "SD_BELL", - "name" : "Grothe_Mistral_SE_03", - "id" : "96", "data" : [ { - "revision_entry" : "2021-03-25 15:01:56", - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "Grothe_Mistral_SE_03" - } - } - ], - "minProtocolVersion" : "1.27", + "comment" : "message length = 12, https://forum.fhem.de/index.php/topic,64251.msg940593.html#msg940593", "dmsg" : "P96#47104762003F", - "rmsg" : "MC;LL=-439;LH=419;SL=-221;SH=212;D=238823B1001F8;C=215;L=49;R=69;", "internals" : { - "NAME" : "SD_BELL_104762", - "DEF" : "96 104762" + "DEF" : "96 104762", + "NAME" : "SD_BELL_104762" }, - "comment" : "message length = 12, https://forum.fhem.de/index.php/topic,64251.msg940593.html#msg940593", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", "readings" : { - "state" : "ring", - "batteryState" : "ok" + "batteryState" : "ok", + "state" : "ring" }, - "user" : "coolheizer" - }, - { + "rmsg" : "MC;LL=-439;LH=419;SL=-221;SH=212;D=238823B1001F8;C=215;L=49;R=69;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "Grothe_Mistral_SE_03" - } + }, + "comment" : "#0" } - ], - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-25 15:00:34", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "readings" : { - "batteryState" : "ok", - "state" : "Alarm" - }, - "user" : "coolheizer", + ] + }, + { + "comment" : "message length = 12, https://forum.fhem.de/index.php/topic,64251.msg941904.html#msg941904", "dmsg" : "P96#47904762803F", - "rmsg" : "MC;LL=-430;LH=418;SL=-216;SH=226;D=23C823B1401F8;C=214;L=49;R=53;", "internals" : { "DEF" : "96 104762", "NAME" : "SD_BELL_104762" }, - "comment" : "message length = 12, https://forum.fhem.de/index.php/topic,64251.msg941904.html#msg941904" + "readings" : { + "batteryState" : "ok", + "state" : "Alarm" + }, + "rmsg" : "MC;LL=-430;LH=418;SL=-216;SH=226;D=23C823B1401F8;C=214;L=49;R=53;", + "tests" : [ + { + "attributes" : { + "model" : "Grothe_Mistral_SE_03" + }, + "comment" : "#1" + } + ] } - ] + ], + "id" : "96", + "module" : "SD_BELL", + "name" : "Grothe_Mistral_SE_03" }, { "data" : [ { + "comment" : "Radio door chime", + "dispatch_repeats" : "5", + "dmsg" : "P98#6A2C", "internals" : { "DEF" : "98 6A2C", "NAME" : "SD_BELL_6A2C" }, - "dispatch_repeats" : "5", - "comment" : "Radio door chime", - "rmsg" : "MU;P0=1488;P1=-585;P2=520;P3=-1509;P4=1949;P5=-5468;CP=2;R=38;D=01232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501;O;", "readings" : { "state" : "ring" }, - "user" : "nagelreo", - "revision_modul" : "14_SD_BELL.pm 0 2021-03-22 22:30:35Z HomeAuto_User", - "dmsg" : "P98#6A2C", - "revision_entry" : "2021-03-25 14:59:13", - "minProtocolVersion" : "1.27", + "rmsg" : "MU;P0=1488;P1=-585;P2=520;P3=-1509;P4=1949;P5=-5468;CP=2;R=38;D=01232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501232301230123010101230123230101454501;O;", "tests" : [ { "attributes" : { @@ -545,15 +469,22 @@ } ], "id" : "98", - "name" : "GEA-028DB", - "module" : "SD_BELL" + "module" : "SD_BELL", + "name" : "GEA-028DB" }, { - "module" : "SD_BELL", - "name" : "AVANTEK DB-LE", "data" : [ { - "revision_entry" : "2021-08-09 21:27:21", + "comment" : "wireless doorbell (bell button without battery)", + "dmsg" : "P112#08C114844FDA5CA2", + "internals" : { + "DEF" : "112 08C114844", + "NAME" : "SD_BELL_08C114844" + }, + "readings" : { + "state" : "ring" + }, + "rmsg" : "MN;D=08C114844FDA5CA2;R=48;", "tests" : [ { "attributes" : { @@ -561,22 +492,11 @@ }, "comment" : "#0" } - ], - "minProtocolVersion" : "1.31", - "dmsg" : "P112#08C114844FDA5CA2", - "internals" : { - "NAME" : "SD_BELL_08C114844", - "DEF" : "112 08C114844" - }, - "rmsg" : "MN;D=08C114844FDA5CA2;R=48;", - "comment" : "wireless doorbell (bell button without battery)", - "revision_modul" : "14_SD_BELL.pm 0 2021-07-12 22:30:35Z HomeAuto_User", - "user" : "HomeAuto_User", - "readings" : { - "state" : "ring" - } + ] } ], - "id" : "112" + "id" : "112", + "module" : "SD_BELL", + "name" : "AVANTEK DB-LE" } ] diff --git a/t/FHEM/14_SD_UT/testData.json b/t/FHEM/14_SD_UT/testData.json index 529bd71db..41e0feb92 100644 --- a/t/FHEM/14_SD_UT/testData.json +++ b/t/FHEM/14_SD_UT/testData.json @@ -7,14 +7,10 @@ "internals" : { "NAME" : "" }, - "minProtocolVersion" : "1.27", "readings" : {}, - "revision_entry" : "2022-01-18 22:33:16", - "revision_modul" : "14_SD_UT.pm 0 2022-01-17 20:40:59Z HomeAutoUser $", "tests" : [ {} - ], - "user" : "unknown" + ] } ], "id" : "9", @@ -22,45 +18,42 @@ "name" : "SD_UT" }, { - "module" : "SD_UT", "data" : [ { - "rmsg" : "MS;P0=988;P1=-384;P2=346;P3=-1026;P4=-4923;D=240123012301230123012323232323232301232323;CP=2;SP=4;R=0;O;m=1;", - "user" : "privat58", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "Chilitec_22640" - } - } - ], + "comment" : "Remote control X-MAS LED, Button power_on", + "dmsg" : "P14#AA808", "internals" : { - "NAME" : "Chilitec_22640_AA80", - "DEF" : "Chilitec_22640 AA80" + "DEF" : "Chilitec_22640 AA80", + "NAME" : "Chilitec_22640_AA80" }, - "comment" : "Remote control X-MAS LED, Button power_on", "readings" : { - "deviceCode" : "1010101010000000", "LastAction" : "receive", + "deviceCode" : "1010101010000000", "state" : "power_on" }, - "revision_entry" : "2021-03-24 10:28:42", - "dmsg" : "P14#AA808" + "rmsg" : "MS;P0=988;P1=-384;P2=346;P3=-1026;P4=-4923;D=240123012301230123012323232323232301232323;CP=2;SP=4;R=0;O;m=1;", + "tests" : [ + { + "attributes" : { + "model" : "Chilitec_22640" + }, + "comment" : "#0" + } + ] }, { - "readings" : { - "LastAction" : "receive", - "state" : "brightness_plus", - "deviceCode" : "1010101010000000" - }, + "comment" : "Remote control X-MAS LED, Button brightness_plus", + "dmsg" : "P14#AA80C", "internals" : { "DEF" : "Chilitec_22640 AA80", "NAME" : "Chilitec_22640_AA80" }, - "comment" : "Remote control X-MAS LED, Button brightness_plus", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "1010101010000000", + "state" : "brightness_plus" + }, + "rmsg" : "MS;P0=-398;P1=974;P3=338;P4=-1034;P6=-4939;D=361034103410341034103434343434343410103434;CP=3;SP=6;R=0;", "tests" : [ { "attributes" : { @@ -68,20 +61,21 @@ }, "comment" : "#1" } - ], - "revision_entry" : "2021-03-24 10:30:58", - "dmsg" : "P14#AA80C", - "rmsg" : "MS;P0=-398;P1=974;P3=338;P4=-1034;P6=-4939;D=361034103410341034103434343434343410103434;CP=3;SP=6;R=0;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "privat58" + ] }, { + "comment" : "Remote control X-MAS LED, Button flickering_slowly", + "dmsg" : "P14#AA80A", "internals" : { "DEF" : "Chilitec_22640 AA80", "NAME" : "Chilitec_22640_AA80" }, - "comment" : "Remote control X-MAS LED, Button flickering_slowly", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "1010101010000000", + "state" : "flickering_slowly" + }, + "rmsg" : "MS;P1=976;P2=-397;P3=341;P4=-1029;P5=-4940;D=351234123412341234123434343434343412341234;CP=3;SP=5;R=0;", "tests" : [ { "attributes" : { @@ -89,35 +83,28 @@ }, "comment" : "#2" } - ], - "readings" : { - "deviceCode" : "1010101010000000", - "state" : "flickering_slowly", - "LastAction" : "receive" - }, - "revision_entry" : "2021-03-24 10:33:19", - "dmsg" : "P14#AA80A", - "rmsg" : "MS;P1=976;P2=-397;P3=341;P4=-1029;P5=-4940;D=351234123412341234123434343434343412341234;CP=3;SP=5;R=0;", - "user" : "privat58", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User" + ] } ], "id" : "14", + "module" : "SD_UT", "name" : "Chilitec_22640" }, { - "module" : "SD_UT", - "id" : "20", "data" : [ { + "comment" : "Remote control with 4 buttons for diesel heating, Button on", "dmsg" : "P20#17E911B0", - "revision_entry" : "2021-03-24 10:54:11", + "internals" : { + "DEF" : "RCnoName20 17E9", + "NAME" : "RCnoName20_17E9" + }, "readings" : { + "LastAction" : "receive", "deviceCode" : "17E9", - "state" : "on", - "LastAction" : "receive" + "state" : "on" }, + "rmsg" : "MS;P0=-740;P2=686;P3=-283;P5=229;P6=-7889;D=5650505023502323232323235023505023505050235050502323502323505050;CP=5;SP=6;R=67;O;m2;", "tests" : [ { "attributes" : { @@ -125,24 +112,21 @@ }, "comment" : "#0" } - ], - "comment" : "Remote control with 4 buttons for diesel heating, Button on", - "internals" : { - "NAME" : "RCnoName20_17E9", - "DEF" : "RCnoName20 17E9" - }, - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "elektron-bbs", - "rmsg" : "MS;P0=-740;P2=686;P3=-283;P5=229;P6=-7889;D=5650505023502323232323235023505023505050235050502323502323505050;CP=5;SP=6;R=67;O;m2;" + ] }, { - "user" : "elektron-bbs", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P1=-754;P2=213;P4=681;P5=-283;P6=-7869;D=2621212145214545454545452145212145212121212145214521212121452121;CP=2;SP=6;R=69;O;m2;", - "revision_entry" : "2021-03-24 10:55:29", + "comment" : "Remote control with 4 buttons for diesel heating, Button off", "dmsg" : "P20#17E90508", + "internals" : { + "DEF" : "RCnoName20 17E9", + "NAME" : "RCnoName20_17E9" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "17E9", + "state" : "off" + }, + "rmsg" : "MS;P1=-754;P2=213;P4=681;P5=-283;P6=-7869;D=2621212145214545454545452145212145212121212145214521212121452121;CP=2;SP=6;R=69;O;m2;", "tests" : [ { "attributes" : { @@ -150,61 +134,50 @@ }, "comment" : "#1" } - ], - "comment" : "Remote control with 4 buttons for diesel heating, Button off", - "internals" : { - "DEF" : "RCnoName20 17E9", - "NAME" : "RCnoName20_17E9" - }, - "readings" : { - "LastAction" : "receive", - "state" : "off", - "deviceCode" : "17E9" - } + ] } ], + "id" : "20", + "module" : "SD_UT", "name" : "RCnoName20" }, { - "name" : "RCnoName20_10", - "module" : "SD_UT", "data" : [ { - "revision_modul" : "14_SD_UT.pm 0 2022-09-06 20:56:47Z elektron-bbs", - "minProtocolVersion" : "1.48", - "user" : "steffen83", - "rmsg" : "MU;P0=-8774;P1=282;P2=-775;P3=815;P4=-253;P5=-32001;D=10121234343434341212121212121212121212123434343412121234343412343415;CP=1;", - "revision_entry" : "2022-09-26 13:45:59", + "comment" : "Remote control with 10 buttons for fan", "dmsg" : "P20#3E001E3B", + "internals" : { + "DEF" : "RCnoName20_10 3E00", + "NAME" : "RCnoName20_10_3E00" + }, "readings" : { "deviceCode" : "3E00", - "state" : "light_on", - "rollingCode" : "3" + "rollingCode" : "3", + "state" : "light_on" }, + "rmsg" : "MU;P0=-8774;P1=282;P2=-775;P3=815;P4=-253;P5=-32001;D=10121234343434341212121212121212121212123434343412121234343412343415;CP=1;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "RCnoName20_10" - } + }, + "comment" : "#0" } - ], - "comment" : "Remote control with 10 buttons for fan", - "internals" : { - "NAME" : "RCnoName20_10_3E00", - "DEF" : "RCnoName20_10 3E00" - } + ] }, { - "rmsg" : "MU;P0=-238;P1=831;P3=300;P4=-762;P5=-363;P6=192;P7=-8668;D=01010101010343434343434343434343434103415156464156464641564646734341010101010343434343434343434343434103410103434103434341034343734341010101010343434343434343434343434103410103434103434341034343734341010101010343434343434343434343434103410103434103434341;CP=3;O;", - "revision_modul" : "14_SD_UT.pm 0 2022-09-06 20:56:47Z elektron-bbs", - "minProtocolVersion" : "1.48", - "user" : "steffen83", + "comment" : "Remote control with 10 buttons for fan", + "dmsg" : "P20#3E001644", + "internals" : { + "DEF" : "RCnoName20_10 3E00", + "NAME" : "RCnoName20_10_3E00" + }, "readings" : { - "rollingCode" : "4", "deviceCode" : "3E00", + "rollingCode" : "4", "state" : "light_off" }, + "rmsg" : "MU;P0=-238;P1=831;P3=300;P4=-762;P5=-363;P6=192;P7=-8668;D=01010101010343434343434343434343434103415156464156464641564646734341010101010343434343434343434343434103410103434103434341034343734341010101010343434343434343434343434103410103434103434341034343734341010101010343434343434343434343434103410103434103434341;CP=3;O;", "tests" : [ { "attributes" : { @@ -212,28 +185,28 @@ }, "comment" : "#1" } - ], - "internals" : { - "DEF" : "RCnoName20_10 3E00", - "NAME" : "RCnoName20_10_3E00" - }, - "comment" : "Remote control with 10 buttons for fan", - "revision_entry" : "2022-09-26 13:48:11", - "dmsg" : "P20#3E001644" + ] } ], - "id" : "20.1" + "id" : "20.1", + "module" : "SD_UT", + "name" : "RCnoName20_10" }, { - "name" : "Visivo", - "module" : "SD_UT", - "id" : "24", "data" : [ { + "comment" : "Remote control for motorized screen, Button up", + "dmsg" : "P24#9F7DF825029C10", + "internals" : { + "DEF" : "Visivo 7DF825", + "NAME" : "Visivo_7DF825" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "7DF825", + "state" : "up" + }, "rmsg" : "MU;P0=505;P1=140;P2=-771;P3=-225;P5=4558;D=012031212030303030312030303030312030303030303121212121203121203120312121212121203120312120303031212121212031212121252031212030303030312030303030312030303030303121212121203121203120312121212121203120312120303031212121212031212121252031212030;CP=1;O;", - "user" : "MikeRoxx", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", "tests" : [ { "attributes" : { @@ -241,56 +214,51 @@ }, "comment" : "#0" } - ], - "comment" : "Remote control for motorized screen, Button up", + ] + }, + { + "comment" : "Remote control for motorized screen, Button stop", + "dmsg" : "P24#9F7DF82508A210", "internals" : { "DEF" : "Visivo 7DF825", "NAME" : "Visivo_7DF825" }, "readings" : { + "LastAction" : "receive", "deviceCode" : "7DF825", - "state" : "up", - "LastAction" : "receive" - }, - "revision_entry" : "2021-03-24 10:57:16", - "dmsg" : "P24#9F7DF825029C10" - }, - { - "revision_entry" : "2021-03-24 10:58:43", - "dmsg" : "P24#9F7DF82508A210", - "internals" : { - "NAME" : "Visivo_7DF825", - "DEF" : "Visivo 7DF825" + "state" : "stop" }, - "comment" : "Remote control for motorized screen, Button stop", + "rmsg" : "MU;P0=-764;P1=517;P2=-216;P3=148;P5=4550;D=012303012121212123012121212123012121212121230303030301230301230123030303012303030123012303030123030303012303030305012303012121212123012121212123012121212121230303030301230301230123030303012303030123012303030123030303012303030305012303012120;CP=3;O;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "Visivo" - } + }, + "comment" : "#1" } - ], - "readings" : { - "deviceCode" : "7DF825", - "LastAction" : "receive", - "state" : "stop" - }, - "user" : "MikeRoxx", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-764;P1=517;P2=-216;P3=148;P5=4550;D=012303012121212123012121212123012121212121230303030301230301230123030303012303030123012303030123030303012303030305012303012121212123012121212123012121212121230303030301230301230123030303012303030123012303030123030303012303030305012303012120;CP=3;O;" + ] } - ] + ], + "id" : "24", + "module" : "SD_UT", + "name" : "Visivo" }, { - "name" : "xavax", - "id" : "26", "data" : [ { - "revision_entry" : "2021-03-24 11:00:44", - "dmsg" : "P26#DAAB255487", + "comment" : "model 00111939 - Funksteckdosen Set", "dispatch_repeats" : "1", + "dmsg" : "P26#DAAB255487", + "internals" : { + "DEF" : "xavax DAAB", + "NAME" : "xavax_DAAB" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "DAAB", + "state" : "Ch1_on" + }, + "rmsg" : "MU;P0=412;P1=-534;P2=-1356;P3=-20601;P4=3360;P5=-3470;D=01020102010201020201010201010201020102010201020101020101010102020203010145020201020201020102010201020102020101020101020102010201020102010102010101010202020301014502020102020102010201020102010202010102010102010201020102010201010201010101020202030101450202;CP=0;R=0;O;", "tests" : [ { "attributes" : { @@ -298,28 +266,21 @@ }, "comment" : "#0" } - ], + ] + }, + { "comment" : "model 00111939 - Funksteckdosen Set", + "dmsg" : "P26#DAAB255478", "internals" : { "DEF" : "xavax DAAB", "NAME" : "xavax_DAAB" }, "readings" : { "LastAction" : "receive", - "state" : "Ch1_on", - "deviceCode" : "DAAB" - }, - "user" : "elektron-bbs", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MU;P0=412;P1=-534;P2=-1356;P3=-20601;P4=3360;P5=-3470;D=01020102010201020201010201010201020102010201020101020101010102020203010145020201020201020102010201020102020101020101020102010201020102010102010101010202020301014502020102020102010201020102010202010102010102010201020102010201010201010101020202030101450202;CP=0;R=0;O;" - }, - { - "internals" : { - "NAME" : "xavax_DAAB", - "DEF" : "xavax DAAB" + "deviceCode" : "DAAB", + "state" : "Ch1_off" }, - "comment" : "model 00111939 - Funksteckdosen Set", + "rmsg" : "MU;P0=-3504;P1=416;P2=-1356;P3=-535;P4=-20816;P5=3324;D=01212131212131213121312131213121213131213131213121312131213121313131212121213131314131350121213121213121312131213121312121313121313121312131213121312131313121212121313131413135012121312121312131213121312131212131312131312131213121312131213131312121212131;CP=1;R=50;O;", "tests" : [ { "attributes" : { @@ -327,50 +288,37 @@ }, "comment" : "#1" } - ], - "readings" : { - "deviceCode" : "DAAB", - "state" : "Ch1_off", - "LastAction" : "receive" - }, - "revision_entry" : "2021-03-24 11:02:21", - "dmsg" : "P26#DAAB255478", - "rmsg" : "MU;P0=-3504;P1=416;P2=-1356;P3=-535;P4=-20816;P5=3324;D=01212131212131213121312131213121213131213131213121312131213121313131212121213131314131350121213121213121312131213121312121313121313121312131213121312131313121212121313131413135012121312121312131213121312131212131312131312131213121312131213131312121212131;CP=1;R=50;O;", - "user" : "elektron-bbs", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User" + ] } ], - "module" : "SD_UT" + "id" : "26", + "module" : "SD_UT", + "name" : "xavax" }, { "data" : [ { - "revision_entry" : "2021-03-24 11:21:15", - "dmsg" : "P29#FBE", + "comment" : "remote control for example Westinghouse airfan (ID 30 additionally)", "dispatch_repeats" : "3", - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "Buttons_five" - } - } - ], + "dmsg" : "P29#FBE", "internals" : { "DEF" : "Buttons_five E", "NAME" : "Buttons_five_E" }, - "comment" : "remote control for example Westinghouse airfan (ID 30 additionally)", "readings" : { - "deviceCode" : "1110 (off|off|off|on)", "LastAction" : "receive", + "deviceCode" : "1110 (off|off|off|on)", "state" : "fan_off" }, - "user" : "gadget", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MU;P0=250;P1=-492;P2=166;P3=-255;P4=491;P5=-8588;D=052121212121234121212121234521212121212341212121212345212121212123412121212123452121212121234121212121234;CP=0;" + "rmsg" : "MU;P0=250;P1=-492;P2=166;P3=-255;P4=491;P5=-8588;D=052121212121234121212121234521212121212341212121212345212121212123412121212123452121212121234121212121234;CP=0;", + "tests" : [ + { + "attributes" : { + "model" : "Buttons_five" + }, + "comment" : "#0" + } + ] } ], "id" : "29", @@ -380,30 +328,26 @@ { "data" : [ { - "revision_entry" : "2022-08-30 21:14:56", + "comment" : "remote with 6 buttons, with light dimmer, for example Westinghouse airfan", "dmsg" : "P29#DFE", + "internals" : { + "DEF" : "Buttons_six E", + "NAME" : "Buttons_six_E" + }, "readings" : { "LastAction" : "receive", - "state" : "light_dimm", - "deviceCode" : "1110 (off|off|off|on)" - }, - "internals" : { - "NAME" : "Buttons_six_E", - "DEF" : "Buttons_six E" + "deviceCode" : "1110 (off|off|off|on)", + "state" : "light_dimm" }, - "comment" : "remote with 6 buttons, with light dimmer, for example Westinghouse airfan", + "rmsg" : "MU;P0=24164;P1=-495;P2=191;P3=-271;P4=415;P5=-8052;D=01212341212121212121212345212123412121212121212123452121234121212121212121234521212341212121212121212345212123412121212121212123452121234121212121212121234521212341212121212121212345212123412121212121212123452121234121212121212121234521212341212121212121;CP=2;R=52;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Buttons_six" - } + }, + "comment" : "#0" } - ], - "minProtocolVersion" : "1.46", - "revision_modul" : "14_SD_UT.pm 0 2022-06-14 07:33:24Z HomeAutoUser", - "user" : "monosurr0und", - "rmsg" : "MU;P0=24164;P1=-495;P2=191;P3=-271;P4=415;P5=-8052;D=01212341212121212121212345212123412121212121212123452121234121212121212121234521212341212121212121212345212123412121212121212123452121234121212121212121234521212341212121212121212345212123412121212121212123452121234121212121212121234521212341212121212121;CP=2;R=52;O;" + ] } ], "id" : "29", @@ -413,15 +357,20 @@ { "data" : [ { - "rmsg" : "MU;P0=309;P1=636;P2=-690;P3=-363;P4=-10027;D=012031203120402031312031203120312031204020313120312031203120312040203131203120312031203120402031312031203120312031204020313120312031203120312040203131203120312031203120402031312031203120312031204020313120312031203120312040203131203120312030;CP=0;O;", - "user" : "Dr.E.Witz", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", "comment" : "remote door reed switch, model is under development (ID 63,83 additionally)", + "dispatch_repeats" : "7", + "dmsg" : "P30#955", "internals" : { - "NAME" : "Unitec_47031_95", - "DEF" : "Unitec_47031 95" + "DEF" : "Unitec_47031 95", + "NAME" : "Unitec_47031_95" + }, + "readings" : { + "System-Housecode" : "10010101 (on|off|off|on|off|on|off|on)", + "Usersystem" : "Unitec 47121", + "Zone" : "010 (off|on|off) - Zone 3", + "state" : "1" }, + "rmsg" : "MU;P0=309;P1=636;P2=-690;P3=-363;P4=-10027;D=012031203120402031312031203120312031204020313120312031203120312040203131203120312031203120402031312031203120312031204020313120312031203120312040203131203120312031203120402031312031203120312031204020313120312031203120312040203131203120312030;CP=0;O;", "tests" : [ { "attributes" : { @@ -429,16 +378,7 @@ }, "comment" : "#0" } - ], - "readings" : { - "Usersystem" : "Unitec 47121", - "System-Housecode" : "10010101 (on|off|off|on|off|on|off|on)", - "state" : "1", - "Zone" : "010 (off|on|off) - Zone 3" - }, - "revision_entry" : "2021-03-24 11:23:54", - "dmsg" : "P30#955", - "dispatch_repeats" : "7" + ] } ], "id" : "30", @@ -446,44 +386,42 @@ "name" : "Unitec_47031" }, { - "module" : "SD_UT", "data" : [ { - "revision_entry" : "2021-03-24 13:31:15", + "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/44", "dmsg" : "P34#891EE", + "internals" : { + "DEF" : "QUIGG_DMV 891", + "NAME" : "QUIGG_DMV_891" + }, "readings" : { - "deviceCode" : "100010010001", "LastAction" : "receive", + "deviceCode" : "100010010001", "state" : "Ch1_on" }, + "rmsg" : "MU;P0=-9584;P1=592;P2=-665;P3=1223;P4=-1311;D=01234141412341412341414123232323412323234;CP=1;R=0;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "QUIGG_DMV" - } + }, + "comment" : "#0" } - ], - "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/44", - "internals" : { - "NAME" : "QUIGG_DMV_891", - "DEF" : "QUIGG_DMV 891" - }, - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "kaihs", - "rmsg" : "MU;P0=-9584;P1=592;P2=-665;P3=1223;P4=-1311;D=01234141412341412341414123232323412323234;CP=1;R=0;" + ] }, { - "rmsg" : "MU;P0=-12724;P1=597;P2=-667;P3=1253;P4=-1331;D=01234141412341412341414123232323232323232;CP=1;", - "user" : "kaihs", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", + "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/44", + "dmsg" : "P34#891FF", "internals" : { - "NAME" : "QUIGG_DMV_891", - "DEF" : "QUIGG_DMV 891" + "DEF" : "QUIGG_DMV 891", + "NAME" : "QUIGG_DMV_891" }, - "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/44", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "100010010001", + "state" : "Ch1_off" + }, + "rmsg" : "MU;P0=-12724;P1=597;P2=-667;P3=1253;P4=-1331;D=01234141412341412341414123232323232323232;CP=1;", "tests" : [ { "attributes" : { @@ -491,34 +429,28 @@ }, "comment" : "#1" } - ], - "readings" : { - "state" : "Ch1_off", - "LastAction" : "receive", - "deviceCode" : "100010010001" - }, - "dmsg" : "P34#891FF", - "revision_entry" : "2021-03-24 13:33:44" + ] } ], "id" : "34", + "module" : "SD_UT", "name" : "Pollin ISOTRONIC" }, { - "name" : "QUIGG_GT-7000", - "id" : "34", "data" : [ { - "rmsg" : "MU;P0=-9812;P1=589;P2=-671;P3=1261;P4=-1320;D=012341412323232341412341412323232323232323;CP=3;R=19;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", + "dmsg" : "P34#9E4FF", + "internals" : { + "DEF" : "QUIGG_DMV 9E4", + "NAME" : "QUIGG_DMV_9E4" + }, "model" : "QUIGG_DMV", - "user" : "SD_Protocol", "readings" : { - "state" : "Ch1_off", "LastAction" : "receive", - "deviceCode" : "100111100100" + "deviceCode" : "100111100100", + "state" : "Ch1_off" }, + "rmsg" : "MU;P0=-9812;P1=589;P2=-671;P3=1261;P4=-1320;D=012341412323232341412341412323232323232323;CP=3;R=19;", "tests" : [ { "attributes" : { @@ -526,72 +458,59 @@ }, "comment" : "#0" } - ], - "internals" : { - "DEF" : "QUIGG_DMV 9E4", - "NAME" : "QUIGG_DMV_9E4" - }, - "dmsg" : "P34#9E4FF", - "revision_entry" : "2021-03-24 13:35:48" + ] } ], - "module" : "SD_UT" + "id" : "34", + "module" : "SD_UT", + "name" : "QUIGG_GT-7000" }, { - "name" : "TR_502MSV", - "module" : "SD_UT", "data" : [ { - "rmsg" : "MU;P0=4192;P1=-663;P2=1325;P3=-1320;P4=668;P5=-9905;D=01212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541;CP=2;R=71;O;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "codeartisan-de", - "readings" : { - "deviceCode" : "111111111111", - "state" : "Ch1_on", - "LastAction" : "receive" - }, "comment" : "https://github.com/RFD-FHEM/RFFHEM/issues/716", + "dispatch_repeats" : "4", + "dmsg" : "P34#FFFEE", "internals" : { - "NAME" : "TR_502MSV_FFF", - "DEF" : "TR_502MSV FFF" + "DEF" : "TR_502MSV FFF", + "NAME" : "TR_502MSV_FFF" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "111111111111", + "state" : "Ch1_on" + }, + "rmsg" : "MU;P0=4192;P1=-663;P2=1325;P3=-1320;P4=668;P5=-9905;D=01212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541212121212121212121212121212123412121234541;CP=2;R=71;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "TR_502MSV" - } + }, + "comment" : "#0" } - ], - "revision_entry" : "2021-03-24 13:38:03", - "dmsg" : "P34#FFFEE", - "dispatch_repeats" : "4" + ] } ], - "id" : "34" + "id" : "34", + "module" : "SD_UT", + "name" : "TR_502MSV" }, { - "module" : "SD_UT", "data" : [ { - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "drhirn", - "rmsg" : "MU;P0=-2009;P1=2076;P2=-259;P3=329;P4=-15751;P5=1216;D=012121212303012303034121212301212303012121212303012303034121212301212303012121212303012303034121212305;CP=3;R=37;", + "comment" : "Geiger Rolladen", "dispatch_repeats" : "1", - "revision_entry" : "2021-03-25 13:35:12", "dmsg" : "P46#ECF20", + "internals" : { + "DEF" : "Tedsen_SKX2xx 1F10110", + "NAME" : "Tedsen_SKX2xx_1F10110" + }, "readings" : { - "state" : "Button_1", "LastAction" : "receive", + "state" : "Button_1", "tristateCode" : "1F10110F0" }, - "internals" : { - "NAME" : "Tedsen_SKX2xx_1F10110", - "DEF" : "Tedsen_SKX2xx 1F10110" - }, - "comment" : "Geiger Rolladen", + "rmsg" : "MU;P0=-2009;P1=2076;P2=-259;P3=329;P4=-15751;P5=1216;D=012121212303012303034121212301212303012121212303012303034121212301212303012121212303012303034121212305;CP=3;R=37;", "tests" : [ { "attributes" : { @@ -602,51 +521,48 @@ ] }, { - "user" : "self_build", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-32001;P1=2072;P2=-260;P3=326;P4=-2015;P5=-15769;D=01212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151;CP=3;R=37;O;", - "dmsg" : "P46#ECA2C", - "revision_entry" : "2021-03-25 13:37:16", - "dispatch_repeats" : "5", "comment" : "reconstructed last bit 1", + "dispatch_repeats" : "5", + "dmsg" : "P46#ECA2C", "internals" : { - "NAME" : "Tedsen_SKX6xx_1F10FF0", - "DEF" : "Tedsen_SKX6xx 1F10FF0" + "DEF" : "Tedsen_SKX6xx 1F10FF0", + "NAME" : "Tedsen_SKX6xx_1F10FF0" + }, + "readings" : { + "LastAction" : "receive", + "state" : "Button_6", + "tristateCode" : "1F10FF0F1" }, + "rmsg" : "MU;P0=-32001;P1=2072;P2=-260;P3=326;P4=-2015;P5=-15769;D=01212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151212123412123434123412343434123412151;CP=3;R=37;O;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "Tedsen_SKX6xx" - } + }, + "comment" : "#1" } - ], - "readings" : { - "LastAction" : "receive", - "state" : "Button_6", - "tristateCode" : "1F10FF0F1" - } + ] } ], "id" : "46", + "module" : "SD_UT", "name" : "Tedsen_SKXxxx" }, { - "module" : "SD_UT", "data" : [ { - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "Horst12345", - "rmsg" : "MU;P0=5036;P1=-624;P2=591;P3=-227;P4=187;P5=-5048;D=0123412341414123234141414141414141412341232341414141232323234123234141414141414123414141414141414141234141414123234141412341232323250123412341414123234141414141414141412341232341414141232323234123234141414141414123414141414141414141234141414123234141412;CP=4;O;", - "revision_entry" : "2021-04-22 22:10:53", + "comment" : "Celexon Motorleinwand", "dmsg" : "P56#A300587B010043178", + "internals" : { + "DEF" : "AC114_01B 00587B", + "NAME" : "AC114_01B_00587B" + }, "readings" : { + "LastAction" : "receive", "deviceCode" : "00587B", - "state" : "down", - "LastAction" : "receive" + "state" : "down" }, + "rmsg" : "MU;P0=5036;P1=-624;P2=591;P3=-227;P4=187;P5=-5048;D=0123412341414123234141414141414141412341232341414141232323234123234141414141414123414141414141414141234141414123234141412341232323250123412341414123234141414141414141412341232341414141232323234123234141414141414123414141414141414141234141414123234141412;CP=4;O;", "tests" : [ { "attributes" : { @@ -654,33 +570,28 @@ }, "comment" : "#0" } - ], - "comment" : "Celexon Motorleinwand", - "internals" : { - "DEF" : "AC114_01B 00587B", - "NAME" : "AC114_01B_00587B" - } + ] } ], "id" : "56", + "module" : "SD_UT", "name" : "AC114_01B" }, { - "module" : "SD_UT", - "id" : "56", "data" : [ { - "user" : "TheChatty", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-16412;P1=5195;P2=-598;P3=585;P4=-208;P5=192;D=01234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252525252345234345234343434343434341234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252525252345234345234343;CP=5;R=105;O;", - "revision_entry" : "2021-04-22 22:11:39", - "dmsg" : "P56#A347969601000B7F8", "comment" : "Remote control AC114-01B", + "dmsg" : "P56#A347969601000B7F8", "internals" : { - "NAME" : "AC114_01B_479696", - "DEF" : "AC114_01B 479696" + "DEF" : "AC114_01B 479696", + "NAME" : "AC114_01B_479696" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "479696", + "state" : "up" }, + "rmsg" : "MU;P0=-16412;P1=5195;P2=-598;P3=585;P4=-208;P5=192;D=01234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252525252345234345234343434343434341234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252525252345234345234343;CP=5;R=105;O;", "tests" : [ { "attributes" : { @@ -688,53 +599,50 @@ }, "comment" : "#0" } - ], - "readings" : { - "deviceCode" : "479696", - "LastAction" : "receive", - "state" : "up" - } + ] }, { - "revision_entry" : "2021-04-22 22:12:06", - "dmsg" : "P56#A3479696010023978", - "tests" : [ - { - "comment" : "#1", - "attributes" : { - "model" : "AC114_01B" - } - } - ], "comment" : "remote control AC114-01B", + "dmsg" : "P56#A3479696010023978", "internals" : { - "NAME" : "AC114_01B_479696", - "DEF" : "AC114_01B 479696" + "DEF" : "AC114_01B 479696", + "NAME" : "AC114_01B_479696" }, "readings" : { - "deviceCode" : "479696", "LastAction" : "receive", + "deviceCode" : "479696", "state" : "stop" }, - "user" : "TheChatty", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MU;P0=-2341;P1=5206;P2=-571;P3=591;P4=-211;P5=207;D=01234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252523452525234343452523452343434341234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252523452525234343452523;CP=5;R=107;O;" + "rmsg" : "MU;P0=-2341;P1=5206;P2=-571;P3=591;P4=-211;P5=207;D=01234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252523452525234343452523452343434341234523452525234345234525252343434345252345234345234525234523434525252525252525234525252525252525252523452525234343452523;CP=5;R=107;O;", + "tests" : [ + { + "attributes" : { + "model" : "AC114_01B" + }, + "comment" : "#1" + } + ] } ], + "id" : "56", + "module" : "SD_UT", "name" : "AC114_01B" }, { - "module" : "SD_UT", "data" : [ { - "revision_entry" : "2021-04-22 22:17:37", + "comment" : "Vista Remote Control", "dmsg" : "P68#618C0", "internals" : { "DEF" : "OR28V 1", "NAME" : "OR28V_1" }, - "comment" : "Vista Remote Control", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0", + "state" : "channel_minus" + }, + "rmsg" : "MS;P1=545;P2=-552;P4=-1652;P6=-4400;P7=2746;D=16741214141212121214141212121414121212121212;CP=1;SP=6;m2;", "tests" : [ { "attributes" : { @@ -742,20 +650,21 @@ }, "comment" : "#0" } - ], - "readings" : { - "LastAction" : "receive", - "state" : "channel_minus", - "deviceCode" : "0" - }, - "user" : "elektron-bbs", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MS;P1=545;P2=-552;P4=-1652;P6=-4400;P7=2746;D=16741214141212121214141212121414121212121212;CP=1;SP=6;m2;" + ] }, { - "revision_entry" : "2021-04-22 22:07:14", + "comment" : "Vista Remote Control", "dmsg" : "P68#608B0", + "internals" : { + "DEF" : "OR28V 1", + "NAME" : "OR28V_1" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0", + "state" : "channel_plus" + }, + "rmsg" : "MS;P1=532;P2=-562;P3=-1666;P4=2544;P6=-4412;D=16431213131212121212131212121312131312121212;CP=1;SP=6;", "tests" : [ { "attributes" : { @@ -763,79 +672,58 @@ }, "comment" : "#1" } - ], - "comment" : "Vista Remote Control", - "internals" : { - "NAME" : "OR28V_1", - "DEF" : "OR28V 1" - }, - "readings" : { - "state" : "channel_plus", - "LastAction" : "receive", - "deviceCode" : "0" - }, - "user" : "elektron-bbs", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P1=532;P2=-562;P3=-1666;P4=2544;P6=-4412;D=16431213131212121212131212121312131312121212;CP=1;SP=6;" + ] }, { "comment" : "Vista Remote Control", + "dmsg" : "P68#57820", "internals" : { "DEF" : "OR28V 1", "NAME" : "OR28V_1" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0", + "state" : "power" + }, + "rmsg" : "MS;P0=-544;P1=556;P2=-1653;P3=-4388;P4=2758;D=13421012101210121212121010101010121010101010;CP=1;SP=3;m2;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "OR28V" - } + }, + "comment" : "#2" } - ], - "readings" : { - "state" : "power", - "LastAction" : "receive", - "deviceCode" : "0" - }, - "revision_entry" : "2021-04-22 22:07:38", - "dmsg" : "P68#57820", - "rmsg" : "MS;P0=-544;P1=556;P2=-1653;P3=-4388;P4=2758;D=13421012101210121212121010101010121010101010;CP=1;SP=3;m2;", - "user" : "elektron-bbs", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User" + ] } ], "id" : "68", + "module" : "SD_UT", "name" : "Medion OR28V" }, { "data" : [ { - "rmsg" : "MU;P0=-578;P1=1033;P2=506;P3=-1110;P4=13632;D=0101010232323101040101010101010101023232323102323101010231023102310231010232323101010101010101010232323101040101010101010101023232323102323101010231023102310231010232323101010101010101010232323101040101010101010101023232323102323101010231023102310231010;CP=2;R=77;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "SD_Protocol", - "readings" : { - "deviceCode" : "1111011000101010100111000000", - "state" : "receive" - }, + "comment" : "(ID 8,63 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P69#00F62A9C01C", "internals" : { "DEF" : "HS1_868_BS F62A9C01C", "NAME" : "HS1_868_BS_F62A9C01C" }, - "comment" : "(ID 8,63 additionally)", + "readings" : { + "deviceCode" : "1111011000101010100111000000", + "state" : "receive" + }, + "rmsg" : "MU;P0=-578;P1=1033;P2=506;P3=-1110;P4=13632;D=0101010232323101040101010101010101023232323102323101010231023102310231010232323101010101010101010232323101040101010101010101023232323102323101010231023102310231010232323101010101010101010232323101040101010101010101023232323102323101010231023102310231010;CP=2;R=77;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "HS1_868_BS" - } + }, + "comment" : "#0" } - ], - "revision_entry" : "2021-04-22 22:05:13", - "dmsg" : "P69#00F62A9C01C", - "dispatch_repeats" : "1" + ] } ], "id" : "69", @@ -843,48 +731,47 @@ "name" : "HS1-868-BS" }, { - "name" : "HSM4", - "module" : "SD_UT", - "id" : "69", "data" : [ { - "rmsg" : "MU;P0=-508;P1=1029;P2=503;P3=-1023;P4=12388;D=01010232323232310104010101010101010102323231010232310231023232323231023101023101010231010101010232323232310104010101010101010102323231010232310231023232323231023101023101010231010101010232323232310104010101010101010102323231010232310231023232323231023101;CP=2;R=37;O;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "SD_Protocol", + "comment" : "(ID 8,42,63 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P69#00E6BE9107C", + "internals" : { + "DEF" : "HSM4 E6BE910", + "NAME" : "HSM4_E6BE910" + }, "readings" : { "deviceCode" : "1110011010111110100100010000", "state" : "button_1" }, + "rmsg" : "MU;P0=-508;P1=1029;P2=503;P3=-1023;P4=12388;D=01010232323232310104010101010101010102323231010232310231023232323231023101023101010231010101010232323232310104010101010101010102323231010232310231023232323231023101023101010231010101010232323232310104010101010101010102323231010232310231023232323231023101;CP=2;R=37;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "HSM4" - } + }, + "comment" : "#0" } - ], - "internals" : { - "DEF" : "HSM4 E6BE910", - "NAME" : "HSM4_E6BE910" - }, - "comment" : "(ID 8,42,63 additionally)", - "revision_entry" : "2021-04-22 22:03:10", - "dmsg" : "P69#00E6BE9107C", - "dispatch_repeats" : "1" + ] } - ] + ], + "id" : "69", + "module" : "SD_UT", + "name" : "HSM4" }, { - "name" : "LED XM21", - "module" : "SD_UT", - "id" : "76", "data" : [ { + "dmsg" : "P76#FFFFFFFFFFFFFFFF", "internals" : { "DEF" : "LED_XM21_0 FFFFFFFFFFFFFF", "NAME" : "LED_XM21_0_FFFFFFFFFFFFFF" }, + "readings" : { + "deviceCode" : "11111111111111111111111111111111111111111111111111111111", + "state" : "on" + }, + "rmsg" : "MU;P0=-205;P1=113;P3=406;D=010101010101010101010101010101010101010101010101010101010101030303030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010103030303010101010101010101010100;CP=1;R=69;", "tests" : [ { "attributes" : { @@ -892,23 +779,19 @@ }, "comment" : "#0" } - ], + ] + }, + { + "dmsg" : "P76#FFFFFFFFFFFFFFC", + "internals" : { + "DEF" : "LED_XM21_0 FFFFFFFFFFFFFF", + "NAME" : "LED_XM21_0_FFFFFFFFFFFFFF" + }, "readings" : { "deviceCode" : "11111111111111111111111111111111111111111111111111111111", - "state" : "on" + "state" : "off" }, - "revision_entry" : "2021-04-22 19:22:13", - "dmsg" : "P76#FFFFFFFFFFFFFFFF", - "rmsg" : "MU;P0=-205;P1=113;P3=406;D=010101010101010101010101010101010101010101010101010101010101030303030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010103030303010101010101010101010100;CP=1;R=69;", - "user" : "sidey79", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User" - }, - { "rmsg" : "MU;P0=-203;P1=412;P2=114;D=01010101020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020101010102020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200;CP=2;R=74;", - "user" : "sidey79", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", "tests" : [ { "attributes" : { @@ -916,57 +799,52 @@ }, "comment" : "#1" } - ], - "internals" : { - "NAME" : "LED_XM21_0_FFFFFFFFFFFFFF", - "DEF" : "LED_XM21_0 FFFFFFFFFFFFFF" - }, - "readings" : { - "deviceCode" : "11111111111111111111111111111111111111111111111111111111", - "state" : "off" - }, - "revision_entry" : "2021-04-22 19:21:42", - "dmsg" : "P76#FFFFFFFFFFFFFFC" + ] } - ] + ], + "id" : "76", + "module" : "SD_UT", + "name" : "LED XM21" }, { - "name" : "BeSmart_S4", - "id" : "78", "data" : [ { - "user" : "TheChatty", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-19987;P1=205;P2=-530;P3=501;P4=-253;P6=-4094;D=01234123412123434123412123412123412121216123412341212343412341212341212341212121612341234121234341234121234121234121212161234123412123434123412123412123412121216123412341212343412341212341212341212121;CP=1;R=70;", - "revision_entry" : "2021-04-21 21:57:21", + "comment" : "Remote control SEAV BeSmart S4 for BEST Cirrus Draw", "dispatch_repeats" : "3", "dmsg" : "P78#53490", "internals" : { "DEF" : "BeSmart_S4 534", "NAME" : "BeSmart_S4_534" }, - "comment" : "Remote control SEAV BeSmart S4 for BEST Cirrus Draw", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "010100110100", + "state" : "light_toggle" + }, + "rmsg" : "MU;P0=-19987;P1=205;P2=-530;P3=501;P4=-253;P6=-4094;D=01234123412123434123412123412123412121216123412341212343412341212341212341212121612341234121234341234121234121234121212161234123412123434123412123412123412121216123412341212343412341212341212341212121;CP=1;R=70;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "BeSmart_S4" - } + }, + "comment" : "#0" } - ], - "readings" : { - "deviceCode" : "010100110100", - "LastAction" : "receive", - "state" : "light_toggle" - } + ] }, { + "comment" : "Remote control SEAV BeSmart S4 for BEST Cirrus Draw", + "dispatch_repeats" : "3", + "dmsg" : "P78#53488", + "internals" : { + "DEF" : "BeSmart_S4 534", + "NAME" : "BeSmart_S4_534" + }, "readings" : { - "state" : "level_up", "LastAction" : "receive", - "deviceCode" : "010100110100" + "deviceCode" : "010100110100", + "state" : "level_up" }, + "rmsg" : "MU;P0=-8617;P1=204;P2=-544;P3=490;P4=-246;P6=-4106;D=01234123412123434123412123412121234121216123412341212343412341212341212123412121612341234121234341234121234121212341212161234123412123434123412123412121234121216123412341212343412341212341212123412121;CP=1;R=70;", "tests" : [ { "attributes" : { @@ -974,61 +852,50 @@ }, "comment" : "#1" } - ], - "comment" : "Remote control SEAV BeSmart S4 for BEST Cirrus Draw", - "internals" : { - "NAME" : "BeSmart_S4_534", - "DEF" : "BeSmart_S4 534" - }, - "dmsg" : "P78#53488", - "revision_entry" : "2021-04-21 21:55:12", - "dispatch_repeats" : "3", - "rmsg" : "MU;P0=-8617;P1=204;P2=-544;P3=490;P4=-246;P6=-4106;D=01234123412123434123412123412121234121216123412341212343412341212341212123412121612341234121234341234121234121212341212161234123412123434123412123412121234121216123412341212343412341212341212123412121;CP=1;R=70;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "TheChatty" + ] }, { - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "TheChatty", - "rmsg" : "MU;P0=-14542;P1=221;P2=-522;P3=492;P4=-240;P5=-4114;D=01234123412123434123412123412121212341215123412341212343412341212341212121234121512341234121234341234121234121212123412151234123412123434123412123412121212341215123412341212343412341212341212121234121;CP=1;R=62;", - "revision_entry" : "2021-04-21 21:52:50", - "dmsg" : "P78#53484", + "comment" : "Remote control SEAV BeSmart S4 for BEST Cirrus Draw", "dispatch_repeats" : "3", + "dmsg" : "P78#53484", + "internals" : { + "DEF" : "BeSmart_S4 534", + "NAME" : "BeSmart_S4_534" + }, "readings" : { - "deviceCode" : "010100110100", "LastAction" : "receive", + "deviceCode" : "010100110100", "state" : "level_down" }, + "rmsg" : "MU;P0=-14542;P1=221;P2=-522;P3=492;P4=-240;P5=-4114;D=01234123412123434123412123412121212341215123412341212343412341212341212121234121512341234121234341234121234121212123412151234123412123434123412123412121212341215123412341212343412341212341212121234121;CP=1;R=62;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "BeSmart_S4" - } + }, + "comment" : "#2" } - ], - "internals" : { - "NAME" : "BeSmart_S4_534", - "DEF" : "BeSmart_S4 534" - }, - "comment" : "Remote control SEAV BeSmart S4 for BEST Cirrus Draw" + ] } ], - "module" : "SD_UT" + "id" : "78", + "module" : "SD_UT", + "name" : "BeSmart_S4" }, { - "module" : "SD_UT", "data" : [ { - "user" : "HomeAuto_User", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MU;P0=436;P1=-1033;P3=-537;P4=966;P5=-17209;P6=-7015;D=010103434343434341034345034101034343434343410343450341010343434343434103434506;CP=4;R=58;", - "revision_entry" : "2021-04-21 21:44:00", - "dmsg" : "P81#604", + "comment" : "(ID 63,86 additionally)", "dispatch_repeats" : "1", + "dmsg" : "P81#604", + "internals" : { + "DEF" : "SA_434_1_mini 604", + "NAME" : "SA_434_1_mini_604" + }, + "readings" : { + "state" : "receive" + }, + "rmsg" : "MU;P0=436;P1=-1033;P3=-537;P4=966;P5=-17209;P6=-7015;D=010103434343434341034345034101034343434343410343450341010343434343434103434506;CP=4;R=58;", "tests" : [ { "attributes" : { @@ -1036,37 +903,29 @@ }, "comment" : "#0" } - ], - "internals" : { - "NAME" : "SA_434_1_mini_604", - "DEF" : "SA_434_1_mini 604" - }, - "comment" : "(ID 63,86 additionally)", - "readings" : { - "state" : "receive" - } + ] } ], "id" : "81", + "module" : "SD_UT", "name" : "SA-434-1 mini" }, { - "module" : "SD_UT", - "id" : "83", "data" : [ { - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "zwiebelxxl", - "rmsg" : "MU;P0=388;P1=-112;P2=267;P3=-378;P5=585;P6=-693;P7=-11234;D=0123035353535356262623562626272353535353562626235626262723535353535626262356262627235353535356262623562626272353535353562626235626262723535353535626262356262627235353535356262623562626272353535353562626235626262723535353535626262356262627235353535356262;CP=2;R=43;O;", - "revision_entry" : "2021-03-25 14:30:35", - "dmsg" : "P83#077", + "comment" : "example Westinghouse Deckenventilator Delancey (ID 30 additionally)", "dispatch_repeats" : "7", + "dmsg" : "P83#077", + "internals" : { + "DEF" : "RH787T 0", + "NAME" : "RH787T_0" + }, "readings" : { - "state" : "1_fan_minimum_speed", "LastAction" : "receive", - "deviceCode" : "0000 (on|on|on|on)" + "deviceCode" : "0000 (on|on|on|on)", + "state" : "1_fan_minimum_speed" }, + "rmsg" : "MU;P0=388;P1=-112;P2=267;P3=-378;P5=585;P6=-693;P7=-11234;D=0123035353535356262623562626272353535353562626235626262723535353535626262356262627235353535356262623562626272353535353562626235626262723535353535626262356262627235353535356262623562626272353535353562626235626262723535353535626262356262627235353535356262;CP=2;R=43;O;", "tests" : [ { "attributes" : { @@ -1074,61 +933,52 @@ }, "comment" : "#0" } - ], - "comment" : "example Westinghouse Deckenventilator Delancey (ID 30 additionally)", - "internals" : { - "DEF" : "RH787T 0", - "NAME" : "RH787T_0" - } + ] } ], + "id" : "83", + "module" : "SD_UT", "name" : "RH787T" }, { - "name" : "CAME TOP 432EV", - "id" : "86", "data" : [ { - "rmsg" : "MU;P0=-322;P1=136;P2=-15241;P3=288;P4=-735;P6=723;D=0123434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430;CP=3;R=27;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "andies, andreasloe", + "comment" : "Remote control (ID 81 additionally)", + "dispatch_repeats" : "7", + "dmsg" : "P86#EEE", + "internals" : { + "DEF" : "CAME_TOP_432EV EE", + "NAME" : "CAME_TOP_432EV_EE" + }, "readings" : { - "state" : "left_button", "LastAction" : "receive", - "deviceCode" : "11101110" + "deviceCode" : "11101110", + "state" : "left_button" }, + "rmsg" : "MU;P0=-322;P1=136;P2=-15241;P3=288;P4=-735;P6=723;D=0123434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430623434343064343430643434306234343430643434306434343062343434306434343064343430;CP=3;R=27;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "CAME_TOP_432EV" - } + }, + "comment" : "#0" } - ], - "internals" : { - "NAME" : "CAME_TOP_432EV_EE", - "DEF" : "CAME_TOP_432EV EE" - }, - "comment" : "Remote control (ID 81 additionally)", - "revision_entry" : "2021-03-26 11:45:34", - "dispatch_repeats" : "7", - "dmsg" : "P86#EEE" + ] }, { - "revision_entry" : "2021-03-26 11:47:05", + "comment" : "Remote control", "dispatch_repeats" : "5", "dmsg" : "P86#EED", - "readings" : { - "state" : "right_button", - "LastAction" : "receive", - "deviceCode" : "11101110" - }, - "comment" : "Remote control", "internals" : { "DEF" : "CAME_TOP_432EV EE", "NAME" : "CAME_TOP_432EV_EE" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "11101110", + "state" : "right_button" + }, + "rmsg" : "MU;P0=-15281;P1=293;P2=-745;P3=-319;P4=703;P5=212;P6=152;P7=-428;D=01212121342121213421213421012121213421212134212134210121212134212121342121342101212121342121213421213421012121213421212134212134210121243134212121342121342101252526742121213425213421012121213421212134212134210121212134212;CP=1;R=23;", "tests" : [ { "attributes" : { @@ -1136,30 +986,29 @@ }, "comment" : "#1" } - ], - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "andies, andreasloe", - "rmsg" : "MU;P0=-15281;P1=293;P2=-745;P3=-319;P4=703;P5=212;P6=152;P7=-428;D=01212121342121213421213421012121213421212134212134210121212134212121342121342101212121342121213421213421012121213421212134212134210121243134212121342121342101252526742121213425213421012121213421212134212134210121212134212;CP=1;R=23;" + ] } ], - "module" : "SD_UT" + "id" : "86", + "module" : "SD_UT", + "name" : "CAME TOP 432EV" }, { - "name" : "Novy 840029", - "module" : "SD_UT", - "id" : "86", "data" : [ { - "rmsg" : "MU;P0=22808;P1=-24232;P2=701;P3=-765;P4=357;P5=-15970;P7=-406;D=012345472347234723472347234723454723472347234723472347234547234723472347234723472345472347234723472347234723454723472347234723472347234;CP=4;R=39;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "Garfonso", + "comment" : "Remote control for Novy kitchen hood / hex_lengh 3 (ID 63,81 additionally)", + "dispatch_repeats" : "4", + "dmsg" : "P86#555", + "internals" : { + "DEF" : "Novy_840029 55", + "NAME" : "Novy_840029_55" + }, "readings" : { - "state" : "speed_plus", "LastAction" : "receive", - "deviceCode" : "01010101" + "deviceCode" : "01010101", + "state" : "speed_plus" }, + "rmsg" : "MU;P0=22808;P1=-24232;P2=701;P3=-765;P4=357;P5=-15970;P7=-406;D=012345472347234723472347234723454723472347234723472347234547234723472347234723472345472347234723472347234723454723472347234723472347234;CP=4;R=39;", "tests" : [ { "attributes" : { @@ -1167,106 +1016,96 @@ }, "comment" : "#0" } - ], - "internals" : { - "DEF" : "Novy_840029 55", - "NAME" : "Novy_840029_55" - }, - "comment" : "Remote control for Novy kitchen hood / hex_lengh 3 (ID 63,81 additionally)", - "revision_entry" : "2021-03-26 12:01:53", - "dmsg" : "P86#555", - "dispatch_repeats" : "4" + ] }, { - "tests" : [ - { - "comment" : "#1", - "attributes" : { - "model" : "Novy_840029" - } - } - ], + "comment" : "Remote control for Novy kitchen hood / hex_lengh 3 (ID 63,81 additionally)", + "dispatch_repeats" : "3", + "dmsg" : "P86#556", "internals" : { - "NAME" : "Novy_840029_55", - "DEF" : "Novy_840029 55" + "DEF" : "Novy_840029 55", + "NAME" : "Novy_840029_55" }, - "comment" : "Remote control for Novy kitchen hood / hex_lengh 3 (ID 63,81 additionally)", "readings" : { - "deviceCode" : "01010101", "LastAction" : "receive", + "deviceCode" : "01010101", "state" : "speed_minus" }, - "dispatch_repeats" : "3", - "revision_entry" : "2021-03-26 12:03:25", - "dmsg" : "P86#556", "rmsg" : "MU;P0=-8032;P1=364;P2=-398;P3=700;P4=-760;P5=-15980;D=0123412341234123412341412351234123412341234123414123512341234123412341234141235123412341234123412341412351234123412341234123414123;CP=1;R=40;", - "user" : "Garfonso", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27" - }, - { - "dispatch_repeats" : "2", - "revision_entry" : "2021-03-26 12:04:59", - "dmsg" : "P86#5574C", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "Novy_840029" - } + }, + "comment" : "#1" } - ], + ] + }, + { + "comment" : "Remote control for Novy kitchen hood / hex_lengh 5 (ID 63 additionally)", + "dispatch_repeats" : "2", + "dmsg" : "P86#5574C", "internals" : { - "NAME" : "Novy_840029_55", - "DEF" : "Novy_840029 55" + "DEF" : "Novy_840029 55", + "NAME" : "Novy_840029_55" }, - "comment" : "Remote control for Novy kitchen hood / hex_lengh 5 (ID 63 additionally)", "readings" : { + "LastAction" : "receive", "deviceCode" : "01010101", - "state" : "power_on_off", - "LastAction" : "receive" + "state" : "power_on_off" }, - "user" : "Garfonso", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MU;P0=-756;P1=718;P2=354;P3=-395;P4=-16056;D=01020202310231310202423102310231023102310202023102313102024231023102310231023102020231023131020242310231023102310231020202310231310202;CP=2;R=41;" + "rmsg" : "MU;P0=-756;P1=718;P2=354;P3=-395;P4=-16056;D=01020202310231310202423102310231023102310202023102313102024231023102310231023102020231023131020242310231023102310231020202310231310202;CP=2;R=41;", + "tests" : [ + { + "attributes" : { + "model" : "Novy_840029" + }, + "comment" : "#2" + } + ] } - ] + ], + "id" : "86", + "module" : "SD_UT", + "name" : "Novy 840029" }, { "data" : [ { - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "Devirex", - "rmsg" : "MU;P0=-9524;P1=364;P2=-414;P3=669;P4=-755;P5=-16076;CP=1;R=83;D=0123412341234123412341412341414141412351234123412341234123414123414141414123;e;w=0;", - "revision_entry" : "2021-03-26 11:54:26", - "dmsg" : "P86#556F8", - "readings" : { - "state" : "ambient_light_on", - "LastAction" : "receive", - "deviceCode" : "01010101" - }, "comment" : "Remote control for Novy kitchen hood / hex_lengh 5", + "dmsg" : "P86#556F8", "internals" : { "DEF" : "Novy_840039 55", "NAME" : "Novy_840039_55" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "01010101", + "state" : "ambient_light_on" + }, + "rmsg" : "MU;P0=-9524;P1=364;P2=-414;P3=669;P4=-755;P5=-16076;CP=1;R=83;D=0123412341234123412341412341414141412351234123412341234123414123414141414123;e;w=0;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Novy_840039" - } + }, + "comment" : "#0" } ] }, { + "comment" : "Remote control for Novy kitchen hood / hex_lengh 3 (ID 81 additionally)", + "dmsg" : "P86#555", "internals" : { "DEF" : "Novy_840039 55", "NAME" : "Novy_840039_55" }, - "comment" : "Remote control for Novy kitchen hood / hex_lengh 3 (ID 81 additionally)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "01010101", + "state" : "fan_plus" + }, + "rmsg" : "MU;P0=388;P1=-756;P2=264;P3=-399;P4=683;P5=-16082;CP=0;R=67;D=0123410341034103410341050341034103410341034103410;e;w=0;", "tests" : [ { "attributes" : { @@ -1274,45 +1113,30 @@ }, "comment" : "#1" } - ], + ] + }, + { + "comment" : "Remote control for Novy kitchen hood / hex_lengh 5", + "dispatch_repeats" : "1", + "dmsg" : "P86#5574C", + "internals" : { + "DEF" : "Novy_840039 55", + "NAME" : "Novy_840039_55" + }, "readings" : { - "state" : "fan_plus", "LastAction" : "receive", - "deviceCode" : "01010101" + "deviceCode" : "01010101", + "state" : "power_on_off" }, - "revision_entry" : "2021-03-26 11:52:35", - "dmsg" : "P86#555", - "rmsg" : "MU;P0=388;P1=-756;P2=264;P3=-399;P4=683;P5=-16082;CP=0;R=67;D=0123410341034103410341050341034103410341034103410;e;w=0;", - "user" : "Devirex", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User" - }, - { "rmsg" : "MU;P0=-749;P1=378;P2=-456;P3=684;P4=-16081;D=01230101012301232301014123012301230123012301010123012323010141230123012301230123010101230123230101412;CP=1;R=66;", - "user" : "Devirex", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "Novy_840039" - } + }, + "comment" : "#2" } - ], - "comment" : "Remote control for Novy kitchen hood / hex_lengh 5", - "internals" : { - "NAME" : "Novy_840039_55", - "DEF" : "Novy_840039 55" - }, - "readings" : { - "deviceCode" : "01010101", - "state" : "power_on_off", - "LastAction" : "receive" - }, - "revision_entry" : "2021-03-26 11:51:12", - "dispatch_repeats" : "1", - "dmsg" : "P86#5574C" + ] } ], "id" : "86", @@ -1320,78 +1144,67 @@ "name" : "Novy 840039" }, { - "name" : "SF01_01319004", - "module" : "SD_UT", - "id" : "86", "data" : [ { - "revision_entry" : "2021-03-26 11:41:58", - "dmsg" : "P86#A1530", + "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", "dispatch_repeats" : "5", + "dmsg" : "P86#A1530", + "internals" : { + "DEF" : "SF01_01319004 A150", + "NAME" : "SF01_01319004_A150" + }, "readings" : { "LastAction" : "receive", - "state" : "plus", - "deviceCode" : "A150" + "deviceCode" : "A150", + "state" : "plus" }, + "rmsg" : "MU;P0=-220;P1=348;P2=-702;P3=-381;P4=662;P5=-15257;D=01213421342134342121343451213421343434342134213421343421213434512134213434343421342134213434212134345121342134343434213421342134342121343451213421343434342134213421343421213434512134213434343421342134213434212134345121342134343434213421342134342121343451;CP=1;R=6;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "SF01_01319004" - } + }, + "comment" : "#0" } - ], - "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", - "internals" : { - "NAME" : "SF01_01319004_A150", - "DEF" : "SF01_01319004 A150" - }, - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "fhemjcm", - "rmsg" : "MU;P0=-220;P1=348;P2=-702;P3=-381;P4=662;P5=-15257;D=01213421342134342121343451213421343434342134213421343421213434512134213434343421342134213434212134345121342134343434213421342134342121343451213421343434342134213421343421213434512134213434343421342134213434212134345121342134343434213421342134342121343451;CP=1;R=6;O;" + ] }, { - "rmsg" : "MU;P0=-2112;P1=340;P2=-708;P3=-381;P4=660;P5=-15243;D=012134213434343421342134213434213421345121342134343434213421342134342134213451213421343434342134213421343421342134512134213434343421342134213434213421345121342134343434213421342134342134213451213421343434342134213421343421342134512134213434343421342134;CP=1;R=7;", - "user" : "fhemjcm", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", + "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", + "dispatch_repeats" : "4", + "dmsg" : "P86#A1528", "internals" : { "DEF" : "SF01_01319004 A150", "NAME" : "SF01_01319004_A150" }, - "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "A150", + "state" : "minus" + }, + "rmsg" : "MU;P0=-2112;P1=340;P2=-708;P3=-381;P4=660;P5=-15243;D=012134213434343421342134213434213421345121342134343434213421342134342134213451213421343434342134213421343421342134512134213434343421342134213434213421345121342134343434213421342134342134213451213421343434342134213421343421342134512134213434343421342134;CP=1;R=7;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "SF01_01319004" - } + }, + "comment" : "#1" } - ], - "readings" : { - "state" : "minus", - "LastAction" : "receive", - "deviceCode" : "A150" - }, - "revision_entry" : "2021-03-26 11:43:24", - "dmsg" : "P86#A1528", - "dispatch_repeats" : "4" + ] }, { - "revision_entry" : "2021-03-26 11:38:50", - "dmsg" : "P86#A1538", - "dispatch_repeats" : "4", - "readings" : { - "LastAction" : "receive", - "state" : "light_on_off", - "deviceCode" : "A150" - }, "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", + "dispatch_repeats" : "4", + "dmsg" : "P86#A1538", "internals" : { "DEF" : "SF01_01319004 A150", "NAME" : "SF01_01319004_A150" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "A150", + "state" : "light_on_off" + }, + "rmsg" : "MU;P0=-707;P1=332;P2=-376;P3=670;P5=-15243;D=010123012323232301230123012323010101235101230123232323012301230123230101012351012301232323230123012301232301010123510123012323232301230123012323010101235101230123232323012301230123230101012351012301232323230123012301232301010123510123012323232301230123;CP=1;R=3;", "tests" : [ { "attributes" : { @@ -1399,122 +1212,105 @@ }, "comment" : "#2" } - ], - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "fhemjcm", - "rmsg" : "MU;P0=-707;P1=332;P2=-376;P3=670;P5=-15243;D=010123012323232301230123012323010101235101230123232323012301230123230101012351012301232323230123012301232301010123510123012323232301230123012323010101235101230123232323012301230123230101012351012301232323230123012301232301010123510123012323232301230123;CP=1;R=3;" + ] }, { - "rmsg" : "MU;P0=-944;P1=341;P2=-695;P3=-375;P4=672;P5=-15261;D=012134213434343421342134213434213434215121342134343434213421342134342134342151213421343434342134213421343421343421512134213434343421342134213434213434215121342134343434213421342134342134342151213421343434342134213421343421343421512134213434343421342134;CP=1;R=2;", - "user" : "fhemjcm", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", + "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", + "dispatch_repeats" : "4", + "dmsg" : "P86#A1524", "internals" : { - "NAME" : "SF01_01319004_A150", - "DEF" : "SF01_01319004 A150" + "DEF" : "SF01_01319004 A150", + "NAME" : "SF01_01319004_A150" }, - "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "A150", + "state" : "delay" + }, + "rmsg" : "MU;P0=-944;P1=341;P2=-695;P3=-375;P4=672;P5=-15261;D=012134213434343421342134213434213434215121342134343434213421342134342134342151213421343434342134213421343421343421512134213434343421342134213434213434215121342134343434213421342134342134342151213421343434342134213421343421343421512134213434343421342134;CP=1;R=2;", "tests" : [ { - "comment" : "#3", "attributes" : { "model" : "SF01_01319004" - } + }, + "comment" : "#3" } - ], - "readings" : { - "state" : "delay", - "LastAction" : "receive", - "deviceCode" : "A150" - }, - "dispatch_repeats" : "4", - "revision_entry" : "2021-03-26 11:30:55", - "dmsg" : "P86#A1524" + ] }, { - "rmsg" : "MU;P0=-372;P1=330;P2=684;P3=-699;P4=-14178;D=010231020202023102310231020231310231413102310202020231023102310202313102314;CP=1;R=253;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "user", - "readings" : { - "state" : "interval", - "LastAction" : "receive", - "deviceCode" : "A150" - }, "comment" : "Remote control for Neff Transmitter SF01 01319004 (ID 63 additionally)", + "dmsg" : "P86#A1534", "internals" : { "DEF" : "SF01_01319004 A150", "NAME" : "SF01_01319004_A150" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "A150", + "state" : "interval" + }, + "rmsg" : "MU;P0=-372;P1=330;P2=684;P3=-699;P4=-14178;D=010231020202023102310231020231310231413102310202020231023102310202313102314;CP=1;R=253;", "tests" : [ { - "comment" : "#4", "attributes" : { "model" : "SF01_01319004" - } + }, + "comment" : "#4" } - ], - "dmsg" : "P86#A1534", - "revision_entry" : "2021-03-26 11:26:00" + ] } - ] + ], + "id" : "86", + "module" : "SD_UT", + "name" : "SF01_01319004" }, { "data" : [ { - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "Stuetti", - "rmsg" : "MU;P0=706;P1=-160;P2=140;P3=-335;P4=-664;P5=385;P6=-15226;P7=248;D=01210103045303045453030304545453030454530653030453030454530303045454530304747306530304530304545303030454545303045453065303045303045453030304545453030454530653030453030454530303045454530304545306530304530304545303030454545303045453065303045303045453030304;CP=5;O;", - "revision_entry" : "2021-03-26 11:07:33", + "comment" : "Remote control for BOSCH Transmitter SF01 01319004 / Typ2 (ID 63,81 additionally)", "dispatch_repeats" : "4", "dmsg" : "P86#26398", + "internals" : { + "DEF" : "SF01_01319004_Typ2 2638", + "NAME" : "SF01_01319004_Typ2_2638" + }, "readings" : { - "deviceCode" : "2638", "LastAction" : "receive", + "deviceCode" : "2638", "state" : "light_on_off" }, - "internals" : { - "NAME" : "SF01_01319004_Typ2_2638", - "DEF" : "SF01_01319004_Typ2 2638" - }, - "comment" : "Remote control for BOSCH Transmitter SF01 01319004 / Typ2 (ID 63,81 additionally)", + "rmsg" : "MU;P0=706;P1=-160;P2=140;P3=-335;P4=-664;P5=385;P6=-15226;P7=248;D=01210103045303045453030304545453030454530653030453030454530303045454530304747306530304530304545303030454545303045453065303045303045453030304545453030454530653030453030454530303045454530304545306530304530304545303030454545303045453065303045303045453030304;CP=5;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "SF01_01319004_Typ2" - } + }, + "comment" : "#0" } ] }, { - "user" : "Stuetti", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MU;P0=379;P1=-330;P2=713;P3=-660;P4=-15209;D=01212121230401212301212303012121230303012121212304012123012123030121212303030121212123040121230121230301212123030301212121230;CP=0;", - "revision_entry" : "2021-03-26 11:23:58", - "dmsg" : "P86#26384", + "comment" : "Remote control for BOSCH Transmitter SF01 01319004 / Typ2 (ID 63,81 additionally)", "dispatch_repeats" : "2", + "dmsg" : "P86#26384", + "internals" : { + "DEF" : "SF01_01319004_Typ2 2638", + "NAME" : "SF01_01319004_Typ2_2638" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "2638", + "state" : "delay" + }, + "rmsg" : "MU;P0=379;P1=-330;P2=713;P3=-660;P4=-15209;D=01212121230401212301212303012121230303012121212304012123012123030121212303030121212123040121230121230301212123030301212121230;CP=0;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "SF01_01319004_Typ2" - } + }, + "comment" : "#1" } - ], - "comment" : "Remote control for BOSCH Transmitter SF01 01319004 / Typ2 (ID 63,81 additionally)", - "internals" : { - "NAME" : "SF01_01319004_Typ2_2638", - "DEF" : "SF01_01319004_Typ2 2638" - }, - "readings" : { - "state" : "delay", - "LastAction" : "receive", - "deviceCode" : "2638" - } + ] } ], "id" : "86", @@ -1522,17 +1318,22 @@ "name" : "SF01_01319004_Typ2" }, { - "module" : "SD_UT", - "id" : "90", "data" : [ { - "revision_entry" : "2021-03-26 10:42:10", - "dmsg" : "P90#43CB0FA10", "comment" : "button A", + "dmsg" : "P90#43CB0FA10", "internals" : { "DEF" : "RC_10 43CB_A", "NAME" : "RC_10_43CB_A" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0100001111001011", + "state" : "on", + "x_n4" : "0000", + "x_n5-8_on" : "1111101000010" + }, + "rmsg" : "MS;P0=-9964;P1=273;P4=-866;P5=792;P6=-343;D=10145614141414565656561414561456561414141456565656561456141414145614;CP=1;SP=0;R=35;O;m2;", "tests" : [ { "attributes" : { @@ -1540,32 +1341,30 @@ }, "comment" : "#0" } - ], - "readings" : { - "deviceCode" : "0100001111001011", - "LastAction" : "receive", - "state" : "on", - "x_n5-8_on" : "1111101000010", - "x_n4" : "0000" - }, - "user" : "my-engel", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MS;P0=-9964;P1=273;P4=-866;P5=792;P6=-343;D=10145614141414565656561414561456561414141456565656561456141414145614;CP=1;SP=0;R=35;O;m2;" + ] } ], + "id" : "90", + "module" : "SD_UT", "name" : "MANAX RC-10 (MX-RCS250)" }, { - "name" : "mumbi RC-10 (AFS300-s)", "data" : [ { - "user" : "peterboeckmann", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P1=781;P3=-372;P4=251;P5=-903;P6=-10342;D=46451313131345454545131345134545134545454513131313454513454513451345;CP=4;SP=6;O;m1;E;", - "revision_entry" : "2021-03-26 10:21:27", + "comment" : "button A", "dmsg" : "P90#78690F250", + "internals" : { + "DEF" : "RC_10 7869_A", + "NAME" : "RC_10_7869_A" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0111100001101001", + "state" : "on", + "x_n4" : "0000", + "x_n5-8_on" : "1111001001010" + }, + "rmsg" : "MS;P1=781;P3=-372;P4=251;P5=-903;P6=-10342;D=46451313131345454545131345134545134545454513131313454513454513451345;CP=4;SP=6;O;m1;E;", "tests" : [ { "attributes" : { @@ -1573,90 +1372,71 @@ }, "comment" : "#0" } - ], + ] + }, + { + "comment" : "button A", + "dmsg" : "P90#78690E240", "internals" : { - "NAME" : "RC_10_7869_A", - "DEF" : "RC_10 7869_A" + "DEF" : "RC_10 7869_A", + "NAME" : "RC_10_7869_A" }, - "comment" : "button A", "readings" : { - "x_n4" : "0000", - "x_n5-8_on" : "1111001001010", + "LastAction" : "receive", "deviceCode" : "0111100001101001", - "state" : "on", - "LastAction" : "receive" - } - }, - { - "rmsg" : "MS;P1=790;P2=-363;P3=257;P4=-896;P5=-10283;D=35341212121234343434121234123434123434343412121234343412343412343434;CP=3;SP=5;O;m2;C;C;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "peterboeckmann", - "readings" : { + "state" : "off", "x_n4" : "0000", - "x_n5-8_off" : "1110001001000", - "deviceCode" : "0111100001101001", - "LastAction" : "receive", - "state" : "off" - }, - "internals" : { - "NAME" : "RC_10_7869_A", - "DEF" : "RC_10 7869_A" + "x_n5-8_off" : "1110001001000" }, - "comment" : "button A", + "rmsg" : "MS;P1=790;P2=-363;P3=257;P4=-896;P5=-10283;D=35341212121234343434121234123434123434343412121234343412343412343434;CP=3;SP=5;O;m2;C;C;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "RC_10" - } + }, + "comment" : "#1" } - ], - "revision_entry" : "2021-03-26 10:22:40", - "dmsg" : "P90#78690E240" + ] }, { - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "peterboeckmann", - "rmsg" : "MS;P1=-361;P2=267;P3=-884;P4=792;P5=-10342;D=25234141414123232323414123412323412323232323412323232341234123414123;CP=2;SP=5;O;m2;A;", - "revision_entry" : "2021-03-26 10:24:30", + "comment" : "button all", "dmsg" : "P90#7869042B0", + "internals" : { + "DEF" : "RC_10 7869_all", + "NAME" : "RC_10_7869_all" + }, "readings" : { - "state" : "on", "LastAction" : "receive", "deviceCode" : "0111100001101001", + "state" : "on", "x_n4" : "0000", "x_n5-8_on" : "0100001010110" }, - "comment" : "button all", - "internals" : { - "NAME" : "RC_10_7869_all", - "DEF" : "RC_10 7869_all" - }, + "rmsg" : "MS;P1=-361;P2=267;P3=-884;P4=792;P5=-10342;D=25234141414123232323414123412323412323232323412323232341234123414123;CP=2;SP=5;O;m2;A;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "RC_10" - } + }, + "comment" : "#2" } ] }, { - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "peterboeckmann", - "rmsg" : "MS;P1=-363;P2=789;P3=267;P4=-887;P5=-10332;D=35342121212134343434212134213434213434343421343434343421343434212134;CP=3;SP=5;O;m2;4;", - "revision_entry" : "2021-03-26 10:25:58", + "comment" : "button all", "dmsg" : "P90#786908230", + "internals" : { + "DEF" : "RC_10 7869_all", + "NAME" : "RC_10_7869_all" + }, "readings" : { + "LastAction" : "receive", "deviceCode" : "0111100001101001", "state" : "off", - "LastAction" : "receive", "x_n4" : "0000", "x_n5-8_off" : "1000001000110" }, + "rmsg" : "MS;P1=-363;P2=789;P3=267;P4=-887;P5=-10332;D=35342121212134343434212134213434213434343421343434343421343434212134;CP=3;SP=5;O;m2;4;", "tests" : [ { "attributes" : { @@ -1664,66 +1444,63 @@ }, "comment" : "#3" } - ], - "comment" : "button all", - "internals" : { - "DEF" : "RC_10 7869_all", - "NAME" : "RC_10_7869_all" - } + ] } ], "id" : "90", - "module" : "SD_UT" + "module" : "SD_UT", + "name" : "mumbi RC-10 (AFS300-s)" }, { - "name" : "MD-2018R", - "module" : "SD_UT", - "id" : "91", "data" : [ { - "revision_entry" : "2021-03-26 10:19:45", - "dmsg" : "P91#80306644B", - "dispatch_repeats" : "1", "comment" : "Atlantic's - Vibration Sensor (ID 63 additionally) / decode as MU", + "dispatch_repeats" : "1", + "dmsg" : "P91#80306644B", "internals" : { - "NAME" : "MD_2018R_803066", - "DEF" : "MD_2018R 803066" + "DEF" : "MD_2018R 803066", + "NAME" : "MD_2018R_803066" + }, + "readings" : { + "batteryState" : "ok", + "contact" : "Alarm", + "deviceTyp" : "vibration", + "keepalive" : "event", + "state" : "warning" }, + "rmsg" : "MU;P0=-817;P1=406;P2=-415;P3=813;P5=-4068;CP=3;D=01232323232323232323010123232323230101232301012323012323230123230123010151012323232323232323230101232323232301012323010123230123232301232301230101510123232323232323232301012323232323010123230101232301232323012323012301015101232323232323232323010123232323;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "MD_2018R" - } + }, + "comment" : "#0" } - ], - "readings" : { - "state" : "warning", - "contact" : "Alarm", - "batteryState" : "ok", - "deviceTyp" : "vibration", - "keepalive" : "event" - }, - "user" : "Harst", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-817;P1=406;P2=-415;P3=813;P5=-4068;CP=3;D=01232323232323232323010123232323230101232301012323012323230123230123010151012323232323232323230101232323232301012323010123230123232301232301230101510123232323232323232301012323232323010123230101232301232323012323012301015101232323232323232323010123232323;O;" + ] } - ] + ], + "id" : "91", + "module" : "SD_UT", + "name" : "MD-2018R" }, { - "name" : "MD-210R", - "module" : "SD_UT", "data" : [ { + "comment" : "Atlantic's - Door / Window Sensor / decode as MU", + "dmsg" : "P91#91DF4F4EB", + "internals" : { + "DEF" : "MD_210R 91DF4F", + "NAME" : "MD_210R_91DF4F" + }, "readings" : { - "sabotage" : "closed", "batteryState" : "ok", + "contact" : "open", "deviceTyp" : "switch", "keepalive" : "event", - "state" : "warning", - "contact" : "open" + "sabotage" : "closed", + "state" : "warning" }, + "rmsg" : "MU;P1=392;P2=-416;P3=804;P4=-822;P5=-4029;P6=-32001;D=151412323412323234141412341414141412341232341414141234123234141412341234141660;CP=1;R=0;", "tests" : [ { "attributes" : { @@ -1731,52 +1508,39 @@ }, "comment" : "#0" } - ], - "internals" : { - "DEF" : "MD_210R 91DF4F", - "NAME" : "MD_210R_91DF4F" - }, - "comment" : "Atlantic's - Door / Window Sensor / decode as MU", - "revision_entry" : "2021-03-26 10:18:46", - "dmsg" : "P91#91DF4F4EB", - "rmsg" : "MU;P1=392;P2=-416;P3=804;P4=-822;P5=-4029;P6=-32001;D=151412323412323234141412341414141412341232341414141234123234141412341234141660;CP=1;R=0;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "Harst" + ] } ], - "id" : "91" + "id" : "91", + "module" : "SD_UT", + "name" : "MD-210R" }, { "data" : [ { - "dmsg" : "P91#FCC17E1CA", - "revision_entry" : "2021-03-26 10:17:39", - "dispatch_repeats" : "1", "comment" : "Focus/Atlantic's - Gas detektor (ID 63 additionally) / decode as MU", + "dispatch_repeats" : "1", + "dmsg" : "P91#FCC17E1CA", "internals" : { "DEF" : "MD_2003R FCC17E", "NAME" : "MD_2003R_FCC17E" }, + "readings" : { + "batteryState" : "ok", + "contact" : "no Alarm", + "deviceTyp" : "gas", + "keepalive" : "periodically", + "state" : "normal" + }, + "rmsg" : "MU;P0=-164;P1=378;P2=-813;P3=-429;P4=764;P5=-3929;D=0121212134342121343434343421342121212121213434343421212134342134213451212121212121343421213434343434213421212121212134343434212121343421342134512121212121213434212134343434342134212121212121343434342121213434213421345121212121212134342121343434343421342;CP=1;R=0;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "MD_2003R" - } + }, + "comment" : "#0" } - ], - "readings" : { - "state" : "normal", - "contact" : "no Alarm", - "keepalive" : "periodically", - "deviceTyp" : "gas", - "batteryState" : "ok" - }, - "user" : "Harst", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-164;P1=378;P2=-813;P3=-429;P4=764;P5=-3929;D=0121212134342121343434343421342121212121213434343421212134342134213451212121212121343421213434343434213421212121212134343434212121343421342134512121212121213434212134343434342134212121212121343434342121213434213421345121212121212134342121343434343421342;CP=1;R=0;O;" + ] } ], "id" : "91", @@ -1784,58 +1548,54 @@ "name" : "MD_2003R" }, { - "name" : "MD-2018R", "data" : [ { - "revision_entry" : "2021-03-26 10:15:56", - "dmsg" : "P91#80306644B", - "tests" : [ - { - "attributes" : { - "model" : "MD_2018R" - }, - "comment" : "#0" - } - ], "comment" : "Atlantic's - Vibration Sensor / decode as MS", + "dmsg" : "P91#80306644B", "internals" : { - "NAME" : "MD_2018R_803066", - "DEF" : "MD_2018R 803066" + "DEF" : "MD_2018R 803066", + "NAME" : "MD_2018R_803066" }, "readings" : { - "deviceTyp" : "vibration", "batteryState" : "ok", - "keepalive" : "event", "contact" : "Alarm", + "deviceTyp" : "vibration", + "keepalive" : "event", "state" : "warning" }, - "user" : "Harst", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P0=-420;P1=809;P2=-835;P3=399;P4=-4080;D=34323010101010101010101232301010101012323010123230101230101012301012301232;CP=3;SP=4;s=64;e;m0;" + "rmsg" : "MS;P0=-420;P1=809;P2=-835;P3=399;P4=-4080;D=34323010101010101010101232301010101012323010123230101230101012301012301232;CP=3;SP=4;s=64;e;m0;", + "tests" : [ + { + "attributes" : { + "model" : "MD_2018R" + }, + "comment" : "#0" + } + ] } ], "id" : "91.1", - "module" : "SD_UT" + "module" : "SD_UT", + "name" : "MD-2018R" }, { - "module" : "SD_UT", "data" : [ { - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "Harst", - "rmsg" : "MS;P0=-407;P1=402;P2=-4023;P3=-817;P4=806;D=12131040431040404313131043131313131043104043131313104310404313131043104313;CP=1;SP=2;R=0;m1;", - "revision_entry" : "2021-03-26 10:15:06", + "comment" : "Atlantic's - Door / Window Sensor / decode as MS", "dmsg" : "P91#91DF4F4EB", + "internals" : { + "DEF" : "MD_210R 91DF4F", + "NAME" : "MD_210R_91DF4F" + }, "readings" : { - "keepalive" : "event", - "sabotage" : "closed", "batteryState" : "ok", + "contact" : "open", "deviceTyp" : "switch", - "state" : "warning", - "contact" : "open" + "keepalive" : "event", + "sabotage" : "closed", + "state" : "warning" }, + "rmsg" : "MS;P0=-407;P1=402;P2=-4023;P3=-817;P4=806;D=12131040431040404313131043131313131043104043131313104310404313131043104313;CP=1;SP=2;R=0;m1;", "tests" : [ { "attributes" : { @@ -1843,120 +1603,109 @@ }, "comment" : "#0" } - ], - "internals" : { - "NAME" : "MD_210R_91DF4F", - "DEF" : "MD_210R 91DF4F" - }, - "comment" : "Atlantic's - Door / Window Sensor / decode as MS" + ] } ], "id" : "91.1", + "module" : "SD_UT", "name" : "MD-210R" }, { - "module" : "SD_UT", - "id" : "92", "data" : [ { - "readings" : { - "deviceCode" : "1010000001101100001101100000", - "state" : "on", - "LastAction" : "receive" - }, + "comment" : "(ID 19,63 additionally)", + "dispatch_repeats" : "2", + "dmsg" : "P92#A06C3601", "internals" : { "DEF" : "Krinner_LUMIX A06C360", "NAME" : "Krinner_LUMIX_A06C360" }, - "comment" : "(ID 19,63 additionally)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "1010000001101100001101100000", + "state" : "on" + }, + "rmsg" : "MU;P0=24188;P1=-16308;P2=993;P3=-402;P4=416;P5=-967;P6=-10162;D=0123234545454523234523234545454545454545232623452345454545454523234523234545454523234523234545454545454545232623452345454545454523234523234545454523234523234545454545454545232623452345454545454523234523234545454523234523234545454545454545232;CP=4;R=25;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Krinner_LUMIX" - } + }, + "comment" : "#0" } - ], - "dmsg" : "P92#A06C3601", - "revision_entry" : "2021-03-26 10:11:12", - "dispatch_repeats" : "2", - "rmsg" : "MU;P0=24188;P1=-16308;P2=993;P3=-402;P4=416;P5=-967;P6=-10162;D=0123234545454523234523234545454545454545232623452345454545454523234523234545454523234523234545454545454545232623452345454545454523234523234545454523234523234545454545454545232623452345454545454523234523234545454523234523234545454545454545232;CP=4;R=25;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "gestein" + ] }, { - "rmsg" : "MU;P0=11076;P1=-20524;P2=281;P3=-980;P4=982;P5=-411;P6=408;P7=-10156;D=0123232345456345456363636363636363634745634563636363636345456345456363636345456345456363636363636363634745634563636363636345456345456363636345456345456363636363636363634745634563636363636345456345456363636345456345456363636363636363634;CP=6;R=38;", - "user" : "gestein", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", + "dispatch_repeats" : "2", + "dmsg" : "P92#A06C3600", "internals" : { - "NAME" : "Krinner_LUMIX_A06C360", - "DEF" : "Krinner_LUMIX A06C360" + "DEF" : "Krinner_LUMIX A06C360", + "NAME" : "Krinner_LUMIX_A06C360" }, - "tests" : [ + "readings" : { + "LastAction" : "receive", + "deviceCode" : "1010000001101100001101100000", + "state" : "off" + }, + "rmsg" : "MU;P0=11076;P1=-20524;P2=281;P3=-980;P4=982;P5=-411;P6=408;P7=-10156;D=0123232345456345456363636363636363634745634563636363636345456345456363636345456345456363636363636363634745634563636363636345456345456363636345456345456363636363636363634745634563636363636345456345456363636345456345456363636363636363634;CP=6;R=38;", + "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "Krinner_LUMIX" - } + }, + "comment" : "#1" } - ], - "readings" : { - "deviceCode" : "1010000001101100001101100000", - "state" : "off", - "LastAction" : "receive" - }, - "revision_entry" : "2021-03-26 10:13:39", - "dmsg" : "P92#A06C3600", - "dispatch_repeats" : "2" + ] } ], + "id" : "92", + "module" : "SD_UT", "name" : "KRINNER Lumix - LED X-MAS" }, { - "module" : "SD_UT", - "id" : "93", "data" : [ { - "user" : "SD_Protocol", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P1=376;P4=-1200;P5=1170;P6=-409;P7=-12224;D=17141414561456561456565656145656141414145614141414565656145656565614;CP=1;SP=7;R=231;e;m0;", - "revision_entry" : "2021-03-26 10:09:06", + "comment" : "ESTO Lighting GmbH, remote control (ID 90 additionally)", "dmsg" : "P93#16F610EF0", + "internals" : { + "DEF" : "KL_RF01 16F6", + "NAME" : "KL_RF01_16F6" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0001011011110110", + "state" : "light_color_cold_white" + }, + "rmsg" : "MS;P1=376;P4=-1200;P5=1170;P6=-409;P7=-12224;D=17141414561456561456565656145656141414145614141414565656145656565614;CP=1;SP=7;R=231;e;m0;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "KL_RF01" - } + }, + "comment" : "#0" } - ], - "comment" : "ESTO Lighting GmbH, remote control (ID 90 additionally)", - "internals" : { - "NAME" : "KL_RF01_16F6", - "DEF" : "KL_RF01 16F6" - }, - "readings" : { - "state" : "light_color_cold_white", - "LastAction" : "receive", - "deviceCode" : "0001011011110110" - } + ] } ], + "id" : "93", + "module" : "SD_UT", "name" : "KL-RF01" }, { - "name" : "Techmar", - "id" : "95", "data" : [ { + "comment" : "Garden Lights remote control (ID 31,63 additionally)", + "dmsg" : "P95#7709F5DE09F60", "internals" : { "DEF" : "Techmar 7709F5DE", "NAME" : "Techmar_7709F5DE" }, - "comment" : "Garden Lights remote control (ID 31,63 additionally)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "7709F5DE", + "state" : "Group_1_on" + }, + "rmsg" : "MU;P0=-972;P1=526;P2=-335;P3=-666;D=01213131312131313121212121312121313131313121312131313121313131312121212121312121313131313121313121212101213131312131313121212121312121313131313121312131313121313131312121212121312121313131313121313121212101213131312131313121212121312121313131313121312131;CP=1;R=44;O;", "tests" : [ { "attributes" : { @@ -1964,20 +1713,22 @@ }, "comment" : "#0" } - ], + ] + }, + { + "comment" : "Garden Lights remote control (ID 31,63 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P95#7709F5DE11EE0", + "internals" : { + "DEF" : "Techmar 7709F5DE", + "NAME" : "Techmar_7709F5DE" + }, "readings" : { - "deviceCode" : "7709F5DE", "LastAction" : "receive", - "state" : "Group_1_on" + "deviceCode" : "7709F5DE", + "state" : "Group_5_on" }, - "revision_entry" : "2021-03-26 10:00:41", - "dmsg" : "P95#7709F5DE09F60", - "rmsg" : "MU;P0=-972;P1=526;P2=-335;P3=-666;D=01213131312131313121212121312121313131313121312131313121313131312121212121312121313131313121313121212101213131312131313121212121312121313131313121312131313121313131312121212121312121313131313121313121212101213131312131313121212121312121313131313121312131;CP=1;R=44;O;", - "user" : "BlackcatSandy", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User" - }, - { + "rmsg" : "MU;P0=-651;P1=530;P2=-345;P3=-969;D=01212121312101010121010101212121210121210101010101210121010101210101010121212121012121210101010121010101212101312101010121010101212121210121210101010101210121010101210101010121212121012121210101010121010101212121312101010121010101212121210121210101010101;CP=1;R=24;O;", "tests" : [ { "attributes" : { @@ -1985,31 +1736,22 @@ }, "comment" : "#1" } - ], + ] + }, + { + "comment" : "Garden Lights remote control (ID 31,63 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P95#7709F5DE02FD0", "internals" : { "DEF" : "Techmar 7709F5DE", "NAME" : "Techmar_7709F5DE" }, - "comment" : "Garden Lights remote control (ID 31,63 additionally)", "readings" : { - "state" : "Group_5_on", "LastAction" : "receive", - "deviceCode" : "7709F5DE" - }, - "dmsg" : "P95#7709F5DE11EE0", - "revision_entry" : "2021-03-26 10:01:49", - "dispatch_repeats" : "1", - "rmsg" : "MU;P0=-651;P1=530;P2=-345;P3=-969;D=01212121312101010121010101212121210121210101010101210121010101210101010121212121012121210101010121010101212101312101010121010101212121210121210101010101210121010101210101010121212121012121210101010121010101212121312101010121010101212121210121210101010101;CP=1;R=24;O;", - "user" : "BlackcatSandy", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27" - }, - { - "readings" : { "deviceCode" : "7709F5DE", - "LastAction" : "receive", "state" : "Group_8_off" }, + "rmsg" : "MU;P0=538;P1=-329;P2=-653;P3=-964;D=01020301020202010202020101010102010102020202020102010202020102020202010101010101010201020202020202010202010301020202010202020101010102010102020202020102010202020102020202010101010101010201020202020202010201010301020202010202020101010102010102020202020102;CP=0;R=19;O;", "tests" : [ { "attributes" : { @@ -2017,60 +1759,51 @@ }, "comment" : "#2" } - ], - "comment" : "Garden Lights remote control (ID 31,63 additionally)", - "internals" : { - "NAME" : "Techmar_7709F5DE", - "DEF" : "Techmar 7709F5DE" - }, - "revision_entry" : "2021-03-26 09:59:28", - "dmsg" : "P95#7709F5DE02FD0", - "dispatch_repeats" : "1", - "rmsg" : "MU;P0=538;P1=-329;P2=-653;P3=-964;D=01020301020202010202020101010102010102020202020102010202020102020202010101010101010201020202020202010202010301020202010202020101010102010102020202020102010202020102020202010101010101010201020202020202010201010301020202010202020101010102010102020202020102;CP=0;R=19;O;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "BlackcatSandy" + ] } ], - "module" : "SD_UT" + "id" : "95", + "module" : "SD_UT", + "name" : "Techmar" }, { - "module" : "SD_UT", - "id" : "97", "data" : [ { - "rmsg" : "MU;P0=-294;P1=237;P2=5829;P3=-3887;P4=1001;P5=-523;P6=504;P7=-995;D=01010101010101010101010234545454545454545454545454545454545454545456767454567454545456745456745456745454523454545454545454545454545454545454545454545676745456745454545674545674545674545452345454545454545454545454545454545454545454567674545674545454567454;CP=4;R=45;O;", - "user" : "elektron-bbs", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "Momento" - } - } - ], "comment" : "remote control for wireless digital picture frame", + "dispatch_repeats" : "1", + "dmsg" : "P97#0000064248", "internals" : { "DEF" : "Momento 0000064", "NAME" : "Momento_0000064" }, "readings" : { - "deviceCode" : "0000064", "LastAction" : "receive", + "deviceCode" : "0000064", "state" : "play/pause" }, - "revision_entry" : "2021-03-26 09:57:02", - "dmsg" : "P97#0000064248", - "dispatch_repeats" : "1" + "rmsg" : "MU;P0=-294;P1=237;P2=5829;P3=-3887;P4=1001;P5=-523;P6=504;P7=-995;D=01010101010101010101010234545454545454545454545454545454545454545456767454567454545456745456745456745454523454545454545454545454545454545454545454545676745456745454545674545674545674545452345454545454545454545454545454545454545454567674545674545454567454;CP=4;R=45;O;", + "tests" : [ + { + "attributes" : { + "model" : "Momento" + }, + "comment" : "#0" + } + ] }, { + "comment" : "remote control for wireless digital picture frame", + "dmsg" : "P97#0000064147", + "internals" : { + "DEF" : "Momento 0000064", + "NAME" : "Momento_0000064" + }, "readings" : { "LastAction" : "receive", - "state" : "power", - "deviceCode" : "0000064" + "deviceCode" : "0000064", + "state" : "power" }, + "rmsg" : "MU;P0=-998;P1=-273;P2=256;P3=5830;P4=-3906;P5=991;P6=-527;P7=508;D=12121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121345656565656565656565656565656565656565656567070565670565656565670567056565670707034565656565656565656565656565656565656565656707056567;CP=2;R=40;O;", "tests" : [ { "attributes" : { @@ -2078,64 +1811,50 @@ }, "comment" : "#1" } - ], - "internals" : { - "DEF" : "Momento 0000064", - "NAME" : "Momento_0000064" - }, - "comment" : "remote control for wireless digital picture frame", - "dmsg" : "P97#0000064147", - "revision_entry" : "2021-03-26 09:55:38", - "rmsg" : "MU;P0=-998;P1=-273;P2=256;P3=5830;P4=-3906;P5=991;P6=-527;P7=508;D=12121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121345656565656565656565656565656565656565656567070565670565656565670567056565670707034565656565656565656565656565656565656565656707056567;CP=2;R=40;O;", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "elektron-bbs" + ] }, { + "comment" : "remote control for wireless digital picture frame", "dmsg" : "P97#000006444A", - "revision_entry" : "2021-03-26 09:54:27", "internals" : { - "NAME" : "Momento_0000064", - "DEF" : "Momento 0000064" + "DEF" : "Momento 0000064", + "NAME" : "Momento_0000064" }, - "comment" : "remote control for wireless digital picture frame", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0000064", + "state" : "up" + }, + "rmsg" : "MU;P0=-1005;P1=-272;P2=258;P3=5856;P4=-3902;P5=1001;P6=-520;P7=508;D=0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121213456565656565656565656565656565656565656565670705656705656567056565670565670567056345656565656565656565656565656565656565656567070565;CP=2;R=63;O;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "Momento" - } + }, + "comment" : "#2" } - ], - "readings" : { - "LastAction" : "receive", - "state" : "up", - "deviceCode" : "0000064" - }, - "user" : "elektron-bbs", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=-1005;P1=-272;P2=258;P3=5856;P4=-3902;P5=1001;P6=-520;P7=508;D=0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121213456565656565656565656565656565656565656565670705656705656567056565670565670567056345656565656565656565656565656565656565656567070565;CP=2;R=63;O;" + ] } ], + "id" : "97", + "module" : "SD_UT", "name" : "Momento" }, { - "name" : "NAVARIS 44344.04", - "module" : "SD_UT", "data" : [ { - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27", - "user" : "DavidKing123456", - "rmsg" : "MU;P0=-302;P1=180;P2=294;P3=-208;P4=419;P5=-423;D=01023101010101023232310102323451010231010101023101010231010101010232323101023234510102310101010231010102310101010102323231010232345101023101010102310101023101010101023232310102323451010231010101023101010231010101010232323101023234510102310101010231010102;CP=1;R=36;O;", - "revision_entry" : "2021-03-25 14:57:21", - "dmsg" : "P99#211073", + "comment" : "NAVARIS touch light switch Model No.: 44344.04", "dispatch_repeats" : "3", + "dmsg" : "P99#211073", + "internals" : { + "DEF" : "Navaris 211073", + "NAME" : "Navaris_211073" + }, "readings" : { - "state" : "receive", - "LastAction" : "receive" + "LastAction" : "receive", + "state" : "receive" }, + "rmsg" : "MU;P0=-302;P1=180;P2=294;P3=-208;P4=419;P5=-423;D=01023101010101023232310102323451010231010101023101010231010101010232323101023234510102310101010231010102310101010102323231010232345101023101010102310101023101010101023232310102323451010231010101023101010231010101010232323101023234510102310101010231010102;CP=1;R=36;O;", "tests" : [ { "attributes" : { @@ -2143,37 +1862,29 @@ }, "comment" : "#0" } - ], - "internals" : { - "DEF" : "Navaris 211073", - "NAME" : "Navaris_211073" - }, - "comment" : "NAVARIS touch light switch Model No.: 44344.04" + ] } ], - "id" : "99" + "id" : "99", + "module" : "SD_UT", + "name" : "NAVARIS 44344.04" }, { - "name" : "TR60C-1", "data" : [ { - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "phoenix-anasazi", - "rmsg" : "MU;P0=18280;P1=-737;P2=419;P3=-331;P4=799;P5=-9574;P6=-7080;D=012121234343434341212121212121252121212123434343434121212121212125212121212343434343412121212121212521212121234343434341212121212121252121212123434343434121212121212126;CP=2;R=2;", - "dmsg" : "P104#0F80", - "revision_entry" : "2021-03-25 14:46:28", + "comment" : "Remote control 77841 for example Westinghouse Bendan (deviceCode 0)", "dispatch_repeats" : "3", + "dmsg" : "P104#0F80", + "internals" : { + "DEF" : "TR60C1 0", + "NAME" : "TR60C1_0" + }, "readings" : { - "state" : "light_off_fan_off", "LastAction" : "receive", - "deviceCode" : "0" - }, - "internals" : { - "NAME" : "TR60C1_0", - "DEF" : "TR60C1 0" + "deviceCode" : "0", + "state" : "light_off_fan_off" }, - "comment" : "Remote control 77841 for example Westinghouse Bendan (deviceCode 0)", + "rmsg" : "MU;P0=18280;P1=-737;P2=419;P3=-331;P4=799;P5=-9574;P6=-7080;D=012121234343434341212121212121252121212123434343434121212121212125212121212343434343412121212121212521212121234343434341212121212121252121212123434343434121212121212126;CP=2;R=2;", "tests" : [ { "attributes" : { @@ -2184,14 +1895,19 @@ ] }, { + "comment" : "Remote control 77841 for example Westinghouse Bendan (deviceCode 9)", "dispatch_repeats" : "4", - "revision_entry" : "2021-03-25 14:48:27", "dmsg" : "P104#9780", - "comment" : "Remote control 77841 for example Westinghouse Bendan (deviceCode 9)", "internals" : { "DEF" : "TR60C1 9", "NAME" : "TR60C1_9" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "9", + "state" : "light_off_fan_4" + }, + "rmsg" : "MU;P0=14896;P1=-751;P2=394;P3=-370;P4=768;P5=-9572;P6=-21472;D=0121234123434343412121212121212523412123412343434341212121212121252341212341234343434121212121212125234121234123434343412121212121212523412123412343434341212121212121252341212341234343434121212121212126;CP=2;R=4;", "tests" : [ { "attributes" : { @@ -2199,89 +1915,75 @@ }, "comment" : "#1" } - ], - "readings" : { - "deviceCode" : "9", - "state" : "light_off_fan_4", - "LastAction" : "receive" - }, - "user" : "phoenix-anasazi", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "rmsg" : "MU;P0=14896;P1=-751;P2=394;P3=-370;P4=768;P5=-9572;P6=-21472;D=0121234123434343412121212121212523412123412343434341212121212121252341212341234343434121212121212125234121234123434343412121212121212523412123412343434341212121212121252341212341234343434121212121212126;CP=2;R=4;" + ] }, { - "readings" : { - "deviceCode" : "B", - "LastAction" : "receive", - "state" : "light_on_fan_2" - }, + "comment" : "Remote control 77841 for example Westinghouse Bendan (deviceCode B)", + "dispatch_repeats" : "4", + "dmsg" : "P104#B38F", "internals" : { "DEF" : "TR60C1 B", "NAME" : "TR60C1_B" }, - "comment" : "Remote control 77841 for example Westinghouse Bendan (deviceCode B)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "B", + "state" : "light_on_fan_2" + }, + "rmsg" : "MU;P0=-96;P1=152;P2=-753;P3=389;P4=-374;P5=769;P6=-9566;P7=-19920;D=012345454523232345454545634523454523234545452323234545454563452345452323454545232323454545456345234545232345454523232345454545634523454523234545452323234545454563452345452323454545232323454545457;CP=3;R=1;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "TR60C1" - } + }, + "comment" : "#2" } - ], - "revision_entry" : "2021-03-25 14:50:18", - "dmsg" : "P104#B38F", - "dispatch_repeats" : "4", - "rmsg" : "MU;P0=-96;P1=152;P2=-753;P3=389;P4=-374;P5=769;P6=-9566;P7=-19920;D=012345454523232345454545634523454523234545452323234545454563452345452323454545232323454545456345234545232345454523232345454545634523454523234545452323234545454563452345452323454545232323454545457;CP=3;R=1;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "phoenix-anasazi" + ] } ], "id" : "104", - "module" : "SD_UT" + "module" : "SD_UT", + "name" : "TR60C-1" }, { - "id" : "105", "data" : [ { - "tests" : [ - { - "attributes" : { - "model" : "BF_301" - }, - "comment" : "#0" - } - ], "comment" : "Remote control from Shenzhen BOFU Mechanic & Electronic Co., Ltd. (ID 40 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P105#FAD08883A3", "internals" : { - "NAME" : "BF_301_FAD0", - "DEF" : "BF_301 FAD0" + "DEF" : "BF_301 FAD0", + "NAME" : "BF_301_FAD0" }, "readings" : { - "state" : "down", "LastAction" : "receive", - "deviceCode" : "FAD0" + "deviceCode" : "FAD0", + "state" : "down" }, - "revision_entry" : "2021-03-25 14:43:57", - "dispatch_repeats" : "1", - "dmsg" : "P105#FAD08883A3", "rmsg" : "MU;P0=-697;P1=5629;P2=291;P3=3952;P4=-2459;P5=1644;P6=-298;P7=689;D=34567676767676207620767620762020202076202020762020207620202020207676762076202020767614567676767676207620767620762020202076202020762020207620202020207676762076202020767614567676767676207620767620762020202076202020762020207620202020207676762076202020767614;CP=2;R=41;O;", - "user" : "stsirakidis", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "minProtocolVersion" : "1.27" + "tests" : [ + { + "attributes" : { + "model" : "BF_301" + }, + "comment" : "#0" + } + ] }, { - "readings" : { - "deviceCode" : "FAD0", - "state" : "stop", - "LastAction" : "receive" - }, "comment" : "Remote control from Shenzhen BOFU Mechanic & Electronic Co., Ltd. (ID 40 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P105#FAD08A83A1", "internals" : { "DEF" : "BF_301 FAD0", "NAME" : "BF_301_FAD0" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "FAD0", + "state" : "stop" + }, + "rmsg" : "MU;P0=5630;P1=3968;P2=-2458;P3=1642;P4=-285;P5=690;P6=282;P7=-704;D=12345454545454675467545467546767676754676767546754675467676767675454546754676767675402345454545454675467545467546767676754676767546754675467676767675454546754676767675402345454545454675467545467546767676754676767546754675467676767675454546754676767675402;CP=6;R=47;O;", "tests" : [ { "attributes" : { @@ -2289,33 +1991,22 @@ }, "comment" : "#1" } - ], - "revision_entry" : "2021-03-25 14:42:03", - "dmsg" : "P105#FAD08A83A1", - "dispatch_repeats" : "1", - "rmsg" : "MU;P0=5630;P1=3968;P2=-2458;P3=1642;P4=-285;P5=690;P6=282;P7=-704;D=12345454545454675467545467546767676754676767546754675467676767675454546754676767675402345454545454675467545467546767676754676767546754675467676767675454546754676767675402345454545454675467545467546767676754676767546754675467676767675454546754676767675402;CP=6;R=47;O;", - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "stsirakidis" + ] }, { - "minProtocolVersion" : "1.27", - "revision_modul" : "14_SD_UT.pm 0 2020-12-03 22:15:57Z HomeAuto_User", - "user" : "stsirakidis", - "rmsg" : "MU;P0=-500;P1=5553;P2=-2462;P3=1644;P4=-299;P5=679;P6=298;P7=-687;D=01234545454545467546754546754676767675467676767675454546767676767545454675467546767671234545454545467546754546754676767675467676767675454546767676767545454675467546767671234545454545467546754546754676767675467676767675454546767676767545454675467546767671;CP=6;R=48;O;", - "revision_entry" : "2021-03-25 14:40:32", + "comment" : "Remote control from Shenzhen BOFU Mechanic & Electronic Co., Ltd. (ID 40 additionally)", "dispatch_repeats" : "2", "dmsg" : "P105#FAD08383A8", - "readings" : { - "deviceCode" : "FAD0", - "LastAction" : "receive", - "state" : "up" - }, - "comment" : "Remote control from Shenzhen BOFU Mechanic & Electronic Co., Ltd. (ID 40 additionally)", "internals" : { "DEF" : "BF_301 FAD0", "NAME" : "BF_301_FAD0" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "FAD0", + "state" : "up" + }, + "rmsg" : "MU;P0=-500;P1=5553;P2=-2462;P3=1644;P4=-299;P5=679;P6=298;P7=-687;D=01234545454545467546754546754676767675467676767675454546767676767545454675467546767671234545454545467546754546754676767675467676767675454546767676767545454675467546767671234545454545467546754546754676767675467676767675454546767676767545454675467546767671;CP=6;R=48;O;", "tests" : [ { "attributes" : { @@ -2326,106 +2017,100 @@ ] } ], + "id" : "105", "module" : "SD_UT", "name" : "BF-301" }, { - "module" : "SD_UT", - "id" : "114", "data" : [ { - "user" : "Jake", - "minProtocolVersion" : "1.32", - "revision_modul" : "14_SD_UT.pm 0 2021-08-08 16:56:40Z HomeAutoUser", - "rmsg" : "MU;P0=311;P1=585;P2=-779;P3=1255;P4=-1445;P5=-23617;P7=-5646;CP=1;R=230;D=12323234141414141514123414123232341414141415141234141232323414141414151412341412323234141414141514123414123232341414141415141234141232323414141414151412341412323234141414141517141232323414141414150;p;", - "revision_entry" : "2021-08-09 21:20:26", - "dmsg" : "P114#B1F", + "comment" : "Remote control, Button off (example Well-Light sales)", "dispatch_repeats" : "5", + "dmsg" : "P114#B1F", "internals" : { - "NAME" : "TR401_0_2", - "DEF" : "TR401 0_2" + "DEF" : "TR401 0_2", + "NAME" : "TR401_0_2" }, - "comment" : "Remote control, Button off (example Well-Light sales)", + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0", + "state" : "off" + }, + "rmsg" : "MU;P0=311;P1=585;P2=-779;P3=1255;P4=-1445;P5=-23617;P7=-5646;CP=1;R=230;D=12323234141414141514123414123232341414141415141234141232323414141414151412341412323234141414141514123414123232341414141415141234141232323414141414151412341412323234141414141517141232323414141414150;p;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "TR401" - } + }, + "comment" : "#0" } - ], - "readings" : { - "deviceCode" : "0", - "state" : "off", - "LastAction" : "receive" - } + ] }, { + "comment" : "Remote control, Button on (example Well-Light sales)", "dispatch_repeats" : "2", - "revision_entry" : "2021-08-09 21:22:56", "dmsg" : "P114#31F", - "comment" : "Remote control, Button on (example Well-Light sales)", "internals" : { - "NAME" : "TR401_0_2", - "DEF" : "TR401 0_2" + "DEF" : "TR401 0_2", + "NAME" : "TR401_0_2" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0", + "state" : "on" + }, + "rmsg" : "MU;P0=-1426;P1=599;P2=-23225;P3=-748;P4=1281;P5=372;P6=111;P7=268;CP=1;R=235;D=0121343401013434340101010101252621343401013434340101010101252705012134340101343434010101010125;p;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "TR401" - } + }, + "comment" : "#1" } - ], - "readings" : { - "deviceCode" : "0", - "LastAction" : "receive", - "state" : "on" - }, - "user" : "Jake", - "minProtocolVersion" : "1.32", - "revision_modul" : "14_SD_UT.pm 0 2021-08-08 16:56:40Z HomeAutoUser", - "rmsg" : "MU;P0=-1426;P1=599;P2=-23225;P3=-748;P4=1281;P5=372;P6=111;P7=268;CP=1;R=235;D=0121343401013434340101010101252621343401013434340101010101252705012134340101343434010101010125;p;" + ] } ], + "id" : "114", + "module" : "SD_UT", "name" : "TR401" }, { - "name" : "Meikee", - "id" : "118", "data" : [ { + "comment" : "Remote controls for Meikee LED lights e.g. RGB LED Wallwasher Light and Solar Flood Light", + "dmsg" : "P118#20D302", + "internals" : { + "DEF" : "Meikee_24 20D3", + "NAME" : "Meikee_24_20D3" + }, "readings" : { - "state" : "on", "LastAction" : "receive", - "deviceCode" : "20D3" + "deviceCode" : "20D3", + "state" : "on" }, + "rmsg" : "MU;P0=506;P1=-1015;P2=1008;P3=-523;P4=-12696;D=01012301040101230101010101232301230101232301010101010123010;CP=0;R=49;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "Meikee_24" - } + }, + "comment" : "#0" } - ], - "internals" : { - "DEF" : "Meikee_24 20D3", - "NAME" : "Meikee_24_20D3" - }, - "comment" : "Remote controls for Meikee LED lights e.g. RGB LED Wallwasher Light and Solar Flood Light", - "revision_entry" : "2022-03-06 13:10:07", - "dmsg" : "P118#20D302", - "rmsg" : "MU;P0=506;P1=-1015;P2=1008;P3=-523;P4=-12696;D=01012301040101230101010101232301230101232301010101010123010;CP=0;R=49;", - "revision_modul" : "14_SD_UT.pm 0 2022-01-23 16:28:56Z sidey79", - "minProtocolVersion" : "1.44", - "user" : "elektron-bbs" + ] }, { "comment" : "Remote controls for Meikee LED lights e.g. RGB LED Wallwasher Light and Solar Flood Light", + "dmsg" : "P118#20D301", "internals" : { "DEF" : "Meikee_24 20D3", "NAME" : "Meikee_24_20D3" }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "20D3", + "state" : "off" + }, + "rmsg" : "MU;P0=-516;P1=518;P2=-1015;P3=1000;P4=-12712;D=01230121230301212121212121230141212301212121212303012301212303012121212121212301;CP=1;R=35;", "tests" : [ { "attributes" : { @@ -2433,166 +2118,137 @@ }, "comment" : "#1" } - ], - "readings" : { - "state" : "off", - "LastAction" : "receive", - "deviceCode" : "20D3" - }, - "revision_entry" : "2022-03-06 13:11:19", - "dmsg" : "P118#20D301", - "rmsg" : "MU;P0=-516;P1=518;P2=-1015;P3=1000;P4=-12712;D=01230121230301212121212121230141212301212121212303012301212303012121212121212301;CP=1;R=35;", - "user" : "elektron-bbs", - "minProtocolVersion" : "1.44", - "revision_modul" : "14_SD_UT.pm 0 2022-01-23 16:28:56Z sidey79" + ] }, { - "rmsg" : "MU;P0=-509;P1=513;P2=-999;P3=1027;P4=-12704;D=01230121230301212121212121212141212301212121212303012301212303012121212121212121;CP=1;R=77;", - "revision_modul" : "14_SD_UT.pm 0 2022-01-23 16:28:56Z sidey79", - "minProtocolVersion" : "1.44", - "user" : "elektron-bbs", + "comment" : "Remote controls for Meikee LED lights e.g. RGB LED Wallwasher Light and Solar Flood Light", + "dmsg" : "P118#20D300", + "internals" : { + "DEF" : "Meikee_24 20D3", + "NAME" : "Meikee_24_20D3" + }, "readings" : { + "LastAction" : "receive", "deviceCode" : "20D3", - "state" : "learn", - "LastAction" : "receive" + "state" : "learn" }, + "rmsg" : "MU;P0=-509;P1=513;P2=-999;P3=1027;P4=-12704;D=01230121230301212121212121212141212301212121212303012301212303012121212121212121;CP=1;R=77;", "tests" : [ { - "comment" : "#2", "attributes" : { "model" : "Meikee_24" - } + }, + "comment" : "#2" } - ], - "internals" : { - "DEF" : "Meikee_24 20D3", - "NAME" : "Meikee_24_20D3" - }, - "comment" : "Remote controls for Meikee LED lights e.g. RGB LED Wallwasher Light and Solar Flood Light", - "revision_entry" : "2022-03-06 13:12:25", - "dmsg" : "P118#20D300" + ] } ], - "module" : "SD_UT" + "id" : "118", + "module" : "SD_UT", + "name" : "Meikee" }, { - "name" : "Busch-Transcontrol HF", - "id" : "121", "data" : [ { + "comment" : "remote control 6861", + "dmsg" : "P121#03DC7E", + "internals" : { + "DEF" : "TC6861 3DC_1", + "NAME" : "TC6861_3DC_1" + }, "readings" : { + "LastAction" : "receive", "deviceCode" : "3DC", - "state" : "off", - "LastAction" : "receive" + "state" : "off" }, + "rmsg" : "MU;P0=28479;P1=-692;P2=260;P3=574;P4=-371;D=0121212121212134343434213434342121213434343434342;CP=2;R=41;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "TC6861" - } + }, + "comment" : "#0" } - ], + ] + }, + { "comment" : "remote control 6861", + "dmsg" : "P121#33DC7E", "internals" : { "DEF" : "TC6861 3DC_1", "NAME" : "TC6861_3DC_1" }, - "revision_entry" : "2022-06-14 09:14:05", - "dmsg" : "P121#03DC7E", - "rmsg" : "MU;P0=28479;P1=-692;P2=260;P3=574;P4=-371;D=0121212121212134343434213434342121213434343434342;CP=2;R=41;", - "revision_modul" : "unknown", - "minProtocolVersion" : "1.46", - "user" : "elektron-bbs" - }, - { - "dmsg" : "P121#33DC7E", - "revision_entry" : "2022-06-14 09:24:03", "readings" : { + "LastAction" : "receive", "deviceCode" : "3DC", - "state" : "on", - "LastAction" : "receive" + "state" : "on" }, + "rmsg" : "MU;P0=4372;P1=-689;P2=254;P3=575;P4=-368;D=0121213434212134343434213434342121213434343434342;CP=2;R=59;", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "TC6861" - } + }, + "comment" : "#1" } - ], - "comment" : "remote control 6861", - "internals" : { - "DEF" : "TC6861 3DC_1", - "NAME" : "TC6861_3DC_1" - }, - "revision_modul" : "unknown", - "minProtocolVersion" : "1.46", - "user" : "elektron-bbs", - "rmsg" : "MU;P0=4372;P1=-689;P2=254;P3=575;P4=-368;D=0121213434212134343434213434342121213434343434342;CP=2;R=59;" + ] } ], - "module" : "SD_UT" + "id" : "121", + "module" : "SD_UT", + "name" : "Busch-Transcontrol HF" }, { - "data" : [ - { - "comment" : "Remote control DC-1961-TG with 12 buttons for ceiling fan with lighting", - "dmsg" : "P20#1846A865", - "internals" : { - "DEF" : "DC_1961_TG 1846", - "NAME" : "DC_1961_TG_1846" - }, - "minProtocolVersion" : "1.48", - "readings" : { - "LastAction" : "receive", - "deviceCode" : "1846", - "rollingCode" : "6", - "state" : "light_on_off" - }, - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "DC_1961_TG" - } - } - ], - "revision_entry" : "2022-12-10 11:35:35", - "revision_modul" : "14_SD_UT.pm 0 2022-12-14 19:27:19Z elektron-bbs", - "rmsg" : "MS;P1=291;P2=-753;P3=762;P4=-249;P5=-8312;D=151212123434121212123412121234341234123412341212121234341212341234;CP=1;SP=5;R=224;O;m2;", - "user" : "Skusi" - }, - { - "comment" : "Remote control DC-1961-TG with 12 buttons for ceiling fan with lighting", - "dmsg" : "P20#1846A77B", - "internals" : { - "DEF" : "DC_1961_TG 1846", - "NAME" : "DC_1961_TG_1846" - }, - "minProtocolVersion" : "1.48", - "readings" : { - "LastAction" : "receive", - "deviceCode" : "1846", - "rollingCode" : "7", - "state" : "fan_off" - }, - "tests" : [ - { - "comment" : "#1", - "attributes" : { - "model" : "DC_1961_TG" - } - } - ], - "revision_entry" : "2022-12-10 11:37:49", - "revision_modul" : "14_SD_UT.pm 0 2022-12-14 19:27:19Z elektron-bbs", - "rmsg" : "MS;P1=-760;P2=747;P3=-282;P4=253;P5=-8335;D=454141412323414141412341414123234123412341412323234123232323412323;CP=4;SP=5;R=27;O;m2;", - "user" : "Skusi" - } + "data" : [ + { + "comment" : "Remote control DC-1961-TG with 12 buttons for ceiling fan with lighting", + "dmsg" : "P20#1846A865", + "internals" : { + "DEF" : "DC_1961_TG 1846", + "NAME" : "DC_1961_TG_1846" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "1846", + "rollingCode" : "6", + "state" : "light_on_off" + }, + "rmsg" : "MS;P1=291;P2=-753;P3=762;P4=-249;P5=-8312;D=151212123434121212123412121234341234123412341212121234341212341234;CP=1;SP=5;R=224;O;m2;", + "tests" : [ + { + "attributes" : { + "model" : "DC_1961_TG" + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Remote control DC-1961-TG with 12 buttons for ceiling fan with lighting", + "dmsg" : "P20#1846A77B", + "internals" : { + "DEF" : "DC_1961_TG 1846", + "NAME" : "DC_1961_TG_1846" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "1846", + "rollingCode" : "7", + "state" : "fan_off" + }, + "rmsg" : "MS;P1=-760;P2=747;P3=-282;P4=253;P5=-8335;D=454141412323414141412341414123234123412341412323234123232323412323;CP=4;SP=5;R=27;O;m2;", + "tests" : [ + { + "attributes" : { + "model" : "DC_1961_TG" + }, + "comment" : "#1" + } + ] + } ], - "id" : "20", - "module" : "SD_UT", - "name" : "DC_1961_TG_1846" + "id" : "20", + "module" : "SD_UT", + "name" : "DC_1961_TG_1846" } ] diff --git a/t/FHEM/14_SD_WS/testData.json b/t/FHEM/14_SD_WS/testData.json index d02a8a585..8be9b40c0 100644 --- a/t/FHEM/14_SD_WS/testData.json +++ b/t/FHEM/14_SD_WS/testData.json @@ -8,7 +8,6 @@ "DEF" : "SD_WS_27_TH_2", "NAME" : "SD_WS_27_TH_2" }, - "minProtocolVersion" : "1.27", "readings" : { "batteryState" : "ok", "channel" : "2", @@ -17,15 +16,12 @@ "temperature" : "15.5", "type" : "EFTH-800, EFS-3110A" }, - "revision_entry" : "2021-03-24 11:04:05", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MU;P0=-224;P1=258;P2=-487;P3=505;P4=-4884;P5=743;P6=-718;D=0121212301212303030301212123012123012123030123030121212121230121230121212121212121230301214565656561212123012121230121230303030121212301212301212303012303012121212123012123012121212121212123030121;CP=1;R=53;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "EuroChron weatherstation EFTH-800 / Channel 3 (ID 61 additionally)", @@ -34,7 +30,6 @@ "DEF" : "SD_WS_27_TH_3", "NAME" : "SD_WS_27_TH_3" }, - "minProtocolVersion" : "1.27", "readings" : { "batteryState" : "ok", "channel" : "3", @@ -43,15 +38,12 @@ "temperature" : "3.8", "type" : "EFTH-800, EFS-3110A" }, - "revision_entry" : "2021-03-24 11:05:38", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MU;P0=-241;P1=251;P2=-470;P3=500;P4=-4868;P5=743;P6=-718;D=012121212303030123012301212123012121212301212303012121212121230303012303012123030303012123014565656561212301212121230303012301230121212301212121230121230301212121212123030301230301212303030301212301;CP=1;R=23;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "EuroChron weatherstation EFTH-800 / Channel 3 (ID 61 additionally)", @@ -60,7 +52,6 @@ "DEF" : "SD_WS_27_TH_3", "NAME" : "SD_WS_27_TH_3" }, - "minProtocolVersion" : "1.27", "readings" : { "batteryState" : "ok", "channel" : "3", @@ -69,15 +60,12 @@ "temperature" : "5.3", "type" : "EFTH-800, EFS-3110A" }, - "revision_entry" : "2021-03-24 11:09:24", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MU;P0=-240;P1=253;P2=-487;P3=489;P4=-4860;P5=746;P6=-725;D=012121212303030123012301212123012121212303012301230121212121230303012301230303012303030301214565656561212301212121230303012301230121212301212121230301230123012121212123030301230123030301230303030121;CP=1;R=19;", "tests" : [ { - "comment" : "Test #2" + "comment" : "#2" } - ], - "user" : "elektron-bbs" + ] } ], "id" : "27", @@ -93,7 +81,6 @@ "DEF" : "SD_WS_115_0", "NAME" : "SD_WS_115_0" }, - "minProtocolVersion" : "1.48", "readings" : { "batteryChanged" : "1", "batteryState" : "ok", @@ -108,22 +95,19 @@ "windGust" : "0", "windSpeed" : "0" }, + "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", "tests" : [ { - "comment" : "#1", + "comment" : "#0", + "returns" : { + "ParseFn" : "" + }, "setreadings" : { "humidity" : "92", "temperature" : "-1.5" - }, - "returns" : { - "ParseFn" : "" - } + } } - ], - "revision_entry" : "2022-11-20 20:27:05", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", - "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", - "user" : "elektron-bbs" + ] }, { "comment" : "BRESSER 6-in-1 temp diff ok, but hum diff not ok, with attr max-deviation-temp", @@ -132,7 +116,6 @@ "DEF" : "SD_WS_115_0", "NAME" : "SD_WS_115_0" }, - "minProtocolVersion" : "1.48", "readings" : { "batteryChanged" : "1", "batteryState" : "ok", @@ -147,25 +130,22 @@ "windGust" : "0", "windSpeed" : "0" }, - "tests": [ + "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", + "tests" : [ { - "comment" : "#2", - "returns" : { - "ParseFn" : "" - }, "attributes" : { "max-deviation-temp" : "50" }, + "comment" : "#1", + "returns" : { + "ParseFn" : "" + }, "setreadings" : { "humidity" : "92", "temperature" : "-1.5" } } - ], - "revision_entry" : "2022-11-20 20:27:05", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", - "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", - "user" : "elektron-bbs" + ] }, { "comment" : "BRESSER 6-in-1 hum diff ok, with attr max-deviation-hum", @@ -174,7 +154,6 @@ "DEF" : "SD_WS_115_0", "NAME" : "SD_WS_115_0" }, - "minProtocolVersion" : "1.48", "readings" : { "batteryChanged" : "1", "batteryState" : "ok", @@ -189,22 +168,19 @@ "windGust" : "0", "windSpeed" : "0" }, - "revision_entry" : "2022-11-20 20:27:05", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", "tests" : [ { - "comment" : "#3", "attributes" : { "max-deviation-hum" : "65" }, + "comment" : "#2", "setreadings" : { "humidity" : "32", "temperature" : "-7.4" } } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "BRESSER 6-in-1 temp diff ok, hum diff ok, without attr", @@ -213,7 +189,6 @@ "DEF" : "SD_WS_115_0", "NAME" : "SD_WS_115_0" }, - "minProtocolVersion" : "1.48", "readings" : { "batteryChanged" : "1", "batteryState" : "ok", @@ -228,19 +203,16 @@ "windGust" : "0", "windSpeed" : "0" }, - "revision_entry" : "2022-11-20 20:27:05", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", - "test": [ + "tests" : [ { - "comment" : "#4", + "comment" : "#3", "setreadings" : { "humidity" : "96", "temperature" : "-7.6" } } - ], - "user" : "elektron-bbs" + ] } ], "id" : "115", @@ -248,50 +220,56 @@ "name" : "BRESSER 6-in-1" }, { - "name" : "Conrad S522", "data" : [ { "comment" : "(ID 33.2,51,53 additionally)", - "minProtocolVersion" : "1.27", - "rmsg" : "MS;P1=-8035;P2=504;P3=-2027;P4=-3945;D=21232323232324232423232323232323242424232424242324242323232323232323232323232324242423;CP=2;SP=1;R=19;O;m0;", "dmsg" : "W33#0501DD80038", "internals" : { "DEF" : "SD_WS_33_T_1", "NAME" : "SD_WS_33_T_1" }, - "tests" : [ - { - "comment" : "#0", - "attributes" : { - "model" : "S522" - } - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-12-07 21:05:00", "readings" : { - "state" : "T: 24.2", "channel" : "1", + "state" : "T: 24.2", "temperature" : "24.2", "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6" }, - "user" : "HomeAuto_User" + "rmsg" : "MS;P1=-8035;P2=504;P3=-2027;P4=-3945;D=21232323232324232423232323232323242424232424242324242323232323232323232323232324242423;CP=2;SP=1;R=19;O;m0;", + "tests" : [ + { + "attributes" : { + "model" : "S522" + }, + "comment" : "#0" + } + ] } ], "id" : "33", - "module" : "SD_WS" + "module" : "SD_WS", + "name" : "Conrad S522" }, { - "name" : "TX-EZ6", - "module" : "SD_WS", "data" : [ { + "comment" : "fuer Wetterstation TZS First Austria", "dmsg" : "W33#17412998A4C", - "rmsg" : "MS;P0=-3788;P1=-7610;P4=621;P5=-1895;D=41454545404540404045404545454545404545404540454540404545404045454540454045454045454040;CP=4;SP=1;O;", "internals" : { - "NAME" : "SD_WS_33_TH_1", - "DEF" : "SD_WS_33_TH_1" + "DEF" : "SD_WS_33_TH_1", + "NAME" : "SD_WS_33_TH_1" + }, + "readings" : { + "batteryState" : "ok", + "channel" : "1", + "humidity" : "38", + "humidityTrend" : "rising", + "sendmode" : "manual", + "state" : "T: 26.7 H: 38", + "temperature" : "26.7", + "temperatureTrend" : "consistent", + "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6" }, + "rmsg" : "MS;P0=-3788;P1=-7610;P4=621;P5=-1895;D=41454545404540404045404545454545404545404540454540404545404045454540454045454045454040;CP=4;SP=1;O;", "tests" : [ { "attributes" : { @@ -299,89 +277,64 @@ }, "comment" : "#0" } - ], - "comment" : "fuer Wetterstation TZS First Austria", - "minProtocolVersion" : "1.48", - "user" : "elektron-bbs", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "readings" : { - "channel" : "1", - "temperature" : "26.7", - "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6", - "batteryState" : "ok", - "state" : "T: 26.7 H: 38", - "humidity" : "38", - "temperatureTrend" : "consistent", - "sendmode" : "manual", - "humidityTrend" : "rising" - }, - "revision_entry" : "2022-11-21 20:35:39" + ] } ], - "id" : "33" + "id" : "33", + "module" : "SD_WS", + "name" : "TX-EZ6" }, { - "name" : "renkforce E0001PA", - "module" : "SD_WS", "data" : [ { - "user" : "HomeAuto_User", + "comment" : "Conrad (ID 33.2,51,53 additionally)", + "dmsg" : "W33#26C6F570804", + "internals" : { + "DEF" : "SD_WS_33_TH_2", + "NAME" : "SD_WS_33_TH_2" + }, "readings" : { "batteryState" : "ok", - "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6", - "temperature" : "15.5", "channel" : "2", - "state" : "T: 15.5 H: 44", "humidity" : "44", - "sendmode" : "auto" + "sendmode" : "auto", + "state" : "T: 15.5 H: 44", + "temperature" : "15.5", + "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6" }, - "revision_entry" : "2021-03-24 12:01:11", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", + "rmsg" : "MS;P0=-7990;P1=485;P3=-2061;P4=-4060;D=10131314131314141314141313131414131414141413141314131414141313131314131313131313131314;CP=1;SP=0;R=4;O;", "tests" : [ { - "comment" : "#0", "attributes" : { "model" : "E0001PA" - } + }, + "comment" : "#0" } - ], - "dmsg" : "W33#26C6F570804", - "rmsg" : "MS;P0=-7990;P1=485;P3=-2061;P4=-4060;D=10131314131314141314141313131414131414141413141314131414141313131314131313131313131314;CP=1;SP=0;R=4;O;", - "internals" : { - "NAME" : "SD_WS_33_TH_2", - "DEF" : "SD_WS_33_TH_2" - }, - "minProtocolVersion" : "1.27", - "comment" : "Conrad (ID 33.2,51,53 additionally)" + ] } ], - "id" : "33" + "id" : "33", + "module" : "SD_WS", + "name" : "renkforce E0001PA" }, { - "name" : "TFA 30.3200", - "module" : "SD_WS", - "id" : "33.1", "data" : [ { - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "readings" : { - "batteryState" : "ok", - "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6", - "channel" : "1", - "temperature" : "18.8", - "state" : "T: 18.8 H: 53", - "humidity" : "53" - }, - "revision_entry" : "2021-03-24 11:50:47", - "user" : "cxxcoder", "comment" : "Thermo-hygro sensor for base station 35.1126 (ID 53 additionally)", - "minProtocolVersion" : "1.27", + "dmsg" : "W33#14C1C594C0C", "internals" : { "DEF" : "SD_WS_33_TH_1", "NAME" : "SD_WS_33_TH_1" }, + "readings" : { + "batteryState" : "ok", + "channel" : "1", + "humidity" : "53", + "state" : "T: 18.8 H: 53", + "temperature" : "18.8", + "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6" + }, "rmsg" : "MS;P1=-7796;P2=745;P3=-1976;P4=-3929;D=21232323242324232324242323232323242424232323242324242323242324232324242323232323232424;CP=2;SP=1;R=30;O;m2;", - "dmsg" : "W33#14C1C594C0C", "tests" : [ { "attributes" : { @@ -391,270 +344,240 @@ } ] } - ] + ], + "id" : "33.1", + "module" : "SD_WS", + "name" : "TFA 30.3200" }, { - "module" : "SD_WS", "data" : [ { - "minProtocolVersion" : "1.27", "comment" : "(ID 0.3 additionally)", - "tests" : [ - { - "attributes" : { - "model" : "other" - }, - "comment" : "#0" - } - ], + "dmsg" : "W33#3E23C564824", "internals" : { "DEF" : "SD_WS_33_TH_1", "NAME" : "SD_WS_33_TH_1" }, - "dmsg" : "W33#3E23C564824", - "rmsg" : "MS;P1=393;P2=-7752;P3=-2047;P4=-3993;D=12131314141414141313131413131314141414131313141314131414131314131314131313131314131314;CP=1;SP=2;R=230;O;m1;", "readings" : { - "channel" : "1", - "temperature" : "5.1", - "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6", "batteryState" : "ok", + "channel" : "1", + "humidity" : "41", "state" : "T: 5.1 H: 41", - "humidity" : "41" + "temperature" : "5.1", + "type" : "E0001PA, s014, S522, TCM, TFA 30.3200, TX-EZ6" }, - "revision_entry" : "2021-03-24 11:53:07", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "user" : "Doublefant" + "rmsg" : "MS;P1=393;P2=-7752;P3=-2047;P4=-3993;D=12131314141414141313131413131314141414131313141314131414131314131314131313131314131314;CP=1;SP=2;R=230;O;m1;", + "tests" : [ + { + "attributes" : { + "model" : "other" + }, + "comment" : "#0" + } + ] } ], "id" : "33.2", + "module" : "SD_WS", "name" : "Tchibo Wetterstation" }, { - "name" : "Bresser 7009994", - "module" : "SD_WS", - "id" : "37", "data" : [ { - "user" : "SD_Protocol", + "comment" : "(ID 61,84,89 additionally)", + "dmsg" : "W37#D9165C307B", "internals" : { - "NAME" : "SD_WS37_TH_1", - "DEF" : "SD_WS37_TH_1" + "DEF" : "SD_WS37_TH_1", + "NAME" : "SD_WS37_TH_1" + }, + "readings" : { + "batteryState" : "ok", + "channel" : "1", + "humidity" : "48", + "state" : "T: 22.7 H: 48", + "temperature" : "22.7", + "type" : "Bresser 7009994" }, "rmsg" : "MU;P0=729;P1=-736;P2=483;P3=-251;P4=238;P5=-491;D=010101012323452323454523454545234523234545234523232345454545232345454545452323232345232340;CP=4;", - "dmsg" : "W37#D9165C307B", "tests" : [ { "comment" : "#0" } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "(ID 61,84,89 additionally)", - "readings" : { - "state" : "T: 22.7 H: 48", - "batteryState" : "ok", - "type" : "Bresser 7009994", - "temperature" : "22.7", - "channel" : "1", - "humidity" : "48" - }, - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-24 13:42:23" + ] } - ] + ], + "id" : "37", + "module" : "SD_WS", + "name" : "Bresser 7009994" }, { - "module" : "SD_WS", - "id" : "38", "data" : [ { - "user" : "Harst", "dispatch_repeats" : "4", + "dmsg" : "W38#12A2C5D0C", "internals" : { - "NAME" : "SD_WS_38_T_2", - "DEF" : "SD_WS_38_T_2" + "DEF" : "SD_WS_38_T_2", + "NAME" : "SD_WS_38_T_2" }, - "dmsg" : "W38#12A2C5D0C", - "rmsg" : "MU;P0=-235;P1=496;P2=253;P3=-479;P4=-957;P5=743;P6=-720;CP=2;D=010231023232310231010232323102310101023102323232310102323245656565623232310232310231023102323231023101023232310231010102310232323231010232324565656562323231023231023102310232323102310102323231023101010231023232323101023232456565656232323102323102310231023232310231010232323102310101023102323232310102323245656565623232310232310231023102323231023101023232310231010102310232323231010232324565656562323231023231023102310232323102310102323231023101010231023232323101023232456565656232323102323102;O;", - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "minProtocolVersion" : "1.27", "readings" : { - "state" : "T: 20.9", "batteryState" : "ok", - "type" : "NC-3911", + "beep" : "off", "channel" : "2", + "state" : "T: 20.9", "temperature" : "20.9", - "beep" : "off" + "type" : "NC-3911" }, - "revision_entry" : "2021-03-24 13:44:02" + "rmsg" : "MU;P0=-235;P1=496;P2=253;P3=-479;P4=-957;P5=743;P6=-720;CP=2;D=010231023232310231010232323102310101023102323232310102323245656565623232310232310231023102323231023101023232310231010102310232323231010232324565656562323231023231023102310232323102310102323231023101010231023232323101023232456565656232323102323102310231023232310231010232323102310101023102323232310102323245656565623232310232310231023102323231023101023232310231010102310232323231010232324565656562323231023231023102310232323102310102323231023101010231023232323101023232456565656232323102323102;O;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], + "id" : "38", + "module" : "SD_WS", "name" : "NC-3911-675" }, { - "id" : "44", "data" : [ { - "user" : "unknown", + "dmsg" : "W44#D12160652EDE9F9B10", "internals" : { "DEF" : "BresserTemeo_1", "NAME" : "BresserTemeo_1" }, - "dmsg" : "W44#D12160652EDE9F9B10", + "readings" : { + "batteryState" : "ok", + "channel" : "1", + "humidity" : "68", + "state" : "T: 3.2 H: 68", + "temperature" : "3.2", + "type" : "BresserTemeo" + }, "rmsg" : "MU;P0=32001;P1=-1939;P2=1967;P3=3896;P4=-3895;D=01213424242124212121242121242121212124212424212121212121242421212421242121242124242421242421242424242124212124242424242421212424212424212121242121212;CP=2;R=39;", "tests" : [ { "comment" : "#0" } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "minProtocolVersion" : "1.27", - "readings" : { - "state" : "T: 3.2 H: 68", - "temperature" : "3.2", - "channel" : "1", - "type" : "BresserTemeo", - "batteryState" : "ok", - "humidity" : "68" - }, - "revision_entry" : "2021-03-25 13:27:38" + ] } ], + "id" : "44", "module" : "SD_WS", "name" : "BRESSER Temeo Trend" }, { - "module" : "SD_WS", - "id" : "50", "data" : [ { - "user" : "sidey79", + "comment" : "von 2016 (ID 42 additionally)", + "dispatch_repeats" : "1", "dmsg" : "W50#FF550541FF9A", - "rmsg" : "MU;P0=248;P1=-21400;P2=545;P3=-925;P4=1368;P5=-12308;D=01232323232323232343234323432343234343434343234323432343434343432323232323232323232343432323432345232323232323232343234323432343234343434343234323432343434343432323232323232323232343432323432345232323232323232343234323432343234343434343234323432343434343;CP=2;O;", "internals" : { "DEF" : "SD_WS_50_SM_1", "NAME" : "SD_WS_50_SM_1" }, - "dispatch_repeats" : "1", - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "von 2016 (ID 42 additionally)", - "minProtocolVersion" : "1.27", "readings" : { - "type" : "XT300", "channel" : "1", - "temperature" : "25", "humidity" : "5", - "state" : "T: 25 H: 5" + "state" : "T: 25 H: 5", + "temperature" : "25", + "type" : "XT300" }, - "revision_entry" : "2021-03-25 13:40:05" + "rmsg" : "MU;P0=248;P1=-21400;P2=545;P3=-925;P4=1368;P5=-12308;D=01232323232323232343234323432343234343434343234323432343434343432323232323232323232343432323432345232323232323232343234323432343234343434343234323432343434343432323232323232323232343432323432345232323232323232343234323432343234343434343234323432343434343;CP=2;O;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], + "id" : "50", + "module" : "SD_WS", "name" : "Opus_XT300" }, { - "id" : "51", "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], + "comment" : "Lidl Weatherstation, Channel 1", "dmsg" : "W51#11225FB401", - "rmsg" : "MS;P0=-1848;P1=577;P2=-4066;P3=-15997;P4=1013;P5=-1001;P6=-7875;D=16101010121010101210101210101012101012101212121212121012121012101010101010101010121345454545;CP=1;SP=6;O;", "internals" : { "DEF" : "SD_WS_51_TH_1", "NAME" : "SD_WS_51_TH_1" }, - "user" : "6040", - "revision_entry" : "2021-03-25 13:42:59", "readings" : { - "sendmode" : "auto", - "trend" : "falling", + "batteryState" : "ok", + "channel" : "1", "humidity" : "40", + "sendmode" : "auto", "state" : "T: 17.3 H: 40", - "batteryState" : "ok", - "type" : "Auriol IAN 275901, IAN 114324, IAN 60107", "temperature" : "17.3", - "channel" : "1" + "trend" : "falling", + "type" : "Auriol IAN 275901, IAN 114324, IAN 60107" }, - "minProtocolVersion" : "1.27", - "comment" : "Lidl Weatherstation, Channel 1", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey" + "rmsg" : "MS;P0=-1848;P1=577;P2=-4066;P3=-15997;P4=1013;P5=-1001;P6=-7875;D=16101010121010101210101210101012101012101212121212121012121012101010101010101010121345454545;CP=1;SP=6;O;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], + "id" : "51", "module" : "SD_WS", "name" : "IAN 114324" }, { - "name" : "IAN 275901", - "module" : "SD_WS", - "id" : "51", "data" : [ { - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", "comment" : "Lidl Weatherstation, Channel 3 (ID 0 additionally, CUL_TCM97001 -> with DEF Auriol_IAN_8)", - "minProtocolVersion" : "1.27", + "dmsg" : "W51#0849536953", + "internals" : { + "DEF" : "SD_WS_51_TH_3", + "NAME" : "SD_WS_51_TH_3" + }, "readings" : { - "sendmode" : "manual", - "trend" : "rising", - "humidity" : "95", - "state" : "T: 6.3 H: 95", - "type" : "Auriol IAN 275901, IAN 114324, IAN 60107", "batteryState" : "ok", "channel" : "3", - "temperature" : "6.3" + "humidity" : "95", + "sendmode" : "manual", + "state" : "T: 6.3 H: 95", + "temperature" : "6.3", + "trend" : "rising", + "type" : "Auriol IAN 275901, IAN 114324, IAN 60107" }, - "revision_entry" : "2021-03-25 13:50:18", - "user" : "Stertzi", "rmsg" : "MS;P0=-4074;P1=608;P2=-1825;P3=-15980;P4=1040;P5=-975;P6=-7862;D=16121212121012121212101212101212101210121012121010121010121012121012101210121210101345454545;CP=1;SP=6;", - "dmsg" : "W51#0849536953", - "internals" : { - "NAME" : "SD_WS_51_TH_3", - "DEF" : "SD_WS_51_TH_3" - }, "tests" : [ { "comment" : "#0" } ] } - ] + ], + "id" : "51", + "module" : "SD_WS", + "name" : "IAN 275901" }, { - "id" : "51", "data" : [ { "comment" : "Lidl Weatherstation, Channel 1 (ID 0 additionally, CUL_TCM97001 -> with DEF Auriol_IAN_240)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-03-25 13:56:42", - "minProtocolVersion" : "1.27", + "dmsg" : "W51#F03048F761", + "internals" : { + "DEF" : "SD_WS_51_TH_1", + "NAME" : "SD_WS_51_TH_1" + }, "readings" : { - "state" : "T: -2.9 H: 76", "batteryState" : "ok", - "type" : "Auriol IAN 275901, IAN 114324, IAN 60107", - "temperature" : "-2.9", "channel" : "1", + "humidity" : "76", "sendmode" : "auto", + "state" : "T: -2.9 H: 76", + "temperature" : "-2.9", "trend" : "consistent", - "humidity" : "76" - }, - "internals" : { - "DEF" : "SD_WS_51_TH_1", - "NAME" : "SD_WS_51_TH_1" + "type" : "Auriol IAN 275901, IAN 114324, IAN 60107" }, - "dmsg" : "W51#F03048F761", "rmsg" : "MS;P2=594;P3=-7386;P4=-4081;P5=-1873;D=2324242424252525252525242425252525252425252425252524242424252424242524242525252524;CP=2;SP=3;R=242;", - "user" : "dennis82ni", "tests" : [ { "comment" : "#0" @@ -662,297 +585,258 @@ ] } ], + "id" : "51", "module" : "SD_WS", "name" : "IAN 60107" }, { - "id" : "53", "data" : [ { - "minProtocolVersion" : "1.27", + "comment" : "CH1, Lidl IAN 314695 (ID 33,51 additionally)", + "dmsg" : "W53#0700DF7A4E0", + "internals" : { + "DEF" : "SD_WS_53_TH_1", + "NAME" : "SD_WS_53_TH_1" + }, "readings" : { + "batteryState" : "ok", + "channel" : "1", "humidity" : "61", + "state" : "T: 22.3 H: 61", "temperature" : "22.3", - "channel" : "1", - "type" : "Auriol IAN 314695", - "batteryState" : "ok", - "state" : "T: 22.3 H: 61" + "type" : "Auriol IAN 314695" }, - "revision_entry" : "2021-04-21 22:01:03", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "CH1, Lidl IAN 314695 (ID 33,51 additionally)", + "rmsg" : "MS;P1=608;P2=-2074;P3=-4138;P4=-9138;D=14121212121213131312121212121212121313121313131313121313131312131212131212131313121212;CP=1;SP=4;R=0;O;m1;", "tests" : [ { "comment" : "#0" } - ], - "user" : "elektron-bbs", - "internals" : { - "NAME" : "SD_WS_53_TH_1", - "DEF" : "SD_WS_53_TH_1" - }, - "dmsg" : "W53#0700DF7A4E0", - "rmsg" : "MS;P1=608;P2=-2074;P3=-4138;P4=-9138;D=14121212121213131312121212121212121313121313131313121313131312131212131212131313121212;CP=1;SP=4;R=0;O;m1;" + ] }, { - "minProtocolVersion" : "1.27", + "comment" : "CH1, Lidl IAN 314695 (ID 33,51 additionally)", + "dmsg" : "W53#0700F2764A4", + "internals" : { + "DEF" : "SD_WS_53_TH_1", + "NAME" : "SD_WS_53_TH_1" + }, "readings" : { + "batteryState" : "ok", + "channel" : "1", "humidity" : "59", "state" : "T: 24.2 H: 59", "temperature" : "24.2", - "channel" : "1", - "type" : "Auriol IAN 314695", - "batteryState" : "ok" + "type" : "Auriol IAN 314695" }, - "revision_entry" : "2021-04-21 22:02:48", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "CH1, Lidl IAN 314695 (ID 33,51 additionally)", + "rmsg" : "MS;P1=611;P2=-2075;P3=-4160;P4=-9134;D=14121212121213131312121212121212121313131312121312121313131213131212131212131213121213;CP=1;SP=4;R=0;O;m2;", "tests" : [ { "comment" : "#1" } - ], - "user" : "elektron-bbs", - "dmsg" : "W53#0700F2764A4", - "rmsg" : "MS;P1=611;P2=-2075;P3=-4160;P4=-9134;D=14121212121213131312121212121212121313131312121312121313131213131212131212131213121213;CP=1;SP=4;R=0;O;m2;", - "internals" : { - "DEF" : "SD_WS_53_TH_1", - "NAME" : "SD_WS_53_TH_1" - } + ] } ], + "id" : "53", "module" : "SD_WS", "name" : "AURIOL AHFL 433 B2" }, { - "name" : "AURIOL AHFL 433 B2", - "module" : "SD_WS", - "id" : "53", "data" : [ { + "comment" : "CH2, Lidl IAN 314695 (ID 33,51 additionally)", + "dmsg" : "W53#0710B88C4CC", + "internals" : { + "DEF" : "SD_WS_53_TH_2", + "NAME" : "SD_WS_53_TH_2" + }, "readings" : { - "temperature" : "18.4", - "channel" : "2", - "type" : "Auriol IAN 314695", "batteryState" : "ok", + "channel" : "2", + "humidity" : "70", "state" : "T: 18.4 H: 70", - "humidity" : "70" + "temperature" : "18.4", + "type" : "Auriol IAN 314695" }, - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-21 22:05:07", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "CH2, Lidl IAN 314695 (ID 33,51 additionally)", + "rmsg" : "MS;P0=606;P1=-2075;P2=-4136;P3=-9066;D=03010101010102020201010102010101010201020202010101020101010202010101020101020201010202;CP=0;SP=3;R=0;O;m2;", "tests" : [ { "comment" : "#0" } - ], - "user" : "elektron-bbs", - "internals" : { - "DEF" : "SD_WS_53_TH_2", - "NAME" : "SD_WS_53_TH_2" - }, - "dmsg" : "W53#0710B88C4CC", - "rmsg" : "MS;P0=606;P1=-2075;P2=-4136;P3=-9066;D=03010101010102020201010102010101010201020202010101020101010202010101020101020201010202;CP=0;SP=3;R=0;O;m2;" + ] } - ] + ], + "id" : "53", + "module" : "SD_WS", + "name" : "AURIOL AHFL 433 B2" }, { - "id" : "54", "data" : [ { - "user" : "sido", - "rmsg" : "MU;P1=247;P2=-750;P3=722;P4=-489;P5=491;P6=-236;P7=-2184;D=1232141456565656145656141456565614141456141414145656141414141456561414141456561414145614561456145614141414141414145614145656145614141732321414565656561456561414565656141414561414141456561414141414565614141414565614141456145614561456141414141414141456141;CP=1;R=55;O;", + "comment" : "Rain sensor for base station 47.3005.01 / decode as MU", "dmsg" : "W54#3D9C430618AA01340", "internals" : { - "NAME" : "SD_WS_54_R", - "DEF" : "SD_WS_54_R" + "DEF" : "SD_WS_54_R", + "NAME" : "SD_WS_54_R" }, - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Rain sensor for base station 47.3005.01 / decode as MU", - "minProtocolVersion" : "1.27", "readings" : { + "batteryState" : "ok", "rain_total" : "73.66", - "state" : "R: 73.66", + "rawRainCounter" : "290", "sendCounter" : "3", - "type" : "TFA 30.3233.01", - "batteryState" : "ok", - "rawRainCounter" : "290" + "state" : "R: 73.66", + "type" : "TFA 30.3233.01" }, - "revision_entry" : "2021-04-21 22:06:29" - }, - { + "rmsg" : "MU;P1=247;P2=-750;P3=722;P4=-489;P5=491;P6=-236;P7=-2184;D=1232141456565656145656141456565614141456141414145656141414141456561414141456561414145614561456145614141414141414145614145656145614141732321414565656561456561414565656141414561414141456561414141414565614141414565614141456145614561456141414141414141456141;CP=1;R=55;O;", "tests" : [ { - "comment" : "#1" + "comment" : "#0" } - ], - "user" : "sido", - "rmsg" : "MU;P0=-1672;P1=740;P2=-724;P3=260;P4=-468;P5=504;P6=-230;D=012123434565656563456563434565656343434563434343456563434343456345634343434565634565656345634563456343434343434343456563434345634345656;CP=3;R=4;", + ] + }, + { + "comment" : "Rain sensor for base station 47.3005.01 / decode as MU", "dmsg" : "W54#3D9C430A1BAA01898", "internals" : { - "NAME" : "SD_WS_54_R", - "DEF" : "SD_WS_54_R" + "DEF" : "SD_WS_54_R", + "NAME" : "SD_WS_54_R" }, - "minProtocolVersion" : "1.27", "readings" : { - "rain_total" : "74.422", - "type" : "TFA 30.3233.01", "batteryState" : "ok", + "rain_total" : "74.422", "rawRainCounter" : "293", + "sendCounter" : "5", "state" : "R: 74.422", - "sendCounter" : "5" + "type" : "TFA 30.3233.01" }, - "revision_entry" : "2021-04-21 22:07:44", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Rain sensor for base station 47.3005.01 / decode as MU" + "rmsg" : "MU;P0=-1672;P1=740;P2=-724;P3=260;P4=-468;P5=504;P6=-230;D=012123434565656563456563434565656343434563434343456563434343456345634343434565634565656345634563456343434343434343456563434345634345656;CP=3;R=4;", + "tests" : [ + { + "comment" : "#1" + } + ] } ], + "id" : "54", "module" : "SD_WS", "name" : "TFA 30.3233.01" }, { - "name" : "TFA 30.3233.01", - "module" : "SD_WS", "data" : [ { - "user" : "punker", + "comment" : "Rain sensor for base station 47.3005.01 / decode as MS", "dmsg" : "W54#3896E10467AA0068", - "rmsg" : "MS;P0=-241;P1=486;P2=241;P3=-488;P4=-2098;P5=738;P6=-730;D=24565623231010102323231023231023101023101010232323231023232323231023232310102323101010102310231023102323232323232323232310102310232323;CP=2;SP=4;R=30;O;b=19;s=1;m0;", "internals" : { - "NAME" : "SD_WS_54_R", - "DEF" : "SD_WS_54_R" + "DEF" : "SD_WS_54_R", + "NAME" : "SD_WS_54_R" }, - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Rain sensor for base station 47.3005.01 / decode as MS", "readings" : { - "sendCounter" : "2", - "state" : "R: 28.702", "batteryState" : "ok", - "type" : "TFA 30.3233.01", + "rain_total" : "28.702", "rawRainCounter" : "113", - "rain_total" : "28.702" + "sendCounter" : "2", + "state" : "R: 28.702", + "type" : "TFA 30.3233.01" }, - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-04-21 22:09:22" - }, - { + "rmsg" : "MS;P0=-241;P1=486;P2=241;P3=-488;P4=-2098;P5=738;P6=-730;D=24565623231010102323231023231023101023101010232323231023232323231023232310102323101010102310231023102323232323232323232310102310232323;CP=2;SP=4;R=30;O;b=19;s=1;m0;", "tests" : [ { - "comment" : "#1" + "comment" : "#0" } - ], + ] + }, + { + "comment" : "Rain sensor for base station 47.3005.01 / decode as MS", + "dmsg" : "W54#3896E1066AAA0076", "internals" : { - "NAME" : "SD_WS_54_R", - "DEF" : "SD_WS_54_R" + "DEF" : "SD_WS_54_R", + "NAME" : "SD_WS_54_R" }, - "rmsg" : "MS;P0=-491;P1=242;P2=476;P3=-248;P4=-2096;P5=721;P6=-745;D=14565610102323231010102310102310232310232323101010102310101010102323101023231023102310231023102310231010101010101010101023232310232310;CP=1;SP=4;R=10;O;b=135;s=1;m0;", - "dmsg" : "W54#3896E1066AAA0076", - "user" : "punker", - "revision_entry" : "2021-04-21 22:10:42", "readings" : { "batteryState" : "ok", + "rain_total" : "29.464", "rawRainCounter" : "116", - "type" : "TFA 30.3233.01", - "state" : "R: 29.464", "sendCounter" : "3", - "rain_total" : "29.464" + "state" : "R: 29.464", + "type" : "TFA 30.3233.01" }, - "minProtocolVersion" : "1.27", - "comment" : "Rain sensor for base station 47.3005.01 / decode as MS", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey" + "rmsg" : "MS;P0=-491;P1=242;P2=476;P3=-248;P4=-2096;P5=721;P6=-745;D=14565610102323231010102310102310232310232323101010102310101010102323101023231023102310231023102310231010101010101010101023232310232310;CP=1;SP=4;R=10;O;b=135;s=1;m0;", + "tests" : [ + { + "comment" : "#1" + } + ] } ], - "id" : "54.1" + "id" : "54.1", + "module" : "SD_WS", + "name" : "TFA 30.3233.01" }, { - "name" : "Froggit FT007T", - "id" : "58", "data" : [ { - "rmsg" : "MC;LL=-1047;LH=903;SL=-545;SH=449;D=800AE5E3AE7FD44BC00572F1D73FEA25E002B9788;C=494;L=161;", + "comment" : "(ID 12 additionally)", "dmsg" : "W58#468714600AED0", "internals" : { - "NAME" : "SD_WS_58_T_2", - "DEF" : "SD_WS_58_T_2" + "DEF" : "SD_WS_58_T_2", + "NAME" : "SD_WS_58_T_2" + }, + "readings" : { + "batteryState" : "ok", + "channel" : "2", + "state" : "T: 22.2", + "temperature" : "22.2", + "type" : "TFA 30.3208.02, FT007xx" }, - "user" : "Burny4600", + "rmsg" : "MC;LL=-1047;LH=903;SL=-545;SH=449;D=800AE5E3AE7FD44BC00572F1D73FEA25E002B9788;C=494;L=161;", "tests" : [ { "comment" : "#0" } - ], - "comment" : "(ID 12 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-03-25 14:11:59", - "minProtocolVersion" : "1.27", - "readings" : { - "state" : "T: 22.2", - "temperature" : "22.2", - "channel" : "2", - "type" : "TFA 30.3208.02, FT007xx", - "batteryState" : "ok" - } + ] }, { - "revision_entry" : "2021-03-25 14:14:38", - "minProtocolVersion" : "1.27", + "comment" : "(ID 12 additionally)", + "dmsg" : "W58#468714610AAE0", + "internals" : { + "DEF" : "SD_WS_58_T_2", + "NAME" : "SD_WS_58_T_2" + }, "readings" : { "batteryState" : "ok", - "type" : "TFA 30.3208.02, FT007xx", "channel" : "2", + "state" : "T: 22.3", "temperature" : "22.3", - "state" : "T: 22.3" + "type" : "TFA 30.3208.02, FT007xx" }, - "comment" : "(ID 12 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", + "rmsg" : "MC;LL=-1047;LH=902;SL=-546;SH=452;D=0015CBC75CF7AA8F800AE5E3AE7BD547C00572F1D0;C=487;L=165;", "tests" : [ { "comment" : "#1" } - ], - "internals" : { - "DEF" : "SD_WS_58_T_2", - "NAME" : "SD_WS_58_T_2" - }, - "dmsg" : "W58#468714610AAE0", - "rmsg" : "MC;LL=-1047;LH=902;SL=-546;SH=452;D=0015CBC75CF7AA8F800AE5E3AE7BD547C00572F1D0;C=487;L=165;", - "user" : "Burny4600" + ] } ], - "module" : "SD_WS" + "id" : "58", + "module" : "SD_WS", + "name" : "Froggit FT007T" }, { "data" : [ { - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", "comment" : "Thermo-hygro sensor with 2 Repeats", - "minProtocolVersion" : "1.27", + "dmsg" : "W58#45C8142445DB0", + "internals" : { + "DEF" : "SD_WS_58_TH_2", + "NAME" : "SD_WS_58_TH_2" + }, "readings" : { - "humidity" : "69", + "batteryState" : "ok", "channel" : "2", + "humidity" : "69", + "state" : "T: 18.9 H: 69", "temperature" : "18.9", - "batteryState" : "ok", - "type" : "TFA 30.3208.02, FT007xx", - "state" : "T: 18.9 H: 69" + "type" : "TFA 30.3208.02, FT007xx" }, - "revision_entry" : "2021-03-25 14:06:43", - "user" : "Ralf9", - "internals" : { - "NAME" : "SD_WS_58_TH_2", - "DEF" : "SD_WS_58_TH_2" - }, - "dmsg" : "W58#45C8142445DB0", "rmsg" : "MC;LL=-981;LH=964;SL=-480;SH=520;D=002BA37EBDBBA24F0015D1BF5EDDD127800AE8DFAF6EE893C;C=486;L=194;R=34;", "tests" : [ { @@ -966,111 +850,94 @@ "name" : "TFA 30.3208.02" }, { - "module" : "SD_WS", "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], + "comment" : "Fine Offset Electronics WH2, WH2A Temperature/Humidity sensor", + "dmsg" : "W64#FE97615C94381C", "internals" : { - "NAME" : "SD_WS_WH2_0", - "DEF" : "SD_WS_WH2_0" + "DEF" : "SD_WS_WH2_0", + "NAME" : "SD_WS_WH2_0" }, - "dmsg" : "W64#FE97615C94381C", - "rmsg" : "MU;P0=-28888;P1=461;P2=-1012;P3=1440;D=01212121212121232123232123212121232121232323232123212321212123232123232123212323232321212123232323232321212121;CP=1;R=202;", - "user" : "elektron-bbs", - "revision_entry" : "2021-08-17 20:37:38", "readings" : { - "humidity" : "74", - "state" : "T: 17.4 H: 74", "batteryState" : "ok", - "type" : "WH2, WH2A", "channel" : "0", - "temperature" : "17.4" + "humidity" : "74", + "state" : "T: 17.4 H: 74", + "temperature" : "17.4", + "type" : "WH2, WH2A" }, - "minProtocolVersion" : "1.34", - "comment" : "Fine Offset Electronics WH2, WH2A Temperature/Humidity sensor", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-12 18:48:36Z elektron-bbs" + "rmsg" : "MU;P0=-28888;P1=461;P2=-1012;P3=1440;D=01212121212121232123232123212121232121232323232123212321212123232123232123212323232321212123232323232321212121;CP=1;R=202;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { + "comment" : "Fine Offset Electronics WH2, WH2A Temperature/Humidity sensor", + "dmsg" : "W64#FE976236540E90", "internals" : { - "NAME" : "SD_WS_WH2_0", - "DEF" : "SD_WS_WH2_0" + "DEF" : "SD_WS_WH2_0", + "NAME" : "SD_WS_WH2_0" + }, + "readings" : { + "batteryState" : "ok", + "channel" : "0", + "humidity" : "42", + "state" : "T: 28.3 H: 42", + "temperature" : "28.3", + "type" : "WH2, WH2A" }, - "dmsg" : "W64#FE976236540E90", "rmsg" : "MU;P0=-25696;P1=479;P2=-985;P3=1461;D=01212121212121232123232123212121232121232323212323232121232121232321232123212323232323232121212321232321232323;CP=1;R=215;", - "user" : "elektron-bbs", "tests" : [ { "comment" : "#1" } - ], + ] + }, + { "comment" : "Fine Offset Electronics WH2, WH2A Temperature/Humidity sensor", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-12 18:48:36Z elektron-bbs", - "revision_entry" : "2021-08-17 20:40:09", - "minProtocolVersion" : "1.34", + "dmsg" : "W64#FE9041CC812844", + "internals" : { + "DEF" : "SD_WS_WH2_0", + "NAME" : "SD_WS_WH2_0" + }, "readings" : { - "state" : "T: 28.3 H: 42", - "type" : "WH2, WH2A", "batteryState" : "ok", "channel" : "0", - "temperature" : "28.3", - "humidity" : "42" - } - }, - { - "revision_entry" : "2021-08-17 20:41:55", - "minProtocolVersion" : "1.34", - "readings" : { + "humidity" : "64", "state" : "T: 23 H: 64", - "batteryState" : "ok", - "type" : "WH2, WH2A", "temperature" : "23", - "channel" : "0", - "humidity" : "64" + "type" : "WH2, WH2A" }, - "comment" : "Fine Offset Electronics WH2, WH2A Temperature/Humidity sensor", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-12 18:48:36Z elektron-bbs", + "rmsg" : "MU;P0=134;P1=-113;P3=412;P4=-1062;P5=1379;D=01010101013434343434343454345454345454545454345454545454343434545434345454345454545454543454543454345454545434545454345;CP=3;", "tests" : [ { "comment" : "#2" } - ], - "internals" : { - "DEF" : "SD_WS_WH2_0", - "NAME" : "SD_WS_WH2_0" - }, - "rmsg" : "MU;P0=134;P1=-113;P3=412;P4=-1062;P5=1379;D=01010101013434343434343454345454345454545454345454545454343434545434345454345454545454543454543454345454545434545454345;CP=3;", - "dmsg" : "W64#FE9041CC812844" + ] } ], "id" : "64", + "module" : "SD_WS", "name" : "WH2" }, { - "name" : "PV-8644", - "id" : "71", "data" : [ { "comment" : "PEARL infactory Poolthermometer (ID 64 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-04-22 22:00:00", - "minProtocolVersion" : "1.27", + "dmsg" : "W71#589A829FDFF4", + "internals" : { + "DEF" : "SD_WS71_T_1", + "NAME" : "SD_WS71_T_1" + }, "readings" : { - "state" : "T: 24.2", "channel" : "1", + "state" : "T: 24.2", "temperature" : "24.2", "type" : "PV-8644" }, - "internals" : { - "DEF" : "SD_WS71_T_1", - "NAME" : "SD_WS71_T_1" - }, "rmsg" : "MU;P0=1735;P1=-1160;P2=591;P3=-876;D=0123012323010101230101232301230123010101010123012301012323232323232301232323232323232323012301012;CP=2;R=97;", - "dmsg" : "W71#589A829FDFF4", - "user" : "SD_Protocol", "tests" : [ { "comment" : "#0" @@ -1078,37 +945,35 @@ ] } ], - "module" : "SD_WS" + "id" : "71", + "module" : "SD_WS", + "name" : "PV-8644" }, { "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], + "comment" : "Version 06/2017", + "dmsg" : "W84#033B1FC328", "internals" : { - "NAME" : "SD_WS_84_TH_2", - "DEF" : "SD_WS_84_TH_2" + "DEF" : "SD_WS_84_TH_2", + "NAME" : "SD_WS_84_TH_2" }, - "rmsg" : "MU;P0=595;P1=344;P2=-862;P3=846;P4=244;P5=-602;P7=-251;D=1232323245454545454507074545070707450707454545070707070707074545454507074545074507454540;CP=4;R=4;", - "state" : "T: -6.1 H: 59", - "dmsg" : "W84#033B1FC328", - "user" : "roobbb", - "revision_entry" : "2021-04-21 21:36:51", - "minProtocolVersion" : "1.27", "readings" : { - "type" : "Auriol IAN 283582, TV-4848", "batteryState" : "ok", - "temperature" : "-6.1", "channel" : "2", - "state" : "T: -6.1 H: 59", "humidity" : "59", - "sendmode" : "auto" + "sendmode" : "auto", + "state" : "T: -6.1 H: 59", + "temperature" : "-6.1", + "type" : "Auriol IAN 283582, TV-4848" }, - "comment" : "Version 06/2017", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey" + "rmsg" : "MU;P0=595;P1=344;P2=-862;P3=846;P4=244;P5=-602;P7=-251;D=1232323245454545454507074545070707450707454545070707070707074545454507074545074507454540;CP=4;R=4;", + "state" : "T: -6.1 H: 59", + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "84", @@ -1116,133 +981,117 @@ "name" : "Auriol IAN 283582" }, { - "id" : "84", "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], - "user" : "w6s8", + "comment" : "Aldi (ID 40 additionally)", + "dmsg" : "W84#A64D20D570", "internals" : { "DEF" : "SD_WS_84_TH_3", "NAME" : "SD_WS_84_TH_3" }, - "dmsg" : "W84#A64D20D570", - "rmsg" : "MU;P0=-30004;P1=815;P2=-910;P3=599;P4=-263;P5=234;P6=-621;D=0121212345634565634345656345656343456345656345656565656343456345634563456343434565656;CP=5;R=5;", - "minProtocolVersion" : "1.27", "readings" : { - "sendmode" : "auto", - "humidity" : "77", - "state" : "T: 21.3 H: 77", - "type" : "Auriol IAN 283582, TV-4848", "batteryState" : "ok", "channel" : "3", - "temperature" : "21.3" + "humidity" : "77", + "sendmode" : "auto", + "state" : "T: 21.3 H: 77", + "temperature" : "21.3", + "type" : "Auriol IAN 283582, TV-4848" }, - "revision_entry" : "2021-04-21 21:38:48", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Aldi (ID 40 additionally)" + "rmsg" : "MU;P0=-30004;P1=815;P2=-910;P3=599;P4=-263;P5=234;P6=-621;D=0121212345634565634345656345656343456345656345656565656343456345634563456343434565656;CP=5;R=5;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], + "id" : "84", "module" : "SD_WS", "name" : "Sempre 92596/65395" }, { - "name" : "Tecvance TV-4848", "data" : [ { - "minProtocolVersion" : "1.27", + "comment" : "Amazon (ID 37,63 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "W84#5E36012D24", + "internals" : { + "DEF" : "SD_WS_84_TH_1", + "NAME" : "SD_WS_84_TH_1" + }, "readings" : { + "batteryState" : "ok", + "channel" : "1", "humidity" : "54", "sendmode" : "auto", + "state" : "T: 30.1 H: 54", "temperature" : "30.1", - "channel" : "1", - "batteryState" : "ok", - "type" : "Auriol IAN 283582, TV-4848", - "state" : "T: 30.1 H: 54" + "type" : "Auriol IAN 283582, TV-4848" }, - "revision_entry" : "2021-04-21 21:41:06", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Amazon (ID 37,63 additionally)", + "rmsg" : "MU;P0=859;P1=-845;P2=-253;P3=240;P4=-598;P5=617;D=45252525234343452523452523434343434343434523434523452523452343452343452345234010101013452345252525234343452523452523434343434343434523434523452523452343452343452345234010101013452345252525234343452523452523434343434343434523434523452523452343452343452345;CP=3;R=63;O;", "tests" : [ { "comment" : "#0" } - ], - "user" : "HomeAuto_User", - "dmsg" : "W84#5E36012D24", - "rmsg" : "MU;P0=859;P1=-845;P2=-253;P3=240;P4=-598;P5=617;D=45252525234343452523452523434343434343434523434523452523452343452343452345234010101013452345252525234343452523452523434343434343434523434523452523452343452343452345234010101013452345252525234343452523452523434343434343434523434523452523452343452343452345;CP=3;R=63;O;", - "internals" : { - "DEF" : "SD_WS_84_TH_1", - "NAME" : "SD_WS_84_TH_1" - }, - "dispatch_repeats" : "1" + ] } ], "id" : "84", - "module" : "SD_WS" + "module" : "SD_WS", + "name" : "Tecvance TV-4848" }, { - "module" : "SD_WS", - "id" : "85", "data" : [ { - "revision_entry" : "2021-04-21 20:20:40", - "minProtocolVersion" : "1.27", + "comment" : "Thermo-hygro sensor for base station 35.1140.01 (ID 54,61 additionally)", + "dmsg" : "W85#0C45C60124B0554F8", + "internals" : { + "DEF" : "SD_WS_85_THW_1", + "NAME" : "SD_WS_85_THW_1" + }, "readings" : { - "humidity" : "85", "batteryState" : "ok", - "type" : "TFA 30.3222.02, TFA 30.3251.10, LaCrosse TX141W", - "temperature" : "8.7", "channel" : "1", - "state" : "T: 8.7 H: 85" + "humidity" : "85", + "state" : "T: 8.7 H: 85", + "temperature" : "8.7", + "type" : "TFA 30.3222.02, TFA 30.3251.10, LaCrosse TX141W" }, - "comment" : "Thermo-hygro sensor for base station 35.1140.01 (ID 54,61 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", + "rmsg" : "MU;P0=-509;P1=474;P2=-260;P3=228;P4=718;P5=-745;D=01212303030303012301230123012301230301212121230454545453030303012123030301230303012301212123030301212303030303030303012303012303012303012301212303030303012301230123012301230301212121212454545453030303012123030301230303012301212123030301212303030303030303;CP=3;R=46;O;", "tests" : [ { "comment" : "#0" } - ], - "dmsg" : "W85#0C45C60124B0554F8", - "rmsg" : "MU;P0=-509;P1=474;P2=-260;P3=228;P4=718;P5=-745;D=01212303030303012301230123012301230301212121230454545453030303012123030301230303012301212123030301212303030303030303012303012303012303012301212303030303012301230123012301230301212121212454545453030303012123030301230303012301212123030301212303030303030303;CP=3;R=46;O;", - "internals" : { - "DEF" : "SD_WS_85_THW_1", - "NAME" : "SD_WS_85_THW_1" - }, - "user" : "Iron-R1" + ] } ], + "id" : "85", + "module" : "SD_WS", "name" : "TFA 30.3222.02, Temp" }, { "data" : [ { - "user" : "Iron-R1", + "comment" : "Thermo-hygro sensor for base station 35.1140.01 (ID 54,61 additionally)", "dmsg" : "W85#0C35A602015000C98", - "rmsg" : "MU;P0=242;P1=-506;P2=467;P3=-248;P4=723;P5=-736;D=01012323010123010123014545454501010101232301010101232301230123230123010123230101010101010123010101010101010123012301230101010101010101010101012323010123010123234545454501010101232301010101232301230123230123010123230101010101010123010101010101010123012301;CP=0;R=52;O;", "internals" : { "DEF" : "SD_WS_85_THW_1", "NAME" : "SD_WS_85_THW_1" }, - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Thermo-hygro sensor for base station 35.1140.01 (ID 54,61 additionally)", - "minProtocolVersion" : "1.27", "readings" : { - "type" : "TFA 30.3222.02, TFA 30.3251.10, LaCrosse TX141W", "batteryState" : "ok", "channel" : "1", "state" : "W: 2.1", + "type" : "TFA 30.3222.02, TFA 30.3251.10, LaCrosse TX141W", "windSpeed" : "2.1" }, - "revision_entry" : "2021-04-21 20:24:18" + "rmsg" : "MU;P0=242;P1=-506;P2=467;P3=-248;P4=723;P5=-736;D=01012323010123010123014545454501010101232301010101232301230123230123010123230101010101010123010101010101010123012301230101010101010101010101012323010123010123234545454501010101232301010101232301230123230123010123230101010101010123010101010101010123012301;CP=0;R=52;O;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "85", @@ -1250,24 +1099,24 @@ "name" : "TFA 30.3222.02, Wind" }, { - "module" : "SD_WS", - "id" : "85", "data" : [ { + "comment" : "additionally windDirectionDegree and windDirectionText", + "dmsg" : "W85#0BFF0F0203B03A980", + "internals" : { + "DEF" : "SD_WS_85_THW_1", + "NAME" : "SD_WS_85_THW_1" + }, "readings" : { - "state" : "W: 5.9", - "windSpeed" : "5.9", - "windDirectionText" : "ENE", + "batteryState" : "ok", "channel" : "1", - "windDirectionDegree" : "58", + "state" : "W: 5.9", "type" : "TFA 30.3222.02, TFA 30.3251.10, LaCrosse TX141W", - "batteryState" : "ok" + "windDirectionDegree" : "58", + "windDirectionText" : "ENE", + "windSpeed" : "5.9" }, - "revision_entry" : "2022-04-17 13:36:34", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-04-15 15:55:23Z elektron-bbs", - "user" : "elektron-bbs", - "minProtocolVersion" : "1.27", - "comment" : "additionally windDirectionDegree and windDirectionText", + "rmsg" : "MU;P0=-28464;P1=493;P2=-238;P3=244;P4=-492;P5=728;P6=-732;D=01212123434343412121212343434343434123434343434343412121234121234343434343412121234123412343412123434343456565656343434341234121212121212121212123434343412121212343434343434123434343434343412121234121234343434343412121234123412343412123434343456565656343;CP=3;R=20;O;", "tests" : [ { "attributes" : { @@ -1275,76 +1124,64 @@ }, "comment" : "#0" } - ], - "dmsg" : "W85#0BFF0F0203B03A980", - "rmsg" : "MU;P0=-28464;P1=493;P2=-238;P3=244;P4=-492;P5=728;P6=-732;D=01212123434343412121212343434343434123434343434343412121234121234343434343412121234123412343412123434343456565656343434341234121212121212121212123434343412121212343434343434123434343434343412121234121234343434343412121234123412343412123434343456565656343;CP=3;R=20;O;", + ] + }, + { + "comment" : "windDirectionText N, windDirectionDegree 355", + "dmsg" : "W85#0BFF0F02000163C10", "internals" : { "DEF" : "SD_WS_85_THW_1", "NAME" : "SD_WS_85_THW_1" - } - }, - { - "user" : "elektron-bbs", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-07-05 18:47:28Z elektron-bbs", - "revision_entry" : "2022-09-04 12:01:02", + }, "readings" : { - "channel" : "1", "batteryState" : "ok", + "channel" : "1", + "state" : "W: 0", "type" : "TFA 30.3222.02, TFA 30.3251.10, LaCrosse TX141W", "windDirectionDegree" : "355", "windDirectionText" : "N", - "state" : "W: 0", "windSpeed" : "0" }, - "internals" : { - "NAME" : "SD_WS_85_THW_1", - "DEF" : "SD_WS_85_THW_1" - }, "rmsg" : "MU;P0=-11716;P1=485;P2=-239;P3=251;P4=-490;P5=732;P6=-726;D=01212121234343434121212123434343434341234343434343434343434343434343434123412123434341212121234343434341234565656563434343412341212121212121212121234343434121212123434343434341234343434343434343434343434343434123412123434341212121234343434341234565656563;CP=3;R=23;O;", - "dmsg" : "W85#0BFF0F02000163C10", "tests" : [ { - "comment" : "#1", "attributes" : { "model" : "TFA_30.3251.10" - } + }, + "comment" : "#1" } - ], - "comment" : "windDirectionText N, windDirectionDegree 355", - "minProtocolVersion" : "1.44" + ] } ], + "id" : "85", + "module" : "SD_WS", "name" : "TFA 30.3251.10 Windsensor" }, { "data" : [ { - "user" : "Iron-R1", + "comment" : "Thermo-hygro sensor for base station 35.1140.01 (ID 37,61 additionally)", "dispatch_repeats" : "1", + "dmsg" : "W89#F012333E01", "internals" : { - "NAME" : "SD_WS_89_TH_2", - "DEF" : "SD_WS_89_TH_2" + "DEF" : "SD_WS_89_TH_2", + "NAME" : "SD_WS_89_TH_2" + }, + "readings" : { + "batteryState" : "ok", + "channel" : "2", + "humidity" : "62", + "sendmode" : "auto", + "state" : "T: 6.3 H: 62", + "temperature" : "6.3", + "type" : "TFA 30.3221.02" }, - "dmsg" : "W89#F012333E01", "rmsg" : "MU;P0=22960;P1=-893;P2=775;P3=409;P4=-296;P5=182;P6=-513;D=01212121343434345656565656565634565634565656343456563434565634343434345656565656565656342121212134343434565656565656563456563456565634345656343456563434343434565656565656565634212121213434343456565656565656345656345656563434565634345656343434343456565656;CP=5;R=22;O;", "tests" : [ { "comment" : "#0" } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "Thermo-hygro sensor for base station 35.1140.01 (ID 37,61 additionally)", - "minProtocolVersion" : "1.27", - "readings" : { - "sendmode" : "auto", - "humidity" : "62", - "state" : "T: 6.3 H: 62", - "type" : "TFA 30.3221.02", - "batteryState" : "ok", - "channel" : "2", - "temperature" : "6.3" - }, - "revision_entry" : "2021-03-26 10:43:44" + ] } ], "id" : "89", @@ -1352,72 +1189,58 @@ "name" : "TFA 30.3221.02" }, { - "name" : "Atech", - "module" : "SD_WS", "data" : [ { - "revision_entry" : "2021-03-26 10:04:23", - "minProtocolVersion" : "1.27", + "comment" : "Temp sensor Id: 0C (ID 63 additionally)", + "dmsg" : "W94#0D830661B366C", + "internals" : { + "DEF" : "SD_WS_94_T", + "NAME" : "SD_WS_94_T" + }, "readings" : { "state" : "T: -14.6", - "type" : "Atech", - "temperature" : "-14.6" + "temperature" : "-14.6", + "type" : "Atech" }, - "comment" : "Temp sensor Id: 0C (ID 63 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", + "rmsg" : "MU;P0=-32001;P1=1525;P2=-303;P3=-7612;P4=-2008;D=01212121212121213141414141212141212141414141412121414141414121214141212141414141212141212141412121412121414121214121;CP=1;", "tests" : [ { "comment" : "#0" } - ], - "internals" : { - "NAME" : "SD_WS_94_T", - "DEF" : "SD_WS_94_T" - }, - "rmsg" : "MU;P0=-32001;P1=1525;P2=-303;P3=-7612;P4=-2008;D=01212121212121213141414141212141212141414141412121414141414121214141212141414141212141212141412121412121414121214121;CP=1;", - "dmsg" : "W94#0D830661B366C", - "user" : "Kreidler1221" + ] }, { - "tests" : [ - { - "comment" : "#1" - } - ], + "comment" : "Temp sensor Id: 0C (ID 63 additionally)", "dmsg" : "W94#0D830018CCC", - "rmsg" : "MU;P0=-32001;P1=1533;P2=-297;P3=-7612;P4=-2005;D=0121212121212121314141414121214121214141414141212141414141414141414141412121414141212141412121414121;CP=1;", "internals" : { "DEF" : "SD_WS_94_T", "NAME" : "SD_WS_94_T" }, - "user" : "Kreidler1221", - "revision_entry" : "2021-03-26 10:05:29", "readings" : { - "type" : "Atech", + "state" : "T: -0.4", "temperature" : "-0.4", - "state" : "T: -0.4" + "type" : "Atech" }, - "minProtocolVersion" : "1.27", - "comment" : "Temp sensor Id: 0C (ID 63 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey" + "rmsg" : "MU;P0=-32001;P1=1533;P2=-297;P3=-7612;P4=-2005;D=0121212121212121314141414121214121214141414141212141414141414141414141412121414141212141412121414121;CP=1;", + "tests" : [ + { + "comment" : "#1" + } + ] }, { "comment" : "Temp sensor Id: 0C (ID 63 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-03-26 10:06:30", + "dmsg" : "W94#0D8000336CC", + "internals" : { + "DEF" : "SD_WS_94_T", + "NAME" : "SD_WS_94_T" + }, "readings" : { "state" : "T: 0.2", "temperature" : "0.2", "type" : "Atech" }, - "minProtocolVersion" : "1.27", "rmsg" : "MU;P0=-32001;P1=1532;P2=-299;P3=-7608;P4=-2005;D=0121212121212121314141414121214121214141414141414141414141414141414141212141412121412121412121414121;CP=1;", - "dmsg" : "W94#0D8000336CC", - "internals" : { - "DEF" : "SD_WS_94_T", - "NAME" : "SD_WS_94_T" - }, - "user" : "Kreidler1221", "tests" : [ { "comment" : "#2" @@ -1426,22 +1249,18 @@ }, { "comment" : "Temp sensor Id: 0C (ID 63 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-03-26 10:07:18", + "dispatch_repeats" : "1", + "dmsg" : "W94#0D80180CDB6C", + "internals" : { + "DEF" : "SD_WS_94_T", + "NAME" : "SD_WS_94_T" + }, "readings" : { "state" : "T: 10.2", "temperature" : "10.2", "type" : "Atech" }, - "minProtocolVersion" : "1.27", "rmsg" : "MU;P0=-31292;P1=1529;P2=-300;P3=-7610;P4=-2009;D=012121212121212131414141412121412121414141414141414141412121414141414141412121414121214121214121214121214121012121212121212131414141412121412121414141414141414141412121414141414141412121414121214121214121214121214121;CP=1;", - "dmsg" : "W94#0D80180CDB6C", - "internals" : { - "NAME" : "SD_WS_94_T", - "DEF" : "SD_WS_94_T" - }, - "dispatch_repeats" : "1", - "user" : "Kreidler1221", "tests" : [ { "comment" : "#3" @@ -1450,22 +1269,18 @@ }, { "comment" : "Temp sensor Id: 0C (ID 63 additionally)", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-03-26 10:03:12", + "dispatch_repeats" : "1", + "dmsg" : "W94#0D8031B60C6C", + "internals" : { + "DEF" : "SD_WS_94_T", + "NAME" : "SD_WS_94_T" + }, "readings" : { "state" : "T: 27", "temperature" : "27", "type" : "Atech" }, - "minProtocolVersion" : "1.27", "rmsg" : "MU;P0=-31290;P1=1533;P2=-297;P3=-7608;P4=-2006;D=012121212121212131414141412121412121414141414141414141212141414121214121214121214141414141212141414121214121012121212121212131414141412121412121414141414141414141212141414121214121214121214141414141212141414121214121;CP=1;", - "dmsg" : "W94#0D8031B60C6C", - "internals" : { - "NAME" : "SD_WS_94_T", - "DEF" : "SD_WS_94_T" - }, - "dispatch_repeats" : "1", - "user" : "Kreidler1221", "tests" : [ { "comment" : "#4" @@ -1473,28 +1288,25 @@ ] } ], - "id" : "94" + "id" : "94", + "module" : "SD_WS", + "name" : "Atech" }, { - "module" : "SD_WS", "data" : [ { "comment" : "BBQ temperature sensor", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "revision_entry" : "2021-03-25 14:38:02", - "minProtocolVersion" : "1.27", + "dmsg" : "W106#2632DC", + "internals" : { + "DEF" : "SD_WS_106_T", + "NAME" : "SD_WS_106_T" + }, "readings" : { + "state" : "T: 22.6", "temperature" : "22.6", - "type" : "GT-TMBBQ-01", - "state" : "T: 22.6" - }, - "internals" : { - "NAME" : "SD_WS_106_T", - "DEF" : "SD_WS_106_T" + "type" : "GT-TMBBQ-01" }, "rmsg" : "MS;P0=525;P1=-2051;P3=-8905;P4=-4062;D=0301010401010404010101040401010401040401040404;CP=0;SP=3;R=35;e;b=2;m0;", - "dmsg" : "W106#2632DC", - "user" : "elektron-bbs", "tests" : [ { "comment" : "#0" @@ -1502,77 +1314,65 @@ ] }, { - "tests" : [ - { - "comment" : "#1" - } - ], - "user" : "elektron-bbs", + "comment" : "BBQ temperature sensor", + "dmsg" : "W106#9A57A8", "internals" : { "DEF" : "SD_WS_106_T", "NAME" : "SD_WS_106_T" }, - "dmsg" : "W106#9A57A8", - "rmsg" : "MS;P1=-8514;P2=488;P3=-4075;P4=-2068;D=2123242423232423242423242324232323232423242324;CP=2;SP=1;R=31;e;b=70;s=4;m0;", - "minProtocolVersion" : "1.27", "readings" : { + "state" : "T: 88.1", "temperature" : "88.1", - "type" : "GT-TMBBQ-01", - "state" : "T: 88.1" + "type" : "GT-TMBBQ-01" }, - "revision_entry" : "2021-03-25 14:36:08", - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "BBQ temperature sensor" + "rmsg" : "MS;P1=-8514;P2=488;P3=-4075;P4=-2068;D=2123242423232423242423242324232323232423242324;CP=2;SP=1;R=31;e;b=70;s=4;m0;", + "tests" : [ + { + "comment" : "#1" + } + ] }, { - "user" : "elektron-bbs", + "comment" : "BBQ temperature sensor", + "dmsg" : "W106#9A5D20", "internals" : { "DEF" : "SD_WS_106_T", "NAME" : "SD_WS_106_T" }, - "dmsg" : "W106#9A5D20", - "rmsg" : "MS;P1=-9144;P2=469;P3=-4101;P4=-2099;D=2123242423232423242423242323232423242423242424;CP=2;SP=1;R=58;O;b=70;s=4;m0;", - "tests" : [ - { - "comment" : "#2" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2020-04-13 21:14:53Z Sidey", - "comment" : "BBQ temperature sensor", "readings" : { "state" : "T: 97.8", "temperature" : "97.8", "type" : "GT-TMBBQ-01" }, - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-25 14:34:53" + "rmsg" : "MS;P1=-9144;P2=469;P3=-4101;P4=-2099;D=2123242423232423242423242323232423242423242424;CP=2;SP=1;R=58;O;b=70;s=4;m0;", + "tests" : [ + { + "comment" : "#2" + } + ] } ], "id" : "106", + "module" : "SD_WS", "name" : "GT-TMBBQ-01s" }, { - "module" : "SD_WS", "data" : [ { "comment" : "Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100 Soil Moisture Sensor", - "revision_modul" : "14_SD_WS.pm 21666 2022-01-05 20:44:16Z elektron-bbs", - "revision_entry" : "2022-01-08 20:37:30", - "readings" : { - "state" : " H: 31", - "adc" : "187", - "humidity" : "31", - "type" : "WH51, DP100, MISOL/1", - "batteryVoltage" : "1.6" - }, - "minProtocolVersion" : "1.41", + "dmsg" : "W107#5100C6BF107F1FF8BBFFFFFFEE22", "internals" : { "DEF" : "SD_WS_107_H", "NAME" : "SD_WS_107_H" }, + "readings" : { + "adc" : "187", + "batteryVoltage" : "1.6", + "humidity" : "31", + "state" : " H: 31", + "type" : "WH51, DP100, MISOL/1" + }, "rmsg" : "MN;D=5100C6BF107F1FF8BBFFFFFFEE22;R=14;", - "dmsg" : "W107#5100C6BF107F1FF8BBFFFFFFEE22", - "user" : "elektron-bbs", "tests" : [ { "comment" : "#0" @@ -1580,92 +1380,79 @@ ] }, { + "comment" : "Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100 Soil Moisture Sensor", + "dmsg" : "W107#51006B586E7F24F8D2FFFFFF3C288", "internals" : { "DEF" : "SD_WS_107_H", "NAME" : "SD_WS_107_H" }, - "dmsg" : "W107#51006B586E7F24F8D2FFFFFF3C288", - "rmsg" : "MN;D=51006B586E7F24F8D2FFFFFF3C288;R=14;", - "user" : "elektron-bbs", - "tests" : [ - { - "comment" : "#1" - } - ], - "comment" : "Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100 Soil Moisture Sensor", - "revision_modul" : "14_SD_WS.pm 21666 2022-01-05 20:44:16Z elektron-bbs", - "revision_entry" : "2022-01-08 20:46:22", "readings" : { - "state" : " H: 36", "adc" : "210", - "humidity" : "36", "batteryVoltage" : "1.4", + "humidity" : "36", + "state" : " H: 36", "type" : "WH51, DP100, MISOL/1" }, - "minProtocolVersion" : "1.41" + "rmsg" : "MN;D=51006B586E7F24F8D2FFFFFF3C288;R=14;", + "tests" : [ + { + "comment" : "#1" + } + ] } ], "id" : "107", + "module" : "SD_WS", "name" : "WH51" }, { - "name" : "BRESSER 5in1", - "module" : "SD_WS", "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], + "comment" : "BRESSER 5-in-1 Weather Center, Bresser Professional Rain Gauge", + "dmsg" : "W108#AD8008700810070228443500", "internals" : { "DEF" : "SD_WS_108", "NAME" : "SD_WS_108" }, - "dmsg" : "W108#AD8008700810070228443500", - "rmsg" : "MN;D=E7527FF78FF7EFF8FDD7BBCAFF18AD80087008100702284435000002;R=213;", - "user" : "elektron-bbs", - "revision_entry" : "2021-07-28 20:23:07", "readings" : { + "batteryState" : "ok", "humidity" : "28", "rain" : "354.4", - "windGust" : "0.8", - "windDirectionText" : "SSE", - "windSpeed" : "0.8", "state" : "T: 20.7 H: 28 W: 0.8 R: 354.4", "temperature" : "20.7", - "batteryState" : "ok", "type" : "Bresser_5in1, Bresser_rain_gauge, Fody_E42, Fody_E43", - "windDirectionDegree" : "157.5" + "windDirectionDegree" : "157.5", + "windDirectionText" : "SSE", + "windGust" : "0.8", + "windSpeed" : "0.8" }, - "minProtocolVersion" : "1.30", - "comment" : "BRESSER 5-in-1 Weather Center, Bresser Professional Rain Gauge", - "revision_modul" : "14_SD_WS.pm 21666 2021-06-03 16:00:53Z Sidey" + "rmsg" : "MN;D=E7527FF78FF7EFF8FDD7BBCAFF18AD80087008100702284435000002;R=213;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { - "revision_modul" : "14_SD_WS.pm 21666 2021-06-03 16:00:53Z Sidey", "comment" : "BRESSER 5-in-1 Weather Center, Bresser Professional Rain Gauge", + "dmsg" : "W108#AD8000D00010280078443508", + "internals" : { + "DEF" : "SD_WS_108", + "NAME" : "SD_WS_108" + }, "readings" : { - "humidity" : "78", "batteryState" : "ok", + "humidity" : "78", + "rain" : "354.4", + "state" : "T: -2.8 H: 78 W: 0 R: 354.4", + "temperature" : "-2.8", "type" : "Bresser_5in1, Bresser_rain_gauge, Fody_E42, Fody_E43", "windDirectionDegree" : "292.5", - "temperature" : "-2.8", - "windGust" : "0", "windDirectionText" : "WNW", - "state" : "T: -2.8 H: 78 W: 0 R: 354.4", - "windSpeed" : "0", - "rain" : "354.4" + "windGust" : "0", + "windSpeed" : "0" }, - "minProtocolVersion" : "1.30", - "revision_entry" : "2021-07-28 20:25:17", - "user" : "elektron-bbs", - "dmsg" : "W108#AD8000D00010280078443508", "rmsg" : "MN;D=E8527FFF2FFFEFD7FF87BBCAF717AD8000D000102800784435080000;R=214;", - "internals" : { - "DEF" : "SD_WS_108", - "NAME" : "SD_WS_108" - }, "tests" : [ { "comment" : "#1" @@ -1674,28 +1461,24 @@ }, { "comment" : "BRESSER 5-in-1 Weather Center, Bresser Professional Rain Gauge", - "revision_modul" : "14_SD_WS.pm 21666 2021-06-03 16:00:53Z Sidey", - "revision_entry" : "2021-07-28 20:24:58", + "dmsg" : "W108#AD8014F01310800088483600", + "internals" : { + "DEF" : "SD_WS_108", + "NAME" : "SD_WS_108" + }, "readings" : { - "humidity" : "88", - "windDirectionDegree" : "337.5", - "type" : "Bresser_5in1, Bresser_rain_gauge, Fody_E42, Fody_E43", "batteryState" : "ok", - "temperature" : "8", - "windSpeed" : "1.3", + "humidity" : "88", + "rain" : "364.8", "state" : "T: 8 H: 88 W: 1.3 R: 364.8", - "windGust" : "2", + "temperature" : "8", + "type" : "Bresser_5in1, Bresser_rain_gauge, Fody_E42, Fody_E43", + "windDirectionDegree" : "337.5", "windDirectionText" : "NNW", - "rain" : "364.8" + "windGust" : "2", + "windSpeed" : "1.3" }, - "minProtocolVersion" : "1.30", "rmsg" : "MN;D=E6527FEB0FECEF7FFF77B7C9FF19AD8014F013108000884836000003;R=211;", - "dmsg" : "W108#AD8014F01310800088483600", - "internals" : { - "NAME" : "SD_WS_108", - "DEF" : "SD_WS_108" - }, - "user" : "elektron-bbs", "tests" : [ { "comment" : "#2" @@ -1703,86 +1486,75 @@ ] } ], - "id" : "108" + "id" : "108", + "module" : "SD_WS", + "name" : "BRESSER 5in1" }, { - "name" : "ADE WS 1907", "data" : [ { - "revision_entry" : "2021-05-25 10:37:36", + "comment" : "Weather station with rain gauge", + "dmsg" : "W110#9C1B060001EA05AD4", + "internals" : { + "DEF" : "SD_WS_110_TR", + "NAME" : "SD_WS_110_TR" + }, "readings" : { - "temperature" : "16.3", - "type" : "ADE WS1907", "batteryState" : "ok", - "rawRainCounter" : "266", "rain" : "26.6", + "rawRainCounter" : "266", "sendCounter" : "3", - "state" : "T: 16.3 R: 26.6" + "state" : "T: 16.3 R: 26.6", + "temperature" : "16.3", + "type" : "ADE WS1907" }, - "minProtocolVersion" : "1.29", - "comment" : "Weather station with rain gauge", - "revision_modul" : "14_SD_WS.pm 21666 2020-05-22 21:30:00Z Sidey", + "rmsg" : "MU;P0=970;P1=-112;P2=516;P3=-984;P4=2577;P5=-2692;P6=7350;D=01234343450503450503434343434505034343434343434343434343434343434505050503450345034343434343450345050345034505034503456503434505050343434343450503450503434343434505034343434343434343434343434343434505050503450345034343434343450345050345034505034503456503;CP=0;R=12;O;", "tests" : [ { "comment" : "#0" } - ], - "internals" : { - "NAME" : "SD_WS_110_TR", - "DEF" : "SD_WS_110_TR" - }, - "rmsg" : "MU;P0=970;P1=-112;P2=516;P3=-984;P4=2577;P5=-2692;P6=7350;D=01234343450503450503434343434505034343434343434343434343434343434505050503450345034343434343450345050345034505034503456503434505050343434343450503450503434343434505034343434343434343434343434343434505050503450345034343434343450345050345034505034503456503;CP=0;R=12;O;", - "dmsg" : "W110#9C1B060001EA05AD4", - "user" : "docolli" + ] }, { - "revision_entry" : "2021-05-25 10:39:21", + "comment" : "Weather station with rain gauge", + "dmsg" : "W110#9C1B041E03A705884", + "internals" : { + "DEF" : "SD_WS_110_TR", + "NAME" : "SD_WS_110_TR" + }, "readings" : { - "sendCounter" : "2", + "batteryState" : "ok", "rain" : "80.8", + "rawRainCounter" : "808", + "sendCounter" : "2", "state" : "T: 12.6 R: 80.8", "temperature" : "12.6", - "batteryState" : "ok", - "type" : "ADE WS1907", - "rawRainCounter" : "808" + "type" : "ADE WS1907" }, - "minProtocolVersion" : "1.29", - "comment" : "Weather station with rain gauge", - "revision_modul" : "14_SD_WS.pm 21666 2020-05-22 21:30:00Z Sidey", + "rmsg" : "MU;P0=7344;P1=384;P2=-31380;P3=272;P4=-972;P5=2581;P6=-2689;P7=990;D=12345454545676745676745454545456745454545456767676745454545454545676767456745456767674545454545674567674545456745454545606745456767674545454545676745676745454545456745454545456767676745454545454545676767456745456767674545454545674567674545456745454545606;CP=7;R=19;O;", "tests" : [ { "comment" : "#1" } - ], - "dmsg" : "W110#9C1B041E03A705884", - "rmsg" : "MU;P0=7344;P1=384;P2=-31380;P3=272;P4=-972;P5=2581;P6=-2689;P7=990;D=12345454545676745676745454545456745454545456767676745454545454545676767456745456767674545454545674567674545456745454545606745456767674545454545676745676745454545456745454545456767676745454545454545676767456745456767674545454545674567674545456745454545606;CP=7;R=19;O;", + ] + }, + { + "comment" : "Weather station with rain gauge", + "dmsg" : "W110#9C1B042B039805864", "internals" : { "DEF" : "SD_WS_110_TR", "NAME" : "SD_WS_110_TR" }, - "user" : "docolli" - }, - { - "revision_modul" : "14_SD_WS.pm 21666 2020-05-22 21:30:00Z Sidey", - "comment" : "Weather station with rain gauge", "readings" : { - "type" : "ADE WS1907", "batteryState" : "ok", + "rain" : "82.1", "rawRainCounter" : "821", - "temperature" : "11.8", - "state" : "T: 11.8 R: 82.1", "sendCounter" : "2", - "rain" : "82.1" + "state" : "T: 11.8 R: 82.1", + "temperature" : "11.8", + "type" : "ADE WS1907" }, - "minProtocolVersion" : "1.29", - "revision_entry" : "2021-05-25 10:41:01", - "user" : "docolli", "rmsg" : "MU;P0=-5332;P1=6864;P2=-2678;P3=994;P4=-977;P5=2693;D=01234545232323454545454523234523234545454545234545454523452345232345454545454523232345452323454545454545454523452323454545452323454521234545232323454545454523234523234545454545234545454523452345232345454545454523232345452323454545454545454523452323454545;CP=3;R=248;O;", - "dmsg" : "W110#9C1B042B039805864", - "internals" : { - "NAME" : "SD_WS_110_TR", - "DEF" : "SD_WS_110_TR" - }, "tests" : [ { "comment" : "#2" @@ -1791,31 +1563,25 @@ } ], "id" : "110", - "module" : "SD_WS" + "module" : "SD_WS", + "name" : "ADE WS 1907" }, { - "name" : "TS-FT002", - "module" : "SD_WS", - "id" : "111", "data" : [ { - "revision_modul" : "14_SD_WS.pm 21666 2021-08-05 19:43:29Z elektron-bbs", "comment" : "Water tank level monitor with temperature", - "minProtocolVersion" : "1.32", + "dmsg" : "W111#5F5B8860F110C400C9", + "internals" : { + "DEF" : "SD_WS_111_TL", + "NAME" : "SD_WS_111_TL" + }, "readings" : { - "type" : "TS-FT002", "distance" : "111", + "state" : "T: 16.8 D: 111", "temperature" : "16.8", - "state" : "T: 16.8 D: 111" - }, - "revision_entry" : "2021-08-05 20:33:15", - "user" : "docolli", - "internals" : { - "NAME" : "SD_WS_111_TL", - "DEF" : "SD_WS_111_TL" + "type" : "TS-FT002" }, "rmsg" : "MU;P0=-21110;P1=484;P2=-971;P3=-488;D=01213121212121213121312121312121213131312131313131212131313131312121212131313121313131213131313121213131312131313131313131313131212131312131312101213121212121213121312121312121213131312131313131212131313131312121212131313121313131213131313121213131312131;CP=1;R=26;O;", - "dmsg" : "W111#5F5B8860F110C400C9", "tests" : [ { "comment" : "#0" @@ -1823,98 +1589,85 @@ ] }, { - "revision_entry" : "2021-08-05 20:33:45", + "comment" : "Water tank level monitor with temperature", + "dmsg" : "W111#5F5B8840F170240069", + "internals" : { + "DEF" : "SD_WS_111_TL", + "NAME" : "SD_WS_111_TL" + }, "readings" : { - "type" : "TS-FT002", "distance" : "47", + "state" : "T: 19 D: 47", "temperature" : "19", - "state" : "T: 19 D: 47" + "type" : "TS-FT002" }, - "minProtocolVersion" : "1.32", - "comment" : "Water tank level monitor with temperature", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-05 19:43:29Z elektron-bbs", + "rmsg" : "MU;P0=-31628;P1=469;P2=-980;P3=-499;P4=-22684;D=01213121212121213121312121312121213131312131313131213131313131312121212131313121312121213131313131312131312131313131313131313131312121312131312141213121212121213121312121312121213131312131313131213131313131312121212131313121312121213131313131312131312131;CP=1;R=38;O;", "tests" : [ { "comment" : "#1" } - ], - "dmsg" : "W111#5F5B8840F170240069", - "rmsg" : "MU;P0=-31628;P1=469;P2=-980;P3=-499;P4=-22684;D=01213121212121213121312121312121213131312131313131213131313131312121212131313121312121213131313131312131312131313131313131313131312121312131312141213121212121213121312121312121213131312131313131213131313131312121212131313121312121213131313131312131312131;CP=1;R=38;O;", - "internals" : { - "NAME" : "SD_WS_111_TL", - "DEF" : "SD_WS_111_TL" - }, - "user" : "docolli" + ] }, { - "tests" : [ - { - "comment" : "#2" - } - ], + "comment" : "Water tank level monitor with temperature", "dmsg" : "W111#5F5B8840F110A40089", - "rmsg" : "MU;P0=-5980;P1=464;P2=-988;P3=-511;P4=-22660;D=01213121212121213121312121312121213131312131313131213131313131312121212131313121313131213131313121312131312131313131313131313131213131312131312141213121212121213121312121312121213131312131313131213131313131312121212131313121313131213131313121312131312131;CP=1;R=38;O;", "internals" : { - "NAME" : "SD_WS_111_TL", - "DEF" : "SD_WS_111_TL" + "DEF" : "SD_WS_111_TL", + "NAME" : "SD_WS_111_TL" }, - "user" : "docolli", - "revision_entry" : "2021-08-05 20:34:21", "readings" : { - "type" : "TS-FT002", "distance" : "47", + "state" : "T: 20 D: 47", "temperature" : "20", - "state" : "T: 20 D: 47" + "type" : "TS-FT002" }, - "minProtocolVersion" : "1.32", - "comment" : "Water tank level monitor with temperature", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-05 19:43:29Z elektron-bbs" + "rmsg" : "MU;P0=-5980;P1=464;P2=-988;P3=-511;P4=-22660;D=01213121212121213121312121312121213131312131313131213131313131312121212131313121313131213131313121312131312131313131313131313131213131312131312141213121212121213121312121312121213131312131313131213131313131312121212131313121313131213131313121312131312131;CP=1;R=38;O;", + "tests" : [ + { + "comment" : "#2" + } + ] } - ] + ], + "id" : "111", + "module" : "SD_WS", + "name" : "TS-FT002" }, { "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], - "user" : "muede-de", - "rmsg" : "MS;P1=-262;P2=237;P3=-760;P6=-2972;P7=721;D=26232371237171717123232323237171237171712371232323712323712371712371712371232323712371232371717123;CP=2;SP=6;R=1;O;m2;", + "comment" : "Wireless Grill Thermometer", "dmsg" : "W113#2F06E896D14E", "internals" : { "DEF" : "SD_WS_113_T", "NAME" : "SD_WS_113_T" }, "readings" : { + "state" : "T: 203 T2: 300", "temperature" : "203", - "type" : "GFGT_433_B1", "temperature2" : "300", - "state" : "T: 203 T2: 300" + "type" : "GFGT_433_B1" }, - "minProtocolVersion" : "1.33", - "revision_entry" : "2021-08-09 21:25:05", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-08 12:01:00Z Sidey", - "comment" : "Wireless Grill Thermometer" + "rmsg" : "MS;P1=-262;P2=237;P3=-760;P6=-2972;P7=721;D=26232371237171717123232323237171237171712371232323712323712371712371712371232323712371232371717123;CP=2;SP=6;R=1;O;m2;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { - "revision_modul" : "14_SD_WS.pm 21666 2021-08-08 12:01:00Z Sidey", "comment" : "Wireless Grill Thermometer", - "minProtocolVersion" : "1.33", + "dmsg" : "W113#2F06E348D102", + "internals" : { + "DEF" : "SD_WS_113_T", + "NAME" : "SD_WS_113_T" + }, "readings" : { "state" : "T: 201 T2: 257", - "type" : "GFGT_433_B1", + "temperature" : "201", "temperature2" : "257", - "temperature" : "201" - }, - "revision_entry" : "2021-08-08 13:28:16", - "user" : "muede-de", - "internals" : { - "NAME" : "SD_WS_113_T", - "DEF" : "SD_WS_113_T" + "type" : "GFGT_433_B1" }, - "dmsg" : "W113#2F06E348D102", "rmsg" : "MS;P2=-754;P3=247;P5=-2996;P6=718;P7=-272;D=35323267326767676732323232326767326767673232326767326732326732323267673267323232673232323232326732;CP=3;SP=5;R=3;O;m2;", "tests" : [ { @@ -1923,28 +1676,24 @@ ] }, { - "user" : "muede-de", + "comment" : "Wireless Grill Thermometer", + "dmsg" : "W113#2F00A5AED106", "internals" : { "DEF" : "SD_WS_113_T", "NAME" : "SD_WS_113_T" }, + "readings" : { + "state" : "T: 24 T2: 29", + "temperature" : "24", + "temperature2" : "29", + "type" : "GFGT_433_B1" + }, "rmsg" : "MS;P1=-761;P2=249;P4=-3005;P5=718;P6=-270;D=24212156215656565621212121212121215621562121562156562156215656562156562156212121562121212121565621;CP=2;SP=4;R=34;O;m2;", - "dmsg" : "W113#2F00A5AED106", "tests" : [ { "comment" : "#2" } - ], - "revision_modul" : "14_SD_WS.pm 21666 2021-08-08 12:01:00Z Sidey", - "comment" : "Wireless Grill Thermometer", - "minProtocolVersion" : "1.33", - "readings" : { - "type" : "GFGT_433_B1", - "temperature2" : "29", - "temperature" : "24", - "state" : "T: 24 T2: 29" - }, - "revision_entry" : "2021-08-08 13:30:11" + ] } ], "id" : "113", @@ -1952,131 +1701,114 @@ "name" : "GFGT_433_B1" }, { - "name" : "BRESSER 3-in-1", "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], + "comment" : "BRESSER 3-in-1", + "dmsg" : "W115#C898BE40041218FF88FF0008017E88FFF04F0000000000000000", "internals" : { - "NAME" : "SD_WS_115_0", - "DEF" : "SD_WS_115_0" + "DEF" : "SD_WS_115_0", + "NAME" : "SD_WS_115_0" }, - "rmsg" : "MN;D=C898BE40041218FF88FF0008017E88FFF04F0000000000000000;R=190;", - "dmsg" : "W115#C898BE40041218FF88FF0008017E88FFF04F0000000000000000", - "user" : "elektron-bbs", - "revision_entry" : "2022-11-20 19:58:03", "readings" : { - "uv" : "0", - "windSpeed" : "0.7", - "state" : "T: -1.7 H: 88 W: 0.7", + "batteryChanged" : "1", "batteryState" : "ok", - "type" : "Bresser_6in1, new Bresser_5in1", - "windDirectionDegree" : "0", - "temperature" : "-1.7", "channel" : "0", - "batteryChanged" : "1", "humidity" : "88", - "windDirectionText" : "N", - "windGust" : "0.7" - }, - "minProtocolVersion" : "1.48", - "comment" : "BRESSER 3-in-1", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79" + "state" : "T: -1.7 H: 88 W: 0.7", + "temperature" : "-1.7", + "type" : "Bresser_6in1, new Bresser_5in1", + "uv" : "0", + "windDirectionDegree" : "0", + "windDirectionText" : "N", + "windGust" : "0.7", + "windSpeed" : "0.7" + }, + "rmsg" : "MN;D=C898BE40041218FF88FF0008017E88FFF04F0000000000000000;R=190;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "115", - "module" : "SD_WS" + "module" : "SD_WS", + "name" : "BRESSER 3-in-1" }, { - "module" : "SD_WS", "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], - "user" : "elektron-bbs", + "comment" : "BRESSER 6-in-1 Weather Center, Bresser new 5-in-1 sensors 7002550", + "dmsg" : "W115#3BF120B00C1618FF77FF0458152293FFF06B0000", "internals" : { - "NAME" : "SD_WS_115_0", - "DEF" : "SD_WS_115_0" + "DEF" : "SD_WS_115_0", + "NAME" : "SD_WS_115_0" }, - "dmsg" : "W115#3BF120B00C1618FF77FF0458152293FFF06B0000", - "rmsg" : "MN;D=3BF120B00C1618FF77FF0458152293FFF06B0000;R=242;", "readings" : { - "humidity" : "93", + "batteryState" : "ok", "channel" : "0", + "humidity" : "93", + "state" : "T: 15.2 H: 93 W: 0.8", "temperature" : "15.2", - "windDirectionDegree" : "45", "type" : "Bresser_6in1, new Bresser_5in1", - "batteryState" : "ok", - "state" : "T: 15.2 H: 93 W: 0.8", - "windSpeed" : "0.8", + "windDirectionDegree" : "45", "windDirectionText" : "NE", - "windGust" : "0.8" + "windGust" : "0.8", + "windSpeed" : "0.8" }, - "minProtocolVersion" : "1.35", - "revision_entry" : "2021-08-22 16:51:50", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-17 19:14:52Z elektron-bbs", - "comment" : "BRESSER 6-in-1 Weather Center, Bresser new 5-in-1 sensors 7002550" + "rmsg" : "MN;D=3BF120B00C1618FF77FF0458152293FFF06B0000;R=242;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { + "comment" : "BRESSER 6-in-1 Weather Center, Bresser new 5-in-1 sensors 7002550", "dmsg" : "W115#1E6C20B00C1618FF99FF0458FFFFA9FF015B0000", - "rmsg" : "MN;D=1E6C20B00C1618FF99FF0458FFFFA9FF015B0000;R=241;", "internals" : { "DEF" : "SD_WS_115_0", "NAME" : "SD_WS_115_0" }, - "user" : "elektron-bbs", - "tests" : [ - { - "comment" : "#1" - } - ], - "comment" : "BRESSER 6-in-1 Weather Center, Bresser new 5-in-1 sensors 7002550", - "revision_modul" : "14_SD_WS.pm 21666 2021-08-17 19:14:52Z elektron-bbs", - "revision_entry" : "2021-08-22 16:57:57", "readings" : { - "windSpeed" : "0.6", + "channel" : "0", + "rain" : "5.6", "state" : "W: 0.6 R: 5.6", + "type" : "Bresser_6in1, new Bresser_5in1", + "windDirectionDegree" : "45", "windDirectionText" : "NE", "windGust" : "0.6", - "rain" : "5.6", - "windDirectionDegree" : "45", - "type" : "Bresser_6in1, new Bresser_5in1", - "channel" : "0" + "windSpeed" : "0.6" }, - "minProtocolVersion" : "1.35" + "rmsg" : "MN;D=1E6C20B00C1618FF99FF0458FFFFA9FF015B0000;R=241;", + "tests" : [ + { + "comment" : "#1" + } + ] }, { "comment" : "BRESSER 6-in-1", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", - "revision_entry" : "2022-11-20 20:27:05", + "dmsg" : "W115#9104143025BE18FFFFFF2928925A97FFF0000000000000000003", + "internals" : { + "DEF" : "SD_WS_115_0", + "NAME" : "SD_WS_115_0" + }, "readings" : { - "humidity" : "97", "batteryChanged" : "1", - "windDirectionText" : "WNW", - "windGust" : "0", - "uv" : "0", - "state" : "T: -7.5 H: 97 W: 0", - "windSpeed" : "0", + "batteryState" : "ok", "channel" : "0", + "humidity" : "97", + "state" : "T: -7.5 H: 97 W: 0", "temperature" : "-7.5", - "windDirectionDegree" : "292", "type" : "Bresser_6in1, new Bresser_5in1", - "batteryState" : "ok" + "uv" : "0", + "windDirectionDegree" : "292", + "windDirectionText" : "WNW", + "windGust" : "0", + "windSpeed" : "0" }, - "minProtocolVersion" : "1.48", - "dmsg" : "W115#9104143025BE18FFFFFF2928925A97FFF0000000000000000003", "rmsg" : "MN;D=9104143025BE18FFFFFF2928925A97FFF0000000000000000003;R=189;", - "internals" : { - "DEF" : "SD_WS_115_0", - "NAME" : "SD_WS_115_0" - }, - "user" : "elektron-bbs", "tests" : [ { "comment" : "#2" @@ -2085,35 +1817,32 @@ } ], "id" : "115", + "module" : "SD_WS", "name" : "BRESSER 6-in-1" }, { "data" : [ { - "revision_entry" : "2022-03-16 21:09:39", - "minProtocolVersion" : "1.44", + "comment" : "Bresser_6in1 Thermo-/hygro sensor", + "dmsg" : "W115#6CD6197005FD2900000000002126630000A1FFFF07000000000000000000", + "internals" : { + "DEF" : "SD_WS_115_21", + "NAME" : "SD_WS_115_21" + }, "readings" : { + "batteryState" : "ok", + "channel" : "21", "humidity" : "63", "state" : "T: 21.2 H: 63", - "type" : "Bresser_6in1, new Bresser_5in1", - "batteryState" : "ok", "temperature" : "21.2", - "channel" : "21" + "type" : "Bresser_6in1, new Bresser_5in1" }, - "comment" : "Bresser_6in1 Thermo-/hygro sensor", - "revision_modul" : "14_SD_WS.pm 21666 2022-01-30 10:19:30Z elektron-bbs", + "rmsg" : "MN;D=6CD6197005FD2900000000002126630000A1FFFF07000000000000000000;R=28;", "tests" : [ { "comment" : "#0" } - ], - "dmsg" : "W115#6CD6197005FD2900000000002126630000A1FFFF07000000000000000000", - "rmsg" : "MN;D=6CD6197005FD2900000000002126630000A1FFFF07000000000000000000;R=28;", - "internals" : { - "DEF" : "SD_WS_115_21", - "NAME" : "SD_WS_115_21" - }, - "user" : "elektron-bbs" + ] } ], "id" : "115", @@ -2121,88 +1850,74 @@ "name" : "BRESSER 6-in-1" }, { - "id" : "115", "data" : [ { - "minProtocolVersion" : "1.44", + "comment" : "Bresser Explore Scientific SM60020 Soil moisture Sensor", + "dmsg" : "W115#F16E187000E347FFFFFF0000252216FFF004000", + "internals" : { + "DEF" : "SD_WS_115_47", + "NAME" : "SD_WS_115_47" + }, "readings" : { + "batteryState" : "ok", + "channel" : "47", "humidity" : "99", "state" : "T: 25.2 H: 99", "temperature" : "25.2", - "channel" : "47", - "batteryState" : "ok", "type" : "Bresser_6in1, new Bresser_5in1" }, - "revision_entry" : "2022-03-16 21:05:07", - "revision_modul" : "14_SD_WS.pm 21666 2022-01-30 10:19:30Z elektron-bbs", - "comment" : "Bresser Explore Scientific SM60020 Soil moisture Sensor", + "rmsg" : "MN;D=F16E187000E347FFFFFF0000252216FFF004000;R=242;", "tests" : [ { "comment" : "#0" } - ], - "user" : "elektron-bbs", - "internals" : { - "DEF" : "SD_WS_115_47", - "NAME" : "SD_WS_115_47" - }, - "rmsg" : "MN;D=F16E187000E347FFFFFF0000252216FFF004000;R=242;", - "dmsg" : "W115#F16E187000E347FFFFFF0000252216FFF004000" + ] } ], + "id" : "115", "module" : "SD_WS", "name" : "Bresser Explore Scientific" }, { - "name" : "WH57", - "id" : "116", "data" : [ { - "user" : "elektron-bbs", + "comment" : "Thunder and lightning sensor Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L", "dmsg" : "W116#5780C655051401C4D0", - "rmsg" : "MN;D=5780C655051401C4D0;R=37;", "internals" : { - "NAME" : "SD_WS_116", - "DEF" : "SD_WS_116" + "DEF" : "SD_WS_116", + "NAME" : "SD_WS_116" }, - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2022-01-08 20:06:52Z elektron-bbs", - "comment" : "Thunder and lightning sensor Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L", - "minProtocolVersion" : "1.42", "readings" : { - "distance" : "20", - "type" : "WH57, DP60, WH31L", + "batteryPercent" : "100", "count" : "1", + "distance" : "20", + "identified" : "lightning", "state" : "I: lightning D: 20", - "batteryPercent" : "100", - "identified" : "lightning" + "type" : "WH57, DP60, WH31L" }, - "revision_entry" : "2022-01-14 16:47:22" + "rmsg" : "MN;D=5780C655051401C4D0;R=37;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { "comment" : "Thunder and lightning sensor Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L", - "revision_modul" : "14_SD_WS.pm 21666 2022-01-08 20:06:52Z elektron-bbs", - "revision_entry" : "2022-01-14 16:49:34", - "minProtocolVersion" : "1.42", + "dmsg" : "W116#5740C655053F0A7272", + "internals" : { + "DEF" : "SD_WS_116", + "NAME" : "SD_WS_116" + }, "readings" : { - "state" : "I: disturbance D: 63", - "identified" : "disturbance", "batteryPercent" : "100", "count" : "10", "distance" : "63", + "identified" : "disturbance", + "state" : "I: disturbance D: 63", "type" : "WH57, DP60, WH31L" }, - "internals" : { - "DEF" : "SD_WS_116", - "NAME" : "SD_WS_116" - }, "rmsg" : "MN;D=5740C655053F0A7272;R=39;", - "dmsg" : "W116#5740C655053F0A7272", - "user" : "elektron-bbs", "tests" : [ { "comment" : "#1" @@ -2210,72 +1925,64 @@ ] } ], - "module" : "SD_WS" + "id" : "116", + "module" : "SD_WS", + "name" : "WH57" }, { - "module" : "SD_WS", - "id" : "117", "data" : [ { - "user" : "elektron-bbs", + "comment" : "BRESSER 7-in-1 Weather Center", + "dmsg" : "W117#56820C5F2760B2000000000084001270870066760000000000AAAAAA", "internals" : { - "NAME" : "SD_WS_117", - "DEF" : "SD_WS_117" + "DEF" : "SD_WS_117", + "NAME" : "SD_WS_117" }, - "rmsg" : "MN;D=FC28A6F58DCA18AAAAAAAAAA2EAAB8DA2DAACCDCAAAAAAAAAA000000;R=29;", - "dmsg" : "W117#56820C5F2760B2000000000084001270870066760000000000AAAAAA", - "tests" : [ - { - "comment" : "#0" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2022-01-15 12:25:06Z elektron-bbs", - "comment" : "BRESSER 7-in-1 Weather Center", "readings" : { - "uv" : "0", - "temperature" : "12.7", + "batteryChanged" : "1", "batteryState" : "ok", - "type" : "Bresser_7in1", - "windDirectionDegree" : "276", + "brightness" : "6.676", + "humidity" : "87", "rain" : "8.4", - "windSpeed" : "0", "state" : "T: 12.7 H: 87 W: 0 R: 8.4 B: 6.676", - "humidity" : "87", - "batteryChanged" : "1", - "brightness" : "6.676", + "temperature" : "12.7", + "type" : "Bresser_7in1", + "uv" : "0", + "windDirectionDegree" : "276", "windDirectionText" : "W", - "windGust" : "0" + "windGust" : "0", + "windSpeed" : "0" }, - "minProtocolVersion" : "1.43", - "revision_entry" : "2022-01-29 21:00:42" + "rmsg" : "MN;D=FC28A6F58DCA18AAAAAAAAAA2EAAB8DA2DAACCDCAAAAAAAAAA000000;R=29;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { - "revision_modul" : "14_SD_WS.pm 21666 2022-01-15 12:25:06Z elektron-bbs", "comment" : "BRESSER 7-in-1 Weather Center", - "minProtocolVersion" : "1.43", + "dmsg" : "W117#E76E0C5F1920BA000000000000001310880003600000000000AAAAAA", + "internals" : { + "DEF" : "SD_WS_117", + "NAME" : "SD_WS_117" + }, "readings" : { - "temperature" : "13.1", - "type" : "Bresser_7in1", + "batteryChanged" : "0", "batteryState" : "ok", - "windDirectionDegree" : "192", + "brightness" : "0.36", + "humidity" : "88", "rain" : "0", "state" : "T: 13.1 H: 88 W: 0 R: 0 B: 0.36", - "windSpeed" : "0", + "temperature" : "13.1", + "type" : "Bresser_7in1", "uv" : "0", - "brightness" : "0.36", + "windDirectionDegree" : "192", "windDirectionText" : "SSW", "windGust" : "0", - "humidity" : "88", - "batteryChanged" : "0" + "windSpeed" : "0" }, - "revision_entry" : "2022-01-29 21:02:52", - "user" : "elektron-bbs", "rmsg" : "MN;D=4DC4A6F5B38A10AAAAAAAAAAAAAAB9BA22AAA9CAAAAAAAAAAA000000;R=15;", - "dmsg" : "W117#E76E0C5F1920BA000000000000001310880003600000000000AAAAAA", - "internals" : { - "NAME" : "SD_WS_117", - "DEF" : "SD_WS_117" - }, "tests" : [ { "comment" : "#1" @@ -2283,208 +1990,180 @@ ] }, { - "user" : "elektron-bbs", + "comment" : "BRESSER 7-in-1 Weather Center", + "dmsg" : "W117#A65A0C5F1320BA000000000000001016940011560000000000AAAAAA", "internals" : { - "NAME" : "SD_WS_117", - "DEF" : "SD_WS_117" + "DEF" : "SD_WS_117", + "NAME" : "SD_WS_117" }, - "rmsg" : "MN;D=0CF0A6F5B98A10AAAAAAAAAAAAAABABC3EAABBFCAAAAAAAAAA000000;R=28;", - "dmsg" : "W117#A65A0C5F1320BA000000000000001016940011560000000000AAAAAA", - "tests" : [ - { - "comment" : "#2" - } - ], - "revision_modul" : "14_SD_WS.pm 21666 2022-01-15 12:25:06Z elektron-bbs", - "comment" : "BRESSER 7-in-1 Weather Center", "readings" : { "batteryChanged" : "0", - "humidity" : "94", - "brightness" : "1.156", - "windDirectionText" : "SE", - "windGust" : "0", - "uv" : "0", "batteryState" : "low", + "brightness" : "1.156", + "humidity" : "94", + "rain" : "0", + "state" : "T: 10.1 H: 94 W: 0 R: 0 B: 1.156", + "temperature" : "10.1", "type" : "Bresser_7in1", + "uv" : "0", "windDirectionDegree" : "132", - "temperature" : "10.1", - "state" : "T: 10.1 H: 94 W: 0 R: 0 B: 1.156", - "windSpeed" : "0", - "rain" : "0" + "windDirectionText" : "SE", + "windGust" : "0", + "windSpeed" : "0" }, - "minProtocolVersion" : "1.43", - "revision_entry" : "2022-01-29 21:04:17" + "rmsg" : "MN;D=0CF0A6F5B98A10AAAAAAAAAAAAAABABC3EAABBFCAAAAAAAAAA000000;R=28;", + "tests" : [ + { + "comment" : "#2" + } + ] } ], + "id" : "117", + "module" : "SD_WS", "name" : "BRESSER 7-in-1" }, { - "name" : "TFA 35.1077.54.S2", - "id" : "120", "data" : [ { - "revision_entry" : "2022-09-10 13:26:34", - "minProtocolVersion" : "1.47", + "comment" : "Weather station with 30.3151 (T/H-transmitter), 30.3152 (rain gauge), 30.3153 (anemometer)", + "dmsg" : "W120#FEAB049EA804080C53AC", + "internals" : { + "DEF" : "SD_WS_120", + "NAME" : "SD_WS_120" + }, "readings" : { + "batteryState" : "ok", "humidity" : "84", + "rain" : "473.1", + "rawRainCounter" : "1577", + "state" : "T: 19.1 H: 84 W: 0.7 R: 473.1", "temperature" : "19.1", - "batteryState" : "ok", "type" : "TFA_35.1077", - "rawRainCounter" : "1577", - "rain" : "473.1", "windGust" : "1.3", - "windSpeed" : "0.7", - "state" : "T: 19.1 H: 84 W: 0.7 R: 473.1" + "windSpeed" : "0.7" }, - "comment" : "Weather station with 30.3151 (T/H-transmitter), 30.3152 (rain gauge), 30.3153 (anemometer)", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-08-21 12:09:21Z elektron-bbs", + "rmsg" : "MU;P0=-6544;P1=486;P2=-987;P3=1451;D=01212121212121232123212321232121232323232321232321232321212121232123212321232323232323232321232323232323212323232323232321212323232123212323212121232123212123;CP=1;R=51;", "tests" : [ { "comment" : "#0" } - ], + ] + }, + { + "comment" : "Weather station with 30.3151 (T/H-transmitter), 30.3152 (rain gauge), 30.3153 (anemometer)", + "dmsg" : "W120#FEAB04D85602040DD0F6", "internals" : { "DEF" : "SD_WS_120", "NAME" : "SD_WS_120" }, - "dmsg" : "W120#FEAB049EA804080C53AC", - "rmsg" : "MU;P0=-6544;P1=486;P2=-987;P3=1451;D=01212121212121232123212321232121232323232321232321232321212121232123212321232323232323232321232323232323212323232323232321212323232123212323212121232123212123;CP=1;R=51;", - "user" : "Ronny2510" - }, - { "readings" : { + "batteryState" : "ok", "humidity" : "43", - "temperature" : "22", + "rain" : "530.4", "rawRainCounter" : "1768", + "state" : "T: 22 H: 43 W: 0.3 R: 530.4", + "temperature" : "22", "type" : "TFA_35.1077", - "batteryState" : "ok", - "rain" : "530.4", "windGust" : "0.7", - "state" : "T: 22 H: 43 W: 0.3 R: 530.4", "windSpeed" : "0.3" }, - "minProtocolVersion" : "1.47", - "revision_entry" : "2022-09-10 13:36:21", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-08-21 12:09:21Z elektron-bbs", - "comment" : "Weather station with 30.3151 (T/H-transmitter), 30.3152 (rain gauge), 30.3153 (anemometer)", + "rmsg" : "MU;P0=-15856;P1=480;P2=-981;P3=1460;D=01212121212121232123212321232121232323232321232321212321212323232321232123212123232323232323212323232323232123232323232321212321212123212323232321212121232121;CP=1;R=47;", "tests" : [ { "comment" : "#1" } - ], - "user" : "Ronny2510", - "internals" : { - "NAME" : "SD_WS_120", - "DEF" : "SD_WS_120" - }, - "dmsg" : "W120#FEAB04D85602040DD0F6", - "rmsg" : "MU;P0=-15856;P1=480;P2=-981;P3=1460;D=01212121212121232123212321232121232323232321232321212321212323232321232123212123232323232323212323232323232123232323232321212321212123212323232321212121232121;CP=1;R=47;" + ] }, { - "tests" : [ - { - "comment" : "#2" - } - ], + "comment" : "Weather station with 30.3151 (T/H-transmitter), 30.3152 (rain gauge), 30.3153 (anemometer)", + "dmsg" : "W120#FEDFD52C040444920614", "internals" : { - "NAME" : "SD_WS_120", - "DEF" : "SD_WS_120" + "DEF" : "SD_WS_120", + "NAME" : "SD_WS_120" }, - "dmsg" : "W120#FEDFD52C040444920614", - "rmsg" : "MU;P0=-13168;P1=469;P2=-1000;P3=1450;D=01212121212121232121232121212121212123212321232123232123212123232323232323212323232323232321232323212323232123232123232123232123232323232321212323232321232123;CP=1;R=79;", - "user" : "Ronny2510", - "revision_entry" : "2022-09-11 11:43:55", "readings" : { - "state" : "", - "dcf" : "2022-09-03 16:02:02", "batteryState" : "ok", + "dcf" : "2022-09-03 16:02:02", + "state" : "", "type" : "TFA_35.1077" }, - "minProtocolVersion" : "1.47", - "comment" : "Weather station with 30.3151 (T/H-transmitter), 30.3152 (rain gauge), 30.3153 (anemometer)", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-08-21 12:09:21Z elektron-bbs" + "rmsg" : "MU;P0=-13168;P1=469;P2=-1000;P3=1450;D=01212121212121232121232121212121212123212321232123232123212123232323232323212323232323232321232323212323232123232123232123232123232323232321212323232321232123;CP=1;R=79;", + "tests" : [ + { + "comment" : "#2" + } + ] } ], - "module" : "SD_WS" + "id" : "120", + "module" : "SD_WS", + "name" : "TFA 35.1077.54.S2" }, { - "module" : "SD_WS", - "id" : "122", "data" : [ { + "comment" : "Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors", "dmsg" : "W122#926301360136014001680000B88", - "rmsg" : "MU;P0=3412;P1=-1029;P2=1043;P3=4706;P4=-2986;P5=549;P6=-1510;P7=-562;D=01212121212121213456575756575756575756565757575656575757575757575657575656575656575757575757575756575756565756565757575757575757565756575757575757575757575757575657565657565757575757575757575757575757575757575756575656565757575621212121212121213456575756;CP=5;R=2;O;", "internals" : { - "NAME" : "SD_WS_122_T", - "DEF" : "SD_WS_122_T" + "DEF" : "SD_WS_122_T", + "NAME" : "SD_WS_122_T" }, - "user" : "Prof. Dr. Peter Henning", - "tests" : [ - { - "comment" : "#0" - } - ], - "comment" : "Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-09-11 12:03:38Z elektron-bbs", - "revision_entry" : "2022-10-31 15:07:09", "readings" : { - "transmitter" : "on", - "temperature4" : "31", - "temperature" : "36", - "type" : "TM40", "batteryState" : "ok", + "state" : "T: 36 T2: 32 T3: 31 T4: 31", + "temperature" : "36", "temperature2" : "32", "temperature3" : "31", - "state" : "T: 36 T2: 32 T3: 31 T4: 31" + "temperature4" : "31", + "transmitter" : "on", + "type" : "TM40" }, - "minProtocolVersion" : "1.48" + "rmsg" : "MU;P0=3412;P1=-1029;P2=1043;P3=4706;P4=-2986;P5=549;P6=-1510;P7=-562;D=01212121212121213456575756575756575756565757575656575757575757575657575656575656575757575757575756575756565756565757575757575757565756575757575757575757575757575657565657565757575757575757575757575757575757575756575656565757575621212121212121213456575756;CP=5;R=2;O;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { - "rmsg" : "MU;P0=11276;P1=-1039;P2=1034;P3=4704;P4=-2990;P5=543;P6=-1537;P7=-559;D=01212121212121213456575756575756575756565757575656575757575757575756565756565657575757575757575757565657565656575757575757575757575656575656565757575757575757565657575656565656575757575757575757575757575757575756565756565656575621212121212121213456575756;CP=5;R=12;O;", + "comment" : "Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors", "dmsg" : "W122#926300DC00DC00DC033E0000DE8", "internals" : { - "NAME" : "SD_WS_122_T", - "DEF" : "SD_WS_122_T" + "DEF" : "SD_WS_122_T", + "NAME" : "SD_WS_122_T" }, - "user" : "Prof. Dr. Peter Henning", - "tests" : [ - { - "comment" : "#1" - } - ], - "comment" : "Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-09-11 12:03:38Z elektron-bbs", - "revision_entry" : "2022-10-31 15:09:00", "readings" : { - "state" : "T: 83 T2: 22 T3: 22 T4: 22", - "temperature3" : "22", - "type" : "TM40", "batteryState" : "ok", - "temperature2" : "22", + "state" : "T: 83 T2: 22 T3: 22 T4: 22", "temperature" : "83", + "temperature2" : "22", + "temperature3" : "22", "temperature4" : "22", - "transmitter" : "on" + "transmitter" : "on", + "type" : "TM40" }, - "minProtocolVersion" : "1.48" + "rmsg" : "MU;P0=11276;P1=-1039;P2=1034;P3=4704;P4=-2990;P5=543;P6=-1537;P7=-559;D=01212121212121213456575756575756575756565757575656575757575757575756565756565657575757575757575757565657565656575757575757575757575656575656565757575757575757565657575656565656575757575757575757575757575757575756565756565656575621212121212121213456575756;CP=5;R=12;O;", + "tests" : [ + { + "comment" : "#1" + } + ] } ], + "id" : "122", + "module" : "SD_WS", "name" : "Temola TM40" }, { "data" : [ { - "tests" : [ - { - "comment" : "#0" - } - ], "comment" : "Inkbird IBS-P01R Pool Thermometer, Inkbird ITH-20R", "dmsg" : "W123#D3910F800301005A0655FA001405140535F6", "internals" : { "DEF" : "SD_WS_123_T", "NAME" : "SD_WS_123_T" }, - "minProtocolVersion" : "1.49", "readings" : { "batteryChanged" : "0", "batteryPercent" : 90, @@ -2492,10 +2171,12 @@ "temperature" : 25, "type" : "IBS-P01R, ITH-20R" }, - "revision_entry" : "2023-01-06 21:36:34", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", "rmsg" : "MN;D=D3910F800301005A0655FA001405140535F6;R=10;", - "user" : "xeenon" + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "123", @@ -2505,18 +2186,12 @@ { "data" : [ { - "tests" : [ - { - "comment" : "#1" - } - ], "comment" : "Inkbird IBS-P01R Pool Thermometer, Inkbird ITH-20R", "dmsg" : "W123#D3910F00010301207E43FE0014055802772A", "internals" : { "DEF" : "SD_WS_123_T", "NAME" : "SD_WS_123_T" }, - "minProtocolVersion" : "1.49", "readings" : { "batteryChanged" : "1", "batteryPercent" : 32, @@ -2525,10 +2200,12 @@ "temperature" : 25.4, "type" : "IBS-P01R, ITH-20R" }, - "revision_entry" : "2023-01-06 21:58:00", - "revision_modul" : "14_SD_WS.pm v3.5.4 2022-11-14 20:37:55Z sidey79", "rmsg" : "MN;D=D3910F00010301207E43FE0014055802772A;R=232;", - "user" : "elektron-bbs" + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "123", diff --git a/t/FHEM/14_SD_WS07/testData.json b/t/FHEM/14_SD_WS07/testData.json index 51fa5d6e0..08b8122a3 100644 --- a/t/FHEM/14_SD_WS07/testData.json +++ b/t/FHEM/14_SD_WS07/testData.json @@ -8,7 +8,6 @@ "DEF" : "SD_WS07_TH_1", "NAME" : "SD_WS07_TH_1" }, - "minProtocolVersion" : "1.27", "readings" : { "batteryState" : "ok", "channel" : "1", @@ -17,15 +16,12 @@ "state" : "T: 28.2 H: 44", "temperature" : "28.2" }, - "revision_entry" : "2021-03-23 14:27:35", - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MS;P0=494;P1=-1949;P2=-967;P3=-3901;D=03010201010202020101020202020202010202020101020102010201020202010201010202;CP=0;SP=3;R=37;m0;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "from https://forum.fhem.de/index.php/topic,101682.0.html", @@ -34,7 +30,6 @@ "DEF" : "SD_WS07_TH_1", "NAME" : "SD_WS07_TH_1" }, - "minProtocolVersion" : "1.27", "readings" : { "batteryState" : "ok", "channel" : "1", @@ -43,15 +38,12 @@ "state" : "T: 24.4 H: 56", "temperature" : "24.4" }, - "revision_entry" : "2021-03-23 14:28:43", - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MS;P1=-1940;P2=495;P3=-957;P4=-3878;D=24212321212323232121232323232323232121212123212323212321232323212121232323;CP=2;SP=4;R=20;O;m1;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "user" : "elektron-bbs" + ] }, { "comment" : "from https://forum.fhem.de/index.php/topic,101682.0.html", @@ -60,7 +52,6 @@ "DEF" : "SD_WS07_TH_1", "NAME" : "SD_WS07_TH_1" }, - "minProtocolVersion" : "1.27", "readings" : { "batteryState" : "ok", "channel" : "1", @@ -69,15 +60,12 @@ "state" : "T: 25 H: 73", "temperature" : "25" }, - "revision_entry" : "2021-03-23 14:30:04", - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MS;P1=-1952;P2=495;P3=-966;P4=-3917;D=24212321212323232121212323232323232121212121232123212321232321232321232321;CP=2;SP=4;R=39;O;m2;", "tests" : [ { - "comment" : "Test #2" + "comment" : "#2" } - ], - "user" : "elektron-bbs" + ] } ], "id" : "7", @@ -85,157 +73,136 @@ "name" : "Auriol AFW 2 A1" }, { - "module" : "SD_WS07", - "id" : "7", - "name" : "EAS800z", "data" : [ { "comment" : "Channel 1", - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", "dmsg" : "P7#6300C6F0B", "internals" : { - "NAME" : "SD_WS07_TH_1", - "DEF" : "SD_WS07_TH_1" + "DEF" : "SD_WS07_TH_1", + "NAME" : "SD_WS07_TH_1" }, - "minProtocolVersion" : "1.27", "readings" : { - "state" : "T: 19.8 H: 11", "batteryState" : "low", - "temperature" : "19.8", + "channel" : "1", "humidity" : "11", - "channel" : "1" + "state" : "T: 19.8 H: 11", + "temperature" : "19.8" }, - "revision_entry" : "2021-03-23 14:31:17", + "rmsg" : "MS;P1=-3882;P2=504;P3=-957;P4=-1949;D=21232424232323242423232323232323232424232323242423242424242323232324232424;CP=2;SP=1;R=249;m=2;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "SD_Protocol", - "rmsg" : "MS;P1=-3882;P2=504;P3=-957;P4=-1949;D=21232424232323242423232323232323232424232323242423242424242323232324232424;CP=2;SP=1;R=249;m=2;" + ] }, { - "revision_entry" : "2021-03-23 14:32:27", - "tests" : [ - { - "comment" : "Test #1" - } - ], - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", - "readings" : { - "state" : "T: 16.1 H: 36", - "humidity" : "36", - "temperature" : "16.1", - "batteryState" : "low", - "channel" : "2" - }, + "comment" : "Channel 2", + "dmsg" : "P7#8210A1F24", "internals" : { "DEF" : "SD_WS07_TH_2", "NAME" : "SD_WS07_TH_2" }, - "minProtocolVersion" : "1.27", - "dmsg" : "P7#8210A1F24", + "readings" : { + "batteryState" : "low", + "channel" : "2", + "humidity" : "36", + "state" : "T: 16.1 H: 36", + "temperature" : "16.1" + }, "rmsg" : "MS;P2=-1945;P3=486;P4=-976;P5=-3927;D=35323434343434323434343432343434343234323434343432323232323434323434323434;CP=3;SP=5;R=13;O;m1;", - "user" : "Ralf9", - "comment" : "Channel 2" + "tests" : [ + { + "comment" : "#1" + } + ] } - ] + ], + "id" : "7", + "module" : "SD_WS07", + "name" : "EAS800z" }, { "data" : [ { "comment" : "Channel 2 / for some Weatherstation", + "dmsg" : "P7#6190D8F3D", "internals" : { "DEF" : "SD_WS07_TH_2", "NAME" : "SD_WS07_TH_2" }, - "dmsg" : "P7#6190D8F3D", - "minProtocolVersion" : "1.27", "readings" : { - "state" : "T: 21.6 H: 61", - "channel" : "2", "batteryState" : "ok", + "channel" : "2", "humidity" : "61", + "state" : "T: 21.6 H: 61", "temperature" : "21.6" }, - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", + "rmsg" : "MS;P2=-2006;P4=-4065;P5=491;P6=-1005;D=54565252565656565252565652565656565252565252565656525252525656525252525652;CP=5;SP=4;R=48;O;m2;e;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "revision_entry" : "2021-03-23 14:33:19", - "user" : "HomeAuto_User", - "rmsg" : "MS;P2=-2006;P4=-4065;P5=491;P6=-1005;D=54565252565656565252565652565656565252565252565656525252525656525252525652;CP=5;SP=4;R=48;O;m2;e;" + ] } ], - "module" : "SD_WS07", "id" : "7", + "module" : "SD_WS07", "name" : "Hama TS34A" }, { - "name" : "Hama TS36E", - "id" : "7", - "module" : "SD_WS07", "data" : [ { - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", - "minProtocolVersion" : "1.27", + "comment" : "Wetterstationen 1362 22,93,94", + "dmsg" : "P7#4180E2F3B", "internals" : { - "NAME" : "SD_WS07_TH_1", - "DEF" : "SD_WS07_TH_1" + "DEF" : "SD_WS07_TH_1", + "NAME" : "SD_WS07_TH_1" }, - "dmsg" : "P7#4180E2F3B", "readings" : { - "state" : "T: 22.6 H: 59", - "humidity" : "59", - "temperature" : "22.6", "batteryState" : "ok", - "channel" : "1" + "channel" : "1", + "humidity" : "59", + "state" : "T: 22.6 H: 59", + "temperature" : "22.6" }, - "revision_entry" : "2021-03-23 14:34:31", + "rmsg" : "MS;P0=498;P1=-965;P2=-1969;P3=-3900;D=03010201010101010202010101010101010202020101010201020202020101020202010202;CP=0;SP=3;R=0;O;m2;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "HomeAuto_User", - "rmsg" : "MS;P0=498;P1=-965;P2=-1969;P3=-3900;D=03010201010101010202010101010101010202020101010201020202020101020202010202;CP=0;SP=3;R=0;O;m2;", - "comment" : "Wetterstationen 1362 22,93,94" + ] } - ] + ], + "id" : "7", + "module" : "SD_WS07", + "name" : "Hama TS36E" }, { "data" : [ { - "tests" : [ - { - "comment" : "Test #0" - } - ], - "revision_entry" : "2021-12-29 09:57:04", + "comment" : "Mebus HQ7312-2", + "dmsg" : "P7#4DA0F5F0A", "internals" : { "DEF" : "SD_WS07_TH_3", "NAME" : "SD_WS07_TH_3" }, - "dmsg" : "P7#4DA0F5F0A", "readings" : { - "state" : "T: 24.5 H: 10", - "channel" : "3", "batteryState" : "ok", - "temperature" : "24.5", - "humidity" : "10" + "channel" : "3", + "humidity" : "10", + "state" : "T: 24.5 H: 10", + "temperature" : "24.5" }, - "minProtocolVersion" : "1.40", - "revision_modul" : "14_SD_WS07.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MS;P0=-2128;P1=320;P5=-1159;P6=-4084;D=16151015151010151010151015151515151010101015101510101010101515151510151015;CP=1;SP=6;R=66;O;m2;", - "user" : "rpsVerni", - "comment" : "Mebus HQ7312-2" + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "7.1", - "name" : "Mebus HQ7312-2", - "module" : "SD_WS07" + "module" : "SD_WS07", + "name" : "Mebus HQ7312-2" } - ] diff --git a/t/FHEM/14_SD_WS09/testData.json b/t/FHEM/14_SD_WS09/testData.json index e766567c3..efd6b984c 100644 --- a/t/FHEM/14_SD_WS09/testData.json +++ b/t/FHEM/14_SD_WS09/testData.json @@ -8,7 +8,6 @@ "DEF" : "WH1080", "NAME" : "WH1080" }, - "minProtocolVersion" : "1.27", "readings" : { ".rainOffset" : "0", "battery" : "ok", @@ -34,15 +33,12 @@ "windSpeed_kn" : "1.4", "windSpeed_mph" : "1.6" }, - "revision_entry" : "2021-03-24 09:57:33", - "revision_modul" : "14_SD_WS09.pm 22415 2020-07-16 20:22:23Z Sidey", "rmsg" : "MU;P0=-31072;P1=486;P2=-986;P3=1454;D=01212121212121212321232321232123232121232323212121212123232123232123212321232123232323232321232323232323212323232323232323232123212121212321232323232323232323212321212321232301212121212121212321232321232123232121232323212121212123232123232123212321232123;CP=1;R=29;O;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "maddinthebrain" + ] } ], "id" : "9", @@ -50,109 +46,96 @@ "name" : "WH1080" }, { - "module" : "SD_WS09", - "name" : "WH2315", "data" : [ { "comment" : "Lux & UV RAWMSG with length 64", "dmsg" : "P9#FEE7E2AA049E81F0", - "revision_modul" : "14_SD_WS09.pm 22415 2020-07-16 20:22:23Z Sidey", - "rmsg" : "MU;P0=-10108;P1=495;P2=-1050;P3=1496;P4=-27564;P5=372;CP=1;R=245;D=012121212121212321212123232121212121212323232123212321232123212323232323232123232123232121212123212323232323232121212121232323450;e;", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-24 10:00:52", - "tests" : [ - { - "comment" : "Test #0" - } - ], - "user" : "rob", + "internals" : { + "DEF" : "WH1080", + "NAME" : "WH1080" + }, "readings" : { + "Lux" : "15136", "UV" : "1", "id" : "63", - "state" : "UV: 1 Lux: 15136 ", - "Lux" : "15136" + "state" : "UV: 1 Lux: 15136 " }, - "internals" : { - "NAME" : "WH1080", - "DEF" : "WH1080" - } + "rmsg" : "MU;P0=-10108;P1=495;P2=-1050;P3=1496;P4=-27564;P5=372;CP=1;R=245;D=012121212121212321212123232121212121212323232123212321232123212323232323232123232123232121212123212323232323232121212121232323450;e;", + "tests" : [ + { + "comment" : "#0" + } + ] }, { + "comment" : "Temp,Hum,Rain,Wind RAWMSG with length 88 (ID 42 additionally)", + "dmsg" : "P9#FF5BA39C8C020403C60822", + "internals" : { + "DEF" : "WH1080", + "NAME" : "WH1080" + }, "readings" : { - "windGust_kn" : "1.4", - "windSpeed_fts" : "1.0", - "battery" : "ok", ".rainOffset" : "0", - "windSpeed" : "0.3", + "battery" : "ok", + "batteryState" : "ok", + "humidity" : "70", + "id" : "221", + "rain" : "144.9", + "rain_total" : "144.9", "state" : "T: 6.2 H: 70 Ws:0.3 Wg:0.7 m/s Wd: E R: 144.9", - "windSpeed_kmh" : "1.1", "temperature" : "6.2", "windDirection" : "4", - "windGust_fts" : "2.3", - "windGust_kmh" : "2.5", - "windSpeed_mph" : "0.7", - "rain" : "144.9", - "rain_total" : "144.9", - "batteryState" : "ok", "windDirectionAverage" : "90", "windDirectionDegree" : "90", + "windDirectionText" : "E", "windGust" : "0.7", - "id" : "221", - "humidity" : "70", + "windGust_fts" : "2.3", + "windGust_kmh" : "2.5", + "windGust_kn" : "1.4", "windGust_mph" : "1.6", + "windSpeed" : "0.3", + "windSpeed_fts" : "1.0", + "windSpeed_kmh" : "1.1", "windSpeed_kn" : "0.6", - "windDirectionText" : "E" - }, - "internals" : { - "DEF" : "WH1080", - "NAME" : "WH1080" + "windSpeed_mph" : "0.7" }, - "user" : "rob", - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-24 09:59:00", + "rmsg" : "MU;P0=-32001;P1=481;P2=-990;P3=1450;CP=1;R=244;D=012121212121212123212321212321212123212323232121212323212121232321232323212123232323232323232123232323232321232323232323232321212121232323212123232323232123232323232123232321;e;", "tests" : [ { - "comment" : "Test #1" + "comment" : "#1" } - ], - "comment" : "Temp,Hum,Rain,Wind RAWMSG with length 88 (ID 42 additionally)", - "dmsg" : "P9#FF5BA39C8C020403C60822", - "revision_modul" : "14_SD_WS09.pm 22415 2020-07-16 20:22:23Z Sidey", - "rmsg" : "MU;P0=-32001;P1=481;P2=-990;P3=1450;CP=1;R=244;D=012121212121212123212321212321212123212323232121212323212121232321232323212123232323232323232123232323232321232323232323232321212121232323212123232323232123232323232123232321;e;" + ] } ], - "id" : "9" + "id" : "9", + "module" : "SD_WS09", + "name" : "WH2315" }, { - "module" : "SD_WS09", "data" : [ { + "comment" : "reconstructed bit 1", + "dmsg" : "P9#FF7C845508D87403", + "internals" : { + "DEF" : "WH1080", + "NAME" : "WH1080" + }, "readings" : { - "UV" : "4", "Lux" : "57970", - "state" : "UV: 4 Lux: 57970 ", - "id" : "200" - }, - "internals" : { - "NAME" : "WH1080", - "DEF" : "WH1080" + "UV" : "4", + "id" : "200", + "state" : "UV: 4 Lux: 57970 " }, - "user" : "Ralf9", + "rmsg" : "MU;P0=-1424;P1=1417;P2=-1058;P3=453;P4=-24774;P6=288;P7=-788;D=01212121232343232323232323232123232323232121232121212123212121232123212321232121212123212121232321232321212121232323212321212121212121212323467323232323232323212323232323212123212121212321212123212321232123212121212321212123232123232121212123232321232121;CP=3;R=247;O;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "revision_entry" : "2021-03-24 10:02:20", - "minProtocolVersion" : "1.27", - "dmsg" : "P9#FF7C845508D87403", - "revision_modul" : "14_SD_WS09.pm 22415 2020-07-16 20:22:23Z Sidey", - "rmsg" : "MU;P0=-1424;P1=1417;P2=-1058;P3=453;P4=-24774;P6=288;P7=-788;D=01212121232343232323232323232123232323232121232121212123212121232123212321232121212123212121232321232321212121232323212321212121212121212323467323232323232323212323232323212123212121212321212123212321232123212121212321212123232123232121212123232321232121;CP=3;R=247;O;", - "comment" : "reconstructed bit 1" + ] } ], - "name" : "WH3080", - "id" : "9" + "id" : "9", + "module" : "SD_WS09", + "name" : "WH3080" } - ] diff --git a/t/FHEM/14_SD_WS_Maverick/testData.json b/t/FHEM/14_SD_WS_Maverick/testData.json index 053c24911..0ca9e3c7a 100644 --- a/t/FHEM/14_SD_WS_Maverick/testData.json +++ b/t/FHEM/14_SD_WS_Maverick/testData.json @@ -7,7 +7,6 @@ "DEF" : "SD_WS_Maverick", "NAME" : "SD_WS_Maverick" }, - "minProtocolVersion" : "1.27", "readings" : { "Sensor-1-food_state" : "connected", "Sensor-2-bbq_state" : "connected", @@ -17,15 +16,12 @@ "temp-bbq" : "21", "temp-food" : "25" }, - "revision_entry" : "2021-03-25 13:32:44", - "revision_modul" : "14_SD_WS_Maverick.pm 21666 2020-04-13 21:14:53Z Sidey", "rmsg" : "MC;LL=-482;LH=511;SL=-230;SH=264;D=AA999559959A695996A65A9566;C=247;L=104;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "Papaloewe" + ] } ], "id" : "47", diff --git a/t/FHEM/41_OREGON/testData.json b/t/FHEM/41_OREGON/testData.json index 3bb23ed7f..2db6dedd6 100644 --- a/t/FHEM/41_OREGON/testData.json +++ b/t/FHEM/41_OREGON/testData.json @@ -8,7 +8,6 @@ "DEF" : "THGR228N_3c_2", "NAME" : "THGR228N_3c_2" }, - "minProtocolVersion" : "1.27", "readings" : { "battery" : "ok", "batteryState" : "ok", @@ -16,15 +15,12 @@ "state" : "T: 17.8 H: 32 BAT: ok", "temperature" : "17.8" }, - "revision_entry" : "2021-03-24 10:03:49", - "revision_modul" : "41_OREGON.pm 34476 2017-12-26 13:23:00Z dev", "rmsg" : "MC;LL=-997;LH=967;SL=-506;SH=460;D=AAAAAAAA66959A6555655AA55556A9955565A5566AA56A96;C=488;L=192;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "user" : "Wetterhexe" + ] } ], "id" : "10", @@ -34,65 +30,139 @@ { "data" : [ { - "revision_modul" : "41_OREGON.pm 34476 2017-12-26 13:23:00Z dev", - "revision_entry" : "2021-03-24 10:05:52", + "comment" : "OSV3 (ID 52 additionally)", + "dmsg" : "50FA2844DC202070835092", + "internals" : { + "DEF" : "THGR810_dc_4", + "NAME" : "THGR810_dc_4" + }, + "readings" : { + "battery" : "ok", + "batteryState" : "ok", + "humidity" : "37", + "state" : "T: 20.2 H: 37 BAT: ok", + "temperature" : "20.2" + }, "rmsg" : "MC;LL=-1002;LH=952;SL=-489;SH=475;D=000000A0EBDDC4FBFBF13EF5B6;C=486;L=104;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], + ] + } + ], + "id" : "10", + "module" : "OREGON", + "name" : "THGR810" + }, + { + "data" : [ + { + "comment" : "OSV1", + "dmsg" : "500A4D100E001000002100", + "internals" : { + "DEF" : "THR128_0e_1", + "NAME" : "THR128_0e_1" + }, "readings" : { - "humidity" : "37", - "temperature" : "20.2", - "state" : "T: 20.2 H: 37 BAT: ok", "battery" : "ok", - "batteryState" : "ok" + "batteryState" : "ok", + "state" : "T: 10 BAT: ok", + "temperature" : "10" }, - "dmsg" : "50FA2844DC202070835092", - "minProtocolVersion" : "1.27", - "user" : "Wetterhexe", + "rmsg" : "MC;LL=-2486;LH=3348;SL=-1024;SH=1889;D=8FFF7F0F;C=1457;L=32;R=65;", + "tests" : [ + { + "comment" : "#0" + } + ] + } + ], + "id" : "18", + "module" : "OREGON", + "name" : "THR128" + }, + { + "data" : [ + { + "comment" : "OSV2", + "dmsg" : "501A2D203C801720833E9E", "internals" : { - "NAME" : "THGR810_dc_4", - "DEF" : "THGR810_dc_4" + "DEF" : "THGR228N_3c_2", + "NAME" : "THGR228N_3c_2" }, - "comment" : "OSV3 (ID 52 additionally)" + "readings" : { + "battery" : "ok", + "batteryState" : "ok", + "humidity" : "32", + "state" : "T: 17.8 H: 32 BAT: ok", + "temperature" : "17.8" + }, + "rmsg" : "MC;LL=-997;LH=967;SL=-506;SH=460;D=AAAAAAAA66959A6555655AA55556A9955565A5566AA56A96;C=488;L=192;", + "tests" : [ + { + "comment" : "#0" + } + ] } ], "id" : "10", - "name" : "THGR810", - "module" : "OREGON" + "module" : "OREGON", + "name" : "THGR228N" }, { - "module" : "OREGON", - "id" : "18", - "name" : "THR128", "data" : [ { - "user" : "Ralf9", - "revision_entry" : "2021-03-24 10:51:46", - "revision_modul" : "41_OREGON.pm 34476 2017-12-26 13:23:00Z dev", - "rmsg" : "MC;LL=-2486;LH=3348;SL=-1024;SH=1889;D=8FFF7F0F;C=1457;L=32;R=65;", + "comment" : "OSV3 (ID 52 additionally)", + "dmsg" : "50FA2844DC202070835092", + "internals" : { + "DEF" : "THGR810_dc_4", + "NAME" : "THGR810_dc_4" + }, + "readings" : { + "battery" : "ok", + "batteryState" : "ok", + "humidity" : "37", + "state" : "T: 20.2 H: 37 BAT: ok", + "temperature" : "20.2" + }, + "rmsg" : "MC;LL=-1002;LH=952;SL=-489;SH=475;D=000000A0EBDDC4FBFBF13EF5B6;C=486;L=104;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], + ] + } + ], + "id" : "10", + "module" : "OREGON", + "name" : "THGR810" + }, + { + "data" : [ + { + "comment" : "OSV1", + "dmsg" : "500A4D100E001000002100", + "internals" : { + "DEF" : "THR128_0e_1", + "NAME" : "THR128_0e_1" + }, "readings" : { "battery" : "ok", "batteryState" : "ok", - "temperature" : "10", - "state" : "T: 10 BAT: ok" + "state" : "T: 10 BAT: ok", + "temperature" : "10" }, - "minProtocolVersion" : "1.27", - "dmsg" : "500A4D100E001000002100", - "comment" : "OSV1", - "internals" : { - "NAME" : "THR128_0e_1", - "DEF" : "THR128_0e_1" - } + "rmsg" : "MC;LL=-2486;LH=3348;SL=-1024;SH=1889;D=8FFF7F0F;C=1457;L=32;R=65;", + "tests" : [ + { + "comment" : "#0" + } + ] } - ] + ], + "id" : "18", + "module" : "OREGON", + "name" : "THR128" } - ] diff --git a/t/FHEM/98_Dooya/testData.json b/t/FHEM/98_Dooya/testData.json index ea7328ddf..fa43c68f9 100644 --- a/t/FHEM/98_Dooya/testData.json +++ b/t/FHEM/98_Dooya/testData.json @@ -1,34 +1,30 @@ [ { - "module" : "Dooya", - "id" : "16", "data" : [ { + "comment" : "(ID 40,72 additionally)", + "dispatch_repeats" : "1", + "dmsg" : "P16#4805B7B132", + "internals" : { + "DEF" : "0100100000000101101101111011_1", + "NAME" : "Dooya_0100100000000101101101111011_1" + }, "readings" : { "position" : "200", "parsestate" : "on", "exact" : "closed", "state" : "closed" }, - "dispatch_repeats" : "1", - "dmsg" : "P16#4805B7B132", - "comment" : "(ID 40,72 additionally)", "rmsg" : "MU;P0=-1562;P1=-411;P2=297;P3=-773;P4=668;P5=4754;D=1232341234141234141234141414123414123232341232341412323414150234123234123232323232323234123414123414123414141412341412323234123234141232341415023412323412323232323232323412341412341412341414141234141232323412323414123234142;CP=2;", "tests" : [ { - "comment" : "Test #0" + "comment" : "#0" } - ], - "minProtocolVersion" : "1.27", - "revision_entry" : "2021-03-24 10:26:03", - "user" : "SD_Protocol", - "internals" : { - "DEF" : "0100100000000101101101111011_1", - "NAME" : "Dooya_0100100000000101101101111011_1" - }, - "revision_modul" : "98_Dooya.pm 15400 2017-11-05 18:11:51Z Sidey" + ] } ], + "id" : "16", + "module" : "Dooya", "name" : "Dooya" } ] From 0f26c87efb4fd7ede5641a1cbb20b4852b8b85b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 Mar 2023 20:02:07 +0100 Subject: [PATCH 03/76] Bump jacobtomlinson/gha-find-replace from 2.0.0 to 3.0.2 (#1159) Bumps [jacobtomlinson/gha-find-replace](https://github.com/jacobtomlinson/gha-find-replace) from 2.0.0 to 3.0.2. - [Release notes](https://github.com/jacobtomlinson/gha-find-replace/releases) - [Commits](https://github.com/jacobtomlinson/gha-find-replace/compare/2.0.0...3.0.2) --- updated-dependencies: - dependency-name: jacobtomlinson/gha-find-replace dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/version.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index cc2b54cdc..0076674e5 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -116,13 +116,13 @@ jobs: separator: ' ' - name: Update SDUINO_VERSION date if: endsWith(matrix.file, '00_SIGNALduino.pm') - uses: jacobtomlinson/gha-find-replace@2.0.0 + uses: jacobtomlinson/gha-find-replace@3.0.2 with: find: \w+\s+=>\s\'\d.\d.\d\+\d+\' replace: "SDUINO_VERSION => '${{ steps.versions.outputs._1 }}+${{ needs.metadata.outputs.date }}'" include: "${{ matrix.file }}" - name: Update Date in ID line - uses: jacobtomlinson/gha-find-replace@2.0.0 + uses: jacobtomlinson/gha-find-replace@3.0.2 with: find: \d\d\d\d-\d\d-\d\d\s\d\d:\d\d:\d\dZ\s[\w|-]+\s replace: "${{ needs.metadata.outputs.datetime }}Z ${{ github.event.pull_request.user.login }} " From 02e05a4b6cf783dc28c3d013ff7c162085ae037c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Mar 2023 09:01:34 +0100 Subject: [PATCH 04/76] Bump lewagon/wait-on-check-action from 1.2.0 to 1.3.1 (#1158) Bumps [lewagon/wait-on-check-action](https://github.com/lewagon/wait-on-check-action) from 1.2.0 to 1.3.1. - [Release notes](https://github.com/lewagon/wait-on-check-action/releases) - [Commits](https://github.com/lewagon/wait-on-check-action/compare/v1.2.0...v1.3.1) --- updated-dependencies: - dependency-name: lewagon/wait-on-check-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 0076674e5..53a3d2c4b 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -175,7 +175,7 @@ jobs: - name: Wait for tests to succeed if: ${{ steps.commit.outputs.status }} - uses: lewagon/wait-on-check-action@v1.2.0 + uses: lewagon/wait-on-check-action@v1.3.1 with: running-workflow-name: 'Commit and Push back' ref: ${{ github.head_ref }} From db8f6b5e17bea1018e87b68a8bc7677fe796bd77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 06:06:56 +0100 Subject: [PATCH 05/76] Bump shogo82148/actions-setup-perl from 1.20.1 to 1.20.2 (#1160) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.20.1 to 1.20.2. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.20.1...v1.20.2) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index b18360e83..0b3669c88 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.20.1 + - uses: shogo82148/actions-setup-perl@v1.20.2 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 9c1e9f40f..a7a21d0d4 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.20.1 + - uses: shogo82148/actions-setup-perl@v1.20.2 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From c788e2f205697606e705cf10145d91f5487c8440 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 07:04:12 +0200 Subject: [PATCH 06/76] Bump fhem/fhem-controls-actions from 2.1.1 to 2.2.0 (#1165) Bumps [fhem/fhem-controls-actions](https://github.com/fhem/fhem-controls-actions) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/fhem/fhem-controls-actions/releases) - [Commits](https://github.com/fhem/fhem-controls-actions/compare/v2.1.1...v2.2.0) --- updated-dependencies: - dependency-name: fhem/fhem-controls-actions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update.yml | 4 ++-- .github/workflows/version.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 059ffe1a6..aa5c4c0ba 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -64,12 +64,12 @@ jobs: persist-credentials: false - name: update controls file (FHEM) if: needs.pr_check.outputs.result != 'true' - uses: fhem/fhem-controls-actions@v2.1.1 + uses: fhem/fhem-controls-actions@v2.2.0 with: filename: controls_signalduino.txt - name: update controls file (lib) if: needs.pr_check.outputs.result != 'true' - uses: fhem/fhem-controls-actions@v2.1.1 + uses: fhem/fhem-controls-actions@v2.2.0 with: filename: controls_signalduino.txt directory: FHEM/lib diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 53a3d2c4b..cb8c7e3b2 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -157,11 +157,11 @@ jobs: find ./FHEM -name "$FILE" -exec cp $FPATH "{}" \; done - name: update controls file (FHEM) - uses: fhem/fhem-controls-actions@v2.1.1 + uses: fhem/fhem-controls-actions@v2.2.0 with: filename: controls_signalduino.txt - name: update controls file (lib) - uses: fhem/fhem-controls-actions@v2.1.1 + uses: fhem/fhem-controls-actions@v2.2.0 with: filename: controls_signalduino.txt directory: FHEM/lib From 401b36045a57d5cacfff271a912ce0b2d365eb04 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 3 Apr 2023 05:04:56 +0000 Subject: [PATCH 07/76] Automatic updated controls and CHANGED --- CHANGED | 15 +++++++++++++++ controls_signalduino.txt | 28 ++++++++++++++-------------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/CHANGED b/CHANGED index 39c374d36..68b76c98d 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,18 @@ +2023-04-03 - Bump fhem/fhem-controls-actions from 2.1.1 to 2.2.0 (#1165) + +Bumps [fhem/fhem-controls-actions](https://github.com/fhem/fhem-controls-actions) from 2.1.1 to 2.2.0. +- [Release notes](https://github.com/fhem/fhem-controls-actions/releases) +- [Commits](https://github.com/fhem/fhem-controls-actions/compare/v2.1.1...v2.2.0) + +--- +updated-dependencies: +- dependency-name: fhem/fhem-controls-actions + dependency-type: direct:production + update-type: version-update:semver-minor +... + +Signed-off-by: dependabot[bot] +Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 2023-01-28 - correction commandref longids (#1151) * Update 00_SIGNALduino.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 97f64750a..d13e1e970 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,18 +1,18 @@ UPD 2023-01-28_20:08:00 236110 FHEM/00_SIGNALduino.pm -UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm -UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm -UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm -UPD 2023-01-01_18:10:40 10096 FHEM/14_BresserTemeo.pm -UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm -UPD 2023-01-23_18:12:05 24036 FHEM/14_Hideki.pm -UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm -UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm +UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm +UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm +UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm +UPD 2023-01-01_18:10:40 10096 FHEM/14_BresserTemeo.pm +UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm +UPD 2023-01-23_18:12:05 24036 FHEM/14_Hideki.pm +UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm +UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-01-04_21:24:03 187527 FHEM/14_SD_UT.pm UPD 2023-01-23_21:06:26 144048 FHEM/14_SD_WS.pm -UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm -UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm -UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm -UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm -UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm +UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm +UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm +UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm +UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm +UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm UPD 2023-01-14_11:57:58 237361 FHEM/lib/SD_ProtocolData.pm -UPD 2023-01-06_12:08:43 79339 FHEM/lib/SD_Protocols.pm +UPD 2023-01-06_12:08:43 79339 FHEM/lib/SD_Protocols.pm From 04364646d3c0f40f573f7c667abcdffc893a33bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 15 Apr 2023 18:10:26 +0200 Subject: [PATCH 08/76] Bump codecov/codecov-action from 3.1.1 to 3.1.2 (#1167) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.1 to 3.1.2. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.1...v3.1.2) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/prove.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index a7a21d0d4..718a60bb8 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -43,7 +43,7 @@ jobs: FHEM_DIR: /opt/fhem - name: Create clover report for perl Modules run: cover -report clover - - uses: codecov/codecov-action@v3.1.1 + - uses: codecov/codecov-action@v3.1.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./cover_db/clover.xml @@ -53,7 +53,7 @@ jobs: - name: Create clover report for fhem tests working-directory: /opt/fhem/ run: cover -report clover - - uses: codecov/codecov-action@v3.1.1 + - uses: codecov/codecov-action@v3.1.2 with: token: ${{ secrets.CODECOV_TOKEN }} file: /opt/fhem/cover_db/clover.xml From a655cdd92d6f84a2f8b396729433b50f41f4fe30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:25:48 +0200 Subject: [PATCH 09/76] Bump codecov/codecov-action from 3.1.2 to 3.1.3 (#1170) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.2 to 3.1.3. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.2...v3.1.3) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/prove.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 718a60bb8..c7a67f651 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -43,7 +43,7 @@ jobs: FHEM_DIR: /opt/fhem - name: Create clover report for perl Modules run: cover -report clover - - uses: codecov/codecov-action@v3.1.2 + - uses: codecov/codecov-action@v3.1.3 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./cover_db/clover.xml @@ -53,7 +53,7 @@ jobs: - name: Create clover report for fhem tests working-directory: /opt/fhem/ run: cover -report clover - - uses: codecov/codecov-action@v3.1.2 + - uses: codecov/codecov-action@v3.1.3 with: token: ${{ secrets.CODECOV_TOKEN }} file: /opt/fhem/cover_db/clover.xml From 5b181ec00db3851468334d3f260456f3ae4c5805 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Apr 2023 06:16:16 +0200 Subject: [PATCH 10/76] Bump shogo82148/actions-setup-perl from 1.20.2 to 1.21.0 (#1171) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.20.2 to 1.21.0. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.20.2...v1.21.0) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index 0b3669c88..8208a0eea 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.20.2 + - uses: shogo82148/actions-setup-perl@v1.21.0 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index c7a67f651..bd717db53 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.20.2 + - uses: shogo82148/actions-setup-perl@v1.21.0 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From 9b28f96cca991ee54d29b04b6eaaf9fbf7de4eb9 Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Mon, 1 May 2023 12:08:25 +0200 Subject: [PATCH 11/76] New elements for attribute hardware (#1172) * 00_SIGNALduinoi.pm - updated attribute Hardwarelist --- FHEM/00_SIGNALduino.pm | 40 ++++++++++++++++++++++++---------------- controls_signalduino.txt | 2 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 0a0933063..8c9665bb4 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.5 2023-01-28 15:26:11Z elektron-bbs $ +# $Id: 00_SIGNALduino.pm 3.5.5 2023-04-30 17:41:31Z sidey79 $ # v3.5.5 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -42,7 +42,7 @@ use List::Util qw(first); use constant { - SDUINO_VERSION => '3.5.5+20230128', # Datum wird automatisch bei jedem pull request aktualisiert + SDUINO_VERSION => '3.5.5+20230430', # Datum wird automatisch bei jedem pull request aktualisiert SDUINO_INIT_WAIT_XQ => 1.5, # wait disable device SDUINO_INIT_WAIT => 2, SDUINO_INIT_MAXRETRY => 3, @@ -324,7 +324,7 @@ sub SIGNALduino_Initialize { .' doubleMsgCheck_IDs' .' eventlogging:0,1' .' flashCommand' - .' hardware:ESP32,ESP32cc1101,ESP8266,ESP8266cc1101,MAPLEMINI_F103CB,MAPLEMINI_F103CBcc1101,nano328,nanoCC1101,miniculCC1101,promini,radinoCC1101' + .' hardware:ESP32s,ESP32cc1101,ESP8266s,ESP8266cc1101,MAPLEMINI_F103CBs,MAPLEMINI_F103CBcc1101,nano328,nanoCC1101,miniculCC1101,promini8CC1101,promini16C1101,promini8s,promini16s,radinoCC1101' .' hexFile' .' initCommands' .' longids' @@ -4729,20 +4729,24 @@ USB-connected devices (SIGNALduino):
  • hardware
    Currently, there are serval hardware options with different receiver options available. - The simple single wire option, consists of a single wire connected receiver and a single wire connected transmitter which are connected over a single digital port with the microcontroller. The receiver only sends data and the transmitter receives only from the microcontroller. + The simple single wire option, consists of a single wire connected receiver and a single wire connected transmitter which are connected over a single digital port with the microcontroller. + The receiver only sends data and the transmitter receives only from the microcontroller. The other option consists of the cc1101 (sub 1 GHZ) chip, which can transmit and receiver. It's a transceiver which is connected via spi. - ESP8266 hardware type, currently doesn't support flashing out of the modu and needs at leat 1 MB of flash. + ESP8266 hardware type, currently doesn't support flashing out of the module and needs at leat 1 MB of flash.
      -
    • ESP32: ESP32 with simple single wire receiver
    • +
    • ESP32s: ESP32 with simple single wire receiver
    • ESP32cc1101: ESP32 with CC1101 (spi connected) receiver
    • -
    • ESP8266: ESP8266 with simple single wire receiver
    • +
    • ESP8266s: ESP8266 with simple single wire receiver
    • ESP8266cc1101: ESP8266 with CC1101 (spi connected) receiver
    • -
    • MAPLEMINI_F103CB: MapleMini F103CB (STM32 family) with simple single wire receiver
    • +
    • MAPLEMINI_F103CBs: MapleMini F103CB (STM32 family) with simple single wire receiver
    • MAPLEMINI_F103CBcc1101: MapleMini F103CB (STM32 family) with CC1101 (spi connected) receiver
    • miniculCC1101: Arduino pro Mini with CC110x (spi connected) receiver and cables as a minicul
    • -
    • nano: Arduino Nano 328 with simple single wired receiver
    • +
    • nano328: Arduino Nano 328 with simple single wired receiver
    • nanoCC1101: Arduino Nano 328 with CC110x (spi connected) receiver
    • -
    • promini: Arduino Pro Mini 328 with simple single receiver
    • +
    • promini8s: Arduino Pro Mini 328 8Mhz with simple single wired receiver
    • +
    • promini8cc1101: Arduino Pro Mini 328 8Mhz with CC110x (spi connected) receiver
    • +
    • promini16s: Arduino Pro Mini 328 16Mhz with simple single wired receiver
    • +
    • promini16cc1101: Arduino Pro Mini 328 16Mhz with CC110x (spi connected) receiver
    • radinoCC1101: Arduino compatible radino with cc1101 (spi connected) receiver

  • @@ -5318,20 +5322,24 @@ USB-connected devices (SIGNALduino):
  • hardware
    Derzeit mögliche Hardware Varianten mit verschiedenen Empfänger Optionen. - Die einfache Variante besteht aus einem Empfänger und einen Sender, die über je eine einzige digitale Signalleitung Datem mit dem Microcontroller austauschen. Der Empfänger sendet dabei und der Sender empfängt dabei ausschließlich. + Die einfache Variante besteht aus einem Empfänger und einen Sender, die über je eine einzige digitale Signalleitung Datem mit dem Microcontroller austauschen. + Der Empfänger sendet dabei und der Sender empfängt dabei ausschließlich. Weiterhin existiert der den sogenannten cc1101 (sub 1 GHZ) Chip, welche empfangen und senden kann. Dieser wird über die SPI Verbindung angebunden. ESP8266 Hardware Typen, unterstützen derzeit kein flashen aus dem Modul und benötigen mindestens 1 MB Flash Speicher.
      -
    • ESP32: ESP32 für einfachen eindraht Empfänger
    • +
    • ESP32s: ESP32 für einfachen eindraht Empfänger
    • ESP32cc1101: ESP32 mit einem CC110x-Empfänger (SPI Verbindung)
    • -
    • ESP8266: ESP8266 für einfachen eindraht Empfänger
    • +
    • ESP8266s: ESP8266 für einfachen eindraht Empfänger
    • ESP8266cc1101: ESP8266 mit einem CC110x-Empfänger (SPI Verbindung)
    • -
    • MAPLEMINI_F103CB: MapleMini F103CB (STM32) für einfachen eindraht Empfänger
    • +
    • MAPLEMINI_F103CBs: MapleMini F103CB (STM32) für einfachen eindraht Empfänger
    • MAPLEMINI_F103CBcc1101: MapleMini F103CB (STM32) mit einem CC110x-Empfänger (SPI Verbindung)
    • miniculCC1101: Arduino pro Mini mit einem CC110x-Empfänger (SPI Verbindung) entsprechend dem minicul verkabelt
    • -
    • nano: Arduino Nano 328 für einfachen eindraht Empfänger
    • +
    • nano328: Arduino Nano 328 für einfachen eindraht Empfänger
    • nanoCC1101: Arduino Nano für einen CC110x-Empfänger (SPI Verbindung)
    • -
    • promini: Arduino Pro Mini 328 für einfachen eindraht Empfänger
    • +
    • promini8s: Arduino Pro Mini 328 8Mhz für einfachen eindraht Empfänger
    • +
    • promini8cc1101: Arduino Pro Mini 328 8Mhz für einen CC110x-Empfänger (SPI Verbindung)
    • +
    • promini16s: Arduino Pro Mini 328 16Mhz für einfachen eindraht Empfänger
    • +
    • promini16cc1101: Arduino Pro Mini 328 16Mhz für einen CC110x-Empfänger (SPI Verbindung)
    • radinoCC1101: Ein Arduino kompatibler Radino mit CC110x-Empfänger (SPI Verbindung)

    Notwendig für den Befehl flash. Hier sollten Sie angeben, welche Hardware Sie mit dem usbport verbunden haben. Andernfalls kann es zu Fehlfunktionen des Geräts kommen. Wichtig ist auch das Attribut updateChannelFW
    diff --git a/controls_signalduino.txt b/controls_signalduino.txt index d13e1e970..e15fef546 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-01-28_20:08:00 236110 FHEM/00_SIGNALduino.pm +UPD 2023-04-30_19:40:46 236791 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm From 0ffb7211641bbe695819796756e38182036828e8 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 1 May 2023 10:09:06 +0000 Subject: [PATCH 12/76] Automatic updated controls and CHANGED --- CHANGED | 5 +++++ controls_signalduino.txt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 68b76c98d..9918824bd 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,8 @@ +2023-05-01 - New elements for attribute hardware (#1172) + +* 00_SIGNALduinoi.pm + +- updated attribute Hardwarelist 2023-04-03 - Bump fhem/fhem-controls-actions from 2.1.1 to 2.2.0 (#1165) Bumps [fhem/fhem-controls-actions](https://github.com/fhem/fhem-controls-actions) from 2.1.1 to 2.2.0. diff --git a/controls_signalduino.txt b/controls_signalduino.txt index e15fef546..2a36bb29f 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-04-30_19:40:46 236791 FHEM/00_SIGNALduino.pm +UPD 2023-05-01_12:08:25 236791 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm From ae779113aa32c63d5352b598beb30418765040ee Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Mon, 1 May 2023 13:15:07 +0200 Subject: [PATCH 13/76] Ecowitt WH 31 support (#1161) * SD_ProtocolData.pm - Added 124 -> Ecowitt WH 31 14_SD_WS.pm - Added 124 -> Ecowitt WH 31 - increased threshhold wait timer for second UNDEFINED event : protocol 107 & 125 --- FHEM/00_SIGNALduino.pm | 8 ++- FHEM/14_SD_WS.pm | 67 ++++++++++++++++++++-- FHEM/lib/SD_ProtocolData.pm | 26 ++++++++- README.md | 1 + controls_signalduino.txt | 6 +- t/FHEM/14_SD_WS/testData.json | 103 ++++++++++++++++++++++++++++++++++ t/SD_Protocols/out.pl | 50 +++++++++++++++++ 7 files changed, 250 insertions(+), 11 deletions(-) create mode 100644 t/SD_Protocols/out.pl diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 8c9665bb4..73cfb2568 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.5 2023-04-30 17:41:31Z sidey79 $ +# $Id: 00_SIGNALduino.pm 3.5.5 2023-05-01 10:16:30Z sidey79 $ # v3.5.5 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -42,7 +42,7 @@ use List::Util qw(first); use constant { - SDUINO_VERSION => '3.5.5+20230430', # Datum wird automatisch bei jedem pull request aktualisiert + SDUINO_VERSION => '3.5.5+20230501', # Datum wird automatisch bei jedem pull request aktualisiert SDUINO_INIT_WAIT_XQ => 1.5, # wait disable device SDUINO_INIT_WAIT => 2, SDUINO_INIT_MAXRETRY => 3, @@ -5410,6 +5410,10 @@ USB-connected devices (SIGNALduino):
    Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=9 Byte, Frequenz 868.35 MHz
      Beispiel: Gewittersensor Fine Offset WH57, Froggit DP60, Ambient Weather WH31L
  • +
  • Fine_Offset_WH31_868
    + Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=11 Byte, Frequenz 868.35 MHz +
      Beispiel: Temp feuchte Sensor Fine Offset WH31, Froggit DP50, Ambient Weather WH31e/b, Ecowitt wh31
    +
  • Inkbird_IBS-P01R
    Modulation 2-FSK, Datenrate=10.00 kbps, Sync Word=2DD4, Packet Length=18 Byte, Frequenz 433.92 MHz
      Beispiel: Inkbird IBS-P01R Pool Thermometer, ITH-20R Thermo-/Hygrometer
    diff --git a/FHEM/14_SD_WS.pm b/FHEM/14_SD_WS.pm index 9dce94087..ae53370db 100644 --- a/FHEM/14_SD_WS.pm +++ b/FHEM/14_SD_WS.pm @@ -1,4 +1,4 @@ -# $Id: 14_SD_WS.pm 26982 2023-01-23 17:24:05Z sidey79 $ +# $Id: 14_SD_WS.pm 26982 2023-05-01 10:16:30Z sidey79 $ # # The purpose of this module is to support serval # weather sensors which use various protocol @@ -48,6 +48,7 @@ # 11.06.2022 neues Protokoll 122: TM40, Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors # 06.01.2023 neues Protokoll 123: Inkbird IBS-P01R Pool Thermometer, Inkbird ITH-20R (not tested) # 21.01.2023 use round from package FHEM::Core::Utils::Math; +# 01.04.2023 Added ecowitt wh31 support package main; @@ -59,6 +60,7 @@ use warnings; use Carp qw(carp); use FHEM::Meta; use FHEM::Core::Utils::Math; +use constant HAS_DigestCRC => defined eval { require Digest::CRC; }; # Forward declarations sub SD_WS_LFSR_digest8_reflect; @@ -100,7 +102,7 @@ sub SD_WS_Initialize { "SD_WS_85_THW_.*" => { ATTR => "event-min-interval:.*:300 event-on-change-reading:.*", FILTER => "%NAME", GPLOT => "temp4hum4:Temp/Hum,", autocreateThreshold => "4:120"}, "SD_WS_89_TH.*" => { ATTR => "event-min-interval:.*:300 event-on-change-reading:.*", FILTER => "%NAME", GPLOT => "temp4hum4:Temp/Hum,", autocreateThreshold => "3:180"}, "SD_WS_94_T.*" => { ATTR => "event-min-interval:.*:300 event-on-change-reading:.*", FILTER => "%NAME", GPLOT => "temp4:Temp,", autocreateThreshold => "3:180"}, - 'SD_WS_107_H.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => q{}, autocreateThreshold => '2:180'}, + 'SD_WS_107_H.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => q{}, autocreateThreshold => '2:300'}, 'SD_WS_108.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '5:120'}, 'SD_WS_110_TR.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '3:180'}, 'SD_WS_111_TL.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '3:600'}, @@ -111,6 +113,7 @@ sub SD_WS_Initialize { 'SD_WS_120.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4hum4:Temp/Hum,', autocreateThreshold => '2:180'}, 'SD_WS_122_T.*' => { ATTR => 'event-min-interval:.*:60 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '10:180'}, 'SD_WS_123_T.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '2:180'}, + 'SD_WS_125_.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4hum4:Temp/Hum,', autocreateThreshold => '2:300'}, }; return FHEM::Meta::InitMod( __FILE__, $hash ); } @@ -324,7 +327,7 @@ sub SD_WS_Parse { return 0; } } else { - Log3 $name, 1, "$name: SD_WS_27 Parse msg $rawData - ERROR CRC not load, please install modul Digest::CRC"; + Log3 $name, 1, "$name: SD_WS_27 Parse msg $rawData - ERROR CRC not checked, please install module Digest::CRC"; return 0; } } @@ -720,7 +723,7 @@ sub SD_WS_Parse { return 0; } } else { - Log3 $name, 1, "$name: SD_WS_85 Parse msg $rawData - ERROR CRC not load, please install modul Digest::CRC"; + Log3 $name, 1, "$name: SD_WS_85 Parse msg $rawData - ERROR CRC not loaded, please install module Digest::CRC"; return 0; } return 1; @@ -1241,6 +1244,7 @@ sub SD_WS_Parse { return 1; } } , + 117 => { # https://github.com/merbanan/rtl_433/blob/master/src/devices/bresser_7in1.c # The compact 7-in-1 multifunction outdoor sensor transmits the data on 868.3 MHz. @@ -1471,6 +1475,59 @@ sub SD_WS_Parse { } }, }, + 125 => { + # Temperature and humidiry sensor Fine Offset WH31, aka Ambient Weather, aka ecowitt + # ------------------------------------------------------------------------------------------ + # Byte: 00 01 02 03 04 05 06 07 08 09 10 + # Nibble: 01 23 45 67 89 01 23 45 67 89 01 + # aa aa aa 2d d4 30 02 82 62 37 04 51 6C 00 02 00 + # MN;D= 30 02 82 62 37 04 51 6C 00 02 00 ;R=63; Temp: 21.0 C Hum: 55%, Battery: ok, ID: 0x02 + # FF II CT TT HH XX SS ?? ?? ?? ?? + # FF: Family code 0x31 = WH31e 0x37 = wh31b + # II: ID (1 byte) + # C : 3bit Channel Number Bit 17-19, 1 Bit Battery bit 20 + # TT: 10 bits Temperature in C, scaled by 10, offset 400. Start at Bit 22 + # HH: Humidity in percent as two diget hex + # XX: CRC8 of the preceding 5 bytes (Polynomial 0x31, Initial value 0x00, Input not reflected, Result not reflected) + # SS: Sum-8 of the preceding 5 bytes + # ??: Unknown Data + sensortype => 'WH31e, WH31b, DP50', + model => 'SD_WS_125_TH', + prematch => sub {my ($rawData,undef) = @_; return 1 if ($rawData =~ /^(30|37)/); }, + id => sub {my ($rawData,undef) = @_; return (substr($rawData,2,2));}, + channel => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,17,19) + 1);}, + bat => sub {my (undef,$bitData) = @_; return substr($bitData,20,1) eq '0' ? 'ok' : 'low';}, + temp => sub {my (undef,$bitData) = @_; + my $temp = SD_WS_binaryToNumber($bitData,22,31); + return FHEM::Core::Utils::Math::round(($temp - 400) / 10, 1); + }, + hum => sub { my ($rawData,undef) = @_; return hex(substr($rawData,8,2)); }, + crcok => sub { my ($rawData,undef) = @_; + if (HAS_DigestCRC) { + my $calc_crc8 = Digest::CRC->new(width => 8, poly=>0x31); + my $crc_digest = $calc_crc8->add( pack 'H*', substr( $rawData, 0, 12 ) )->digest; + if ($crc_digest) + { + Log3 $name, 3, qq[$name: SD_WS_125 Parse msg $rawData - ERROR CRC8 $crc_digest shoud be 0]; + return 0; + } + } else { + Log3 $name, 1, qq[$name: SD_WS_125 Parse msg $rawData - ERROR CRC not loaded, please install module Digest::CRC]; + } + my $checksum = 0; + for (my $i=0; $i < 11; $i += 2) { + $checksum += hex(substr($rawData,$i,2)); + } + $checksum -= hex(substr($rawData,12,2)); + $checksum &= 0xFF; + if ($checksum) { + Log3 $name, 3, qq[$name: SD_WS_125 Parse msg $rawData - ERROR checksum $checksum != 0]; + return 0; + } + + return 1; + }, + }, ); Log3 $name, 4, "$name: SD_WS_Parse protocol $protocol, rawData $rawData"; @@ -2154,6 +2211,7 @@ sub SD_WS_WH2SHIFT {
  • EuroChron EFTH-800, EFS-3110A (temperature and humidity sensor)
  • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (soil moisture sensor)
  • Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L (thunder and lightning sensor)
  • +
  • Fine Offset WH31, aka Ambient Weather WH31E, aka ecowitt WH31 (temperature and humidity sensor)
  • Fody E42 (temperature and humidity sensor)
  • Inkbird IBS-P01R pool thermometer, ITH-20R
  • NC-3911, NC-3912 refrigerator thermometer
  • @@ -2295,6 +2353,7 @@ sub SD_WS_WH2SHIFT {
  • EuroChron EFTH-800, EFS-3110A (Temperatur- und Feuchtigkeitssensor)
  • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (Bodenfeuchtesensor)
  • Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L (Gewittersensor)
  • +
  • Fine Offset WH31, aka Ambient Weather WH31E Thermo-Hygrometer Sensor (Temperatur- und Feuchtemsser)
  • Fody E42 (Temperatur- und Feuchtigkeitssensor)
  • Inkbird IBS-P01R Pool Thermometer, ITH-20R
  • Kabelloses Grillthermometer, Modellname: GFGT 433 B1
  • diff --git a/FHEM/lib/SD_ProtocolData.pm b/FHEM/lib/SD_ProtocolData.pm index fd5c4ca4f..61deefb69 100644 --- a/FHEM/lib/SD_ProtocolData.pm +++ b/FHEM/lib/SD_ProtocolData.pm @@ -1,4 +1,4 @@ -# $Id: SD_ProtocolData.pm 26975 2023-01-13 19:55:16Z elektron-bbs $ +# $Id: SD_ProtocolData.pm 26975 2023-05-01 10:16:30Z sidey79 $ # The file is part of the SIGNALduino project. # All protocol definitions are contained in this file. # @@ -85,7 +85,7 @@ package lib::SD_ProtocolData; use strict; use warnings; - our $VERSION = '1.49'; + our $VERSION = '1.50'; our %protocols = ( "0" => ## various weather sensors (500 | 9100) @@ -3297,6 +3297,28 @@ package lib::SD_ProtocolData; clientmodule => 'SD_WS', length_min => '36', }, + "125" => ## Humidity and Temperaturesensor Ecowitt WH31, froggit DP50 / WH31A + # Nordamerika: 915MHz; Europa: 868MHz, andere Regionen: 433MHz + # https://github.com/RFD-FHEM/RFFHEM/pull/1161 @ sidey79 2023-04-01 + # SD_WS_125_TH_1 T: 21.0 H: 55 Battery: ok channel:1 MN;D=300282623704516C000200;R=56; + # SD_WS_125_TH_1 T: 16.7 H: 60 Battery: ok channel:2 MN;D=300292373CDA116C000200;R=229; + # SD_WS_125_TH_3 T: 5.4 H: 52 Battery: ok channel:3 MN;D=30E0A1C634FEA96C000200;R=197; + + { + name => 'WH31', + comment => 'Fine Offset | Ambient Weather WH31E Thermo-Hygrometer Sensor', + id => '125', + knownFreqs => '868.35', + datarate => '17.257', + sync => '2DD4', + modulation => '2-FSK', + regexMatch => qr/^(30|37)/, + preamble => 'W125#', + register => ['0001','022E','0343','042D','05D4','060b','0780','0800','0D21','0E65','0FE8','10A9','115C','1202','1322','14F8','1543','1916','1B43','1C68'], + rfmode => 'Fine_Offset_WH31_868', + clientmodule => 'SD_WS', + length_min => '18', + }, ######################################################################## #### ### register informations from other hardware protocols #### #### diff --git a/README.md b/README.md index 7ced2707b..c4128b4c2 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ Supported Devices / Protocols |FHT80TF | door/window switch | |Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 | Soil moisture sensor | |Fine Offset WH57, aka Ambient Weather WH31L, aka Froggit DP60 | Thunder and lightning sensor | +|Fine Offset WH31, aka Ambient Weather WH31E, aka ecowitt WH31 | Temperature and humidity sensor | |FLAMINGO | Flamingo smoke detector | |Fody E42 | Temperature/humidity sensor (protocol BRESSER 5-in-1) | |FS10 | Remote control | diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 2a36bb29f..219de0627 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-05-01_12:08:25 236791 FHEM/00_SIGNALduino.pm +UPD 2023-05-01_12:16:05 237077 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-01-23_18:12:05 24036 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-01-04_21:24:03 187527 FHEM/14_SD_UT.pm -UPD 2023-01-23_21:06:26 144048 FHEM/14_SD_WS.pm +UPD 2023-04-30_17:43:42 147850 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-01-14_11:57:58 237361 FHEM/lib/SD_ProtocolData.pm +UPD 2023-04-30_17:43:42 238607 FHEM/lib/SD_ProtocolData.pm UPD 2023-01-06_12:08:43 79339 FHEM/lib/SD_Protocols.pm diff --git a/t/FHEM/14_SD_WS/testData.json b/t/FHEM/14_SD_WS/testData.json index 8be9b40c0..45397e387 100644 --- a/t/FHEM/14_SD_WS/testData.json +++ b/t/FHEM/14_SD_WS/testData.json @@ -2211,5 +2211,108 @@ "id" : "123", "module" : "SD_WS", "name" : "Inkbird ITH-20R" + }, + { + "data" : [ + { + "comment" : "Ecowitt WH31 Temp Hum sensor channel 1", + "dmsg" : "W125#300282623704516C000200", + "rmsg" : "MN;D=300282623704516C000200;R=63;", + "tests" : [ + { + "internals" : { + "DEF" : "SD_WS_125_TH_1", + "NAME" : "SD_WS_125_TH_1" + }, + "readings" : { + "humidity" : 55, + "state" : "T: 21.0 H: 55", + "temperature" : "21.0", + "type" : "WH31e, WH31b, DP50", + "batteryState" : "ok", + "channel" : 1 + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Ecowitt WH31 Temp Hum sensor channel 2", + "dmsg" : "W125#300292373CDA116C000200", + "rmsg" : "MN;D=300292373CDA116C000200;R=63;", + "tests" : [ + { + "internals" : { + "DEF" : "SD_WS_125_TH_2", + "NAME" : "SD_WS_125_TH_2" + }, + "readings" : { + "humidity" : 60, + "state" : "T: 16.7 H: 60", + "temperature" : "16.7", + "type" : "WH31e, WH31b, DP50", + "batteryState" : "ok", + "channel" : 2 + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Ecowitt WH31 Temp Hum sensor channel 2", + "dmsg" : "W125#30E0A1C634FEA96C000200", + "rmsg" : "MN;D=30E0A1C634FEA96C000200;R=63;", + "tests" : [ + { + "internals" : { + "DEF" : "SD_WS_125_TH_3", + "NAME" : "SD_WS_125_TH_3" + }, + "readings" : { + "humidity" : 52, + "state" : "T: 5.4 H: 52", + "temperature" : "5.4", + "type" : "WH31e, WH31b, DP50", + "batteryState" : "ok", + "channel" : 3 + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Ecowitt WH31 Temp Hum sensor - wrong checksum ", + "dmsg" : "W125#300282623704526C000200", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#1" + } + ] + + }, + { + "comment" : "Ecowitt WH31 Temp Hum sensor - wrong CRC ", + "dmsg" : "W125#302282623705616C000200", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#2" + } + ] + + } + ], + "id" : "125", + "module" : "SD_WS", + "name" : "Fine Offset | Ambient Weather WH31E Thermo-Hygrometer Sensor" } + + + + ] diff --git a/t/SD_Protocols/out.pl b/t/SD_Protocols/out.pl new file mode 100644 index 000000000..2c45b3259 --- /dev/null +++ b/t/SD_Protocols/out.pl @@ -0,0 +1,50 @@ +use Data::Dumper; + +#my %protocols; +require "test_loadprotohash-ok.pm"; +$Data::Dumper::Purity = 1; +$Data::Dumper::Deparse = 1; + +my $d = Data::Dumper->new([\%lib::SD_ProtocolData::protocols], [qw(*protocols)]); +$d->Seen({ '*lib::SD_Protocols::Not_Existing_Sub' => \&lib::SD_Protocols::Not_Existing_Sub }); + +#print Data::Dumper->Dump([protocols], [%protocols]); + +#print $d->Dump; + + + + +use B; +sub codename { + my $coderef = shift; + return unless ref $coderef eq 'CODE'; + my $cv = B::svref_2object($coderef); + return $cv->GV->NAME; +} + + +use JSON::Create 'create_json'; +my $jc = JSON::Create->new (); +# Let's validate the output of the subroutine below. +#$jc->validate (1); +$jc->escape_slash (1); +$jc->replace_bad_utf8 (1); + +# Try this one weird old trick to convert your Perl type. +$jc->type_handler ( + sub { + my ($thing) = @_; + my $value; + my $type = ref ($thing); + if ($type eq 'CODE') { + $value= '"\\\&'.codename($thing).'"'; + } + else { + $value = "$thing"; + } + return create_json ({ type => $type, value => $value, }); + + } +); +print $jc->run (\%lib::SD_ProtocolData::protocols)."\n"; From cdb979a9e11d200e30cfd2e2496300f977674fd9 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 1 May 2023 11:15:54 +0000 Subject: [PATCH 14/76] Automatic updated controls and CHANGED --- CHANGED | 10 ++++++++++ controls_signalduino.txt | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGED b/CHANGED index 9918824bd..6ccc0e211 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,13 @@ +2023-05-01 - Ecowitt WH 31 support (#1161) + +* SD_ProtocolData.pm + +- Added 124 -> Ecowitt WH 31 + +14_SD_WS.pm + +- Added 124 -> Ecowitt WH 31 +- increased threshhold wait timer for second UNDEFINED event : protocol 107 & 125 2023-05-01 - New elements for attribute hardware (#1172) * 00_SIGNALduinoi.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 219de0627..233ca7172 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-05-01_12:16:05 237077 FHEM/00_SIGNALduino.pm +UPD 2023-05-01_13:15:07 237077 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-01-23_18:12:05 24036 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-01-04_21:24:03 187527 FHEM/14_SD_UT.pm -UPD 2023-04-30_17:43:42 147850 FHEM/14_SD_WS.pm +UPD 2023-05-01_13:15:07 147850 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-04-30_17:43:42 238607 FHEM/lib/SD_ProtocolData.pm +UPD 2023-05-01_13:15:07 238607 FHEM/lib/SD_ProtocolData.pm UPD 2023-01-06_12:08:43 79339 FHEM/lib/SD_Protocols.pm From 4f1f34afd99a67a204b78a26f0d0b3e681b0389f Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Fri, 5 May 2023 16:50:53 +0200 Subject: [PATCH 15/76] fixes Attribut Hardware promini #1174 (#1175) * 00_SIGNALduino.pm fixes Attribut Hardware promini #1174 * Update Versiondate --------- Co-authored-by: GitHub Action --- FHEM/00_SIGNALduino.pm | 14 +++++++------- controls_signalduino.txt | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 73cfb2568..10333716c 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.5 2023-05-01 10:16:30Z sidey79 $ +# $Id: 00_SIGNALduino.pm 3.5.5 2023-05-04 20:05:20Z sidey79 $ # v3.5.5 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -42,7 +42,7 @@ use List::Util qw(first); use constant { - SDUINO_VERSION => '3.5.5+20230501', # Datum wird automatisch bei jedem pull request aktualisiert + SDUINO_VERSION => '3.5.5+20230504', # Datum wird automatisch bei jedem pull request aktualisiert SDUINO_INIT_WAIT_XQ => 1.5, # wait disable device SDUINO_INIT_WAIT => 2, SDUINO_INIT_MAXRETRY => 3, @@ -324,7 +324,7 @@ sub SIGNALduino_Initialize { .' doubleMsgCheck_IDs' .' eventlogging:0,1' .' flashCommand' - .' hardware:ESP32s,ESP32cc1101,ESP8266s,ESP8266cc1101,MAPLEMINI_F103CBs,MAPLEMINI_F103CBcc1101,nano328,nanoCC1101,miniculCC1101,promini8CC1101,promini16C1101,promini8s,promini16s,radinoCC1101' + .' hardware:esp32s,esp32cc1101,esp8266s,esp8266cc1101,MAPLEMINI_F103CBs,MAPLEMINI_F103CBcc1101,nano328,nanoCC1101,miniculCC1101,promini8cc1101,promini16cc1101,promini8s,promini16s,radinoCC1101' .' hexFile' .' initCommands' .' longids' @@ -4734,10 +4734,10 @@ USB-connected devices (SIGNALduino):
    The other option consists of the cc1101 (sub 1 GHZ) chip, which can transmit and receiver. It's a transceiver which is connected via spi. ESP8266 hardware type, currently doesn't support flashing out of the module and needs at leat 1 MB of flash.
      -
    • ESP32s: ESP32 with simple single wire receiver
    • -
    • ESP32cc1101: ESP32 with CC1101 (spi connected) receiver
    • -
    • ESP8266s: ESP8266 with simple single wire receiver
    • -
    • ESP8266cc1101: ESP8266 with CC1101 (spi connected) receiver
    • +
    • esp32s: ESP32 with simple single wire receiver
    • +
    • esp32cc1101: ESP32 with CC1101 (spi connected) receiver
    • +
    • esp8266s: ESP8266 with simple single wire receiver
    • +
    • esp8266cc1101: ESP8266 with CC1101 (spi connected) receiver
    • MAPLEMINI_F103CBs: MapleMini F103CB (STM32 family) with simple single wire receiver
    • MAPLEMINI_F103CBcc1101: MapleMini F103CB (STM32 family) with CC1101 (spi connected) receiver
    • miniculCC1101: Arduino pro Mini with CC110x (spi connected) receiver and cables as a minicul
    • diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 233ca7172..cf46e05ca 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-05-01_13:15:07 237077 FHEM/00_SIGNALduino.pm +UPD 2023-05-04_22:04:45 237078 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm From 4e88f2d488e35f48ded86ab6e06cab61ea3eef86 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 5 May 2023 14:51:40 +0000 Subject: [PATCH 16/76] Automatic updated controls and CHANGED --- CHANGED | 11 +++++++++++ controls_signalduino.txt | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 6ccc0e211..8abadf673 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,14 @@ +2023-05-05 - fixes Attribut Hardware promini #1174 (#1175) + +* 00_SIGNALduino.pm + +fixes Attribut Hardware promini #1174 + +* Update Versiondate + +--------- + +Co-authored-by: GitHub Action 2023-05-01 - Ecowitt WH 31 support (#1161) * SD_ProtocolData.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index cf46e05ca..e29c7c1a6 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-05-04_22:04:45 237078 FHEM/00_SIGNALduino.pm +UPD 2023-05-05_16:50:53 237078 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm From 08f64466e86d49655038dffb7062dc5fed99cea5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 May 2023 06:12:08 +0200 Subject: [PATCH 17/76] Bump codecov/codecov-action from 3.1.3 to 3.1.4 (#1176) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.3...v3.1.4) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/prove.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index bd717db53..f2012dec9 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -43,7 +43,7 @@ jobs: FHEM_DIR: /opt/fhem - name: Create clover report for perl Modules run: cover -report clover - - uses: codecov/codecov-action@v3.1.3 + - uses: codecov/codecov-action@v3.1.4 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./cover_db/clover.xml @@ -53,7 +53,7 @@ jobs: - name: Create clover report for fhem tests working-directory: /opt/fhem/ run: cover -report clover - - uses: codecov/codecov-action@v3.1.3 + - uses: codecov/codecov-action@v3.1.4 with: token: ${{ secrets.CODECOV_TOKEN }} file: /opt/fhem/cover_db/clover.xml From 62ff1d7de62d7b11c4798e96dc72af36f6891603 Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Tue, 16 May 2023 21:51:11 +0200 Subject: [PATCH 18/76] Support ecowitt wh40 rain gauge (#1164) * SD_ProtocolData.pm - Added 124 -> Ecowitt WH 31 14_SD_WS.pm - Added 124 -> Ecowitt WH 31 - increased threshhold wait timer for second UNDEFINED event : protocol 107 & 125 - Added crc & checksum check - updated battery - updated temp calc testData.json - Added tests for ecowitt WH31 * 00_SIGNALduino.pm added rfmode to commandref Co-authored-by: GitHub Action --- FHEM/00_SIGNALduino.pm | 8 ++- FHEM/14_SD_WS.pm | 61 +++++++++++++++++++++- FHEM/lib/SD_ProtocolData.pm | 28 ++++++++-- controls_signalduino.txt | 6 +-- t/FHEM/14_SD_WS/testData.json | 97 +++++++++++++++++++++++++++++++++++ 5 files changed, 190 insertions(+), 10 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 10333716c..88fe4c518 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.5 2023-05-04 20:05:20Z sidey79 $ +# $Id: 00_SIGNALduino.pm 3.5.5 2023-05-16 16:34:07Z sidey79 $ # v3.5.5 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -42,7 +42,7 @@ use List::Util qw(first); use constant { - SDUINO_VERSION => '3.5.5+20230504', # Datum wird automatisch bei jedem pull request aktualisiert + SDUINO_VERSION => '3.5.5+20230516', # Datum wird automatisch bei jedem pull request aktualisiert SDUINO_INIT_WAIT_XQ => 1.5, # wait disable device SDUINO_INIT_WAIT => 2, SDUINO_INIT_MAXRETRY => 3, @@ -5414,6 +5414,10 @@ USB-connected devices (SIGNALduino):
      Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=11 Byte, Frequenz 868.35 MHz
        Beispiel: Temp feuchte Sensor Fine Offset WH31, Froggit DP50, Ambient Weather WH31e/b, Ecowitt wh31
      +
    • Fine_Offset_WH40_868
      + Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 868.35 MHz +
        Beispiel: Regensensor Fine Offset WH40, Ambient Weather WH40, Ecowitt WH40
      +
    • Inkbird_IBS-P01R
      Modulation 2-FSK, Datenrate=10.00 kbps, Sync Word=2DD4, Packet Length=18 Byte, Frequenz 433.92 MHz
        Beispiel: Inkbird IBS-P01R Pool Thermometer, ITH-20R Thermo-/Hygrometer
      diff --git a/FHEM/14_SD_WS.pm b/FHEM/14_SD_WS.pm index ae53370db..45ffafc32 100644 --- a/FHEM/14_SD_WS.pm +++ b/FHEM/14_SD_WS.pm @@ -1,4 +1,4 @@ -# $Id: 14_SD_WS.pm 26982 2023-05-01 10:16:30Z sidey79 $ +# $Id: 14_SD_WS.pm 26982 2023-05-16 16:34:07Z sidey79 $ # # The purpose of this module is to support serval # weather sensors which use various protocol @@ -6,6 +6,7 @@ # Sidey79 & Ralf9 2016 - 2017 # Joerg 2017 # elektron-bbs 2018 - +# sidey 2017 - # # 17.04.2017 WH2 (TFA 30.3157 nur Temp, Hum = 255),es wird das Perlmodul Digest:CRC benoetigt fuer CRC-Pruefung benoetigt # 29.05.2017 Test ob Digest::CRC installiert @@ -49,6 +50,7 @@ # 06.01.2023 neues Protokoll 123: Inkbird IBS-P01R Pool Thermometer, Inkbird ITH-20R (not tested) # 21.01.2023 use round from package FHEM::Core::Utils::Math; # 01.04.2023 Added ecowitt wh31 support +# 06.05.2023 Added ecowitt WH40 support package main; @@ -114,6 +116,7 @@ sub SD_WS_Initialize { 'SD_WS_122_T.*' => { ATTR => 'event-min-interval:.*:60 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '10:180'}, 'SD_WS_123_T.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4:Temp,', autocreateThreshold => '2:180'}, 'SD_WS_125_.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4hum4:Temp/Hum,', autocreateThreshold => '2:300'}, + "SD_WS_126_R.*" => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'rain4:Rain,', autocreateThreshold => "2:180"}, }; return FHEM::Meta::InitMod( __FILE__, $hash ); } @@ -1508,6 +1511,7 @@ sub SD_WS_Parse { my $crc_digest = $calc_crc8->add( pack 'H*', substr( $rawData, 0, 12 ) )->digest; if ($crc_digest) { + Log3 $name, 3, qq[$name: SD_WS_125 Parse msg $rawData - ERROR CRC8 $crc_digest shoud be 0]; return 0; } @@ -1525,6 +1529,59 @@ sub SD_WS_Parse { return 0; } + return 1; + }, + }, + 126 => { + # rain gauge Fine Offset WH40, aka Ambient Weather, aka ecowitt + # ------------------------------------------------------------------------------------------ + # Byte: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 + # Nibble: 01 23 45 67 89 01 23 45 67 89 01 23 45 67 + # aa aa aa 2d d4 40 01 1C DF 8F 00 00 97 62 20 A6 80 28 01 -> ID 0x11cdf + # 40 01 3E 3C 90 00 00 10 5B A0 2A -> ID: 0x13e3c + # FF II II II BB RR RR XX AA ?? ?? ?? ?? ?? ?? ?? + # FF: Family code always 0x40 + # II: ID (1 byte) + # BB: Voltage of battery is representey by last 5 bits; voltage / 10 => 0F = 15 = 1.5v Not all models have battery reporting. Firest seen in late 2022 + # RR: the rain bucket tip count => 0.1mm increments + # XX: CRC8 of the preceding 5 bytes (Polynomial 0x31, Initial value 0x00, Input not reflected, Result not reflected) + # SS: Sum-8 of the preceding 5 bytes + # ??: Unknown Data + sensortype => 'WH40', + model => 'SD_WS_126_R', + prematch => sub {my ($rawData,undef) = @_; return 1 if ($rawData =~ /^40/); }, + id => sub {my ($rawData,undef) = @_; return (substr($rawData,2,6));}, + rain_total => sub {my ($rawData,undef) = @_; return 0.1 * hex(substr($rawData,10,4)); }, + rawRainCounter => sub {my ($rawData,undef) = @_; return hex(substr($rawData,10,4)); }, + bat => sub { my (undef,$bitData) = @_; + my $v = oct(q[0b].substr($bitData,35,5)); + return $v ne '0' ? $v > 11 ? 'ok' : 'low' : undef; }, + batVoltage => sub { my (undef,$bitData) = @_; + my $v = oct(q[0b].substr($bitData,35,5)); + return $v ne '0' ? $v / 10 : undef; }, + crcok => sub { my ($rawData,undef) = @_; + if (HAS_DigestCRC) { + my $calc_crc8 = Digest::CRC->new(width => 8, poly=>0x31); + my $crc_digest = $calc_crc8->add( pack 'H*', substr( $rawData, 0, 16 ) )->digest; + if ($crc_digest) + { + Log3 $name, 3, qq[$name: SD_WS_126 Parse msg $rawData - ERROR CRC8 $crc_digest shoud be 0]; + return 0; + } + } else { + Log3 $name, 1, qq[$name: SD_WS_126 Parse msg $rawData - ERROR CRC not loaded, please install module Digest::CRC]; + } + my $checksum = 0; + for (my $i=0; $i < 15; $i += 2) { + $checksum += hex(substr($rawData,$i,2)); + } + $checksum -= hex(substr($rawData,16,2)); + $checksum &= 0xFF; + if ($checksum) { + Log3 $name, 3, qq[$name: SD_WS_126 Parse msg $rawData - ERROR checksum $checksum != 0]; + return 0; + } + return 1; }, }, @@ -2212,6 +2269,7 @@ sub SD_WS_WH2SHIFT {
    • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (soil moisture sensor)
    • Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L (thunder and lightning sensor)
    • Fine Offset WH31, aka Ambient Weather WH31E, aka ecowitt WH31 (temperature and humidity sensor)
    • +
    • Fine Offset WH40, aka Ambient Weather WH40, aka ecowitt WH40 (Regen sensor)
    • Fody E42 (temperature and humidity sensor)
    • Inkbird IBS-P01R pool thermometer, ITH-20R
    • NC-3911, NC-3912 refrigerator thermometer
    • @@ -2354,6 +2412,7 @@ sub SD_WS_WH2SHIFT {
    • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (Bodenfeuchtesensor)
    • Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L (Gewittersensor)
    • Fine Offset WH31, aka Ambient Weather WH31E Thermo-Hygrometer Sensor (Temperatur- und Feuchtemsser)
    • +
    • Fine Offset WH40, aka Ambient Weather WH40, aka ecowitt WH40 (rain sensor)
    • Fody E42 (Temperatur- und Feuchtigkeitssensor)
    • Inkbird IBS-P01R Pool Thermometer, ITH-20R
    • Kabelloses Grillthermometer, Modellname: GFGT 433 B1
    • diff --git a/FHEM/lib/SD_ProtocolData.pm b/FHEM/lib/SD_ProtocolData.pm index 61deefb69..6b1bd5846 100644 --- a/FHEM/lib/SD_ProtocolData.pm +++ b/FHEM/lib/SD_ProtocolData.pm @@ -1,9 +1,9 @@ -# $Id: SD_ProtocolData.pm 26975 2023-05-01 10:16:30Z sidey79 $ +# $Id: SD_ProtocolData.pm 26975 2023-05-16 16:34:07Z sidey79 $ # The file is part of the SIGNALduino project. # All protocol definitions are contained in this file. # # 2016-2019 S.Butzek, Ralf9 -# 2019-2020 S.Butzek, HomeAutoUser, elektron-bbs +# 2019-2023 S.Butzek, HomeAutoUser, elektron-bbs # # !!! useful hints !!! # -------------------- @@ -85,8 +85,7 @@ package lib::SD_ProtocolData; use strict; use warnings; - our $VERSION = '1.50'; - + our $VERSION = '1.51'; our %protocols = ( "0" => ## various weather sensors (500 | 9100) # Mebus | Id:237 Ch:1 T: 1.9 Bat:low MS;P0=-9298;P1=495;P2=-1980;P3=-4239;D=1012121312131313121313121312121212121212131212131312131212;CP=1;SP=0;R=223;O;m2; @@ -3319,6 +3318,27 @@ package lib::SD_ProtocolData; clientmodule => 'SD_WS', length_min => '18', }, + "126" => ## Humidity and Temperaturesensor Ecowitt WH40, + # https://github.com/RFD-FHEM/RFFHEM/pull/1164 + # SD_WS_126 R: 0 MN;D=40011CDF8F0000976220A6802801;R=61; 14 byte ID 11CDF + # SD_WS_126 R: 0 MN;D=40013E3C900000105BA02A;R=61; 11 byte ID 13E3c + # SD_WS_126 R: 9 MN;D=40013E3C90005AB55AA0A0800408;R=61; 14 Byte ID 13E3c + { + name => 'WH40', + comment => 'Fine Offset | Ambient Weather WH40 rain gauge', + id => '125', + knownFreqs => '868.35', + datarate => '17.257', + sync => '2DD4', + modulation => '2-FSK', + regexMatch => qr/^40/, + preamble => 'W126#', + register => ['0001','022E','0343','042D','05D4','060e','0780','0800','0D21','0E65','0FE8','10A9','115C','1202','1322','14F8','1543','1916','1B43','1C68'], + rfmode => 'Fine_Offset_WH40_868', + clientmodule => 'SD_WS', + length_min => '22', + length_max => '28', + }, ######################################################################## #### ### register informations from other hardware protocols #### #### diff --git a/controls_signalduino.txt b/controls_signalduino.txt index e29c7c1a6..7a35c2f3d 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-05-05_16:50:53 237078 FHEM/00_SIGNALduino.pm +UPD 2023-05-11_21:11:21 237339 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-01-23_18:12:05 24036 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-01-04_21:24:03 187527 FHEM/14_SD_UT.pm -UPD 2023-05-01_13:15:07 147850 FHEM/14_SD_WS.pm +UPD 2023-05-11_21:11:21 151660 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-05-01_13:15:07 238607 FHEM/lib/SD_ProtocolData.pm +UPD 2023-05-11_21:11:21 239708 FHEM/lib/SD_ProtocolData.pm UPD 2023-01-06_12:08:43 79339 FHEM/lib/SD_Protocols.pm diff --git a/t/FHEM/14_SD_WS/testData.json b/t/FHEM/14_SD_WS/testData.json index 45397e387..ac8b46249 100644 --- a/t/FHEM/14_SD_WS/testData.json +++ b/t/FHEM/14_SD_WS/testData.json @@ -2310,6 +2310,103 @@ "id" : "125", "module" : "SD_WS", "name" : "Fine Offset | Ambient Weather WH31E Thermo-Hygrometer Sensor" + }, + { + "data" : [ + { + "comment" : "Ecowitt WH40 rain gauge (14 byte)", + "dmsg" : "W126#40011CDF8F0000976220A6802801", + "rmsg" : "MN;D=40011CDF8F0000976220A6802801;R=61;", + "tests" : [ + { + "internals" : { + "DEF" : "SD_WS_126_R", + "NAME" : "SD_WS_126_R" + }, + "readings" : { + "state" : "R: 0", + "rawRainCounter" : 0, + "rain_total" : 0, + "batteryVoltage" : 1.5, + "batteryState" : "ok", + "type" : "WH40" + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Ecowitt WH40 rain gauge (14 byte)", + "dmsg" : "W126#40013E3C90005AB55AA0A0800408", + "rmsg" : "MN;D=40013E3C90005AB55AA0A0800408;R=61;", + "tests" : [ + { + "internals" : { + "DEF" : "SD_WS_126_R", + "NAME" : "SD_WS_126_R" + }, + "readings" : { + "state" : "R: 9", + "batteryVoltage" : 1.6, + "batteryState" : "ok", + "rain_total" : 9, + "rawRainCounter" : 90, + "type" : "WH40" + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Ecowitt WH40 rain gauge (11 byte)", + "dmsg" : "W126#40013E3C900000105BA02A", + "rmsg" : "MN;D=40013E3C900000105BA02A;R=61;", + "tests" : [ + { + "internals" : { + "DEF" : "SD_WS_126_R", + "NAME" : "SD_WS_126_R" + }, + "readings" : { + "state" : "R: 0", + "rain_total" : 0, + "rawRainCounter" : 0, + "type" : "WH40" + }, + "comment" : "#0" + } + ] + }, + { + "comment" : "Ecowitt WH40 rain gauge - wrong checksum ", + "dmsg" : "W126#", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#1" + } + ] + + }, + { + "comment" : "Ecowitt WH40 rain gauge - wrong CRC ", + "dmsg" : "W126#", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#2" + } + ] + + } + ], + "id" : "126", + "module" : "SD_WS", + "name" : "Fine Offset | Ambient Weather WH40 rain gauge" } From af85c06b53a29dc277c0a8e566abcacb7fa633cd Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 16 May 2023 19:51:50 +0000 Subject: [PATCH 19/76] Automatic updated controls and CHANGED --- CHANGED | 24 ++++++++++++++++++++++++ controls_signalduino.txt | 6 +++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/CHANGED b/CHANGED index 8abadf673..fc2a317ec 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,27 @@ +2023-05-16 - Support ecowitt wh40 rain gauge (#1164) + +* SD_ProtocolData.pm + +- Added 124 -> Ecowitt WH 31 + +14_SD_WS.pm + +- Added 124 -> Ecowitt WH 31 +- increased threshhold wait timer for second UNDEFINED event : protocol 107 & 125 +- Added crc & checksum check +- updated battery +- updated temp calc + +testData.json + +- Added tests for ecowitt WH31 + +* 00_SIGNALduino.pm + +added rfmode to commandref + + +Co-authored-by: GitHub Action 2023-05-05 - fixes Attribut Hardware promini #1174 (#1175) * 00_SIGNALduino.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 7a35c2f3d..7a4a5d8d3 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-05-11_21:11:21 237339 FHEM/00_SIGNALduino.pm +UPD 2023-05-16_21:51:11 237339 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-01-23_18:12:05 24036 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-01-04_21:24:03 187527 FHEM/14_SD_UT.pm -UPD 2023-05-11_21:11:21 151660 FHEM/14_SD_WS.pm +UPD 2023-05-16_21:51:11 151660 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-05-11_21:11:21 239708 FHEM/lib/SD_ProtocolData.pm +UPD 2023-05-16_21:51:11 239708 FHEM/lib/SD_ProtocolData.pm UPD 2023-01-06_12:08:43 79339 FHEM/lib/SD_Protocols.pm From c8b70f31bcaa71f958fe37f2d531ea2d33ab7a53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 07:36:22 +0200 Subject: [PATCH 20/76] Bump shogo82148/actions-setup-perl from 1.21.0 to 1.21.1 (#1177) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.21.0 to 1.21.1. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.21.0...v1.21.1) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index 8208a0eea..a6c65f71d 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.0 + - uses: shogo82148/actions-setup-perl@v1.21.1 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index f2012dec9..6e0c17fcd 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.0 + - uses: shogo82148/actions-setup-perl@v1.21.1 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From 4fb9f9b9fbe317bfd50e5bc0ff2cfe7c7c42bf09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:19:32 +0200 Subject: [PATCH 21/76] Bump shogo82148/actions-setup-perl from 1.21.1 to 1.21.2 (#1178) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.21.1 to 1.21.2. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.21.1...v1.21.2) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index a6c65f71d..aee7a6d04 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.1 + - uses: shogo82148/actions-setup-perl@v1.21.2 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 6e0c17fcd..2c76028e6 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.1 + - uses: shogo82148/actions-setup-perl@v1.21.2 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From 267833e010804420bbec1058cf0ec975b38b9587 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 22:07:51 +0200 Subject: [PATCH 22/76] Bump shogo82148/actions-setup-perl from 1.21.2 to 1.21.3 (#1179) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index aee7a6d04..c0a018d59 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.2 + - uses: shogo82148/actions-setup-perl@v1.21.3 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 2c76028e6..1211f9e57 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.2 + - uses: shogo82148/actions-setup-perl@v1.21.3 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From a5889eec7e3284ee3da21d6c0930e0f45e7f81d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 07:26:44 +0200 Subject: [PATCH 23/76] Bump shogo82148/actions-setup-perl from 1.21.3 to 1.22.0 (#1180) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.21.3 to 1.22.0. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.21.3...v1.22.0) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index c0a018d59..ef7bd1aea 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.3 + - uses: shogo82148/actions-setup-perl@v1.22.0 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 1211f9e57..dab18ab1a 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.21.3 + - uses: shogo82148/actions-setup-perl@v1.22.0 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From a5c4362b7b749a56ea93049c4ec590c4a8b50af5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 06:40:08 +0200 Subject: [PATCH 24/76] Bump shogo82148/actions-setup-perl from 1.22.0 to 1.23.0 (#1181) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.22.0 to 1.23.0. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.22.0...v1.23.0) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index ef7bd1aea..7b826eb27 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.22.0 + - uses: shogo82148/actions-setup-perl@v1.23.0 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index dab18ab1a..f0e265c29 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.22.0 + - uses: shogo82148/actions-setup-perl@v1.23.0 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From 2f4ce9ec687dea8f7628ea5f876b2135c0df9d0f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Aug 2023 07:29:13 +0200 Subject: [PATCH 25/76] Bump shogo82148/actions-setup-perl from 1.23.0 to 1.23.1 (#1182) Bumps [shogo82148/actions-setup-perl](https://github.com/shogo82148/actions-setup-perl) from 1.23.0 to 1.23.1. - [Release notes](https://github.com/shogo82148/actions-setup-perl/releases) - [Commits](https://github.com/shogo82148/actions-setup-perl/compare/v1.23.0...v1.23.1) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index 7b826eb27..ed23d2a43 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.23.0 + - uses: shogo82148/actions-setup-perl@v1.23.1 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index f0e265c29..c1456d7e4 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: shogo82148/actions-setup-perl@v1.23.0 + - uses: shogo82148/actions-setup-perl@v1.23.1 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From 6ef467c4b13c11c633aef1b4a5a22467f6a0ffbe Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Tue, 15 Aug 2023 22:02:28 +0200 Subject: [PATCH 26/76] Support and for FREQEST register value (#1168) feat[cc1101]:Added support and for FREQEST value - feature needs firmware >=4.0.0 - commandref for AFC on/off extended - added tests --------- Co-authored-by: Udo Co-authored-by: GitHub Action --- FHEM/00_SIGNALduino.pm | 31 ++++++++++++++----- controls_signalduino.txt | 2 +- .../00_SIGNALduino/01_SIGNALduino_Parse_MN.t | 16 ++++++++++ .../02_SIGNALduino_Split_Message.t | 20 ++++++++++-- 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 88fe4c518..fd1898bf4 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.5 2023-05-16 16:34:07Z sidey79 $ +# $Id: 00_SIGNALduino.pm 3.5.6 2023-08-15 16:47:42Z sidey79 $ # v3.5.5 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -42,7 +42,7 @@ use List::Util qw(first); use constant { - SDUINO_VERSION => '3.5.5+20230516', # Datum wird automatisch bei jedem pull request aktualisiert + SDUINO_VERSION => '3.5.5+20230815', # Datum wird automatisch bei jedem pull request aktualisiert SDUINO_INIT_WAIT_XQ => 1.5, # wait disable device SDUINO_INIT_WAIT => 2, SDUINO_INIT_MAXRETRY => 3, @@ -2144,7 +2144,7 @@ sub SIGNALduino_Split_Message { my $clockabs; my $mcbitnum; my $rssi; - + my $freqafc; ## for AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator my @msg_parts = SIGNALduino_splitMsg($rmsg,';'); ## Split message parts by ';' my %ret; my $debug = AttrVal($name,'debug',0); @@ -2204,6 +2204,10 @@ sub SIGNALduino_Split_Message { $rssi = $_ ; Debug "$name: extracted RSSI $rssi \n" if ($debug); $ret{rssi} = $rssi; + } elsif ($_ =~ m/A=(-?[0-9]{0,3})/ ){ + # uncoverable branch true + Debug qq[$name: extracted FREQEST $1 \n] if ($debug); + $ret{freqest} = $1; } else { Debug "$name: unknown Message part $_" if ($debug);; } @@ -2216,7 +2220,7 @@ sub SIGNALduino_Split_Message { ############################# package main, test exists # Function which dispatches a message if needed. sub SIGNALduno_Dispatch { - my ($hash, $rmsg, $dmsg, $rssi, $id) = @_; + my ($hash, $rmsg, $dmsg, $rssi, $id, $freqafc) = @_; my $name = $hash->{NAME}; if (!defined($dmsg)) @@ -2274,6 +2278,10 @@ sub SIGNALduno_Dispatch { else { $rssi = ''; } + if(defined($freqafc)) { # AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator + $addvals{FREQAFC} = $freqafc; + } + $dmsg = lc($dmsg) if ($id eq '74' or $id eq '74.1'); # 10_FS20.pm accepted only lower case hex $hash->{logMethod}->($name, SDUINO_DISPATCH_VERBOSE, "$name: Dispatch, $dmsg, $rssi dispatch"); Dispatch($hash, $dmsg, \%addvals); ## Dispatch to other Modules @@ -2894,7 +2902,7 @@ sub SIGNALduino_Parse_MN { my $hash = shift // return; #return if no hash is provided my $rmsg = shift // return; #return if no rmsg is provided - if ($rmsg !~ /^MN;D=[0-9A-F]+;(?:R=[0-9]+;)?$/){ + if ($rmsg !~ /^MN;D=[0-9A-F]+;(?:R=[0-9]+;)?(?:A=-?[0-9]{1,3};)?$/) { # AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator $hash->{logMethod}->($hash->{NAME}, 3, qq[$hash->{NAME}: Parse_MN, faulty msg: $rmsg]); return ; # Abort here if not successfull } @@ -2906,10 +2914,15 @@ sub SIGNALduino_Parse_MN { my $rawData = _limit_to_hex($msg_parts{rawData}) // $hash->{logMethod}->($hash->{NAME}, 3, qq[$hash->{NAME}: Parse_MN, faulty rawData D=: $msg_parts{rawData}]) // return ; my $rssi; my $rssiStr= ''; - if ( defined $msg_parts{rssi} ){ + my $freqafc; + if ( exists $msg_parts{rssi} ){ $rssi = _limit_to_number($msg_parts{rssi}) // $hash->{logMethod}->($hash->{NAME}, 3, qq[$hash->{NAME}: Parse_MN, faulty rssi R=: $msg_parts{rssi}]) // return ; ($rssi,$rssiStr) = SIGNALduino_calcRSSI($rssi); }; + if ( exists $msg_parts{freqest} ){ #AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator + $freqafc = $msg_parts{freqest}; + $freqafc = FHEM::Core::Utils::Math::round((26000000 / 16384 * $freqafc / 1000),0); + } my $messagetype=$msg_parts{messagetype}; my $name = $hash->{NAME}; @@ -2953,7 +2966,7 @@ sub SIGNALduino_Parse_MN { } $dmsg = sprintf('%s%s',$hash->{protocolObject}->checkProperty($id,'preamble',''),$methodReturn[0]); $hash->{logMethod}->($name, 5, qq[$name: Parse_MN, Decoded matched MN Protocol id $id dmsg=$dmsg $rssiStr]); - SIGNALduno_Dispatch($hash,$rmsg,$dmsg,$rssi,$id); + SIGNALduno_Dispatch($hash,$rmsg,$dmsg,$rssi,$id,$freqafc); $message_dispatched++; } @@ -4526,6 +4539,8 @@ USB-connected devices (SIGNALduino):

      Example 4: set sduino raw SN;R=3;D=9A46036AC8D3923EAEB470AB; sends a xFSK message of raw and repeated 3 times

        note: The wrong use of the upcoming options can lead to malfunctions of the SIGNALduino!

        +
      • CEA -> Switching on the automatic frequency control for FSK modulation and firmware version >= V 4.0.0 (config: AFC=1)
      • +
      • CDA -> Switching off the automatic frequency control for FSK modulation and firmware version >= V 4.0.0 (config: AFC=0)
      • CER -> turn on data compression (config: Mred=1)
      • CDR -> disable data compression (config: Mred=0)

      • @@ -5122,6 +5137,8 @@ USB-connected devices (SIGNALduino):

        + LED_XM21_0 light string +
          +
        • on: button I on the remote
        • +
        • off: button O on the remote
        • +

        + Techmar Garden Lights (Remote control with 10 button)
        • Group_1 ... Group_9: Group 1 to 9, on / off
        • @@ -2755,7 +2789,7 @@ sub SD_UT_tristate2bin {
        • ignore
        • IODev
        • model
          - The attribute indicates the model type of your device (AC114_01B, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, CREATE_6601TL, DC_1961_TG, HS1-868-BS, HSM4, KL_RF01, LED_XM21_0, Meikee_21, Meikee_24, Momento, Navaris, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SA_434_1_mini, SF01_01319004, TC6861, TR60C1, Tedsen_SKX1xx, Tedsen_SKX2xx, Tedsen_SKX4xx, Tedsen_SKX6xx, TR_502MSV, Unitec_47031, unknown).
          + The attribute indicates the model type of your device (AC114_01B, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, CREATE_6601TL, DC_1961_TG, HA_HX2, HS1-868-BS, HSM4, KL_RF01, LED_XM21_0, Meikee_21, Meikee_24, Momento, Navaris, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SA_434_1_mini, SF01_01319004, TC6861, TR60C1, Tedsen_SKX1xx, Tedsen_SKX2xx, Tedsen_SKX4xx, Tedsen_SKX6xx, TR_502MSV, Unitec_47031, unknown).
          If the attribute is changed, a new device is created using autocreate. Autocreate must be activated for this.
        • repeats
          @@ -2773,7 +2807,7 @@ sub SD_UT_tristate2bin { Generated readings of the models
            - AC114-01, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, HSM4, KL_RF01, LED_XM21_0, Meikee_xx, Momento, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SF01_01319004, SF01_01319004_Typ2, TR401, TR_502MSV, Visivo + AC114-01, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, HA_HX2, HSM4, KL_RF01, LED_XM21_0, Meikee_xx, Momento, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SF01_01319004, SF01_01319004_Typ2, TR401, TR_502MSV, Visivo
            • deviceCode: Device code of the system
            • LastAction: Last executed action of the device (receive for command received | send for command send).
            • @@ -2836,6 +2870,7 @@ sub SD_UT_tristate2bin {
            • Fernbedienung mit 10 Tasten für Leroy Deckenventilator   (Modulmodel: RCnoName20_10, Protokoll 20)
            • Fernbedienung mit 12 Tasten für Deckenventilator   (Modulmodel: RCnoName128, Protokoll 128)
            • Fernbedienung mit 14 Tasten für Deckenventilator   (Modulmodel: RCnoName127, Protokoll 127)
            • +
            • Halemeier HA-HX2   (Modulmodel: HA-HX2, Protokoll 132)
            • Hoermann HS1-868-BS   (Modulmodel: HS1_868_BS, Protokoll 69)
            • Hoermann HSM4   (Modulmodel: HSM4, Protokoll 69)
            • Krinner LUMIX Christbaumkerzen   (Modulmodel: Krinner_LUMIX, Protokol 92)
            • @@ -2924,15 +2959,15 @@ sub SD_UT_tristate2bin {
            • night_mode: Taste MOND auf der Fernbedienung

            - LED_XM21_0 Christbaumkerzen + Fernbedienungen SA-434-1 mini 923301, Hoermann HS1-868-BS, Tedsen_SKX1xx
              -
            • on: Taste I auf der Fernbedienung
            • -
            • off: Taste O auf der Fernbedienung
            • +
            • send: Tastendruck (Sendet immer den gleichen Befehl, auch wenn der Benutzer einen anderen Set-Befehl via Konsole sendet.)

            - Fernbedienungen SA-434-1 mini 923301, Hoermann HS1-868-BS, Tedsen_SKX1xx + Halemeier HA_HX2
              -
            • send: Tastendruck (Sendet immer den gleichen Befehl, auch wenn der Benutzer einen anderen Set-Befehl via Konsole sendet.)
            • +
            • on: Taste ON auf der Fernbedienung
            • +
            • off: Taste OFF auf der Fernbedienung

            Hoermann HSM4 (Fernbedienung mit 4 Tasten) @@ -2943,6 +2978,12 @@ sub SD_UT_tristate2bin {
          • button_4: Taste 4 auf der Fernbedienung

          + LED_XM21_0 Christbaumkerzen +
            +
          • on: Taste I auf der Fernbedienung
          • +
          • off: Taste O auf der Fernbedienung
          • +

          + Techmar Garden Lights (Fernbedienung mit 10 Tasten)
          • Group_1 ... Group_9: Gruppe 1 bis 9, jeweils ein und aus
          • @@ -2985,7 +3026,7 @@ sub SD_UT_tristate2bin {
          • ignore
          • IODev
          • model
            - Diese Attribut bezeichnet den Modelltyp Ihres Gerätes (AC114_01B, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, CREATE_6601TL, DC_1961_TG, HS1-868-BS, HSM4, KL_RF01, LED_XM21_0, Meikee_21, Meikee_24, Momento, Navaris, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SA_434_1_mini, SF01_01319004, TC6861, TR60C1, Tedsen_SKX1xx, Tedsen_SKX2xx, Tedsen_SKX4xx, Tedsen_SKX6xx, TR_502MSV, Unitec_47031, unknown).
            + Diese Attribut bezeichnet den Modelltyp Ihres Gerätes (AC114_01B, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, CREATE_6601TL, DC_1961_TG, HA_HX2, HS1-868-BS, HSM4, KL_RF01, LED_XM21_0, Meikee_21, Meikee_24, Momento, Navaris, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SA_434_1_mini, SF01_01319004, TC6861, TR60C1, Tedsen_SKX1xx, Tedsen_SKX2xx, Tedsen_SKX4xx, Tedsen_SKX6xx, TR_502MSV, Unitec_47031, unknown).
            Bei Änderung des Attributes wird ein neues Gerät mittels autocreate erzeugt. Autocreate muss dazu aktiviert sein.
          • repeats
            @@ -3003,7 +3044,7 @@ sub SD_UT_tristate2bin { Generierte Readings der Modelle
              - AC114-01, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, HSM4, KL_RF01, LED_XM21_0, Meikee_xx, Momento, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SF01_01319004, SF01_01319004_Typ2, TR401, TR_502MSV, Visivo + AC114-01, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, HA_HX2, HSM4, KL_RF01, LED_XM21_0, Meikee_xx, Momento, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SF01_01319004, SF01_01319004_Typ2, TR401, TR_502MSV, Visivo
              • deviceCode: GeräteCode des Systemes
              • LastAction: Zuletzt ausgeführte Aktion des Gerätes (receive für Kommando empfangen, send für Kommando gesendet).
              • @@ -3075,6 +3116,7 @@ sub SD_UT_tristate2bin { } } }, + "version": "v1.0.2", "release_status": "stable", "resources": { "bugtracker": { diff --git a/FHEM/lib/SD_ProtocolData.pm b/FHEM/lib/SD_ProtocolData.pm index b206d2cc0..535e0e05d 100644 --- a/FHEM/lib/SD_ProtocolData.pm +++ b/FHEM/lib/SD_ProtocolData.pm @@ -85,7 +85,7 @@ package lib::SD_ProtocolData; use strict; use warnings; - our $VERSION = '1.54'; + our $VERSION = '1.55'; our %protocols = ( "0" => ## various weather sensors (500 | 9100) # Mebus | Id:237 Ch:1 T: 1.9 Bat:low MS;P0=-9298;P1=495;P2=-1980;P3=-4239;D=1012121312131313121313121312121212121212131212131312131212;CP=1;SP=0;R=223;O;m2; @@ -3469,7 +3469,38 @@ package lib::SD_ProtocolData; length_min => '24', length_max => '24', }, - + #"131" => ## reserved for elektron-bbs + "132" => ## Remote control Halemeier HA-HX2 for Actor HA-RX-M2-1 + # https://github.com/RFD-FHEM/RFFHEM/issues/1207 @ HomeAuto_User 2023-12-11 + # https://forum.fhem.de/index.php?topic=38452.0 (probably identical) + # remote 1 - off | P132#85EFAC + # MU;P0=304;P1=-351;P2=633;P3=-692;P4=-12757;D=01230303030301230123030121240301212121230123030303012303030303012124030121212123012303030301230303030301230123030121240301212121230123030303012303030303012301230301212403012121212301230303030123030303030123012303012124030121212123012303030301230303030301;CP=0;R=241;O; + # MU;P0=-12609;P1=305;P2=-696;P3=-344;P4=653;D=01213434343421342121212134212121212134213421213434012134343434213421212121342121212121342134212134340121343434342134212121213421212121213421342121343401213434343421342121212134212121212134213421213434012134343434213421212121342121212121342134212134340121;CP=1;R=239;O; + # remote 1 - on | P132#85EFAA + # MU;P0=-696;P1=312;P2=-371;P3=637;P4=-12847;D=01012301230123012341012323232301230101010123010101010123012301230123410123232323012301010101230101010101230123012301234101232323230123010101012301010101012301230123012341012323232301230101010123010101010123012301230123410123232323012301010101230101010101;CP=1;R=236;O; + # MU;P0=-701;P1=304;P2=-366;P3=642;P4=-12781;D=01012301230123012341012323232301230101010123010101010123012301230123410123232323012301010101230101010101230123012301234101232323230123010101012301010101012301230123012341012323232301230101010123010101010123012301230123410123232323012301010101230101010101;CP=1;R=238;O; + # remote 2 - on | P132#01EFAA + # MU;P0=-340;P1=639;P2=-686;P3=304;P4=-12480;D=01230123014301010101010101232323232301230123012301430101010101010123232323012323232323012301230123014301010101010101232323230123232323230123012301230143010101010101012323232301232323232301230123012301430101010101010123232323012323232323012301230123014301;CP=3;R=226;O; + # MU;P0=-120;P1=642;P2=-343;P3=-684;P4=319;P5=-12492;D=01212121343434342134343434342134213421342154212121212121213434343421343434343421342134213421542121212121212134343434213434343434213421342134215421212121212121343434342134343434342134213421342154212121212121213434343421343434343421342134213421542121212121;CP=4;R=227;O; + # remote 2 - off | P132#01EFAC + # MU;P0=622;P1=-367;P2=-690;P3=323;P4=-12531;D=01010101010101023232323102323232323102310232310101010102323232310232323232310231023231010431010101010101023232323102323232323102310232310104310101010101010232323231023232323231023102323101043101010101010102323232310232323232310231023231010431010101010101;CP=3;R=235;O; + # MU;P0=307;P1=-685;P2=-350;P3=658;P4=-12510;D=01010102310101010102310231010232340232323232323231010101023101010101023102323232323232323101010102310101010102310231010232340232323232323231010101023101010101023102310102323402323232323232310101010231010101010231023101023234023232323232323101010102310101;CP=0;R=232;O; + { + name => 'HA-HX2', + comment => 'Remote control for Halemeier LED actor HA-RX-M2-1', + id => '132', + knownFreqs => '433.92', + one => [-2,1], + zero => [-1,2], + start => [-39,1], + clockabs => 330, + format => 'twostate', + preamble => 'P132#', + clientmodule => 'SD_UT', + modulematch => '^P132#.*', + length_min => '24', + length_max => '24', + }, ######################################################################## #### ### register informations from other hardware protocols #### #### diff --git a/README.md b/README.md index fc151939b..27919e8f2 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ Supported Devices / Protocols |Grothe Mistral SE 03.1| wireless gong | |GT-9000| Remote control based on protocol GT-9000 with encoding (EASY HOME RCT DS1, Tec Star)| |GT-TMBBQ-01| BBQ temperature sensor| +|Halemeier| Remote controls for LED controller | |Hama TS33C, Hama TS34A, Hama TS36E, Bresser Thermo/Hygro Sensor | Weather sensor | |Heidemann, Heidemann HX, VTX-BELL | wireless bell | |Hoermann HSM2, HSM4, HS1-868-BS | Remote control | diff --git a/controls_signalduino.txt b/controls_signalduino.txt index ceaf007e0..2526a9831 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-12-15_21:44:52 239453 FHEM/00_SIGNALduino.pm +UPD 2023-12-19_18:55:25 239457 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -7,12 +7,12 @@ UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm -UPD 2023-11-04_11:01:03 195492 FHEM/14_SD_UT.pm +UPD 2023-12-19_18:52:35 198590 FHEM/14_SD_UT.pm UPD 2023-09-18_21:06:46 156089 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-11-04_11:01:03 247344 FHEM/lib/SD_ProtocolData.pm +UPD 2023-12-18_19:22:15 251034 FHEM/lib/SD_ProtocolData.pm UPD 2023-08-25_16:10:10 80775 FHEM/lib/SD_Protocols.pm diff --git a/t/FHEM/14_SD_UT/03_set.t b/t/FHEM/14_SD_UT/03_set.t index 1e885c09b..32ff32c9f 100644 --- a/t/FHEM/14_SD_UT/03_set.t +++ b/t/FHEM/14_SD_UT/03_set.t @@ -113,8 +113,16 @@ my $module = basename (dirname(__FILE__)); returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P128#100010100111111111111110#R5' }; etc() } } } , }, + { + targetName => q[SD_UT_Test_HA_HX2_85EF], + testname => q[set command on], + cmd => q[set on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P132#100001011110111110101010#R5' }; etc() } } } , + }, ); - + sub runTest { Test2::SIGNALduino::FHEM_Command::commandCheck($module); diff --git a/t/FHEM/14_SD_UT/fhem.cfg b/t/FHEM/14_SD_UT/fhem.cfg index bded6e98b..576e818dd 100644 --- a/t/FHEM/14_SD_UT/fhem.cfg +++ b/t/FHEM/14_SD_UT/fhem.cfg @@ -16,3 +16,6 @@ attr SD_UT_Test_RCnoName127_3603A model RCnoName127 define SD_UT_Test_RCnoName128_8A7F SD_UT RCnoName128 8A7F attr SD_UT_Test_RCnoName128_8A7F model RCnoName128 + +define SD_UT_Test_HA_HX2_85EF SD_UT HA_HX2 85EF +attr SD_UT_Test_HA_HX2_85EF model HA_HX2 diff --git a/t/FHEM/14_SD_UT/testData.json b/t/FHEM/14_SD_UT/testData.json index 18f3282ee..12d090de6 100644 --- a/t/FHEM/14_SD_UT/testData.json +++ b/t/FHEM/14_SD_UT/testData.json @@ -2417,5 +2417,54 @@ "id" : 130, "module" : "SD_UT", "name" : "CREATE_6601TL" + }, + { + "data" : [ + { + "comment" : "Remote control with two buttons for Halemeier LED controllers (typ HA-HX2 for actor HA-RX-M2-1)", + "dmsg" : "P132#01EFAC", + "internals" : { + "DEF" : "HA_HX2 01EF", + "NAME" : "HA_HX2_01EF" + }, + "readings" : { + "deviceCode" : "01EF", + "state" : "off" + }, + "rmsg" : "MU;P0=307;P1=-685;P2=-350;P3=658;P4=-12510;D=01010102310101010102310231010232340232323232323231010101023101010101023102323232323232323101010102310101010102310231010232340232323232323231010101023101010101023102310102323402323232323232310101010231010101010231023101023234023232323232323101010102310101;CP=0;R=232;O;", + "tests" : [ + { + "attributes" : { + "model" : "HA_HX2" + }, + "comment" : "#0 state off" + } + ] + }, + { + "comment" : "Remote control with two buttons for Halemeier LED controllers (typ HA-HX2 for actor HA-RX-M2-1)", + "dmsg" : "P132#85EFAA", + "internals" : { + "DEF" : "HA_HX2 85EF", + "NAME" : "HA_HX2_85EF" + }, + "readings" : { + "deviceCode" : "85EF", + "state" : "on" + }, + "rmsg" : "MU;P0=-696;P1=312;P2=-371;P3=637;P4=-12847;D=01012301230123012341012323232301230101010123010101010123012301230123410123232323012301010101230101010101230123012301234101232323230123010101012301010101012301230123012341012323232301230101010123010101010123012301230123410123232323012301010101230101010101;CP=1;R=236;O;", + "tests" : [ + { + "attributes" : { + "model" : "HA_HX2" + }, + "comment" : "#1 state on with other DEF" + } + ] + } + ], + "id" : 132, + "module" : "SD_UT", + "name" : "HA_HX2_01EF" } ] From 26c4bab720313a843ecaa928acfd35080c9baa73 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 20 Dec 2023 08:17:55 +0000 Subject: [PATCH 51/76] Automatic updated controls and CHANGED --- CHANGED | 14 ++++++++++++++ controls_signalduino.txt | 6 +++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGED b/CHANGED index 94ae85d37..94a3c09c5 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,17 @@ +2023-12-20 - new def | remote ha-hx2 (#1212) + +* Update SD_ProtocolData.pm + +* Update 14_SD_UT.pm +- new device HA-HX2 + +* Update testData.json + +* Update 03_set.t + +* Update fhem.cfg + +* Update README.md 2023-12-15 - create client list based on whitelistIDs attribute (#1205) * perf [clientlist]: Keep order and skip sorting diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 2526a9831..c8baebc1e 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-12-19_18:55:25 239457 FHEM/00_SIGNALduino.pm +UPD 2023-12-20_09:17:17 239457 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -7,12 +7,12 @@ UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm -UPD 2023-12-19_18:52:35 198590 FHEM/14_SD_UT.pm +UPD 2023-12-20_09:17:17 198590 FHEM/14_SD_UT.pm UPD 2023-09-18_21:06:46 156089 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-12-18_19:22:15 251034 FHEM/lib/SD_ProtocolData.pm +UPD 2023-12-20_09:17:17 251034 FHEM/lib/SD_ProtocolData.pm UPD 2023-08-25_16:10:10 80775 FHEM/lib/SD_Protocols.pm From 2a5ebf56f1914e9ba733ee8495ffcc8deb324ef2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 23:14:14 +0100 Subject: [PATCH 52/76] Bump actions/github-script from 6 to 7 (#1202) Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: sidey79 <7968127+sidey79@users.noreply.github.com> --- .github/workflows/update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 22b914051..a64e78b41 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -19,7 +19,7 @@ jobs: - name: Check if Branch is in PR if: github.event_name == 'push' id: checkbranch - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | console.log(process.env.BRANCH_NAME) From 70c9596a47964f99f6cfe388ebc15c1a00199903 Mon Sep 17 00:00:00 2001 From: HomeAutoUser Date: Fri, 22 Dec 2023 11:03:17 +0100 Subject: [PATCH 53/76] Update tests | for the functional reliability of the module SD_UT (#1214) * added data for Tedsen_SKX1xx * added sendtest AC114_01B * added sendtest BF_301 * added sendtest BeSmart_S4 * added sendtest Buttons_five * added sendtest CAME_TOP_432EV * added sendtest Chilitec_22640 * added sendtest DC_1961_TG * added sendtest HS1_868_BS * added sendtest HSM4 * added sendtest KL_RF01 * added sendtest Krinner_LUMIX * added sendtest LED_XM21_0 * added sendtest Meikee_24 * added sendtest Momento * added sendtest Navaris * added sendtest Novy_840029 + Novy_840039 * added sendtest QUIGG_DMV * added sendtest RC_10 * added sendtest RC_10 variant two * added sendtest RH787T * added sendtest SA_434_1_mini * added sendtest SF01_01319004 + SF01_01319004_Typ2 * added sendtest TR401 * added sendtest TR60C1 * added sendtest TR60C1 variant length cmd < 10 * added sendtest TR_502MSV * added sendtest Techmar * added sendtest Tedsen_SKX1xx,Tedsen_SKX2xx,Tedsen_SKX6xx * added sendtest Visivo * added sendtest with attr UTfrequency * added sendtest xavax * added some checksum tests * added some define tests --- t/FHEM/14_SD_UT/01_define.t | 72 +++++++ t/FHEM/14_SD_UT/03_set.t | 379 ++++++++++++++++++++++++++++++---- t/FHEM/14_SD_UT/fhem.cfg | 105 ++++++++++ t/FHEM/14_SD_UT/testData.json | 124 ++++++++++- 4 files changed, 634 insertions(+), 46 deletions(-) create mode 100644 t/FHEM/14_SD_UT/01_define.t diff --git a/t/FHEM/14_SD_UT/01_define.t b/t/FHEM/14_SD_UT/01_define.t new file mode 100644 index 000000000..8a364aeeb --- /dev/null +++ b/t/FHEM/14_SD_UT/01_define.t @@ -0,0 +1,72 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test2::V0; +use Test2::Tools::Compare qw{is}; + +our %defs; + +InternalTimer(time()+1, sub { + my $ioName = shift; + my $ioHash = $defs{$ioName}; + + + subtest 'SD_UT - define unknown_please_select_model SD_UT unknown' => sub { + plan(1); + + my $sensorname=q[unknown_please_select_model]; + my $model=q[unknown]; + CommandDefine(undef,qq[$sensorname SD_UT $model]); + is(IsDevice($sensorname), 1, "check device created with define"); + }; + + subtest 'SD_UT - delete unknown_please_select_model' => sub { + plan(1); + + my $sensorname=q[unknown_please_select_model]; + CommandDelete(undef,qq[$sensorname]); + is(IsDevice($sensorname), 0, "check device deleted"); + }; + + subtest 'SD_UT - wrong define unknown_please_select_model SD_UT unknown A1' => sub { + plan(1); + + my $sensorname=q[unknown_please_select_model]; + my $model=q[unknown]; + CommandDefine(undef,qq[$sensorname SD_UT $model A1]); + is(IsDevice($sensorname), 0, "check sensor not created with define"); + }; + + subtest 'SD_UT - model RH787T wrong HEX-Value one HEX-Value define RH787T_11 SD_UT RH787T 11' => sub { + plan(1); + + my $sensorname=q[RH787T_11]; + my $model=q[RH787T]; + CommandDefine(undef,qq[$sensorname SD_UT $model 11]); + is(IsDevice($sensorname), 0, "check device not created with define"); + }; + + subtest 'SD_UT - model RH787T wrong HEX-Value define RH787T_1 SD_UT RH787T G' => sub { + plan(1); + + my $sensorname=q[RH787T_1]; + my $model=q[RH787T]; + CommandDefine(undef,qq[$sensorname SD_UT $model G]); + is(IsDevice($sensorname), 0, "check device not created with define"); + }; + + subtest 'SD_UT - model OR28V wrong address define OR28V_1 SD_UT OR28V 17' => sub { + plan(1); + + my $sensorname=q[OR28V_1]; + my $model=q[OR28V]; + CommandDefine(undef,qq[$sensorname SD_UT $model 17]); + is(IsDevice($sensorname), 0, "check device not created with define"); + }; + + done_testing(); + exit(0); + +}, 'dummyDuino'); + +1; \ No newline at end of file diff --git a/t/FHEM/14_SD_UT/03_set.t b/t/FHEM/14_SD_UT/03_set.t index 32ff32c9f..3fd649a2b 100644 --- a/t/FHEM/14_SD_UT/03_set.t +++ b/t/FHEM/14_SD_UT/03_set.t @@ -24,49 +24,49 @@ my $module = basename (dirname(__FILE__)); mocking => sub { $mock->override ( IOWrite => sub { return @_ } ); } }, }, - { - targetName => q[SD_UT_Test_Buttons_six], # Name of the definition which is tested - testname => q[set command fan_off], # Name of our setcommand - cmd => q[set fan_off], # Command to execute for test + { + targetName => q[SD_UT_Test_Buttons_six], # Name of the definition which is tested + testname => q[set command fan_off], # Name of our setcommand + cmd => q[set fan_off], # Command to execute for test # Check for arguments given to mocked sub subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P29#111110111110#R5' }; etc() } } } , returnCheck => F(), # Check for false return from command #todo => 1, # Enable Todo block }, - { - targetName => q[SD_UT_Test_Buttons_six], - testname => q[set command 1_fan_low_speed], - cmd => q[set 1_fan_low_speed], + { + targetName => q[SD_UT_Test_Buttons_six], + testname => q[set command 1_fan_low_speed], + cmd => q[set 1_fan_low_speed], prep_commands => [ # Any FHEM custom command can be placed in here, which will be called before the test is run - 'attr $targetName repeats 4', + 'attr $targetName repeats 4', ], - - returnCheck => F(), + + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P29#011111111110#R4' }; etc() } } } , }, { - targetName => q[SD_UT_Test_RCnoName20_10], + targetName => q[SD_UT_Test_RCnoName20_10], testname => q[set ? ], - cmd => q[set ?], + cmd => q[set ?], returnCheck => check_set( !match qr/hex_length/, match qr/time_1h:noArg/, match qr/time_2h:noArg/, match qr/time_4h:noArg/, match qr/light_on:noArg/, match qr/light_off:noArg/, match qr/fan_low:noArg/, match qr/fan_mid:noArg/, match qr/fan_high:noArg/, match qr/fan_stop:noArg/, match qr/fan_natural:noArg/ ), subCheck => hash { end(); } , - }, - { - targetName => q[SD_UT_Test_RCnoName20_10], - testname => q[set command light_on], - cmd => q[set light_on], - - returnCheck => F(), + }, + { + targetName => q[SD_UT_Test_RCnoName20_10], + testname => q[set command light_on], + cmd => q[set light_on], + + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P20#00111110000000000001111000011001#R5' }; etc() } } } , }, { - targetName => q[SD_UT_Test_RCnoName20_10], + targetName => q[SD_UT_Test_RCnoName20_10], testname => q[set command fan_high with rollingcode overflow], - cmd => q[set fan_high], + cmd => q[set fan_high], - returnCheck => F(), + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P20#00111110000000000001010000000010#R5' }; etc() } } } , prep_commands => [ # Any FHEM custom command can be placed in here, which will be called before the test is run 'setreading $targetName rollingCode 15', @@ -74,27 +74,320 @@ my $module = basename (dirname(__FILE__)); hashCheck => hash { field READINGS => hash {field rollingCode => hash { field VAL => 0; etc(); }; etc(); }; etc(); }, }, { - targetName => q[SD_UT_Test_RCnoName20_10], + targetName => q[SD_UT_Test_RCnoName20_10], testname => q[set unsupported command: Protocol ], - cmd => q[set Protocol], + cmd => q[set Protocol], returnCheck => q[SD_UT_Test_RCnoName20_10 Unkown set command!], subCheck => hash { end(); } , - }, + }, { - targetName => q[SD_UT_Test_OR28V_1], + targetName => q[SD_UT_Test_OR28V_1], testname => q[set command volume_minus], - cmd => q[set volume_minus], + cmd => q[set volume_minus], - returnCheck => F(), + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P68#01011101100010000000#R5' }; etc() } } } , - }, + }, + { + targetName => q[SD_UT_Test_Chilitec_22640_AA80], + testname => q[set command power_on], + cmd => q[set power_on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P14#10101010100000001000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_DC_1961_TG_1846], + testname => q[set command light_on_off], + cmd => q[set light_on_off], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P20#00011000010001101010100000010010#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Visivo_7DF825], + testname => q[set command up], + cmd => q[set up], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P24#10011111011111011111100000100101000000101001110000010000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_xavax_DAAB], + testname => q[set command Ch1_on], + cmd => q[set Ch1_on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P26#11011010101010110010010101010100100001110P#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Buttons_five_E], + testname => q[set command fan_off], + cmd => q[set fan_off], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P29#111110111110#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_QUIGG_DMV_891], + testname => q[set command Ch1_on], + cmd => q[set Ch1_on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P34#10001001000111101110P#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_TR_502MSV_FFF], + testname => q[set command Ch1_on], + cmd => q[set Ch1_on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P34#11111111111111101110P#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Tedsen_SKX1xx_F1FF11F], + testname => q[set command Button_1], + cmd => q[set Button_1], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P46#101110101111101100#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Tedsen_SKX2xx_1F10110], + testname => q[set command Button_1], + cmd => q[set Button_1], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P46#111011001111001000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Tedsen_SKX6xx_1F10FF0], + testname => q[set command Button_6], + cmd => q[set Button_6], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P46#111011001010001011#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_AC114_01B_00587B], + testname => q[set command down], + cmd => q[set down], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P56#10100011000000000101100001111011000000010000000001000011000101111P#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_HS1_868_BS_F62A9C01C], + testname => q[set command send], + cmd => q[set send], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P69#00000000111101100010101010011100000000011100#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_HSM4_E6BE910], + testname => q[set command button_1], + cmd => q[set button_1], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P69#00000000111001101011111010010001000001111100#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_LED_XM21_0_FFFFFFFFFFFFFF], + testname => q[set command on], + cmd => q[set on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P76#1111111111111111111111111111111111111111111111111111111111111111#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_BeSmart_S4_534], + testname => q[set command light_toggle], + cmd => q[set light_toggle], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P78#01010011010010010000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_SA_434_1_mini_604], + testname => q[set command send], + cmd => q[set send], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P81#011000000100#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_RH787T_0], + testname => q[set command 1_fan_minimum_speed], + cmd => q[set 1_fan_minimum_speed], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P83#000001110111#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_CAME_TOP_432EV_EE], + testname => q[set command right_button], + cmd => q[set right_button], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P86#111011101101#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Novy_840029_55], + testname => q[set command speed_plus], + cmd => q[set speed_plus], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P86#010101010101#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Novy_840039_55], + testname => q[set command ambient_light_on], + cmd => q[set ambient_light_on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P86#010101010110111110#R5#C375' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_SF01_01319004_A150], + testname => q[set command plus], + cmd => q[set plus], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P86#101000010101001100#R5' }; etc() } } } , + }, { - targetName => q[SD_UT_Test_TC6861_3DC_1], + targetName => q[SD_UT_Test_SF01_01319004_Typ2_2638], + testname => q[set command delay], + cmd => q[set delay], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P86#001001100011100001#R5' }; etc() } } } , + }, + ### RC_10 | Special feature, Reading x_n5-8_on and x_n5-8_off must be present before sending can occur ### + { + targetName => q[SD_UT_Test_RC_10_7869_A], + testname => q[set command on with all readings], + cmd => q[set on], + + prep_commands => [ # Any FHEM custom command can be placed in here, which will be called before the test is run + 'setreading $targetName x_n4 0000', + 'setreading $targetName x_n5-8_on 1111001001010', + 'setreading $targetName x_n5-8_off 1110001001000', + ], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P90#0111100001101001000011110010010101#R5' }; etc() } } } , + }, + ### RC_10 | Special feature, Reading x_n5-8_on and x_n5-8_off must be present before sending can occur ### + { + targetName => q[SD_UT_Test_RC_10_7869_all], + testname => q[set command on without reading x_n5-8_off], + cmd => q[set on], + + returnCheck => q[ERROR! SD_UT_Test_RC_10_7869_all: To send, please push button on and off again on remote.], + subCheck => hash { end(); } , + }, + { + targetName => q[SD_UT_Test_Krinner_LUMIX_A06C360], testname => q[set command on], - cmd => q[set on], + cmd => q[set on], - returnCheck => F(), + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P92#10100000011011000011011000000001#R5' }; etc() } } } , + }, + ### UTfrequency example ### + { + targetName => q[SD_UT_Test_Krinner_LUMIX_A06C360_UTfrequency], + testname => q[set command on with attr UTfrequency], + cmd => q[set on], + + prep_commands => [ # Any FHEM custom command can be placed in here, which will be called before the test is run + 'attr $targetName UTfrequency 868', + ], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P92#10100000011011000011011000000001#R5#F216276' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_KL_RF01_16F6], + testname => q[set command light_color_cold_white], + cmd => q[set light_color_cold_white], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P93#000101101111011000010000111011110#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Techmar_7709F5DE], + testname => q[set command Group_5_on], + cmd => q[set Group_5_on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P95#01110111000010011111010111011110000100011110111000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Momento_0000064], + testname => q[set command play/pause], + cmd => q[set play/pause], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P97#0000000000000000000001100100001001001000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Navaris_211073], + testname => q[set command send], + cmd => q[set send], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P99#001000010001000001110011#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_TR60C1_0], + testname => q[set command light_off_fan_off], + cmd => q[set light_off_fan_off], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P104#0000111110000000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_TR60C1_0_2], + testname => q[set command length < 10], + cmd => q[set fan_4], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P104#0000011110000000#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_BF_301_FAD0], + testname => q[set command down], + cmd => q[set down], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P105#1111101011010000100010001000001110100011#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_TR401_0_2], + testname => q[set command off], + cmd => q[set off], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P114#101100011111#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_Meikee_24_20D3], + testname => q[set command on], + cmd => q[set on], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P118#001000001101001100000010#R5' }; etc() } } } , + }, + { + targetName => q[SD_UT_Test_TC6861_3DC_1], + testname => q[set command on], + cmd => q[set on], + + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P121#P001100111101110001111110#R5' }; etc() } } } , }, { @@ -102,7 +395,7 @@ my $module = basename (dirname(__FILE__)); testname => q[set command fan_1], cmd => q[set fan_1], - returnCheck => F(), + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P127#001101100000001110100000101111#R5' }; etc() } } } , }, { @@ -110,7 +403,7 @@ my $module = basename (dirname(__FILE__)); testname => q[set button_left], cmd => q[set button_left], - returnCheck => F(), + returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P128#100010100111111111111110#R5' }; etc() } } } , }, { @@ -120,24 +413,24 @@ my $module = basename (dirname(__FILE__)); returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P132#100001011110111110101010#R5' }; etc() } } } , - }, + } ); sub runTest { Test2::SIGNALduino::FHEM_Command::commandCheck($module); done_testing(); - exit(0); + exit(0); } sub waitDone { - if ($init_done) - { - runTest(@_); - } else { - InternalTimer(time()+0.2, &waitDone,@_); - } + if ($init_done) + { + runTest(@_); + } else { + InternalTimer(time()+0.2, &waitDone,@_); + } } diff --git a/t/FHEM/14_SD_UT/fhem.cfg b/t/FHEM/14_SD_UT/fhem.cfg index 576e818dd..3f4f6192e 100644 --- a/t/FHEM/14_SD_UT/fhem.cfg +++ b/t/FHEM/14_SD_UT/fhem.cfg @@ -9,6 +9,111 @@ define SD_UT_Test_RCnoName20_10 SD_UT RCnoName20_10 3E00 define SD_UT_Test_OR28V_1 SD_UT OR28V 1 attr SD_UT_Test_OR28V_1 model OR28V +define SD_UT_Test_Chilitec_22640_AA80 SD_UT Chilitec_22640 AA80 +attr SD_UT_Test_Chilitec_22640_AA80 model Chilitec_22640 + +define SD_UT_Test_DC_1961_TG_1846 SD_UT DC_1961_TG 1846 +attr SD_UT_Test_DC_1961_TG_1846 model DC_1961_TG + +define SD_UT_Test_Visivo_7DF825 SD_UT Visivo 7DF825 +attr SD_UT_Test_Visivo_7DF825 model Visivo + +define SD_UT_Test_xavax_DAAB SD_UT xavax DAAB +attr SD_UT_Test_xavax_DAAB model xavax + +define SD_UT_Test_Buttons_five_E SD_UT Buttons_five E +attr SD_UT_Test_Buttons_five_E model Buttons_five + +define SD_UT_Test_QUIGG_DMV_891 SD_UT QUIGG_DMV 891 +attr SD_UT_Test_QUIGG_DMV_891 model QUIGG_DMV + +define SD_UT_Test_TR_502MSV_FFF SD_UT TR_502MSV FFF +attr SD_UT_Test_TR_502MSV_FFF model TR_502MSV + +define SD_UT_Test_Tedsen_SKX1xx_F1FF11F SD_UT Tedsen_SKX1xx F1FF11F +attr SD_UT_Test_Tedsen_SKX1xx_F1FF11F model Tedsen_SKX1xx + +define SD_UT_Test_Tedsen_SKX2xx_1F10110 SD_UT Tedsen_SKX2xx 1F10110 +attr SD_UT_Test_Tedsen_SKX2xx_1F10110 model Tedsen_SKX2xx + +define SD_UT_Test_Tedsen_SKX6xx_1F10FF0 SD_UT Tedsen_SKX6xx 1F10FF0 +attr SD_UT_Test_Tedsen_SKX6xx_1F10FF0 model Tedsen_SKX6xx + +define SD_UT_Test_AC114_01B_00587B SD_UT AC114_01B 00587B +attr SD_UT_Test_AC114_01B_00587B model AC114_01B + +define SD_UT_Test_HS1_868_BS_F62A9C01C SD_UT HS1_868_BS F62A9C01C +attr SD_UT_Test_HS1_868_BS_F62A9C01C model HS1_868_BS + +define SD_UT_Test_HSM4_E6BE910 SD_UT HSM4 E6BE910 +attr SD_UT_Test_HSM4_E6BE910 model HSM4 + +define SD_UT_Test_LED_XM21_0_FFFFFFFFFFFFFF SD_UT LED_XM21_0 FFFFFFFFFFFFFF +attr SD_UT_Test_LED_XM21_0_FFFFFFFFFFFFFF model LED_XM21_0 + +define SD_UT_Test_BeSmart_S4_534 SD_UT BeSmart_S4 534 +attr SD_UT_Test_BeSmart_S4_534 model BeSmart_S4 + +define SD_UT_Test_SA_434_1_mini_604 SD_UT SA_434_1_mini 604 +attr SD_UT_Test_SA_434_1_mini_604 model SA_434_1_mini + +define SD_UT_Test_RH787T_0 SD_UT RH787T 0 +attr SD_UT_Test_RH787T_0 model RH787T + +define SD_UT_Test_CAME_TOP_432EV_EE SD_UT CAME_TOP_432EV EE +attr SD_UT_Test_CAME_TOP_432EV_EE model CAME_TOP_432EV + +define SD_UT_Test_Novy_840029_55 SD_UT Novy_840029 55 +attr SD_UT_Test_Novy_840029_55 model Novy_840029 + +define SD_UT_Test_Novy_840039_55 SD_UT Novy_840039 55 +attr SD_UT_Test_Novy_840039_55 model Novy_840039 + +define SD_UT_Test_SF01_01319004_A150 SD_UT SF01_01319004 A150 +attr SD_UT_Test_SF01_01319004_A150 model SF01_01319004 + +define SD_UT_Test_SF01_01319004_Typ2_2638 SD_UT SF01_01319004_Typ2 2638 +attr SD_UT_Test_SF01_01319004_Typ2_2638 model SF01_01319004_Typ2 + +define SD_UT_Test_RC_10_7869_A SD_UT RC_10 7869_A +attr SD_UT_Test_RC_10_7869_A model RC_10 + +define SD_UT_Test_RC_10_7869_all SD_UT RC_10 7869_all +attr SD_UT_Test_RC_10_7869_all model RC_10 + +define SD_UT_Test_Krinner_LUMIX_A06C360 SD_UT Krinner_LUMIX A06C360 +attr SD_UT_Test_Krinner_LUMIX_A06C360 model Krinner_LUMIX + +define SD_UT_Test_Krinner_LUMIX_A06C360_UTfrequency SD_UT Krinner_LUMIX A06C360 +attr SD_UT_Test_Krinner_LUMIX_A06C360_UTfrequency model Krinner_LUMIX + +define SD_UT_Test_KL_RF01_16F6 SD_UT KL_RF01 16F6 +attr SD_UT_Test_KL_RF01_16F6 model KL_RF01 + +define SD_UT_Test_Techmar_7709F5DE SD_UT Techmar 7709F5DE +attr SD_UT_Test_Techmar_7709F5DE model Techmar + +define SD_UT_Test_Momento_0000064 SD_UT Momento 0000064 +attr SD_UT_Test_Momento_0000064 model Momento + +define SD_UT_Test_Navaris_211073 SD_UT Navaris 211073 +attr SD_UT_Test_Navaris_211073 model Navaris + +define SD_UT_Test_TR60C1_0 SD_UT TR60C1 0 +attr SD_UT_Test_TR60C1_0 model TR60C1 + +define SD_UT_Test_TR60C1_0_2 SD_UT TR60C1 0 +attr SD_UT_Test_TR60C1_0_2 model TR60C1 + +define SD_UT_Test_BF_301_FAD0 SD_UT BF_301 FAD0 +attr SD_UT_Test_BF_301_FAD0 model BF_301 + +define SD_UT_Test_TR401_0_2 SD_UT TR401 0_2 +attr SD_UT_Test_TR401_0_2 model TR401 + +define SD_UT_Test_Meikee_24_20D3 SD_UT Meikee_24 20D3 +attr SD_UT_Test_Meikee_24_20D3 model Meikee_24 + define SD_UT_Test_TC6861_3DC_1 SD_UT TC6861 3DC_1 define SD_UT_Test_RCnoName127_3603A SD_UT RCnoName127 3603A diff --git a/t/FHEM/14_SD_UT/testData.json b/t/FHEM/14_SD_UT/testData.json index 12d090de6..ead55ce08 100644 --- a/t/FHEM/14_SD_UT/testData.json +++ b/t/FHEM/14_SD_UT/testData.json @@ -237,6 +237,18 @@ "comment" : "#1" } ] + }, + { + "comment" : "Remote control for motorized screen, wrong checksum", + "dmsg" : "P24#9F7DF82508C210", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#2" + } + ] } ], "id" : "24", @@ -289,7 +301,31 @@ "comment" : "#1" } ] - } + }, + { + "comment" : "model 00111939 - check nibble 0-3 and nibble 5-8", + "dmsg" : "P26#DABB255478", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#2" + } + ] + }, + { + "comment" : "model 00111939 - check nibble 8 and nibble 9", + "dmsg" : "P26#DAAB255468", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#3" + } + ] + } ], "id" : "26", "module" : "SD_UT", @@ -497,6 +533,28 @@ }, { "data" : [ + { + "comment" : "Tedsen remote with one button, model SKX1MD", + "dmsg" : "P46#BAFB0", + "internals" : { + "DEF" : "Tedsen_SKX1xx F1FF11F", + "NAME" : "Tedsen_SKX1xx_F1FF11F" + }, + "readings" : { + "LastAction" : "receive", + "state" : "Button_1", + "tristateCode" : "F1FF11F10" + }, + "rmsg" : "MU;P0=-15829;P1=-3580;P2=1962;P3=-330;P4=245;P5=-2051;D=1234523232345234523232323234523234540023452323234523452323232323452323454023452323234523452323232323452323454023452323234523452323232323452323454023452323234523452323232323452323454023452323234523452323;CP=2;", + "tests" : [ + { + "attributes" : { + "model" : "Tedsen_SKX1xx" + }, + "comment" : "#0" + } + ] + }, { "comment" : "Geiger Rolladen", "dispatch_repeats" : "1", @@ -571,6 +629,18 @@ "comment" : "#0" } ] + }, + { + "comment" : "Celexon Motorleinwand with wrong checksum", + "dmsg" : "P56#A300587B810043178", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#1" + } + ] } ], "id" : "56", @@ -695,7 +765,19 @@ "comment" : "#2" } ] - } + }, + { + "comment" : "Vista Remote Control wrong checksum", + "dmsg" : "P68#57823", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#3" + } + ] + } ], "id" : "68", "module" : "SD_UT", @@ -1760,6 +1842,18 @@ "comment" : "#2" } ] + }, + { + "comment" : "Garden Lights remote control with wrong checksum", + "dmsg" : "P95#7709F5DE09160", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#3" + } + ] } ], "id" : "95", @@ -1834,7 +1928,19 @@ "comment" : "#2" } ] - } + }, + { + "comment" : "remote control for wireless digital picture frame with wrong checksum", + "dmsg" : "P97#000006443A", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#3" + } + ] + } ], "id" : "97", "module" : "SD_UT", @@ -2015,6 +2121,18 @@ "comment" : "#2" } ] + }, + { + "comment" : "Remote control wrong checksum", + "dmsg" : "P105#FAD08384A8", + "tests" : [ + { + "returns" : { + "ParseFn" : "" + }, + "comment" : "#3" + } + ] } ], "id" : "105", From bbf9b7cb1718c428c9be572772abdedb2372f019 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 18:37:15 +0100 Subject: [PATCH 54/76] Bump lewagon/wait-on-check-action from 1.3.1 to 1.3.3 (#1216) Bumps [lewagon/wait-on-check-action](https://github.com/lewagon/wait-on-check-action) from 1.3.1 to 1.3.3. - [Release notes](https://github.com/lewagon/wait-on-check-action/releases) - [Commits](https://github.com/lewagon/wait-on-check-action/compare/v1.3.1...v1.3.3) --- updated-dependencies: - dependency-name: lewagon/wait-on-check-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 3ae4104aa..57a381bdf 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -169,7 +169,7 @@ jobs: - name: Wait for tests to succeed if: ${{ steps.commit.outputs.status }} - uses: lewagon/wait-on-check-action@v1.3.1 + uses: lewagon/wait-on-check-action@v1.3.3 with: running-workflow-name: 'Commit and Push back' ref: ${{ github.head_ref }} From 1762fb28d352e7de9c282ef4f52fd9c0803ee19c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 18:37:38 +0100 Subject: [PATCH 55/76] Bump shogo82148/actions-setup-perl from 1.25.0 to 1.26.0 (#1215) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index 719784b21..3222e9208 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: shogo82148/actions-setup-perl@v1.25.0 + - uses: shogo82148/actions-setup-perl@v1.26.0 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 79dda6749..7c88ae81c 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: shogo82148/actions-setup-perl@v1.25.0 + - uses: shogo82148/actions-setup-perl@v1.26.0 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From 4c9b8be796741ec0d268944a28b9f546812bfc90 Mon Sep 17 00:00:00 2001 From: Udo Date: Sun, 31 Dec 2023 15:15:49 +0100 Subject: [PATCH 56/76] new sensor BRESSER PM2.5/10 air quality meter (#1219) * Bresser PM2.5/10 air quality meter new sensor BRESSER PM2.5/10 air quality meter, protocol 117 * Update SD_Protocols.pm * Update SD_Protocols.pm * Update testData.json * Update README.md * Update SD_ProtocolData.pm --- FHEM/00_SIGNALduino.pm | 11 ++- FHEM/14_SD_WS.pm | 149 +++++++++++++++++++++++++++------- FHEM/lib/SD_ProtocolData.pm | 15 ++-- FHEM/lib/SD_Protocols.pm | 6 +- README.md | 3 +- controls_signalduino.txt | 8 +- t/FHEM/14_SD_WS/testData.json | 55 +++++++++++++ 7 files changed, 199 insertions(+), 48 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 963a77322..b2655c1b4 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -4823,10 +4823,12 @@ USB-connected devices (SIGNALduino):
                  Example: BRESSER 5-in-1 weather center, BRESSER rain gauge, Fody E42, Fody E43
              • Bresser_6in1
                - modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, FIFO-THR=20 Byte, frequency 868.3 MHz + Modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, Packet Length=18 Byte, frequency 868.3 MHz
              • Bresser_7in1
                - modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, Packet Length=22 Byte, frequency 868.3 MHz + Modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, Packet Length=23 Byte, frequency 868.3 MHz +
                  Example: BRESSER 7-in-1 outdoor sensor, BRESSER PM2.5/10 air quality meter
                +
              • Fine_Offset_WH51_434
                Modulation 2-FSK, Datarate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequency 433.92 MHz @@ -5417,10 +5419,11 @@ USB-connected devices (SIGNALduino):
                  Beispiel: BRESSER 5-in-1 Wetter Center, BRESSER Profi Regenmesser, Fody E42, Fody E43
              • Bresser_6in1
                - Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, FIFO-THR=20 Byte, Frequenz 868.3 MHz + Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=18 Byte, Frequenz 868.3 MHz
              • Bresser_7in1
                - Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=22 Byte, Frequenz 868.3 MHz + Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=23 Byte, Frequenz 868.3 MHz +
                  Beispiel: BRESSER 7-in-1 Außensensor, BRESSER PM2.5/10 Luftqualitätssensor
              • Fine_Offset_WH51_434
                Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 433.92 MHz diff --git a/FHEM/14_SD_WS.pm b/FHEM/14_SD_WS.pm index 13e119174..d38169e87 100644 --- a/FHEM/14_SD_WS.pm +++ b/FHEM/14_SD_WS.pm @@ -1,4 +1,4 @@ -# $Id: 14_SD_WS.pm 26982 2023-09-11 16:54:55Z elektron-bbs $ +# $Id: 14_SD_WS.pm 26982 2023-12-29 20:00:00Z elektron-bbs $ # # The purpose of this module is to support serval # weather sensors which use various protocol @@ -52,6 +52,7 @@ # 01.04.2023 Added protocol 125: ecowitt WH31 support # 06.05.2023 Added protocol 126: ecowitt WH40 support # 21.08.2023 neues Protokoll 129: Sainlogic weather station FT-0835 +# 25.11.2023 Protokoll 117: neuer Sensor BRESSER Air Quality Sensor Art.No.: 7009970, Hersteller CCL Electronics LTD Model C3123A package main; @@ -128,6 +129,9 @@ sub SD_WS_Define { carp "SD_WS_Define, too few arguments ($hash, $def)" if @_ < 2; my @a = split("[ \t][ \t]*", $def); + # Anzeigen der Modulversion (Internal FVERSION) über FHEM::Meta, Variable in META.json Abschnitt erforderlich: "version": "v1.0.0", siehe https://wiki.fhem.de/wiki/Meta + return $@ unless ( FHEM::Meta::SetInternals($hash) ); + return "wrong syntax: define SD_WS ".int(@a) if(int(@a) < 3 ); $hash->{CODE} = $a[2]; @@ -209,6 +213,7 @@ sub SD_WS_Parse { my $bitData = unpack("B$blen", pack("H$hlen", $rawData)); my $bitData2; my $model; # wenn im elsif Abschnitt definiert, dann wird der Sensor per AutoCreate angelegt + my $modelStat; # for FHEM statistics https://fhem.de/stats/statistics.html my $SensorTyp; my $id; my $bat; @@ -245,6 +250,8 @@ sub SD_WS_Parse { my $identified; my $transmitter; my $dcf; + my $pm2_5; # particulate matter <= 2.5 µm + my $pm10; # particulate matter <= 10 µm my %decodingSubs = ( 50 => # Protocol 50 @@ -1248,60 +1255,122 @@ sub SD_WS_Parse { return 1; } } , - 117 => { # https://github.com/merbanan/rtl_433/blob/master/src/devices/bresser_7in1.c # The compact 7-in-1 multifunction outdoor sensor transmits the data on 868.3 MHz. # The device uses FSK-PCM encoding, the device sends a transmission every 12 seconds. # A transmission starts with a preamble of 0xAA. # Preamble: aa aa aa aa aa 2d d4 - # # 1 2 3 4 # 01234567890123456789012345678901234567890123456789 # -------------------------------------------------- - # 0CF0A6F5B98A10AAAAAAAAAAAAAABABC3EAABBFCAAAAAAAAAA000000 original message - # A65A0C5F1320BA000000000000001016940011560000000000AAAAAA message after all nibbles xor 0xA - # CCCCIIIIDDD??FGGGWWWRRRRRR??TTTBHHbbbbbbVVVttttttt - # C = LFSR-16 digest, generator 0x8810 key 0xba95 with a final xor 0x6df1, which likely means we got that wrong. + # EF0AE6AB8FEA18A89A8BABAACAAAB2CCCFAF3C33AF2AAAAAAA original message + # 45A04C012540B2023021010060001866650596990580000000 message after all nibbles xor 0xA + # CCCCIIIIDDD?SFGGGWWWRRRRRR??TTTBHHbbbbbbVVVttttttt + # C = LFSR-16 digest, generator 0x8810 key 0xba95 with a final xor 0x6df1 # I = station ID - # D = wind direction in degree, BCD coded, DDD = 158 => 158 ° + # D = wind direction in degree, BCD coded, DDD = 254 => 254 ° + # S = sensor type, xor 0xA, 1 = 7-in-1 outdoor sensor, 8 = Air quality sensor # F = flags, 4 bit # Bit: 0123 - # 1010 - # r??? + # 1010 xor 0xA = 0000 + # rccc # r: 1 bit device reset, 1 after inserting battery - # ???: always 010 - # G = wind gust in 1/10 m/s, BCD coded, GGG = 123 => 12.3 m/s. - # W = wind speed in 1/10 m/s, BCD coded, WWW = 123 => 12.3 m/s. - # R = rain counter, in 0.1 mm, BCD coded RRRRRR = 000084 => 8.4 mm - # T = temperature in 1/10 °C, BCD coded, TTT = 312 => 31.2 °C + # c: 3 bit channel always 0 by outdoor sensor, 1-4 by air quality sensor + # G = wind gust in 1/10 m/s, BCD coded, GGG = 023 => 2.3 m/s. + # W = wind speed in 1/10 m/s, BCD coded, WWW = 021 => 2.1 m/s. + # R = rain counter, in 0.1 mm, BCD coded RRRRRR = 010060 => 1006.0 mm + # T = temperature in 1/10 °C, BCD coded, TTT = 186 => 18.6 °C # B = battery. 0=Ok, 6=Low - # H = humidity in percent, BCD coded, HH = 23 => 23 % - # b = brightness, BCD coded, BBBBBB = 005584 => 5.584 klx - # V = uv, BCD coded, VVV = 012 => 1.2 + # H = humidity in percent, BCD coded, HH = 65 => 65 % + # b = brightness, BCD coded, BBBBBB = 059699 => 59.699 klx + # V = uv, BCD coded, VVV = 058 => 5.8 # ? = unknown # t = trailer + # + # BRESSER Air Quality Sensor Art.No.: 7009970, Manufacturer CCL Electronics LTD Model C3123A + # The sensor transmits approximately every 60 seconds. + # 1 2 3 4 + # 01234567890123456789012345678901234567890123456789 + # -------------------------------------------------- + # EF596068B83A89B9AA9BDA9EBA9EDA33333333333392DAAAAA original message + # 45F3CAC2129023130031703410347099999999999938700000 message after all nibbles xor 0xA, PM2.5: 341 PM10: 347 + # CCCCIIII????SF????????222?111?????????????BBBttttt + # 2 = PM2.5 particlae matter in µg/m³, BCD coded, 341 => 341 µg/m³ + # 1 = PM10 particlae matter in µg/m³, BCD coded, 347 => 347 µg/m³ + # B = battery voltage in 1/100 Volt, BCD coded, 387 => 3,87 Volt + # All others as in 7-in-1 multifunction outdoor sensor sensortype => 'Bresser_7in1', model => 'SD_WS_117', - prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{8}[0-9]{3}[0-9A-F]{3}[0-9]{12}[0-9A-F]{2}[0-9]{15}/); }, + prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{8}[0-9]{3}[0-9A-F]{3}[0-9]{12}[0-9A-F]{2}[0-9]{16}/); }, id => sub {my ($rawData,undef) = @_; return substr($rawData,4,4); }, winddir => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only weather station $winddir = substr($rawData,8,3); return ($winddir * 1, $winddirtxtar[FHEM::Core::Utils::Math::round(($winddir / 22.5),0)]); }, + modelStat => sub {my ($rawData,undef) = @_; + my $typ = hex(substr($rawData,12,1)) ^ 0xA; # sensor type + if ($typ eq '1') { + $typ = 'Bresser 7-in-1 outdoor sensor'; + } elsif ($typ eq '8') { + $typ = 'Bresser PM2.5/10 air quality meter'; + } else { + $typ = 'SD_WS_117'; + } + return $typ; + }, batChange => sub {my (undef,$bitData) = @_; return substr($bitData,52,1) eq '0' ? '1' : '0';}, - windgust => sub {my ($rawData,undef) = @_; return substr($rawData,14,3) * 0.1;}, - windspeed => sub {my ($rawData,undef) = @_; return substr($rawData,17,3) * 0.1;}, - rain => sub {my ($rawData,undef) = @_; return substr($rawData,20,6) * 0.1;}, + channel => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) eq 'B'); # not by weather station + return ((hex(substr($rawData,13,1)) ^ 0xA) & 0x07); # channel + }, + windgust => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,14,3) * 0.1; + }, + windspeed => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,17,3) * 0.1; + }, + rain => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,20,6) * 0.1; + }, + pm_2_5 => sub {my ($rawData,undef) = @_; # particulate matter <= 2.5 µm + return if (substr($rawData,12,1) eq 'B'); # not by Bresser_7in1 outdoor sensor + return substr($rawData,22,3) * 1; + }, + pm_10 => sub {my ($rawData,undef) = @_; # particulate matter <= 10 µm + return if (substr($rawData,12,1) eq 'B'); # not by Bresser_7in1 outdoor sensor + return substr($rawData,26,3) * 1; + }, temp => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor $rawTemp = substr($rawData,28,3) * 0.1; if ($rawTemp > 60) {$rawTemp -= 100}; - return $rawTemp; + return FHEM::Core::Utils::Math::round($rawTemp,1); + }, + bat => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,31,1) eq '0' ? 'ok' : 'low'; + }, + hum => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,32,2) * 1; + }, + brightness => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,34,6) * 0.001; + }, + uv => sub {my ($rawData,undef) = @_; + return if (substr($rawData,12,1) ne 'B'); # only Bresser_7in1 outdoor sensor + return substr($rawData,40,3) * 0.1; + }, + batVoltage => sub { my ($rawData,undef) = @_; + return if (substr($rawData,12,1) eq 'B'); # not by Bresser_7in1 outdoor sensor + return substr($rawData,42,3) * 0.01; }, - bat => sub {my ($rawData,undef) = @_; return substr($rawData,31,1) eq '0' ? 'ok' : 'low';}, - hum => sub {my ($rawData,undef) = @_; return substr($rawData,32,2) * 1;}, - brightness => sub {my ($rawData,undef) = @_; return substr($rawData,34,6) * 0.001;}, - uv => sub {my ($rawData,undef) = @_; return substr($rawData,40,3) * 0.1;}, crcok => sub {return 1;}, # checks are in SD_Protocols.pm sub ConvBresser_7in1 }, 120 => { @@ -1963,6 +2032,7 @@ sub SD_WS_Parse { $windgust = $decodingSubs{$protocol}{windgust}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{windgust})); $channel = $decodingSubs{$protocol}{channel}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{channel})); $model = $decodingSubs{$protocol}{model}; + $modelStat = $decodingSubs{$protocol}{modelStat}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{modelStat})); $bat = $decodingSubs{$protocol}{bat}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{bat})); $batVoltage = $decodingSubs{$protocol}{batVoltage}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{batVoltage})); $batChange = $decodingSubs{$protocol}{batChange}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{batChange})); @@ -1985,6 +2055,8 @@ sub SD_WS_Parse { $brightness = $decodingSubs{$protocol}{brightness}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{brightness})); $transmitter = $decodingSubs{$protocol}{transmitter}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{transmitter})); $dcf = $decodingSubs{$protocol}{dcf}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{dcf})); + $pm2_5 = $decodingSubs{$protocol}{pm_2_5}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{pm_2_5})); + $pm10 = $decodingSubs{$protocol}{pm_10}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{pm_10})); Log3 $iohash, 4, "$name: SD_WS_Parse decoded protocol-id $protocol ($SensorTyp), sensor-id $id"; } else { @@ -2143,7 +2215,14 @@ sub SD_WS_Parse { $state .= ' ' if (length($state) > 0); $state .= "B: $brightness"; } - + if (defined($pm2_5)) { + $state .= ' ' if (length($state) > 0); + $state .= "PM2.5: $pm2_5"; + } + if (defined($pm10)) { + $state .= ' ' if (length($state) > 0); + $state .= "PM10: $pm10"; + } ### protocol 33 has different bits per sensor type if ($protocol eq "33") { if (AttrVal($name,'model',0) eq "S522") { # Conrad S522 @@ -2168,6 +2247,11 @@ sub SD_WS_Parse { } } + if (AttrVal($name,'model','0') eq '0' && !defined($modelStat)) { + $modelStat = $model; + Log3 $name, 4, "$ioname: SD_WS_Parse $name, model=$model, modelStat=$modelStat, SensorTyp=$SensorTyp"; + } + readingsBeginUpdate($hash); readingsBulkUpdate($hash, "state", $state); readingsBulkUpdate($hash, "temperature", $temp) if (defined($temp) && (($temp > -60 && $temp < 70 ) || $protocol eq '106' || $protocol eq '113' || $protocol eq '122')); @@ -2189,6 +2273,7 @@ sub SD_WS_Parse { readingsBulkUpdate($hash, "humidityTrend", $trendHum) if (defined($trendHum) && length($trendHum) > 0); readingsBulkUpdate($hash, "sendmode", $sendmode) if (defined($sendmode) && length($sendmode) > 0); readingsBulkUpdateIfChanged($hash, "type", $SensorTyp, 0) if (defined($SensorTyp)); + readingsBulkUpdate($hash, 'model', $modelStat, 0) if (defined($modelStat)); readingsBulkUpdate($hash, "beep", $beep) if (defined($beep)); readingsBulkUpdate($hash, "adc", $adc) if (defined($adc)); readingsBulkUpdate($hash, 'rain', $rain) if (defined($rain)); @@ -2202,6 +2287,8 @@ sub SD_WS_Parse { readingsBulkUpdate($hash, 'brightness', $brightness) if (defined($brightness)); readingsBulkUpdateIfChanged($hash, 'transmitter', $transmitter) if (defined($transmitter)); readingsBulkUpdate($hash, 'dcf', $dcf) if (defined($dcf)); + readingsBulkUpdate($hash, 'pm_2_5', $pm2_5) if (defined($pm2_5)); + readingsBulkUpdate($hash, 'pm_10', $pm10) if (defined($pm10)); readingsEndUpdate($hash, 1); # Notify is done by Dispatch return $name; @@ -2319,7 +2406,7 @@ sub SD_WS_WH2SHIFT {
              • ADE WS1907 Weather station with rain gauge
              • Atech wireless weather station
              • BBQ temperature sensor GT-TMBBQ-01s (transmitter), GT-TMBBQ-01e (receiver)
              • -
              • Bresser 5-in-1, 6-in-1 and 7-in-1 Comfort Weather Center, 7009994, Professional rain gauge, Temeo
              • +
              • Bresser 5-in-1, 6-in-1 and 7-in-1 Comfort Weather Center, 7009994, PM2.5/10 air quality meter, Professional rain gauge, Temeo
              • Conrad S522
              • EuroChron EFTH-800, EFS-3110A (temperature and humidity sensor)
              • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (soil moisture sensor)
              • @@ -2463,7 +2550,7 @@ sub SD_WS_WH2SHIFT {
              • ADE WS1907 Wetterstation mit Regenmesser
              • Atech Wetterstation
              • BBQ Temperatur Sensor GT-TMBBQ-01s (Sender), GT-TMBBQ-01e (Empfaenger)
              • -
              • Bresser 5-in-1, 6-in-1 und 7-in-1 Comfort Wetter Center, 7009994, Profi Regenmesser, Temeo
              • +
              • Bresser 5-in-1, 6-in-1 und 7-in-1 Comfort Wetter Center, 7009994, PM2.5/10 Luftqualitätsmesser, Profi Regenmesser, Temeo
              • Conrad S522
              • EuroChron EFTH-800, EFS-3110A (Temperatur- und Feuchtigkeitssensor)
              • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (Bodenfeuchtesensor)
              • @@ -2598,6 +2685,7 @@ sub SD_WS_WH2SHIFT {
              =end html_DE + =for :application/json;q=META.json 14_SD_WS.pm { "abstract": "Supports various weather stations", @@ -2611,6 +2699,7 @@ sub SD_WS_WH2SHIFT { "x_fhem_maintainer_github": [ "Sidey79" ], + "version": "v1.0.0", "description": "The SD_WS module processes the messages from various environmental sensors received from an IO device (CUL, CUN, SIGNALDuino, SignalESP etc.)", "dynamic_config": 1, "keywords": [ diff --git a/FHEM/lib/SD_ProtocolData.pm b/FHEM/lib/SD_ProtocolData.pm index 535e0e05d..b182efa81 100644 --- a/FHEM/lib/SD_ProtocolData.pm +++ b/FHEM/lib/SD_ProtocolData.pm @@ -1,4 +1,4 @@ -# $Id: SD_ProtocolData.pm 26975 2023-08-27 19:36:33Z elektron-bbs $ +# $Id: SD_ProtocolData.pm 26975 2023-12-29 20:00:00Z elektron-bbs $ # The file is part of the SIGNALduino project. # All protocol definitions are contained in this file. # @@ -70,7 +70,7 @@ ##### notice #### or #### info ############################################################################################################ # !!! Between the keys and values no tabs, please use spaces !!! # !!! Please use first unused id for new protocols !!! -# ID´s are currently unused: 130 - +# ID´s are currently unused: 133 - # ID´s need to be revised (preamble u): 5|19|21|22|23|25|28|31|36|40|52|59|63 ########################################################################################################################################### # Please provide at least three messages for each new MU/MC/MS/MN protocol and a URL of issue in GitHub or discussion in FHEM Forum @@ -85,7 +85,7 @@ package lib::SD_ProtocolData; use strict; use warnings; - our $VERSION = '1.55'; + our $VERSION = '1.56'; our %protocols = ( "0" => ## various weather sensors (500 | 9100) # Mebus | Id:237 Ch:1 T: 1.9 Bat:low MS;P0=-9298;P1=495;P2=-1980;P3=-4239;D=1012121312131313121313121312121212121212131212131312131212;CP=1;SP=0;R=223;O;m2; @@ -3142,11 +3142,14 @@ package lib::SD_ProtocolData; clientmodule => 'SD_WS', length_min => '18', }, - "117" => ## BRESSER 7-in-1 Weather Center + "117" => ## BRESSER 7-in-1 Weather Center (outdoor sensor) # https://forum.fhem.de/index.php/topic,78809.msg1196941.html#msg1196941 @ JensS 2021-12-30 # T: 12.7 H: 87 W: 0 R: 8.4 B: 6.676 MN;D=FC28A6F58DCA18AAAAAAAAAA2EAAB8DA2DAACCDCAAAAAAAAAA000000;R=29; # T: 13.1 H: 88 W: 0 R: 0 B: 0.36 MN;D=4DC4A6F5B38A10AAAAAAAAAAAAAAB9BA22AAA9CAAAAAAAAAAA000000;R=15; # T: 10.1 H: 94 W: 0 R: 0 B: 1.156 MN;D=0CF0A6F5B98A10AAAAAAAAAAAAAABABC3EAABBFCAAAAAAAAAA000000;R=28; + ## BRESSER PM2.5/10 air quality meter @ elektron-bbs 2023-11-30 + # PM2.5: 629 PM10: 636 MN;D=ACF66068BDCA89BD2AF22AC83AC9CA33333333333393CAAAAA00;R=9; + # PM2.5: 8 PM10: 9 MN;D=E3626068BDCA89BD2AAADAAA2AAA3AAEEAAF9AAFEA93CAAAAA00;R=10; { name => 'Bresser 7in1', comment => 'BRESSER 7-in-1 weather center', @@ -3156,10 +3159,10 @@ package lib::SD_ProtocolData; sync => '2DD4', modulation => '2-FSK', rfmode => 'Bresser_7in1', - register => ['0001','022E','0345','042D','05D4','0616','07C0','0800','0D21','0E65','0F6A','1088','114C','1202','1322','14F8','1551','1916','1B43','1C68'], + register => ['0001','022E','0345','042D','05D4','0617','07C0','0800','0D21','0E65','0F6A','1088','114C','1202','1322','14F8','1551','1916','1B43','1C68'], preamble => 'W117#', clientmodule => 'SD_WS', - length_min => '44', + length_min => '46', method => \&lib::SD_Protocols::ConvBresser_7in1, }, "118" => ## Remote controls for Meikee LED lights e.g. RGB LED Wallwasher Light and Solar Flood Light diff --git a/FHEM/lib/SD_Protocols.pm b/FHEM/lib/SD_Protocols.pm index 0e0607b38..67c902ad3 100644 --- a/FHEM/lib/SD_Protocols.pm +++ b/FHEM/lib/SD_Protocols.pm @@ -16,7 +16,7 @@ use Carp qw(croak carp); use constant HAS_DigestCRC => defined eval { require Digest::CRC; }; use constant HAS_JSON => defined eval { require JSON; }; -our $VERSION = '2.07'; +our $VERSION = '2.08'; use Storable qw(dclone); use Scalar::Util qw(blessed); @@ -2021,7 +2021,7 @@ sub ConvBresser_7in1 { my $hexData = shift // croak 'Error: called without $hexdata as input'; my $hexLength = length($hexData); - return (1, 'ConvBresser_7in1, hexData is to short') if ($hexLength < 44); # check double, in def length_min set + return (1, 'ConvBresser_7in1, hexData is to short') if ($hexLength < 46); # check double, in def length_min set return (1, 'ConvBresser_7in1, byte 21 is 0x00') if (substr($hexData,42,2) eq '00'); # check byte 21 my $hexDataXorA =''; @@ -2032,7 +2032,7 @@ sub ConvBresser_7in1 { $self->_logging(qq[ConvBresser_7in1, msg=$hexData],5); $self->_logging(qq[ConvBresser_7in1, xor=$hexDataXorA],5); - my $checksum = lib::SD_Protocols::LFSR_digest16(20, 0x8810, 0xba95, substr($hexDataXorA,4,40)); + my $checksum = lib::SD_Protocols::LFSR_digest16(21, 0x8810, 0xBA95, substr($hexDataXorA,4,42)); my $checksumcalc = sprintf('%04X',$checksum ^ hex(substr($hexDataXorA,0,4))); $self->_logging(qq[ConvBresser_7in1, checksumCalc:0x$checksumcalc, must be 0x6DF1],5); return ( 1, qq[ConvBresser_7in1, checksumCalc:0x$checksumcalc != checksum:0x6DF1] ) if ($checksumcalc ne '6DF1'); diff --git a/README.md b/README.md index 27919e8f2..54af2a2c5 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Supported Devices / Protocols |BF-301 | Remote control| |benon (Semexo OHG) | Remote control (BH-P)| |BOSCH / Neff / Refsta Topdraft | Remote control (SF01 01319004, SF01 01319004 v2)| -|BRESSER 5-in-1, 6-in-1, 7-in-1, Professional Rain Gauge, TemeoTrend, SM60020 Soil moisture sensor | Weather Station, Rain Gauge, Thermo-/Hygro Sensor | +|BRESSER 5-in-1, 6-in-1, 7-in-1, Professional Rain Gauge, TemeoTrend, SM60020 Soil moisture sensor, PM2.5/10 Air quality sensor | Weather Station, Rain Gauge, Thermo-/Hygro Sensor, Particulate meter | |Busch-Transcontrol HF | Remote control (6861)| |CAME TOP 432EV | Remote control | |CTW600, WH1080, WH2315 | Weather station | @@ -43,6 +43,7 @@ Supported Devices / Protocols |Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 | Soil moisture sensor | |Fine Offset WH57, aka Ambient Weather WH31L, aka Froggit DP60 | Thunder and lightning sensor | |Fine Offset WH31, aka Ambient Weather WH31E, aka ecowitt WH31 | Temperature and humidity sensor | +|Fine Offset WH40, aka Ambient Weather WH40E, aka ecowitt WH40 | Rain gauge | |FLAMINGO | Flamingo smoke detector | |Fody E42 | Temperature/humidity sensor (protocol BRESSER 5-in-1) | |FreeTec PE-6946 | wireless bell | diff --git a/controls_signalduino.txt b/controls_signalduino.txt index c8baebc1e..813c673ea 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-12-20_09:17:17 239457 FHEM/00_SIGNALduino.pm +UPD 2023-12-29_21:43:52 239695 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-12-20_09:17:17 198590 FHEM/14_SD_UT.pm -UPD 2023-09-18_21:06:46 156089 FHEM/14_SD_WS.pm +UPD 2023-12-29_21:43:52 161715 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-12-20_09:17:17 251034 FHEM/lib/SD_ProtocolData.pm -UPD 2023-08-25_16:10:10 80775 FHEM/lib/SD_Protocols.pm +UPD 2023-12-30_16:18:23 251336 FHEM/lib/SD_ProtocolData.pm +UPD 2023-12-29_22:11:03 80775 FHEM/lib/SD_Protocols.pm diff --git a/t/FHEM/14_SD_WS/testData.json b/t/FHEM/14_SD_WS/testData.json index f85bbddf4..c07837c8a 100644 --- a/t/FHEM/14_SD_WS/testData.json +++ b/t/FHEM/14_SD_WS/testData.json @@ -2044,6 +2044,61 @@ "module" : "SD_WS", "name" : "BRESSER 7-in-1" }, + { + "data" : [ + { + "comment" : "BRESSER PM2.5/10 air quality meter", + "dmsg" : "W117#49C8CAC2176023178000700080009004400530054039600000AA", + "internals" : { + "DEF" : "SD_WS_117_1", + "NAME" : "SD_WS_117_1" + }, + "readings" : { + "batteryChanged" : "1", + "batteryVoltage" : 3.96, + "channel" : 1, + "pm_10" : 9, + "pm_2_5" : 8, + "state" : "PM2.5: 8 PM10: 9", + "type" : "Bresser_7in1" + }, + "rmsg" : "MN;D=E3626068BDCA89BD2AAADAAA2AAA3AAEEAAF9AAFEA93CAAAAA00;R=10;", + "tests" : [ + { + "attributes" : {}, + "comment" : "#0" + } + ] + }, + { + "comment" : "BRESSER PM2.5/10 air quality meter", + "dmsg" : "W117#065CCAC2176023178058806290636099999999999939600000AA", + "internals" : { + "DEF" : "SD_WS_117_1", + "NAME" : "SD_WS_117_1" + }, + "readings" : { + "batteryChanged" : "1", + "batteryVoltage" : 3.96, + "channel" : 1, + "pm_10" : 636, + "pm_2_5" : 629, + "state" : "PM2.5: 629 PM10: 636", + "type" : "Bresser_7in1" + }, + "rmsg" : "MN;D=ACF66068BDCA89BD2AF22AC83AC9CA33333333333393CAAAAA00;R=9;", + "tests" : [ + { + "attributes" : {}, + "comment" : "#1" + } + ] + } + ], + "id" : 117, + "module" : "SD_WS", + "name" : "BRESSER PM2.5/10" + }, { "data" : [ { From d784bb80a2f619836a7aa6da9748dba5eb26209f Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 31 Dec 2023 14:16:28 +0000 Subject: [PATCH 57/76] Automatic updated controls and CHANGED --- CHANGED | 9 +++++++++ controls_signalduino.txt | 8 ++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGED b/CHANGED index 94a3c09c5..ef6318d4c 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,12 @@ +2023-12-31 - new sensor BRESSER PM2.5/10 air quality meter (#1219) + +* Bresser PM2.5/10 air quality meter + new sensor BRESSER PM2.5/10 air quality meter, protocol 117 +* Update SD_Protocols.pm +* Update SD_Protocols.pm +* Update testData.json +* Update README.md +* Update SD_ProtocolData.pm 2023-12-20 - new def | remote ha-hx2 (#1212) * Update SD_ProtocolData.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 813c673ea..344a45f3f 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-12-29_21:43:52 239695 FHEM/00_SIGNALduino.pm +UPD 2023-12-31_15:15:49 239695 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2023-12-20_09:17:17 198590 FHEM/14_SD_UT.pm -UPD 2023-12-29_21:43:52 161715 FHEM/14_SD_WS.pm +UPD 2023-12-31_15:15:49 161715 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-12-30_16:18:23 251336 FHEM/lib/SD_ProtocolData.pm -UPD 2023-12-29_22:11:03 80775 FHEM/lib/SD_Protocols.pm +UPD 2023-12-31_15:15:49 251336 FHEM/lib/SD_ProtocolData.pm +UPD 2023-12-31_15:15:49 80775 FHEM/lib/SD_Protocols.pm From 7f600a4512ef494ad5eeea873fed889318b918b5 Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Sun, 31 Dec 2023 16:00:43 +0100 Subject: [PATCH 58/76] Bump actions/artifact-download and -upload from v3 to v4 (#1210) * Bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump actions/download-artifact from 3 to 4 (#1208) * Bump actions/download-artifact from 3 to 4 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --------- Signed-off-by: dependabot[bot] Co-authored-by: sidey79 <7968127+sidey79@users.noreply.github.com> Co-authored-by: GitHub Action Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix[pipeline]: Fix matrix filename variable * Update Versiondate * Update Versiondate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GitHub Action --- .github/workflows/version.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 57a381bdf..79cbbb581 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -121,13 +121,20 @@ jobs: find: \d\d\d\d-\d\d-\d\d\s\d\d:\d\d:\d\dZ\s[\w|-]+\s replace: "${{ needs.metadata.outputs.datetime }}Z ${{ github.event.pull_request.user.login }} " include: "${{ matrix.files }}" + - name: Artifactname + env: + ARTIFACT_NAME: "${{ matrix.files }}" + run: | + ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} + ARTIFACT_NAME=$(basename $ARTIFACT_NAME) # get only the filename and use this as artifact name + echo ARTIFACT_NAME=${ARTIFACT_NAME} >> $GITHUB_ENV # update GitHub ENV vars - name: Save updated Files in artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: updated-files + name: ${{ env.ARTIFACT_NAME }} retention-days: 1 path: | - ${{ matrix.file }} + ${{ matrix.files }} commit: permissions: contents: write @@ -141,12 +148,13 @@ jobs: fetch-depth: 0 persist-credentials: false - name: Download all modified artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: - path: ${{ github.workspace }} + path: ${{ github.workspace }}/artifacts + - name: replace files from artifacts run: | - for FPATH in ./updated-files/*.pm; do + for FPATH in ./artifacts/*/*.pm; do FILE=$(basename $FPATH) find ./FHEM -name "$FILE" -exec cp $FPATH "{}" \; done From 9d675ed561d4f54d9b287f4ae5d299a49701e1a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 11:03:38 +0100 Subject: [PATCH 59/76] Bump shogo82148/actions-setup-perl from 1.26.0 to 1.27.0 (#1220) --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index 3222e9208..8d645bceb 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: shogo82148/actions-setup-perl@v1.26.0 + - uses: shogo82148/actions-setup-perl@v1.27.0 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 7c88ae81c..3c5eb5cba 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: shogo82148/actions-setup-perl@v1.26.0 + - uses: shogo82148/actions-setup-perl@v1.27.0 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From fbde07431ef0336e25c2b51667ca72de20480f98 Mon Sep 17 00:00:00 2001 From: HomeAutoUser Date: Tue, 2 Jan 2024 23:01:30 +0100 Subject: [PATCH 60/76] Update tests part two | for the functional reliability of the module SD_UT (#1218) * added some tests for define and attr --- FHEM/14_SD_UT.pm | 3 +- controls_signalduino.txt | 2 +- t/FHEM/14_SD_UT/01_attr.t | 258 ++++++++++++++++++++++++++++++---- t/FHEM/14_SD_UT/01_define.t | 11 +- t/FHEM/14_SD_UT/03_set.t | 10 ++ t/FHEM/14_SD_UT/fhem.cfg | 151 ++++++-------------- t/FHEM/14_SD_UT/testData.json | 23 +++ 7 files changed, 315 insertions(+), 143 deletions(-) diff --git a/FHEM/14_SD_UT.pm b/FHEM/14_SD_UT.pm index d24dcf63e..dcc2e4f95 100644 --- a/FHEM/14_SD_UT.pm +++ b/FHEM/14_SD_UT.pm @@ -1881,8 +1881,7 @@ sub SD_UT_Parse { } elsif ($state eq '1000') { $state = 'off'; } else { - $state = 'unknown'; - $def = undef; + $state = substr($bitData,20,4); } ### if received data from device _all, set channels A | B | C | D to state and trigger event ### diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 344a45f3f..cd705534f 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -7,7 +7,7 @@ UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm -UPD 2023-12-20_09:17:17 198590 FHEM/14_SD_UT.pm +UPD 2023-12-27_11:07:48 198578 FHEM/14_SD_UT.pm UPD 2023-12-31_15:15:49 161715 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm diff --git a/t/FHEM/14_SD_UT/01_attr.t b/t/FHEM/14_SD_UT/01_attr.t index 00402a92e..b0e981a31 100644 --- a/t/FHEM/14_SD_UT/01_attr.t +++ b/t/FHEM/14_SD_UT/01_attr.t @@ -10,8 +10,6 @@ our %attr; InternalTimer(time()+0.4, sub { my $sensorname=shift; - - my $attr = q[repeats]; subtest qq[set $sensorname $attr 1..99] => sub { plan(99); @@ -49,55 +47,255 @@ InternalTimer(time()+0.4, sub { }; $attr = q[model]; - my $v = q[Buttons_five]; - subtest qq[Change module attribute to buttons_five] => sub { - plan(2); - $defs{$sensorname}{lastMSG} = q[010]; - CommandAttr(undef,qq[$sensorname $attr $v]); - isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr isnt $v]); - - $defs{$sensorname}{bitMSG} = q[010]; - CommandAttr(undef,qq[$sensorname $attr $v]); + $defs{$sensorname}{lastMSG} = q[010]; + + subtest qq[Change module with hexlength 3 with attribute] => sub { + plan(18); + for my $v (qw(Buttons_five Buttons_six RH787T SA_434_1_mini Unitec_47031 CAME_TOP_432EV TR401 Novy_840029 Novy_840039)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[111110111110]; + CommandAttr(undef,qq[$sensorname $attr $v]); is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } }; - $attr = q[model]; - my $v = q[Buttons_six]; - subtest qq[Change module attribute to buttons_six] => sub { - plan(2); +}, 'SD_UT_Test_Buttons_six'); + +InternalTimer(time()+0.41, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[1846A865]; + + subtest qq[Change module with hexlength 8 with attribute] => sub { + plan(8); + for my $v (qw(DC_1961_TG Krinner_LUMIX RCnoName127 RCnoName20)) { $defs{$sensorname}{bitMSG} = undef; CommandAttr(undef,qq[$sensorname $attr $v]); isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); - - $defs{$sensorname}{bitMSG} = q[010]; + + $defs{$sensorname}{bitMSG} = q[00011000010001101010100001100101]; CommandAttr(undef,qq[$sensorname $attr $v]); is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } }; +}, 'SD_UT_Test_hlen8'); + +InternalTimer(time()+0.42, sub { + my $sensorname=shift; + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[1846]; -}, 'SD_UT_Test_Buttons_six'); + subtest qq[Change module with hexlength 4 with attribute] => sub { + plan(2); + for my $v (qw(TR60C1)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); -InternalTimer(time()+0.41, sub { + $defs{$sensorname}{bitMSG} = q[0000111110000000]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen4'); + +InternalTimer(time()+0.43, sub { my $sensorname=shift; my $attr = q[model]; - my $v = q[DC_1961_TG]; - subtest qq[Change module attribute to DC_1961_TG] => sub { - plan(2); - $defs{$sensorname}{lastMSG} = q[1846A865]; - CommandAttr(undef,qq[$sensorname $attr $v]); - isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr isnt $v]); - - $defs{$sensorname}{bitMSG} = q[010]; - CommandAttr(undef,qq[$sensorname $attr $v]); + $defs{$sensorname}{lastMSG} = q[18469]; + + subtest qq[Change module with hexlength 5 with attribute] => sub { + plan(22); + for my $v (qw(Chilitec_22640 OR28V QUIGG_DMV SF01_01319004 SF01_01319004_Typ2 Tedsen_SKX1xx Tedsen_SKX2xx Tedsen_SKX4xx Tedsen_SKX6xx TR_502MSV BeSmart_S4)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[10101010100000001000]; + CommandAttr(undef,qq[$sensorname $attr $v]); is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen5'); + +InternalTimer(time()+0.44, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[16F610]; + + subtest qq[Change module with hexlength 6 with attribute] => sub { + plan(10); + for my $v (qw(CREATE_6601TL HA_HX2 Navaris RCnoName128 TC6861)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[100001011110111110101010]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen6'); + +InternalTimer(time()+0.44, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[16F610EF0]; + + subtest qq[Change module with hexlength 9 with attribute] => sub { + plan(10); + for my $v (qw(KL_RF01 MD_2003R MD_210R MD_2018R RC_10)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[000101101111011000010000111011110000]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen9'); + +InternalTimer(time()+0.45, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[DAAB255487]; + + subtest qq[Change module with hexlength 10 with attribute] => sub { + plan(4); + for my $v (qw(BF_301 xavax)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[1111101011010000100010001000001110100011]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen10'); + +InternalTimer(time()+0.46, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[1846ABCDEF0]; + + subtest qq[Change module with hexlength 11 with attribute] => sub { + plan(4); + for my $v (qw(HSM4 HS1_868_BS)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[00000000111001101011111010010001000001111100]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen11'); + +InternalTimer(time()+0.47, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[1846ABCDEF0AD]; + + subtest qq[Change module with hexlength 13 with attribute] => sub { + plan(2); + for my $v (qw(Techmar)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[0111011100001001111101011101111000001001111101100000]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen13'); + +InternalTimer(time()+0.48, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[1846ABCDEF0AD0]; + + subtest qq[Change module with hexlength 14 with attribute] => sub { + plan(2); + for my $v (qw(Visivo)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[10011111011111011111100000100101000000101001110000010000]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen14'); + +InternalTimer(time()+0.49, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[FFFFFFFFFFFFFFFF]; + + subtest qq[Change module with hexlength 15 with attribute] => sub { + plan(2); + for my $v (qw(LED_XM21_0)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[1111111111111111111111111111111111111111111111111111111111111111]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } + }; + +}, 'SD_UT_Test_hlen15'); + +InternalTimer(time()+0.50, sub { + my $sensorname=shift; + + my $attr = q[model]; + $defs{$sensorname}{lastMSG} = q[FFFFFFFFFFFFFFFFF]; + + subtest qq[Change module with hexlength 17 with attribute] => sub { + plan(2); + for my $v (qw(AC114_01B)) { + $defs{$sensorname}{bitMSG} = undef; + CommandAttr(undef,qq[$sensorname $attr $v]); + isnt($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is not $v]); + + $defs{$sensorname}{bitMSG} = q[10100011000000000101100001111011000000010000000001000011000101111000]; + CommandAttr(undef,qq[$sensorname $attr $v]); + is($attr{$sensorname}{$attr}, $v, qq[check attribute $attr is $v]); + } }; done_testing(); exit(0); -}, 'SD_UT_Test_TC6861_3DC_1'); - +}, 'SD_UT_Test_hlen17'); 1; \ No newline at end of file diff --git a/t/FHEM/14_SD_UT/01_define.t b/t/FHEM/14_SD_UT/01_define.t index 8a364aeeb..51a8c9353 100644 --- a/t/FHEM/14_SD_UT/01_define.t +++ b/t/FHEM/14_SD_UT/01_define.t @@ -55,6 +55,15 @@ InternalTimer(time()+1, sub { is(IsDevice($sensorname), 0, "check device not created with define"); }; + subtest 'SD_UT - model OR28V wrong address define OR28V_2 SD_UT OR28V 199' => sub { + plan(1); + + my $sensorname=q[OR28V_2]; + my $model=q[OR28V]; + CommandDefine(undef,qq[$sensorname SD_UT $model 199]); + is(IsDevice($sensorname), 0, "check device not created with define"); + }; + subtest 'SD_UT - model OR28V wrong address define OR28V_1 SD_UT OR28V 17' => sub { plan(1); @@ -63,7 +72,7 @@ InternalTimer(time()+1, sub { CommandDefine(undef,qq[$sensorname SD_UT $model 17]); is(IsDevice($sensorname), 0, "check device not created with define"); }; - + done_testing(); exit(0); diff --git a/t/FHEM/14_SD_UT/03_set.t b/t/FHEM/14_SD_UT/03_set.t index 3fd649a2b..1ae84f134 100644 --- a/t/FHEM/14_SD_UT/03_set.t +++ b/t/FHEM/14_SD_UT/03_set.t @@ -89,6 +89,16 @@ my $module = basename (dirname(__FILE__)); returnCheck => F(), subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P68#01011101100010000000#R5' }; etc() } } } , }, + { + targetName => q[SD_UT_Test_OR28V_2], + testname => q[set command volume_minus], + cmd => q[set volume_minus], + prep_commands => [ # Any FHEM custom command can be placed in here, which will be called before the test is run + 'setreading $targetName state volume_minus', + ], + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P68#01101101100010000001#R5' }; etc() } } } , + }, { targetName => q[SD_UT_Test_Chilitec_22640_AA80], testname => q[set command power_on], diff --git a/t/FHEM/14_SD_UT/fhem.cfg b/t/FHEM/14_SD_UT/fhem.cfg index 3f4f6192e..b4b36359e 100644 --- a/t/FHEM/14_SD_UT/fhem.cfg +++ b/t/FHEM/14_SD_UT/fhem.cfg @@ -1,126 +1,59 @@ define dummyDuino SIGNALduino none attr dummyDuino dummy 1 +define SD_UT_Test_AC114_01B_00587B SD_UT AC114_01B 00587B +define SD_UT_Test_BF_301_FAD0 SD_UT BF_301 FAD0 +define SD_UT_Test_BeSmart_S4_534 SD_UT BeSmart_S4 534 +define SD_UT_Test_Buttons_five_E SD_UT Buttons_five E define SD_UT_Test_Buttons_six SD_UT Buttons_six E -attr SD_UT_Test_Buttons_six model Buttons_six - -define SD_UT_Test_RCnoName20_10 SD_UT RCnoName20_10 3E00 - -define SD_UT_Test_OR28V_1 SD_UT OR28V 1 -attr SD_UT_Test_OR28V_1 model OR28V - +define SD_UT_Test_CAME_TOP_432EV_EE SD_UT CAME_TOP_432EV EE define SD_UT_Test_Chilitec_22640_AA80 SD_UT Chilitec_22640 AA80 -attr SD_UT_Test_Chilitec_22640_AA80 model Chilitec_22640 - define SD_UT_Test_DC_1961_TG_1846 SD_UT DC_1961_TG 1846 -attr SD_UT_Test_DC_1961_TG_1846 model DC_1961_TG - -define SD_UT_Test_Visivo_7DF825 SD_UT Visivo 7DF825 -attr SD_UT_Test_Visivo_7DF825 model Visivo - -define SD_UT_Test_xavax_DAAB SD_UT xavax DAAB -attr SD_UT_Test_xavax_DAAB model xavax - -define SD_UT_Test_Buttons_five_E SD_UT Buttons_five E -attr SD_UT_Test_Buttons_five_E model Buttons_five - -define SD_UT_Test_QUIGG_DMV_891 SD_UT QUIGG_DMV 891 -attr SD_UT_Test_QUIGG_DMV_891 model QUIGG_DMV - -define SD_UT_Test_TR_502MSV_FFF SD_UT TR_502MSV FFF -attr SD_UT_Test_TR_502MSV_FFF model TR_502MSV - -define SD_UT_Test_Tedsen_SKX1xx_F1FF11F SD_UT Tedsen_SKX1xx F1FF11F -attr SD_UT_Test_Tedsen_SKX1xx_F1FF11F model Tedsen_SKX1xx - -define SD_UT_Test_Tedsen_SKX2xx_1F10110 SD_UT Tedsen_SKX2xx 1F10110 -attr SD_UT_Test_Tedsen_SKX2xx_1F10110 model Tedsen_SKX2xx - -define SD_UT_Test_Tedsen_SKX6xx_1F10FF0 SD_UT Tedsen_SKX6xx 1F10FF0 -attr SD_UT_Test_Tedsen_SKX6xx_1F10FF0 model Tedsen_SKX6xx - -define SD_UT_Test_AC114_01B_00587B SD_UT AC114_01B 00587B -attr SD_UT_Test_AC114_01B_00587B model AC114_01B - +define SD_UT_Test_HA_HX2_85EF SD_UT HA_HX2 85EF define SD_UT_Test_HS1_868_BS_F62A9C01C SD_UT HS1_868_BS F62A9C01C -attr SD_UT_Test_HS1_868_BS_F62A9C01C model HS1_868_BS - define SD_UT_Test_HSM4_E6BE910 SD_UT HSM4 E6BE910 -attr SD_UT_Test_HSM4_E6BE910 model HSM4 - +define SD_UT_Test_KL_RF01_16F6 SD_UT KL_RF01 16F6 +define SD_UT_Test_Krinner_LUMIX_A06C360 SD_UT Krinner_LUMIX A06C360 +define SD_UT_Test_Krinner_LUMIX_A06C360_UTfrequency SD_UT Krinner_LUMIX A06C360 define SD_UT_Test_LED_XM21_0_FFFFFFFFFFFFFF SD_UT LED_XM21_0 FFFFFFFFFFFFFF -attr SD_UT_Test_LED_XM21_0_FFFFFFFFFFFFFF model LED_XM21_0 - -define SD_UT_Test_BeSmart_S4_534 SD_UT BeSmart_S4 534 -attr SD_UT_Test_BeSmart_S4_534 model BeSmart_S4 - -define SD_UT_Test_SA_434_1_mini_604 SD_UT SA_434_1_mini 604 -attr SD_UT_Test_SA_434_1_mini_604 model SA_434_1_mini - -define SD_UT_Test_RH787T_0 SD_UT RH787T 0 -attr SD_UT_Test_RH787T_0 model RH787T - -define SD_UT_Test_CAME_TOP_432EV_EE SD_UT CAME_TOP_432EV EE -attr SD_UT_Test_CAME_TOP_432EV_EE model CAME_TOP_432EV - +define SD_UT_Test_Meikee_24_20D3 SD_UT Meikee_24 20D3 +define SD_UT_Test_Momento_0000064 SD_UT Momento 0000064 +define SD_UT_Test_Navaris_211073 SD_UT Navaris 211073 define SD_UT_Test_Novy_840029_55 SD_UT Novy_840029 55 -attr SD_UT_Test_Novy_840029_55 model Novy_840029 - define SD_UT_Test_Novy_840039_55 SD_UT Novy_840039 55 -attr SD_UT_Test_Novy_840039_55 model Novy_840039 - -define SD_UT_Test_SF01_01319004_A150 SD_UT SF01_01319004 A150 -attr SD_UT_Test_SF01_01319004_A150 model SF01_01319004 - -define SD_UT_Test_SF01_01319004_Typ2_2638 SD_UT SF01_01319004_Typ2 2638 -attr SD_UT_Test_SF01_01319004_Typ2_2638 model SF01_01319004_Typ2 - +define SD_UT_Test_OR28V_1 SD_UT OR28V 1 +define SD_UT_Test_OR28V_2 SD_UT OR28V 2 +define SD_UT_Test_QUIGG_DMV_891 SD_UT QUIGG_DMV 891 define SD_UT_Test_RC_10_7869_A SD_UT RC_10 7869_A -attr SD_UT_Test_RC_10_7869_A model RC_10 - define SD_UT_Test_RC_10_7869_all SD_UT RC_10 7869_all -attr SD_UT_Test_RC_10_7869_all model RC_10 - -define SD_UT_Test_Krinner_LUMIX_A06C360 SD_UT Krinner_LUMIX A06C360 -attr SD_UT_Test_Krinner_LUMIX_A06C360 model Krinner_LUMIX - -define SD_UT_Test_Krinner_LUMIX_A06C360_UTfrequency SD_UT Krinner_LUMIX A06C360 -attr SD_UT_Test_Krinner_LUMIX_A06C360_UTfrequency model Krinner_LUMIX - -define SD_UT_Test_KL_RF01_16F6 SD_UT KL_RF01 16F6 -attr SD_UT_Test_KL_RF01_16F6 model KL_RF01 - -define SD_UT_Test_Techmar_7709F5DE SD_UT Techmar 7709F5DE -attr SD_UT_Test_Techmar_7709F5DE model Techmar - -define SD_UT_Test_Momento_0000064 SD_UT Momento 0000064 -attr SD_UT_Test_Momento_0000064 model Momento - -define SD_UT_Test_Navaris_211073 SD_UT Navaris 211073 -attr SD_UT_Test_Navaris_211073 model Navaris - +define SD_UT_Test_RCnoName127_3603A SD_UT RCnoName127 3603A +define SD_UT_Test_RCnoName128_8A7F SD_UT RCnoName128 8A7F +define SD_UT_Test_RCnoName20_10 SD_UT RCnoName20_10 3E00 +define SD_UT_Test_RH787T_0 SD_UT RH787T 0 +define SD_UT_Test_SA_434_1_mini_604 SD_UT SA_434_1_mini 604 +define SD_UT_Test_SF01_01319004_A150 SD_UT SF01_01319004 A150 +define SD_UT_Test_SF01_01319004_Typ2_2638 SD_UT SF01_01319004_Typ2 2638 +define SD_UT_Test_TC6861_3DC_1 SD_UT TC6861 3DC_1 +define SD_UT_Test_TR401_0_2 SD_UT TR401 0_2 define SD_UT_Test_TR60C1_0 SD_UT TR60C1 0 -attr SD_UT_Test_TR60C1_0 model TR60C1 - define SD_UT_Test_TR60C1_0_2 SD_UT TR60C1 0 -attr SD_UT_Test_TR60C1_0_2 model TR60C1 - -define SD_UT_Test_BF_301_FAD0 SD_UT BF_301 FAD0 -attr SD_UT_Test_BF_301_FAD0 model BF_301 - -define SD_UT_Test_TR401_0_2 SD_UT TR401 0_2 -attr SD_UT_Test_TR401_0_2 model TR401 - -define SD_UT_Test_Meikee_24_20D3 SD_UT Meikee_24 20D3 -attr SD_UT_Test_Meikee_24_20D3 model Meikee_24 - -define SD_UT_Test_TC6861_3DC_1 SD_UT TC6861 3DC_1 - -define SD_UT_Test_RCnoName127_3603A SD_UT RCnoName127 3603A -attr SD_UT_Test_RCnoName127_3603A model RCnoName127 +define SD_UT_Test_TR_502MSV_FFF SD_UT TR_502MSV FFF +define SD_UT_Test_Techmar_7709F5DE SD_UT Techmar 7709F5DE +define SD_UT_Test_Tedsen_SKX1xx_F1FF11F SD_UT Tedsen_SKX1xx F1FF11F +define SD_UT_Test_Tedsen_SKX2xx_1F10110 SD_UT Tedsen_SKX2xx 1F10110 +define SD_UT_Test_Tedsen_SKX6xx_1F10FF0 SD_UT Tedsen_SKX6xx 1F10FF0 +define SD_UT_Test_Visivo_7DF825 SD_UT Visivo 7DF825 +define SD_UT_Test_xavax_DAAB SD_UT xavax DAAB -define SD_UT_Test_RCnoName128_8A7F SD_UT RCnoName128 8A7F -attr SD_UT_Test_RCnoName128_8A7F model RCnoName128 -define SD_UT_Test_HA_HX2_85EF SD_UT HA_HX2 85EF -attr SD_UT_Test_HA_HX2_85EF model HA_HX2 +define SD_UT_Test_hlen4 SD_UT unknown +define SD_UT_Test_hlen5 SD_UT unknown +define SD_UT_Test_hlen6 SD_UT unknown +define SD_UT_Test_hlen8 SD_UT unknown +define SD_UT_Test_hlen9 SD_UT unknown +define SD_UT_Test_hlen10 SD_UT unknown +define SD_UT_Test_hlen11 SD_UT unknown +define SD_UT_Test_hlen13 SD_UT unknown +define SD_UT_Test_hlen14 SD_UT unknown +define SD_UT_Test_hlen15 SD_UT unknown +define SD_UT_Test_hlen17 SD_UT unknown diff --git a/t/FHEM/14_SD_UT/testData.json b/t/FHEM/14_SD_UT/testData.json index ead55ce08..a99a4d7df 100644 --- a/t/FHEM/14_SD_UT/testData.json +++ b/t/FHEM/14_SD_UT/testData.json @@ -1527,6 +1527,29 @@ "comment" : "#3" } ] + }, + { + "comment" : "button all / state unknown", + "dmsg" : "P90#786909230", + "internals" : { + "DEF" : "RC_10 7869_all", + "NAME" : "RC_10_7869_all" + }, + "readings" : { + "LastAction" : "receive", + "deviceCode" : "0111100001101001", + "state" : "1001", + "x_n4" : "0000" + }, + "rmsg" : "MS;P1=-363;P2=789;P3=267;P4=-887;P5=-10332;D=35342121212134343434212134213434213434343421343421343421343434212134;CP=3;SP=5;O;m2;4;", + "tests" : [ + { + "attributes" : { + "model" : "RC_10" + }, + "comment" : "#4" + } + ] } ], "id" : "90", From 0f23255f9785278bf2cc784091e27fdb480dd786 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 2 Jan 2024 22:02:04 +0000 Subject: [PATCH 61/76] Automatic updated controls and CHANGED --- CHANGED | 3 +++ controls_signalduino.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index ef6318d4c..7ab1214f4 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,6 @@ +2024-01-02 - Update tests part two | for the functional reliability of the module SD_UT (#1218) + +* added some tests for define and attr 2023-12-31 - new sensor BRESSER PM2.5/10 air quality meter (#1219) * Bresser PM2.5/10 air quality meter diff --git a/controls_signalduino.txt b/controls_signalduino.txt index cd705534f..3e21b081a 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -7,7 +7,7 @@ UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm -UPD 2023-12-27_11:07:48 198578 FHEM/14_SD_UT.pm +UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm UPD 2023-12-31_15:15:49 161715 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm From bbaabf8f0c2b28952494f1500b5df079fcfb96f4 Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Wed, 3 Jan 2024 09:06:30 +0100 Subject: [PATCH 62/76] Call debug via a coderef if enabled, otherwise return (#1169) * 00_SIGNALduino.pm added coderef for debug output$hash->{debugMethod} --- FHEM/00_SIGNALduino.pm | 113 +++++++++--------- controls_signalduino.txt | 2 +- t/FHEM/00_SIGNALduino/01_SIGNALduino_Attr.t | 63 ++++++++++ .../01_SIGNALduino_PatternExists.t | 10 +- 4 files changed, 127 insertions(+), 61 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index b2655c1b4..522a873d6 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.6 2023-12-14 17:16:35Z sidey79 $ +# $Id: 00_SIGNALduino.pm 3.5.6 2024-01-02 22:22:14Z sidey79 $ # v3.5.6 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -392,9 +392,9 @@ sub SIGNALduino_Define { my $dev = $a[2]; - #Debug "dev: $dev" if ($debug); + #$hash->{debugMethod}->(qq[dev: $dev]); #my $hardware=AttrVal($name,'hardware','nano'); - #Debug "hardware: $hardware" if ($debug); + #$hash->{debugMethod}->(qq[hardware: $hardware]); if($dev eq 'none') { Log3 $name, 1, "$name: Define, device is none, commands will be echoed only"; @@ -419,7 +419,8 @@ sub SIGNALduino_Define { $hash->{MatchList} = \%matchListSIGNALduino; $hash->{DeviceName} = $dev; $hash->{logMethod} = \&main::Log3; - + $hash->{debugMethod} = sub { return; }; + my $ret=undef; $hash->{protocolObject} = dclone($Protocols); $hash->{protocolObject}->registerLogCallback(SIGNALduino_createLogCallback($hash)); @@ -2025,14 +2026,14 @@ sub SIGNALduino_PatternExists { #my $tol=abs(abs($searchpattern)>=2 ?$searchpattern*0.3:$searchpattern*1.5); my $tol=abs(abs($searchpattern)>3 ? abs($searchpattern)>16 ? $searchpattern*0.18 : $searchpattern*0.3 : 1); #tol is minimum 1 or higer, depending on our searched pulselengh - Debug "tol: looking for ($searchpattern +- $tol)" if($debug); + $hash->{debugMethod}->(qq[tol: looking for ($searchpattern +- $tol)]); my %pattern_gap ; #= {}; # Find and store the gap of every pattern, which is in tolerance %pattern_gap = map { $_ => abs($patternList->{$_}-$searchpattern) } grep { abs($patternList->{$_}-$searchpattern) <= $tol} (keys %$patternList); if (scalar keys %pattern_gap > 0) { - Debug "index => gap in tol (+- $tol) of pulse ($searchpattern) : ".Dumper(\%pattern_gap) if($debug); + $hash->{debugMethod}->(qq[index => gap in tol (+- $tol) of pulse ($searchpattern) : ].Dumper(\%pattern_gap)); # Extract fist pattern, which is nearst to our searched value my @closestidx = (sort {$pattern_gap{$a} <=> $pattern_gap{$b}} keys %pattern_gap); @@ -2056,9 +2057,9 @@ sub SIGNALduino_PatternExists { } [[]], @_ } my @res = cartesian_product @sumlist; - Debug qq[sumlists is: ].Dumper @sumlist if($debug); - Debug qq[res is: ].Dumper $res[0] if($debug); - Debug qq[indexer is: ].Dumper \@indexer if($debug); + $hash->{debugMethod}->(q[sumlists is: ].Dumper @sumlist); + $hash->{debugMethod}->(qq[res is: ].Dumper $res[0]); + $hash->{debugMethod}->(qq[indexer is: ].Dumper \@indexer); OUTERLOOP: for my $i (0..$#{$res[0]}) @@ -2077,7 +2078,7 @@ sub SIGNALduino_PatternExists { { $plist{$indexer[$x]} = $res[0][$i][$x]; } - Debug qq[plist is for this check ].Dumper(\%plist) if($debug); + $hash->{debugMethod}->(q[plist is for this check ].Dumper(\%plist)); # Create our searchstring with our mapping table my @patternVariant= @{$search}; @@ -2087,7 +2088,7 @@ sub SIGNALduino_PatternExists { $v = $plist{$v}; #Debug qq[after: $v ] if($debug); } - Debug qq[patternVariant is ].Dumper(\@patternVariant) if($debug); + $hash->{debugMethod}->(q[patternVariant is ].Dumper(\@patternVariant)); my $search_pattern = join '', @patternVariant; (index ($$data, $search_pattern) > -1) ? return $search_pattern : next; @@ -2110,14 +2111,14 @@ sub SIGNALduino_MatchSignalPattern { foreach ( @{$signalpattern} ) { - #Debug " $idx check: ".$patternList->{$data_array->[$idx]}." == ".$_; - Debug "$name: idx: $idx check: abs(". $patternList->{$data_array->[$idx]}.' - '.$_.') > '. ceil(abs($patternList->{$data_array->[$idx]}*$tol)) if ($debug); + #$hash->{debugMethod}->(qq[ $idx check: ".$patternList->{$data_array->[$idx]}.]); + $hash->{debugMethod}->(qq[$name: idx: $idx check: abs( $patternList->{$data_array->[$idx]} - $_) > ]. ceil(abs($patternList->{$data_array->[$idx]}*$tol))) if ($debug); #print "\n";; #if ($patternList->{$data_array->[$idx]} ne $_ ) ### Nachkommastelle von ceil!!! if (!defined( $patternList->{$data_array->[$idx]})){ - Debug "$name: Error index ($idx) does not exist!!" if ($debug); + $hash->{debugMethod}->(qq[$name: Error index ($idx) does not exist!!]); return -1; } @@ -2148,11 +2149,12 @@ sub SIGNALduino_Split_Message { my $freqafc; ## for AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator my @msg_parts = SIGNALduino_splitMsg($rmsg,';'); ## Split message parts by ';' my %ret; - my $debug = AttrVal($name,'debug',0); + my $hash = $defs{$name}; + my $debug = AttrVal($hash->{NAME},'debug',0); foreach (@msg_parts) { - #Debug "$name: checking msg part:( $_ )" if ($debug); + #$hash->{debugMethod}->(qq[$name: checking msg part:( $_ )]); #if ($_ =~ m/^MS/ or $_ =~ m/^MC/ or $_ =~ m/^Mc/ or $_ =~ m/^MU/) #### Synced Message start if ($_ =~ m/^M./) @@ -2166,51 +2168,51 @@ sub SIGNALduino_Split_Message { my @pattern = split(/=/,$_); $patternList{$pattern[0]} = $pattern[1]; - Debug "$name: extracted pattern @pattern \n" if ($debug); + $hash->{debugMethod}->(qq[$name: extracted pattern @pattern \n]); } elsif($_ =~ m/D=\d+/ or $_ =~ m/^D=[A-F0-9]+/) #### Message from array { $_ =~ s/D=//; $rawData = $_ ; - Debug "$name: extracted data $rawData\n" if ($debug); + $hash->{debugMethod}->(qq[$name: extracted data $rawData\n]); $ret{rawData} = $rawData; } elsif($_ =~ m/^SP=([0-9])$/) #### Sync Pulse Index { - Debug "$name: extracted syncidx $1\n" if ($debug); + $hash->{debugMethod}->(qq[$name: extracted syncidx $1\n]); #return undef if (!defined($patternList{$syncidx})); $ret{syncidx} = $1; } elsif($_ =~ m/^CP=([0-9])$/) #### Clock Pulse Index { - Debug "$name: extracted clockidx $1\n" if ($debug);; + $hash->{debugMethod}->(qq[$name: extracted clockidx $1\n]); $ret{clockidx} = $1; } elsif($_ =~ m/^L=\d/) #### MC bit length { (undef, $mcbitnum) = split(/=/,$_); - Debug "$name: extracted number of $mcbitnum bits\n" if ($debug);; + $hash->{debugMethod}->(qq[$name: extracted number of $mcbitnum bits\n]); $ret{mcbitnum} = $mcbitnum; } elsif($_ =~ m/^C=\d+/) #### Message from array { $_ =~ s/C=//; $clockabs = $_ ; - Debug "$name: extracted absolute clock $clockabs \n" if ($debug); + $hash->{debugMethod}->(qq[$name: extracted absolute clock $clockabs \n]); $ret{clockabs} = $clockabs; } elsif($_ =~ m/^R=\d+/) #### RSSI { $_ =~ s/R=//; $rssi = $_ ; - Debug "$name: extracted RSSI $rssi \n" if ($debug); + $hash->{debugMethod}->(qq[$name: extracted RSSI $rssi \n]); $ret{rssi} = $rssi; } elsif ($_ =~ m/A=(-?[0-9]{0,3})/ ){ # uncoverable branch true Debug qq[$name: extracted FREQEST $1 \n] if ($debug); $ret{freqest} = $1; } else { - Debug "$name: unknown Message part $_" if ($debug);; + $hash->{debugMethod}->(qq[$name: unknown Message part $_]); } #print "$_\n"; } @@ -2310,7 +2312,7 @@ sub SIGNALduino_moduleMatch { my $modMatchRegex=$hash->{protocolObject}->checkProperty($id,'modulematch',undef); if (!defined($modMatchRegex) || $dmsg =~ m/$modMatchRegex/) { - Debug "$name: modmatch passed for: $dmsg" if ($debug); + $hash->{debugMethod}->(qq[$name: modmatch passed for: $dmsg]); my $developID = $hash->{protocolObject}->checkProperty($id,'developId',''); my $IDsNoDispatch = ',' . InternalVal($name,'IDsNoDispatch','') . ','; if ($IDsNoDispatch ne ',,' && index($IDsNoDispatch, ",$id,") >= 0) { # kein dispatch wenn die Id im Internal IDsNoDispatch steht @@ -2401,19 +2403,19 @@ sub SIGNALduino_Parse_MS { IDLOOP: foreach my $id (@{$hash->{msIdList}}) { - Debug qq[Testing against protocol id $id -> ].$hash->{protocolObject}->getProperty($id,'name') if ($debug); + $hash->{debugMethod}->(qq[Testing against protocol id $id -> ].$hash->{protocolObject}->getProperty($id,'name')); # Check Clock if is it in range if ($hash->{protocolObject}->checkProperty($id,'clockabs',0) > 0) { if (!SIGNALduino_inTol($hash->{protocolObject}->getProperty($id,'clockabs'),$clockabs,$clockabs*0.30)) { - Debug qq[protocClock=].$hash->{protocolObject}->getProperty($id,'clockabs').qq[, msgClock=$clockabs is not in tol=].$clockabs*0.30 if ($debug); + $hash->{debugMethod}->(q[protocClock=].$hash->{protocolObject}->getProperty($id,'clockabs').qq[, msgClock=$clockabs is not in tol=].$clockabs*0.30); next; } elsif ($debug) { - Debug qq[protocClock=].$hash->{protocolObject}->getProperty($id,'clockabs').qq[, msgClock=$clockabs is in tol="] . $clockabs*0.30; + $hash->{debugMethod}->(q[protocClock=].$hash->{protocolObject}->getProperty($id,'clockabs').qq[, msgClock=$clockabs is in tol="] . $clockabs*0.30); } } - Debug 'Searching in patternList: '.Dumper(\%patternList) if($debug); + $hash->{debugMethod}->(q[Searching in patternList: ].Dumper(\%patternList)); my %patternLookupHash=(); my %endPatternLookupHash=(); @@ -2425,7 +2427,7 @@ sub SIGNALduino_Parse_MS { if (!SIGNALduino_FillPatternLookupTable($hash,\@{$hash->{protocolObject}->getProperty($id,$key)},\$symbol_map{$key},\%patternList,\$rawData,\%patternLookupHash,\%endPatternLookupHash,\$return_text)) { - Debug sprintf("%s pattern not found",$key) if ($debug); + $hash->{debugMethod}->(sprintf("%s pattern not found",$key)); next IDLOOP if ($key ne 'float') ; } @@ -2434,13 +2436,13 @@ sub SIGNALduino_Parse_MS { $message_start =index($rawData,$return_text)+length($return_text); my $bit_length = ($signal_length-$message_start) / $signal_width; if ($hash->{protocolObject}->checkProperty($id,'length_min',-1) > $bit_length) { - Debug "bit_length=$bit_length to short" if ($debug); + $hash->{debugMethod}->(qq[bit_length=$bit_length to short]); next IDLOOP; } - Debug "expecting $bit_length bits in signal" if ($debug); + $hash->{debugMethod}->(qq[expecting $bit_length bits in signal]); %endPatternLookupHash=(); } - Debug sprintf("Found matched %s with indexes: (%s)",$key,$return_text) if ($debug); + $hash->{debugMethod}->(sprintf("Found matched %s with indexes: (%s)",$key,$return_text)); } next if (scalar keys %patternLookupHash == 0); # Keine Eingträge im patternLookupHash @@ -2472,13 +2474,13 @@ sub SIGNALduino_Parse_MS { } } - Debug "$name: decoded message raw (@bit_msg), ".@bit_msg." bits\n" if ($debug); + $hash->{debugMethod}->(qq[$name: decoded message raw (@bit_msg), ".@bit_msg." bits\n]); #Check converted message against lengths my ($rcode, $rtxt) = $hash->{protocolObject}->LengthInRange($id,scalar @bit_msg); if (!$rcode) { - Debug "$name: decoded $rtxt" if ($debug); + $hash->{debugMethod}->(qq[$name: decoded $rtxt]); next; } my $padwith = $hash->{protocolObject}->checkProperty($id,'paddingbits',4); @@ -2489,7 +2491,7 @@ sub SIGNALduino_Parse_MS { push(@bit_msg,'0'); $i++; } - Debug "$name padded $i bits to bit_msg array" if ($debug); + $hash->{debugMethod}->(qq[$name padded $i bits to bit_msg array]); if ($i == 0) { $hash->{logMethod}->($name, 5, "$name: Parse_MS, dispatching bits: @bit_msg"); @@ -2581,7 +2583,7 @@ sub SIGNALduino_Parse_MU { my $message_dispatched=0; my $debug = AttrVal($hash->{NAME},'debug',0); - Debug "$name: processing unsynced message\n" if ($debug); + $hash->{debugMethod}->(qq[$name: processing unsynced message\n]); my $clockabs = 1; #Clock will be fetched from protocol if possible $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}}; @@ -2618,8 +2620,8 @@ sub SIGNALduino_Parse_MU { %patternList = map { $_ => FHEM::Core::Utils::Math::round($patternListRaw{$_}/$clockabs,1) } keys %patternListRaw; } - Debug qq[Testing against protocol id $id -> ]. $hash->{protocolObject}->getProperty($id,'name') if ($debug); - Debug qq[Searching in patternList: ].Dumper(\%patternList) if($debug); + $hash->{debugMethod}->(qq[Testing against protocol id $id -> ]. $hash->{protocolObject}->getProperty($id,'name')); + $hash->{debugMethod}->(qq[Searching in patternList: ].Dumper(\%patternList)); my $startStr=''; # Default match if there is no start pattern available my $message_start=0 ; @@ -2627,24 +2629,24 @@ sub SIGNALduino_Parse_MU { if (defined($hash->{protocolObject}->getProperty($id,'start')) && ref($hash->{protocolObject}->getProperty($id,'start')) eq 'ARRAY') # wenn start definiert ist, dann startStr ermitteln und in rawData suchen und in der rawData alles bis zum startStr abschneiden { - Debug 'msgStartLst: '.Dumper(\@{$hash->{protocolObject}->getProperty($id,'start')}) if ($debug); + $hash->{debugMethod}->('msgStartLst: '.Dumper(\@{$hash->{protocolObject}->getProperty($id,'start')})); if ( ($startStr=SIGNALduino_PatternExists($hash,\@{$hash->{protocolObject}->getProperty($id,'start')},\%patternList,\$rawData)) eq -1) { $hash->{logMethod}->($name, 5, qq[$name: Parse_MU, start pattern for MU protocol id $id -> ].$hash->{protocolObject}->getProperty($id,'name'). qq[ not found, aborting]); next; } - Debug "startStr is: $startStr" if ($debug); + $hash->{debugMethod}->(qq[startStr is: $startStr]); $message_start = index($rawData, $startStr); if ( $message_start == -1) { - Debug "startStr $startStr not found." if ($debug); + $hash->{debugMethod}->(qq[startStr $startStr not found.]); next; } else { $rawData = substr($rawData, $message_start); $startLogStr = "StartStr: $startStr first found at $message_start"; - Debug "rawData = $rawData" if ($debug); - Debug "startStr $startStr found. Message starts at $message_start" if ($debug); + $hash->{debugMethod}->(qq[rawData = $rawData]); + $hash->{debugMethod}->(qq[startStr $startStr found. Message starts at $message_start]); #SIGNALduino_Log3 $name, 5, "$name: Parse_MU, substr: $rawData"; # todo: entfernen } } @@ -2662,10 +2664,10 @@ sub SIGNALduino_Parse_MU { next if (!defined($hash->{protocolObject}->getProperty($id,$key))); if (!SIGNALduino_FillPatternLookupTable($hash,\@{$hash->{protocolObject}->getProperty($id,$key)},\$symbol_map{$key},\%patternList,\$rawData,\%patternLookupHash,\%endPatternLookupHash,\$return_text)) { - Debug sprintf("%s pattern not found",$key) if ($debug); + $hash->{debugMethod}->(sprintf("%s pattern not found",$key)); next IDLOOP if ($key ne "float"); } - Debug sprintf("Found matched %s with indexes: (%s)",$key,$return_text) if ($debug); + $hash->{debugMethod}->(sprintf("Found matched %s with indexes: (%s)",$key,$return_text)); if ($key eq "one") { $signalRegex .= $return_text; @@ -2687,7 +2689,7 @@ sub SIGNALduino_Parse_MU { if (defined($hash->{protocolObject}->getProperty($id,'reconstructBit'))) { $signalRegex .= '(?:' . join('|',keys %endPatternLookupHash) . ')?'; } - Debug "signalRegex is $signalRegex " if ($debug); + $hash->{debugMethod}->(qq[signalRegex is $signalRegex ]); my $nrRestart=0; my $nrDispatch=0; @@ -2725,7 +2727,7 @@ sub SIGNALduino_Parse_MU { } } - Debug "$name: demodulated message raw (@bit_msg), ".@bit_msg." bits\n" if ($debug); + $hash->{debugMethod}->(qq[$name: demodulated message raw (@bit_msg), ".@bit_msg." bits\n]); my $evalcheck = ($hash->{protocolObject}->checkProperty($id,'developId','') =~ 'p') ? 1 : undef; my ($rcode,@retvalue) = SIGNALduino_callsub($hash->{protocolObject},'postDemodulation',$hash->{protocolObject}->checkProperty($id,'postDemodulation',undef),$evalcheck,$name,@bit_msg); @@ -2741,7 +2743,7 @@ sub SIGNALduino_Parse_MU { while (scalar @bit_msg % $padwith > 0) ## will pad up full nibbles per default or full byte if specified in protocol { push(@bit_msg,'0'); - Debug "$name: padding 0 bit to bit_msg array" if ($debug); + $hash->{debugMethod}->(qq[$name: padding 0 bit to bit_msg array]); } my $dmsg = join ('', @bit_msg); my $bit_length=scalar @bit_msg; @@ -2815,7 +2817,7 @@ sub SIGNALduino_Parse_MC { my $debug = AttrVal($hash->{NAME},'debug',0); - Debug "$name: processing manchester messag len:".length($rawData) if ($debug); + $hash->{debugMethod}->("$name: processing manchester messag len:".length($rawData)); my $hlen = length($rawData); my $blen; @@ -2835,13 +2837,13 @@ sub SIGNALduino_Parse_MC { my @clockrange = @{$hash->{protocolObject}->getProperty($id,'clockrange')}; if ( $clock > $clockrange[0] && $clock < $clockrange[1] && length($rawData)*4 >= $hash->{protocolObject}->getProperty($id,'length_min') ) { - Debug "clock and min length matched" if ($debug); + $hash->{debugMethod}->(qq[clock and min length matched]); (defined $rssi ) ? $hash->{logMethod}->($name, 4, qq[$name: Parse_MC, Found manchester protocol id $id clock $clock $rssiStr -> ].$hash->{protocolObject}->getProperty($id,'name')) : $hash->{logMethod}->($name, 4, qq[$name: Parse_MC, Found manchester protocol id $id clock $clock -> ].$hash->{protocolObject}->getProperty($id,'name')); my $polarityInvert = ( $hash->{protocolObject}->checkProperty($id,'polarity','') eq 'invert' ) ? 1 : 0; - Debug "$name: polarityInvert=$polarityInvert" if ($debug); + $hash->{debugMethod}->(qq[$name: polarityInvert=$polarityInvert]); if ( $messagetype eq 'Mc' || ( defined $hash->{version} && substr $hash->{version},0,6 eq 'V 3.2.') ) { @@ -2852,7 +2854,7 @@ sub SIGNALduino_Parse_MC { ? unpack("B$blen", pack("H$hlen", $rawDataInverted)) : unpack("B$blen", pack("H$hlen", $rawData)); - Debug "$name: extracted data $bitData (bin)\n" if ($debug); ## Convert Message from hex to bits + $hash->{debugMethod}->(qq[$name: extracted data $bitData (bin)\n]); ## Convert Message from hex to bits $hash->{logMethod}->($name, 5, "$name: Parse_MC, extracted data $bitData (bin)"); my $method = $hash->{protocolObject}->getProperty($id,'method'); @@ -2993,7 +2995,7 @@ sub SIGNALduino_Parse { my $debug = AttrVal($iohash->{NAME},'debug',0); - Debug "$name: incoming message: ($rmsg)\n" if ($debug); + $hash->{debugMethod}->(qq[$name: incoming message: ($rmsg)\n]); if (AttrVal($name, 'rawmsgEvent', 0)) { DoTrigger($name, 'RAWMSG ' . $rmsg); @@ -3024,7 +3026,7 @@ sub SIGNALduino_Parse { $dispatched= SIGNALduino_Parse_MN($hash, $rmsg); } else { - Debug "$name: unknown Messageformat, aborting\n" if ($debug); + $hash->{debugMethod}->(qq[$name: unknown Messageformat, aborting\n]); return ; } @@ -3140,6 +3142,7 @@ sub SIGNALduino_Attr { elsif ($aName eq 'debug') { $debug = $aVal; + $hash->{debugMethod} = ($cmd eq 'set' && $aVal == 1) ? \&main::Debug : sub { return; }; $hash->{logMethod}->($name, 3, "$name: Attr, setting debug to: " . $debug); } ## Change whitelist_IDs diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 3e21b081a..4eae8f51a 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2023-12-31_15:15:49 239695 FHEM/00_SIGNALduino.pm +UPD 2024-01-02_23:21:53 240267 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm diff --git a/t/FHEM/00_SIGNALduino/01_SIGNALduino_Attr.t b/t/FHEM/00_SIGNALduino/01_SIGNALduino_Attr.t index 65c571262..b36529210 100644 --- a/t/FHEM/00_SIGNALduino/01_SIGNALduino_Attr.t +++ b/t/FHEM/00_SIGNALduino/01_SIGNALduino_Attr.t @@ -4,6 +4,7 @@ use warnings; use Test2::V0; use Test2::Tools::Compare qw{is field U D match hash bag }; +use Test2::Tools::Ref; use Mock::Sub; use Test2::Todo; @@ -201,6 +202,68 @@ my @mockData = ( }, rValue => U(), }, + { + cmd => q[set], + deviceName => q[cc1101dummyDuino], + plan => 3, + testname => q[set debug 1], + input => qq[debug 1], + attrCheck => hash { + field debug => T(); + etc(); + }, + hashCheck => hash { + field debugMethod => \&main::Debug; + etc(); + }, + rValue => U(), + }, + { + cmd => q[set], + deviceName => q[cc1101dummyDuino], + plan => 4, + testname => q[set debug 0], + input => qq[debug 0], + attrCheck => hash { + field debug => F(); + etc(); + }, + hashCheck => hash { + field debugMethod => validator(sub { + my %params = @_; + my $got = $params{got}; + return 1 if ( $params{exists} && ref_is_not($got,\&main::Debug) ); + return 1; + } + ); + etc(); + }, + rValue => U(), + }, + { + cmd => q[del], + deviceName => q[cc1101dummyDuino], + plan => 4, + testname => q[del debug ], + input => qq[debug], + pre_code => sub { + CommandAttr(undef, qq[cc1101dummyDuino debug 1]); + }, + attrCheck => hash { + etc(); + }, + hashCheck => hash { + field debugMethod => validator(sub { + my %params = @_; + my $got = $params{got}; + return 1 if ( $params{exists} && ref_is_not($got,\&main::Debug) ); + return 0; + } + ); + etc(); + }, + rValue => U(), + }, ); plan (scalar @mockData + 2); diff --git a/t/FHEM/00_SIGNALduino/01_SIGNALduino_PatternExists.t b/t/FHEM/00_SIGNALduino/01_SIGNALduino_PatternExists.t index 853622687..8dcb0da1a 100644 --- a/t/FHEM/00_SIGNALduino/01_SIGNALduino_PatternExists.t +++ b/t/FHEM/00_SIGNALduino/01_SIGNALduino_PatternExists.t @@ -20,7 +20,7 @@ InternalTimer(time(), sub { plan(1); my $rmsg="MU;P0=7944;P1=-724;P2=742;P3=241;P4=-495;P5=483;P6=-248;D=01212121343434345656343434563434345634565656343434565634343434343434345634345634345634343434343434343434345634565634345656345634343456563421212121343434345656343434563434345634565656343434565634343434343434345634345634345634343434343434343434345634565634;CP=3;R=47;"; - my %msg_parts = SIGNALduino_Split_Message($rmsg, $targetHash); + my %msg_parts = SIGNALduino_Split_Message($rmsg, $target); my $clockabs= 480; $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}}; @@ -31,7 +31,7 @@ InternalTimer(time(), sub { plan(1); my $rmsg="MU;P0=740;P1=-2076;P2=381;P3=-4022;P4=-604;P5=152;P6=-1280;P7=-8692;D=012123232321245621212121232123232427212323212123232326;CP=2;R=228;"; - my %msg_parts = SIGNALduino_Split_Message($rmsg, $targetHash); + my %msg_parts = SIGNALduino_Split_Message($rmsg, $target); my $clockabs= 480; $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}}; @@ -42,7 +42,7 @@ InternalTimer(time(), sub { plan(1); my $rmsg="MU;P0=-2076;P1=479;P2=-963;P3=-492;P4=-22652;D=01213121213121212131313121313131312121313131313121212121313131212131313131313131313121313121313131313131313131312131212121313121412131212121212131213121213121212131313121313131312121313131313121212121313131212131313131313131313121313121313131313131313131;CP=1;R=26;O;"; - my %msg_parts = SIGNALduino_Split_Message($rmsg, $targetHash); + my %msg_parts = SIGNALduino_Split_Message($rmsg, $target); my $clockabs= 480; $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}}; @@ -54,7 +54,7 @@ InternalTimer(time(), sub { plan(3); my $rmsg="MU;P0=7944;P1=-724;P2=742;P3=241;P4=-495;P5=483;P6=-248;D=01212121343434345656343434563434345634565656343434565634343434343434345634345634345634343434343434343434345634565634345656345634343456563421212121343434345656343434563434345634565656343434565634343434343434345634345634345634343434343434343434345634565634;CP=3;R=47;"; - my %msg_parts = SIGNALduino_Split_Message($rmsg, $targetHash); + my %msg_parts = SIGNALduino_Split_Message($rmsg, $target); my $clockabs= 250; $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}}; @@ -69,7 +69,7 @@ InternalTimer(time(), sub { plan(3); my $rmsg="MU;P0=-9524;P1=364;P2=-414;P3=669;P4=-755;P5=-16076;CP=1;R=83;D=0123412341234123412341412341414141412351234123412341234123414123414141414123;e;w=0;"; - my %msg_parts = SIGNALduino_Split_Message($rmsg, $targetHash); + my %msg_parts = SIGNALduino_Split_Message($rmsg, $target); my $clockabs= 350; $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}}; From 2aa9529a58e25e0000d4fdd8b61ef01834d00ebc Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 3 Jan 2024 08:07:03 +0000 Subject: [PATCH 63/76] Automatic updated controls and CHANGED --- CHANGED | 5 +++++ controls_signalduino.txt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 7ab1214f4..63556fe82 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,8 @@ +2024-01-03 - Call debug via a coderef if enabled, otherwise return (#1169) + +* 00_SIGNALduino.pm + +added coderef for debug output$hash->{debugMethod} 2024-01-02 - Update tests part two | for the functional reliability of the module SD_UT (#1218) * added some tests for define and attr diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 4eae8f51a..33e688709 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2024-01-02_23:21:53 240267 FHEM/00_SIGNALduino.pm +UPD 2024-01-03_09:06:30 240267 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm From 1be59b7d2944df9ecf2412e942c37eaa62986662 Mon Sep 17 00:00:00 2001 From: HomeAutoUser Date: Wed, 3 Jan 2024 23:05:39 +0100 Subject: [PATCH 64/76] little fix 10_SD_GT and added tests (#1223) * Update 10_SD_GT.pm - replace tabs with spaces (no module restrictions) - fix META versionssupport - fix PERL WARNING - added tests - revised SVN numbre - remove old Internals VERSION_SD_GT - added Meta version --- FHEM/10_SD_GT.pm | 1080 ++++++++++++++++++----------------- controls_signalduino.txt | 2 +- t/FHEM/10_SD_GT/01_define.t | 36 ++ t/FHEM/10_SD_GT/03_set.t | 65 +++ t/FHEM/10_SD_GT/fhem.cfg | 4 +- 5 files changed, 647 insertions(+), 540 deletions(-) create mode 100644 t/FHEM/10_SD_GT/01_define.t create mode 100644 t/FHEM/10_SD_GT/03_set.t diff --git a/FHEM/10_SD_GT.pm b/FHEM/10_SD_GT.pm index 36f6c5a6a..6e51bf16f 100644 --- a/FHEM/10_SD_GT.pm +++ b/FHEM/10_SD_GT.pm @@ -1,11 +1,11 @@ ################################################################# -# $Id: 10_SD_GT.pm 26985 2023-01-06 12:07:45Z sidey79 $ +# $Id: 10_SD_GT.pm 27957 2024-01-03 12:07:45Z sidey79 $ # # The file is part of the SIGNALduino project. +# The purpose of this module is to support remote controls with QUIGG Gt-9000 protocol (based on code quigg_gt9000.c from pilight) +# +# 2019- - HomeAuto_User & elektron-bbs & sidey79 # -# 2019 - HomeAuto_User & elektron-bbs -# for remote controls using protocol QUIGG Gt-9000 -# based on code quigg_gt9000.c from pilight ################################################################# package SD_GT; @@ -15,44 +15,42 @@ use warnings; use GPUtils qw(GP_Import GP_Export); use FHEM::Meta; -our $VERSION = '1.1'; - # Export to main context with different name GP_Export(qw( - Initialize - ) + Initialize + ) ); ## Import der FHEM Funktionen BEGIN { - GP_Import(qw( - AssignIoPort - AttrVal - attr - defs - DoTrigger - IOWrite - IsIgnored - Log3 - modules - ReadingsVal - readingsBeginUpdate - readingsBulkUpdate - readingsEndUpdate - readingsSingleUpdate - )) + GP_Import(qw( + AssignIoPort + AttrVal + attr + defs + DoTrigger + IOWrite + IsIgnored + Log3 + modules + ReadingsVal + readingsBeginUpdate + readingsBulkUpdate + readingsEndUpdate + readingsSingleUpdate + )) }; sub Initialize { - my ($hash) = @_; - $hash->{DefFn} = \&Define; - $hash->{UndefFn} = \&Undef; - $hash->{SetFn} = \&Set; - $hash->{ParseFn} = \&Parse; - $hash->{Match} = '^P49#[A-Fa-f0-9]+'; - $hash->{AttrList} = "IODev repeats:1,2,3,4,5,6,7,8,9,12,15 showtime:0,1 disableSetAllFunction:0,1 do_not_notify:0,1 ignore:0,1 showtime:0,1 $main::readingFnAttributes"; - $hash->{AutoCreate} = {'SD_GT_LEARN' => {FILTER => '%NAME', autocreateThreshold => '5:180', GPLOT => q{}}}; - return FHEM::Meta::InitMod( __FILE__, $hash ); + my ($hash) = @_; + $hash->{DefFn} = \&Define; + $hash->{UndefFn} = \&Undef; + $hash->{SetFn} = \&Set; + $hash->{ParseFn} = \&Parse; + $hash->{Match} = '^P49#[A-Fa-f0-9]+'; + $hash->{AttrList} = "IODev repeats:1,2,3,4,5,6,7,8,9,12,15 showtime:0,1 disableSetAllFunction:0,1 do_not_notify:0,1 ignore:0,1 showtime:0,1 $main::readingFnAttributes"; + $hash->{AutoCreate} = {'SD_GT_LEARN' => {FILTER => '%NAME', autocreateThreshold => '5:180', GPLOT => q{}}}; + return FHEM::Meta::InitMod( __FILE__, $hash ); } sub parseSystemcodeHex; @@ -61,407 +59,412 @@ sub checkVersion; sub getSystemCodes; my %buttons = ( - '1' => { # Version 1 - 'hash' => [0x0, 0x9, 0xF, 0x4, 0xA, 0xD, 0x5, 0xB, 0x3, 0x2, 0x1, 0x7, 0xE, 0x6, 0xC, 0x8], - 'C' => { # unit C - 'unit' => 'A', - '1' => 'on', - '5' => 'on', - '6' => 'on', - 'A' => 'on', - '2' => 'off', - '7' => 'off', - '8' => 'off', - 'B' => 'off', + '1' => { # Version 1 + 'hash' => [0x0, 0x9, 0xF, 0x4, 0xA, 0xD, 0x5, 0xB, 0x3, 0x2, 0x1, 0x7, 0xE, 0x6, 0xC, 0x8], + 'C' => { # unit C + 'unit' => 'A', + '1' => 'on', + '5' => 'on', + '6' => 'on', + 'A' => 'on', + '2' => 'off', + '7' => 'off', + '8' => 'off', + 'B' => 'off', }, - '5' => { # unit 5 - 'unit' => 'B', - '0' => 'on', - '3' => 'on', - 'E' => 'on', - 'F' => 'on', - '4' => 'off', - '9' => 'off', - 'C' => 'off', - 'D' => 'off', + '5' => { # unit 5 + 'unit' => 'B', + '0' => 'on', + '3' => 'on', + 'E' => 'on', + 'F' => 'on', + '4' => 'off', + '9' => 'off', + 'C' => 'off', + 'D' => 'off', }, - 'E' => { # unit 5 - 'unit' => 'C', - '2' => 'on', - '7' => 'on', - '8' => 'on', - 'B' => 'on', - '1' => 'off', - '5' => 'off', - '6' => 'off', - 'A' => 'off', + 'E' => { # unit 5 + 'unit' => 'C', + '2' => 'on', + '7' => 'on', + '8' => 'on', + 'B' => 'on', + '1' => 'off', + '5' => 'off', + '6' => 'off', + 'A' => 'off', }, - '7' => { # unit 7 - 'unit' => 'D', - '4' => 'on', - '9' => 'on', - 'C' => 'on', - 'D' => 'on', - '0' => 'off', - '3' => 'off', - 'E' => 'off', - 'F' => 'off', + '7' => { # unit 7 + 'unit' => 'D', + '4' => 'on', + '9' => 'on', + 'C' => 'on', + 'D' => 'on', + '0' => 'off', + '3' => 'off', + 'E' => 'off', + 'F' => 'off', }, - '2' => { # unit 2 - 'unit' => 'all', - '2' => 'on', - '7' => 'on', - '8' => 'on', - 'B' => 'on', - '1' => 'off', - '5' => 'off', - '6' => 'off', - 'A' => 'off', + '2' => { # unit 2 + 'unit' => 'all', + '2' => 'on', + '7' => 'on', + '8' => 'on', + 'B' => 'on', + '1' => 'off', + '5' => 'off', + '6' => 'off', + 'A' => 'off', }, - }, - '2' => { # Version 2 - 'hash' => [0x0, 0x9, 0x5, 0xF, 0x3, 0x6, 0xC, 0x7, 0xE, 0xD, 0x1, 0xB, 0x2, 0xA, 0x4, 0x8], - '0' => { # unit 0 - 'unit' => 'A', - '3' => 'on', - '4' => 'on', - '7' => 'on', - 'B' => 'on', - '1' => 'off', - '2' => 'off', - '9' => 'off', - 'A' => 'off', + }, + '2' => { # Version 2 + 'hash' => [0x0, 0x9, 0x5, 0xF, 0x3, 0x6, 0xC, 0x7, 0xE, 0xD, 0x1, 0xB, 0x2, 0xA, 0x4, 0x8], + '0' => { # unit 0 + 'unit' => 'A', + '3' => 'on', + '4' => 'on', + '7' => 'on', + 'B' => 'on', + '1' => 'off', + '2' => 'off', + '9' => 'off', + 'A' => 'off', }, - '4' => { # unit 4 - 'unit' => 'B', - '3' => 'on', - '4' => 'on', - '7' => 'on', - 'B' => 'on', - '1' => 'off', - '2' => 'off', - '9' => 'off', - 'A' => 'off', + '4' => { # unit 4 + 'unit' => 'B', + '3' => 'on', + '4' => 'on', + '7' => 'on', + 'B' => 'on', + '1' => 'off', + '2' => 'off', + '9' => 'off', + 'A' => 'off', }, - 'C' => { # unit C - 'unit' => 'C', - '3' => 'on', - '4' => 'on', - '7' => 'on', - 'B' => 'on', - '1' => 'off', - '2' => 'off', - '9' => 'off', - 'A' => 'off', + 'C' => { # unit C + 'unit' => 'C', + '3' => 'on', + '4' => 'on', + '7' => 'on', + 'B' => 'on', + '1' => 'off', + '2' => 'off', + '9' => 'off', + 'A' => 'off', }, - '2' => { # unit 2 - 'unit' => 'D', - '1' => 'on', - '2' => 'on', - '9' => 'on', - 'A' => 'on', - '3' => 'off', - '4' => 'off', - '7' => 'off', - 'B' => 'off', + '2' => { # unit 2 + 'unit' => 'D', + '1' => 'on', + '2' => 'on', + '9' => 'on', + 'A' => 'on', + '3' => 'off', + '4' => 'off', + '7' => 'off', + 'B' => 'off', }, - 'A' => { # unit A - 'unit' => 'all', - '1' => 'on', - '2' => 'on', - '9' => 'on', - 'A' => 'on', - '3' => 'off', - '4' => 'off', - '7' => 'off', - 'B' => 'off', + 'A' => { # unit A + 'unit' => 'all', + '1' => 'on', + '2' => 'on', + '9' => 'on', + 'A' => 'on', + '3' => 'off', + '4' => 'off', + '7' => 'off', + 'B' => 'off', }, - } + } ); sub Define { - my ($hash, $def) = @_; - my @a = split m{\s+}xms , $def; - my $name = $hash->{NAME}; - my $iodevice; - my $ioname; - - if( @a < 3 ) { return 'SD_GT: wrong syntax for define, must be: define SD_GT ' }; - - $hash->{DEF} = $a[2]; - if ($a[3]) { $iodevice = $a[3] } - if ($a[4]) { readingsSingleUpdate($hash,'SystemCode',$a[4],1) } - if ($a[5]) { readingsSingleUpdate($hash,'Version',$a[5],1) } - $hash->{VersionModule} = $VERSION; - - $modules{SD_GT}{defptr}{$hash->{DEF}} = $hash; - if (exists $modules{SD_GT}{defptr}{ioname} && !$iodevice) { $ioname = $modules{SD_GT}{defptr}{ioname} }; - if (not $iodevice) { $iodevice = $ioname } - - AssignIoPort($hash, $iodevice); - return; + my ($hash, $def) = @_; + my @a = split m{\s+}xms , $def; + my $name = $hash->{NAME}; + my $iodevice; + my $ioname; + + # Anzeigen der Modulversion (Internal FVERSION) über FHEM::Meta, Variable in META.json Abschnitt erforderlich: "version": "v1.0.0", siehe https://wiki.fhem.de/wiki/Meta + return $@ unless ( FHEM::Meta::SetInternals($hash) ); + + if( @a < 3 ) { return 'SD_GT: wrong syntax for define, must be: define SD_GT ' }; + + $hash->{DEF} = $a[2]; + if ($a[3]) { $iodevice = $a[3] } + if ($a[4]) { readingsSingleUpdate($hash,'SystemCode',$a[4],1) } + if ($a[5]) { readingsSingleUpdate($hash,'Version',$a[5],1) } + + $modules{SD_GT}{defptr}{$hash->{DEF}} = $hash; + if (exists $modules{SD_GT}{defptr}{ioname} && !$iodevice) { $ioname = $modules{SD_GT}{defptr}{ioname} }; + if (not $iodevice) { $iodevice = $ioname } + + AssignIoPort($hash, $iodevice); + return; } sub Set { - my ($hash, $name, $cmd, @a) = @_; - my $ioname = $hash->{IODev}{NAME}; - my $repeats = AttrVal($name,'repeats', '5'); - my $ret = undef; - my $EMPTY = q{}; - - if (not defined $cmd) { return "The command \"set $name\" requires at least one of the arguments: \"on\" or \"off\"" }; - - if ($cmd eq q{?}) { - if ($hash->{DEF} ne 'LEARN') { - if (ReadingsVal($name, 'CodesOff', $EMPTY) ne $EMPTY) { $ret .= 'off:noArg ' }; - if (ReadingsVal($name, 'CodesOn', $EMPTY) ne $EMPTY) { $ret .= 'on:noArg ' }; - } - return $ret; - } - - my $sendCodesStr; - my @sendCodesAr; - my $sendCodesCnt; - my $sendCode = ReadingsVal($name, 'SendCode', $EMPTY); # load last sendCode - if ($cmd eq 'on') { $sendCodesStr = ReadingsVal($name, 'CodesOn', $EMPTY) }; - if ($cmd eq 'off') { $sendCodesStr = ReadingsVal($name, 'CodesOff', $EMPTY) }; - @sendCodesAr = split /[,]/xms , $sendCodesStr; - $sendCodesCnt = scalar @sendCodesAr; - if ($sendCodesCnt < 1) { return "$name: No codes available for sending, please press buttons on your remote for learning." }; - my ($index) = grep { $sendCodesAr[$_] eq $sendCode } (0 .. $sendCodesCnt - 1); - if (not defined $index) { $index = -1 }; - $index++; - if ($index >= $sendCodesCnt) { $index = 0 }; - $sendCode = $sendCodesAr[$index]; # new sendCode - - Log3 $name, 3, "$ioname: SD_GT set $name $cmd"; - Log3 $name, 4, "$ioname: SD_GT_Set $name $cmd ($sendCodesCnt codes $sendCodesStr - send $sendCode)"; - - if ($hash->{DEF} =~ /_all$/xms && AttrVal($name,'disableSetAllFunction', 0) == 0) { # send button all - my $systemCode = ReadingsVal($name, 'SystemCode', $EMPTY); - foreach my $d (keys %defs) { # sucht angelegte SD_GT mit gleichem Sytemcode - if(defined($defs{$d}) && $defs{$d}{TYPE} eq 'SD_GT' && $defs{$d}{DEF} =~ /$systemCode/xms && $defs{$d}{DEF} =~ /[ABCD]$/xms && ReadingsVal($d, 'state', $EMPTY) ne $cmd) { - readingsSingleUpdate($defs{$d}, 'state' , $cmd , 1); - Log3 $name, 3, "$ioname: SD_GT set $d $cmd"; - } - } - } - - my $msg = 'P49#0x' . $sendCode . '#R' . $repeats; - Log3 $name, 5, "$ioname: $name SD_GT_Set first set sendMsg $msg"; - IOWrite($hash, 'sendMsg', $msg); - $msg = 'P49.1#0x' . $sendCode . '#R' . $repeats; - Log3 $name, 5, "$ioname: $name SD_GT_Set second set sendMsg $msg"; - IOWrite($hash, 'sendMsg', $msg); - - readingsBeginUpdate($hash); - readingsBulkUpdate($hash, 'state', $cmd); - readingsBulkUpdate($hash, 'SendCode', $sendCode, 0); - readingsEndUpdate($hash, 1); - return $ret; + my ($hash, $name, $cmd, @a) = @_; + my $ioname = $hash->{IODev}{NAME}; + my $repeats = AttrVal($name,'repeats', '5'); + my $ret = undef; + my $EMPTY = q{}; + + if (not defined $cmd) { return "The command \"set $name\" requires at least one of the arguments: \"on\" or \"off\"" }; + + if ($cmd eq q{?}) { + if ($hash->{DEF} ne 'LEARN') { + if (ReadingsVal($name, 'CodesOff', $EMPTY) ne $EMPTY) { $ret .= 'off:noArg ' }; + if (ReadingsVal($name, 'CodesOn', $EMPTY) ne $EMPTY) { $ret .= 'on:noArg ' }; + } + return $ret; + } + + my $sendCodesStr; + my @sendCodesAr; + my $sendCodesCnt; + my $sendCode = ReadingsVal($name, 'SendCode', $EMPTY); # load last sendCode + if ($cmd eq 'on') { $sendCodesStr = ReadingsVal($name, 'CodesOn', $EMPTY) }; + if ($cmd eq 'off') { $sendCodesStr = ReadingsVal($name, 'CodesOff', $EMPTY) }; + @sendCodesAr = split /[,]/xms , $sendCodesStr; + $sendCodesCnt = scalar @sendCodesAr; + if ($sendCodesCnt < 1) { return "$name: No codes available for sending, please press buttons on your remote for learning." }; + my ($index) = grep { $sendCodesAr[$_] eq $sendCode } (0 .. $sendCodesCnt - 1); + if (not defined $index) { $index = -1 }; + $index++; + if ($index >= $sendCodesCnt) { $index = 0 }; + $sendCode = $sendCodesAr[$index]; # new sendCode + + Log3 $name, 3, "$ioname: SD_GT set $name $cmd"; + Log3 $name, 4, "$ioname: SD_GT_Set $name $cmd ($sendCodesCnt codes $sendCodesStr - send $sendCode)"; + + if ($hash->{DEF} =~ /_all$/xms && AttrVal($name,'disableSetAllFunction', 0) == 0) { # send button all + my $systemCode = ReadingsVal($name, 'SystemCode', $EMPTY); + foreach my $d (keys %defs) { # sucht angelegte SD_GT mit gleichem Sytemcode + if(defined($defs{$d}) && $defs{$d}{TYPE} eq 'SD_GT' && $defs{$d}{DEF} =~ /$systemCode/xms && $defs{$d}{DEF} =~ /[ABCD]$/xms && ReadingsVal($d, 'state', $EMPTY) ne $cmd) { + readingsSingleUpdate($defs{$d}, 'state' , $cmd , 1); + Log3 $name, 3, "$ioname: SD_GT set $d $cmd"; + } + } + } + + my $msg = 'P49#0x' . $sendCode . '#R' . $repeats; + Log3 $name, 5, "$ioname: $name SD_GT_Set first set sendMsg $msg"; + IOWrite($hash, 'sendMsg', $msg); + $msg = 'P49.1#0x' . $sendCode . '#R' . $repeats; + Log3 $name, 5, "$ioname: $name SD_GT_Set second set sendMsg $msg"; + IOWrite($hash, 'sendMsg', $msg); + + readingsBeginUpdate($hash); + readingsBulkUpdate($hash, 'state', $cmd); + readingsBulkUpdate($hash, 'SendCode', $sendCode, 0); + readingsEndUpdate($hash, 1); + return $ret; } sub Undef { - my ($hash, $name) = @_; - if(defined($hash->{DEF}) && defined($modules{SD_GT}{defptr}{$hash->{DEF}})) {delete($modules{SD_GT}{defptr}{$hash->{DEF}}) }; - return; + my ($hash, $name) = @_; + if(defined($hash->{DEF}) && defined($modules{SD_GT}{defptr}{$hash->{DEF}})) {delete($modules{SD_GT}{defptr}{$hash->{DEF}}) }; + return; } sub Parse { - my ($iohash, $msg) = @_; - my $ioname = $iohash->{NAME}; - my ($protocol,$rawData) = split /[#]/xms , $msg; - my $devicedef; - my $version = 0; - my $systemCode = 0; - my $level; # A, B, C, D or all - my $state; - my $EMPTY = q{}; - - my ($systemCode1, $systemCode2) = getSystemCodes($rawData); - Log3 $ioname, 4, "$ioname: SD_GT_Parse $rawData, possible codes version 1 $systemCode1 or version 2 $systemCode2"; - - # sucht Version und SytemCode in bereits angelegten SD_GT - foreach my $d (keys %defs) { - if($defs{$d}{TYPE} eq 'SD_GT' && defined $defs{$d}) { - $version = ReadingsVal($d, 'Version', 0) ; - $systemCode = ReadingsVal($d, 'SystemCode', 0); - Log3 $iohash, 4, "$ioname: SD_GT_Parse found $d, version $version, systemCode $systemCode"; - last if ($systemCode1 eq $systemCode && $version == 1); - last if ($systemCode2 eq $systemCode && $version == 2); - } - $version = 0; # reset version - $systemCode = 0; # reset systemCode - } - Log3 $ioname, 4, "$ioname: SD_GT_Parse $rawData, found version $version with systemCode $systemCode"; - - if ($version == 0 && $systemCode eq '0') { # Version und systemCode nicht gefunden - $devicedef = 'LEARN'; - } else { # Version und systemCode gefunden - my $statecode = substr $rawData,4,1; - my $unit = substr $rawData,5,1; - $state = $buttons{$version}->{$unit}->{$statecode}; - $level = $buttons{$version}->{$unit}->{'unit'}; - $devicedef = $systemCode . '_' . $level; - Log3 $ioname, 4, "$ioname: SD_GT_Parse code $rawData, device $devicedef"; - } - - my $def = $modules{SD_GT}{defptr}{$devicedef}; - $modules{SD_GT}{defptr}{ioname} = $ioname; - if(!$def) { - Log3 $ioname, 1, "$ioname: SD_GT_Parse UNDEFINED SD_GT_$devicedef device detected"; - return "UNDEFINED SD_GT_$devicedef SD_GT $devicedef"; - } - my $hash = $def; - my $name = $hash->{NAME}; - if (IsIgnored($name)) { return $EMPTY }; - - my $learnCodesStr; - my @learnCodesAr; - my $learnCodesCnt; - - if ($devicedef eq 'LEARN') { - $learnCodesStr = ReadingsVal($name, 'LearnCodes', $EMPTY ); - @learnCodesAr = split /[,]/xms , $learnCodesStr; - $learnCodesCnt = scalar @learnCodesAr; - Log3 $name, 3, "$ioname: $name $rawData, $learnCodesCnt learned codes $learnCodesStr"; - if ($learnCodesCnt == 0) { # erster Code empfangen - push @learnCodesAr, $rawData ; - $learnCodesCnt++; - Log3 $name, 3, "$ioname: $name code $rawData is first plausible code"; - } elsif (grep {/$rawData/xms} @learnCodesAr) { # Code schon vorhanden - $state = 'code already registered, please press another button'; - Log3 $name, 3, "$ioname: $name code $rawData already registered ($learnCodesStr)"; - } else { # Code pruefen und evtl. uebernehmen - push @learnCodesAr, $rawData; - ($version, $systemCode) = checkVersion(@learnCodesAr); - if ($version == 0) { # Fehler Version oder Systemcode - if ($learnCodesCnt == 1) { - @learnCodesAr = (); - $systemCode = 0; - } else { - pop @learnCodesAr; # Wir entfernen das letzte Element des Arrays - } - $state = 'version not unique, please press another button'; - Log3 $name, 3, "$ioname: $name ERROR - version not unique"; - } else { # Version und Code OK - $learnCodesCnt++; - Log3 $name, 3, "$ioname: $name code $learnCodesCnt $rawData, version $version, systemCode $systemCode"; - } - } - if (not defined $state) { $state = "learned code $learnCodesCnt, please press another button" }; - } - - if ($state eq 'on') { - $learnCodesStr = ReadingsVal($name, 'CodesOn', $EMPTY); - @learnCodesAr = split /[,]/xms , $learnCodesStr; - if (not grep {/$rawData/xms} @learnCodesAr) { push @learnCodesAr, $rawData }; - } - if ($state eq 'off') { - $learnCodesStr = ReadingsVal($name, 'CodesOff', $EMPTY); - @learnCodesAr = split /[,]/xms , $learnCodesStr; - if (not grep {/$rawData/xms} @learnCodesAr) { push @learnCodesAr, $rawData }; - } - - if (defined $level) { Log3 $name, 4, "$ioname: SD_GT_Parse code $rawData, $name, button $level $state" }; - - if (defined $level && $level eq 'all' && AttrVal($name,'disableSetAllFunction', 0) == 0) { # received button all - foreach my $d (keys %defs) { # sucht angelegte SD_GT mit gleichem Sytemcode - if(defined($defs{$d}) && $defs{$d}{TYPE} eq 'SD_GT' && $defs{$d}{DEF} =~ /$systemCode/xms && $defs{$d}{DEF} =~ /[ABCD]$/xms && ReadingsVal($d, 'state', $EMPTY) ne $state) { - readingsSingleUpdate($defs{$d}, 'state' , $state , 1); - DoTrigger($d, undef, 0); - Log3 $name, 4, "$ioname: SD_GT_Parse received button $level, set $d $state"; - } - } - } - - $learnCodesStr = join q{,} , @learnCodesAr; - my $systemCodeDec = hex $systemCode; - - readingsBeginUpdate($hash); - readingsBulkUpdate($hash, 'state', $state); - if ($devicedef eq 'LEARN') { readingsBulkUpdate($hash, 'LearnCodes', $learnCodesStr) }; - if ($state eq 'on') { readingsBulkUpdate($hash, 'CodesOn', $learnCodesStr, 0) }; - if ($state eq 'off') { readingsBulkUpdate($hash, 'CodesOff', $learnCodesStr, 0) }; - if ($devicedef ne 'LEARN' || $learnCodesCnt > 5) { - if ($version != 0) { readingsBulkUpdate($hash, 'Version', $version, 0) }; - if ($systemCode ne '0') { readingsBulkUpdate($hash, 'SystemCode', $systemCode, 0) }; - if ($systemCodeDec != 0) { readingsBulkUpdate($hash, 'SystemCodeDec', $systemCodeDec, 0) }; - } - readingsEndUpdate($hash, 1); - return $name; + my ($iohash, $msg) = @_; + my $ioname = $iohash->{NAME}; + my ($protocol,$rawData) = split /[#]/xms , $msg; + my $devicedef; + my $version = 0; + my $systemCode = 0; + my $level; # A, B, C, D or all + my $state; + my $EMPTY = q{}; + + my ($systemCode1, $systemCode2) = getSystemCodes($rawData); + Log3 $ioname, 4, "$ioname: SD_GT_Parse $rawData, possible codes version 1 $systemCode1 or version 2 $systemCode2"; + + # sucht Version und SytemCode in bereits angelegten SD_GT + foreach my $d (keys %defs) { + if($defs{$d}{TYPE} eq 'SD_GT' && defined $defs{$d}) { + $version = ReadingsVal($d, 'Version', 0) ; + $systemCode = ReadingsVal($d, 'SystemCode', 0); + Log3 $iohash, 4, "$ioname: SD_GT_Parse found $d, version $version, systemCode $systemCode"; + last if ($systemCode1 eq $systemCode && $version == 1); + last if ($systemCode2 eq $systemCode && $version == 2); + } + $version = 0; # reset version + $systemCode = 0; # reset systemCode + } + Log3 $ioname, 4, "$ioname: SD_GT_Parse $rawData, found version $version with systemCode $systemCode"; + + if ($version == 0 && $systemCode eq '0') { # Version und systemCode nicht gefunden + $devicedef = 'LEARN'; + } else { # Version und systemCode gefunden + my $statecode = substr $rawData,4,1; + my $unit = substr $rawData,5,1; + $state = $buttons{$version}->{$unit}->{$statecode}; + $level = $buttons{$version}->{$unit}->{'unit'}; + $devicedef = $systemCode . '_' . $level; + Log3 $ioname, 4, "$ioname: SD_GT_Parse code $rawData, device $devicedef"; + } + + my $def = $modules{SD_GT}{defptr}{$devicedef}; + $modules{SD_GT}{defptr}{ioname} = $ioname; + if(!$def) { + Log3 $ioname, 1, "$ioname: SD_GT_Parse UNDEFINED SD_GT_$devicedef device detected"; + return "UNDEFINED SD_GT_$devicedef SD_GT $devicedef"; + } + my $hash = $def; + my $name = $hash->{NAME}; + if (IsIgnored($name)) { return $EMPTY }; + + my $learnCodesStr; + my @learnCodesAr; + my $learnCodesCnt; + + if ($devicedef eq 'LEARN') { + $learnCodesStr = ReadingsVal($name, 'LearnCodes', $EMPTY ); + @learnCodesAr = split /[,]/xms , $learnCodesStr; + $learnCodesCnt = scalar @learnCodesAr; + Log3 $name, 3, "$ioname: $name $rawData, $learnCodesCnt learned codes $learnCodesStr"; + if ($learnCodesCnt == 0) { # erster Code empfangen + push @learnCodesAr, $rawData ; + $learnCodesCnt++; + Log3 $name, 3, "$ioname: $name code $rawData is first plausible code"; + } elsif (grep {/$rawData/xms} @learnCodesAr) { # Code schon vorhanden + $state = 'code already registered, please press another button'; + Log3 $name, 3, "$ioname: $name code $rawData already registered ($learnCodesStr)"; + } else { # Code pruefen und evtl. uebernehmen + push @learnCodesAr, $rawData; + ($version, $systemCode) = checkVersion(@learnCodesAr); + if ($version == 0) { # Fehler Version oder Systemcode + if ($learnCodesCnt == 1) { + @learnCodesAr = (); + $systemCode = 0; + } else { + pop @learnCodesAr; # Wir entfernen das letzte Element des Arrays + } + $state = 'version not unique, please press another button'; + Log3 $name, 3, "$ioname: $name ERROR - version not unique"; + } else { # Version und Code OK + $learnCodesCnt++; + Log3 $name, 3, "$ioname: $name code $learnCodesCnt $rawData, version $version, systemCode $systemCode"; + } + } + if (not defined $state) { $state = "learned code $learnCodesCnt, please press another button" }; + } + + ### additional test from state, as sometimes the state is unknown when receiving --> PEARL WARNING: Interception + if (not defined $state) { $state = "status unknown, please press another button" }; + + if ($state eq 'on') { + $learnCodesStr = ReadingsVal($name, 'CodesOn', $EMPTY); + @learnCodesAr = split /[,]/xms , $learnCodesStr; + if (not grep {/$rawData/xms} @learnCodesAr) { push @learnCodesAr, $rawData }; + } + if ($state eq 'off') { + $learnCodesStr = ReadingsVal($name, 'CodesOff', $EMPTY); + @learnCodesAr = split /[,]/xms , $learnCodesStr; + if (not grep {/$rawData/xms} @learnCodesAr) { push @learnCodesAr, $rawData }; + } + + if (defined $level) { Log3 $name, 4, "$ioname: SD_GT_Parse code $rawData, $name, button $level $state" }; + + if (defined $level && $level eq 'all' && AttrVal($name,'disableSetAllFunction', 0) == 0) { # received button all + foreach my $d (keys %defs) { # sucht angelegte SD_GT mit gleichem Sytemcode + if(defined($defs{$d}) && $defs{$d}{TYPE} eq 'SD_GT' && $defs{$d}{DEF} =~ /$systemCode/xms && $defs{$d}{DEF} =~ /[ABCD]$/xms && ReadingsVal($d, 'state', $EMPTY) ne $state) { + readingsSingleUpdate($defs{$d}, 'state' , $state , 1); + DoTrigger($d, undef, 0); + Log3 $name, 4, "$ioname: SD_GT_Parse received button $level, set $d $state"; + } + } + } + + $learnCodesStr = join q{,} , @learnCodesAr; + my $systemCodeDec = hex $systemCode; + + readingsBeginUpdate($hash); + readingsBulkUpdate($hash, 'state', $state); + if ($devicedef eq 'LEARN') { readingsBulkUpdate($hash, 'LearnCodes', $learnCodesStr) }; + if ($state eq 'on') { readingsBulkUpdate($hash, 'CodesOn', $learnCodesStr, 0) }; + if ($state eq 'off') { readingsBulkUpdate($hash, 'CodesOff', $learnCodesStr, 0) }; + if ($devicedef ne 'LEARN' || $learnCodesCnt > 5) { + if ($version != 0) { readingsBulkUpdate($hash, 'Version', $version, 0) }; + if ($systemCode ne '0') { readingsBulkUpdate($hash, 'SystemCode', $systemCode, 0) }; + if ($systemCodeDec != 0) { readingsBulkUpdate($hash, 'SystemCodeDec', $systemCodeDec, 0) }; + } + readingsEndUpdate($hash, 1); + return $name; } sub parseSystemcodeHex { - my $rawData = shift; - my $version = shift; - my $systemCode1dec = hex substr $rawData,0,1; - my $systemCode2enc = hex substr $rawData,1,1; - my $systemCode2dec = 0; # calculate all codes with base syscode2 = 0 - my $systemCode3enc = hex substr $rawData,2,1; - my $systemCode3dec = decodePayload($systemCode3enc, $systemCode2enc, $systemCode1dec, $version); - my $systemCode4enc = hex substr $rawData,3,1; - my $systemCode4dec = decodePayload($systemCode4enc, $systemCode3enc, $systemCode1dec, $version); - my $systemCode5enc = hex substr $rawData,4,1; - my $systemCode5dec = decodePayload($systemCode5enc, $systemCode4enc, $systemCode1dec, $version); - my $systemCode = ($systemCode1dec<<16) + ($systemCode2dec<<12) + ($systemCode3dec<<8) + ($systemCode4dec<<4) + $systemCode5dec; - my $systemCodeHex = sprintf '%X', $systemCode; - return $systemCodeHex; + my $rawData = shift; + my $version = shift; + my $systemCode1dec = hex substr $rawData,0,1; + my $systemCode2enc = hex substr $rawData,1,1; + my $systemCode2dec = 0; # calculate all codes with base syscode2 = 0 + my $systemCode3enc = hex substr $rawData,2,1; + my $systemCode3dec = decodePayload($systemCode3enc, $systemCode2enc, $systemCode1dec, $version); + my $systemCode4enc = hex substr $rawData,3,1; + my $systemCode4dec = decodePayload($systemCode4enc, $systemCode3enc, $systemCode1dec, $version); + my $systemCode5enc = hex substr $rawData,4,1; + my $systemCode5dec = decodePayload($systemCode5enc, $systemCode4enc, $systemCode1dec, $version); + my $systemCode = ($systemCode1dec<<16) + ($systemCode2dec<<12) + ($systemCode3dec<<8) + ($systemCode4dec<<4) + $systemCode5dec; + my $systemCodeHex = sprintf '%X', $systemCode; + return $systemCodeHex; } sub checkVersion { - my (@rawData) = @_; - my $anzahl = scalar @rawData; - my $x = 0; - my @codes; - my $systemCode = q{}; - my $version = 1; - while ($x < $anzahl) { - $systemCode = parseSystemcodeHex($rawData[$x], $version); - if ( not grep {/$systemCode/xms} @codes) { - push @codes, $systemCode; - } - $x++; - } - $anzahl = scalar @codes; - $x = 0; - if ($anzahl > 1) { - $version = 2; - @codes =(); - while ($x < $anzahl) { - $systemCode = parseSystemcodeHex($rawData[$x], $version); - if ( not grep {/$systemCode/xms} @codes) { - push @codes, $systemCode; - } - $x++; - } - $anzahl = scalar @codes; - } - if ($anzahl > 1) { # keine eindeutige Version erkannt - $version = 0; - $systemCode = 0; - } - return ($version, $systemCode); + my (@rawData) = @_; + my $anzahl = scalar @rawData; + my $x = 0; + my @codes; + my $systemCode = q{}; + my $version = 1; + while ($x < $anzahl) { + $systemCode = parseSystemcodeHex($rawData[$x], $version); + if ( not grep {/$systemCode/xms} @codes) { + push @codes, $systemCode; + } + $x++; + } + $anzahl = scalar @codes; + $x = 0; + if ($anzahl > 1) { + $version = 2; + @codes =(); + while ($x < $anzahl) { + $systemCode = parseSystemcodeHex($rawData[$x], $version); + if ( not grep {/$systemCode/xms} @codes) { + push @codes, $systemCode; + } + $x++; + } + $anzahl = scalar @codes; + } + if ($anzahl > 1) { # keine eindeutige Version erkannt + $version = 0; + $systemCode = 0; + } + return ($version, $systemCode); } sub decodePayload { - my $payload = shift; - my $index = shift; - my $syscodetype = shift; - my $version = shift; - my $ret = -1; - if ($version >= 1) { - my @gt9000_hash = @{ $buttons{$version}->{'hash'} }; - $ret = int($payload) ^ int($gt9000_hash[$index]); - } - return $ret; + my $payload = shift; + my $index = shift; + my $syscodetype = shift; + my $version = shift; + my $ret = -1; + if ($version >= 1) { + my @gt9000_hash = @{ $buttons{$version}->{'hash'} }; + $ret = int($payload) ^ int($gt9000_hash[$index]); + } + return $ret; } sub getSystemCodes { - my ($rawData) = shift; - my $systemCode1 = parseSystemcodeHex($rawData, 1); - my $systemCode2 = parseSystemcodeHex($rawData, 2); - return ($systemCode1, $systemCode2); + my ($rawData) = shift; + my $systemCode1 = parseSystemcodeHex($rawData, 1); + my $systemCode2 = parseSystemcodeHex($rawData, 2); + return ($systemCode1, $systemCode2); } 1; @@ -476,75 +479,75 @@ sub getSystemCodes {

              SD_GT

                - The SD_GT module decodes and sends messages using the GT-9000 protocol. - This protocol is used by a variety of remote controls, which are traded under different names. - The messages are received and sent by a SIGNALduino. -

                - The following models are currently known that use this protocol: -

                -
                  -
                • EASY HOME RCT DS1 CR-A 3725
                • -
                • Globaltronics GT-3000, GT-9000
                • -
                • OBI Emil Lux / CMI Art.Nr.: 315606
                • -
                • SilverCrest FSS B 20-A (3726) / 66538
                • -
                • Tec Star Modell 2335191R
                • -
                • uniTEC 48110 Funkfernschalterset (Receiver 55006x10, Transmitter: 50074)
                • -
                -
                - New devices are usually automatically created in FHEM via autocreate. - Since the protocol uses encryption, manual setup is virtually impossible. -

                - The remote control is set up in a learning process. - After receiving at least 5 messages within 3 minutes, a new device "SD_GT_LEARN" will be created. - Setting up the individual buttons of the remote control starts after receiving another 6 different messages. - This learning process is signaled with the status "learned code 4, please press another button", whereby the counter displays the number of currently registered codes. -
                - All buttons of the remote control must now be pressed several times. - Upon successful decoding of the radio signals, the individual keys are created. -

                - The programming of the remote control is finished, if all key levels (A, B, C, D and possibly all) are created and the commands "on" and "off" are displayed. - For each device, the Readings "CodesOn" and "CodesOff" must be set up with at least one code each. - Without these learned codes no sending is possible. -
                - The device "SD_GT_LEARN" is no longer needed and can be deleted. -

                - If several remote controls are to be taught in, this process must be carried out separately for each remote control. - The "SD_GT_LEARN" device must be deleted before starting to learn a new remote control. -

                - - -

                Attribute:

                - -

                - -

                Readings:

                -
                  -
                • CodesOff: one to four hexadecimal codes for "off" that have been taught and used for sending
                • -
                • CodesOn: one to four hexadecimal codes for "on" that have been learned and used for sending
                • -
                • SendCode: the last sent code
                • -
                • SystemCode: System code hexadecimal, the same for all buttons on a remote control
                • -
                • SystemCodeDec: System code in decimal representation
                • -
                • Version: Version of the encryption used
                • -
                • state: State, "on" or "off"
                • -
                + The SD_GT module decodes and sends messages using the GT-9000 protocol. + This protocol is used by a variety of remote controls, which are traded under different names. + The messages are received and sent by a SIGNALduino. +

                + The following models are currently known that use this protocol: +

                +
                  +
                • EASY HOME RCT DS1 CR-A 3725
                • +
                • Globaltronics GT-3000, GT-9000
                • +
                • OBI Emil Lux / CMI Art.Nr.: 315606
                • +
                • SilverCrest FSS B 20-A (3726) / 66538
                • +
                • Tec Star Modell 2335191R
                • +
                • uniTEC 48110 Funkfernschalterset (Receiver 55006x10, Transmitter: 50074)
                • +
                +
                + New devices are usually automatically created in FHEM via autocreate. + Since the protocol uses encryption, manual setup is virtually impossible. +

                + The remote control is set up in a learning process. + After receiving at least 5 messages within 3 minutes, a new device "SD_GT_LEARN" will be created. + Setting up the individual buttons of the remote control starts after receiving another 6 different messages. + This learning process is signaled with the status "learned code 4, please press another button", whereby the counter displays the number of currently registered codes. +
                + All buttons of the remote control must now be pressed several times. + Upon successful decoding of the radio signals, the individual keys are created. +

                + The programming of the remote control is finished, if all key levels (A, B, C, D and possibly all) are created and the commands "on" and "off" are displayed. + For each device, the Readings "CodesOn" and "CodesOff" must be set up with at least one code each. + Without these learned codes no sending is possible. +
                + The device "SD_GT_LEARN" is no longer needed and can be deleted. +

                + If several remote controls are to be taught in, this process must be carried out separately for each remote control. + The "SD_GT_LEARN" device must be deleted before starting to learn a new remote control. +

                + + +

                Attribute:

                + +

                + +

                Readings:

                +
                  +
                • CodesOff: one to four hexadecimal codes for "off" that have been taught and used for sending
                • +
                • CodesOn: one to four hexadecimal codes for "on" that have been learned and used for sending
                • +
                • SendCode: the last sent code
                • +
                • SystemCode: System code hexadecimal, the same for all buttons on a remote control
                • +
                • SystemCodeDec: System code in decimal representation
                • +
                • Version: Version of the encryption used
                • +
                • state: State, "on" or "off"
                • +
              =end html @@ -554,75 +557,75 @@ sub getSystemCodes {

              SD_GT

                - Das SD_GT-Modul dekodiert und sendet Nachrichten unter Verwendung des Protokolls vom Typ GT-9000. - Dieses Protokoll wird von einer Vielzahl Fernbedienungen verwendet, die unter verschiedene Namen gehandelt werden. - Die Nachrichten werden von einem SIGNALduino empfangen und gesendet. -

                - Folgende Modelle sind zur Zeit bekannt, die dieses Protokoll verwenden: -

                -
                  -
                • EASY HOME RCT DS1 CR-A 3725
                • -
                • Globaltronics GT-3000, GT-9000
                • -
                • OBI Emil Lux / CMI Art.Nr.: 315606
                • -
                • SilverCrest FSS B 20-A (3726) / 66538
                • -
                • Tec Star Modell 2335191R
                • -
                • uniTEC 48110 Funkfernschalterset (Receiver 55006x10, Transmitter: 50074)
                • -
                -
                - Neue Geräte werden in FHEM normalerweise per autocreate automatisch angelegt. - Da das Protokoll eine Verschlüsselung nutzt, ist ein manuelles Einrichten praktisch nicht möglich. -

                - Das Einrichten der Fernbedienung erfolgt in einem Lernprozess. - Nach dem Empfang von mindestens 5 Nachrichten innerhalb von 3 Minuten wird ein neues Gerät "SD_GT_LEARN" angelegt. - Das Einrichten der einzelnen Tasten der Fernbedienung beginnt nach dem Empfang weiterer 6 verschiedener Nachrichten. - Dieser Lernprozess wird mit dem Status "learned code 4, please press another button" signalisiert, wobei der Zähler die Anzahl der aktuell registrierten Codes anzeigt. -
                - Es müssen jetzt sämtliche Tasten der Fernbedienung mehrmals betätigt werden. - Bei erfolgreicher Dekodierung der Funksignale werden dabei die einzelnen Tasten angelegt. -

                - Das Anlernen der Fernbedienung ist beendet, wenn alle Tastenebenen (A, B, C, D und evtl. all) angelegt sind und jeweils die Befehle "on" und "off" angezeigt werden. - Bei jedem Gerät müssen die Readings "CodesOn" und "CodesOff" mit jeweils mindestens einem Code eingerichtet sein. - Ohne diese gelernten Codes ist kein Senden möglich. -
                - Das Gerät "SD_GT_LEARN" wird jetzt nicht mehr benötigt und kann gelöscht werden. -

                - Sollen mehrere Fernbedienungen angelernt werden, muss dieser Prozess für jede Fernbedienung getrennt durchgeführt werden. - Das Gerät "SD_GT_LEARN" muss jeweils vor Beginn des Anlernens einer neuen Fernbedienung gelöscht werden. -

                - - -

                Attribute:

                - -

                - -

                Readings:

                -
                  -
                • CodesOff: ein bis vier hexadezimale Codes für "off", die angelernt wurden und zum Senden verwendet werden
                • -
                • CodesOn: ein bis vier hexadezimale Codes für "on", die angelernt wurden und zum Senden verwendet werden
                • -
                • SendCode: der zuletzt gesendete Code
                • -
                • SystemCode: Systemcode hexadezimal, bei allen Tasten einer Fernbedienung gleich
                • -
                • SystemCodeDec: Systemcode in dezimaler Darstellng
                • -
                • Version: Version der verwendeten Verschlüsselung
                • -
                • state: Zustand, "on" oder "off"
                • -
                + Das SD_GT-Modul dekodiert und sendet Nachrichten unter Verwendung des Protokolls vom Typ GT-9000. + Dieses Protokoll wird von einer Vielzahl Fernbedienungen verwendet, die unter verschiedene Namen gehandelt werden. + Die Nachrichten werden von einem SIGNALduino empfangen und gesendet. +

                + Folgende Modelle sind zur Zeit bekannt, die dieses Protokoll verwenden: +

                +
                  +
                • EASY HOME RCT DS1 CR-A 3725
                • +
                • Globaltronics GT-3000, GT-9000
                • +
                • OBI Emil Lux / CMI Art.Nr.: 315606
                • +
                • SilverCrest FSS B 20-A (3726) / 66538
                • +
                • Tec Star Modell 2335191R
                • +
                • uniTEC 48110 Funkfernschalterset (Receiver 55006x10, Transmitter: 50074)
                • +
                +
                + Neue Geräte werden in FHEM normalerweise per autocreate automatisch angelegt. + Da das Protokoll eine Verschlüsselung nutzt, ist ein manuelles Einrichten praktisch nicht möglich. +

                + Das Einrichten der Fernbedienung erfolgt in einem Lernprozess. + Nach dem Empfang von mindestens 5 Nachrichten innerhalb von 3 Minuten wird ein neues Gerät "SD_GT_LEARN" angelegt. + Das Einrichten der einzelnen Tasten der Fernbedienung beginnt nach dem Empfang weiterer 6 verschiedener Nachrichten. + Dieser Lernprozess wird mit dem Status "learned code 4, please press another button" signalisiert, wobei der Zähler die Anzahl der aktuell registrierten Codes anzeigt. +
                + Es müssen jetzt sämtliche Tasten der Fernbedienung mehrmals betätigt werden. + Bei erfolgreicher Dekodierung der Funksignale werden dabei die einzelnen Tasten angelegt. +

                + Das Anlernen der Fernbedienung ist beendet, wenn alle Tastenebenen (A, B, C, D und evtl. all) angelegt sind und jeweils die Befehle "on" und "off" angezeigt werden. + Bei jedem Gerät müssen die Readings "CodesOn" und "CodesOff" mit jeweils mindestens einem Code eingerichtet sein. + Ohne diese gelernten Codes ist kein Senden möglich. +
                + Das Gerät "SD_GT_LEARN" wird jetzt nicht mehr benötigt und kann gelöscht werden. +

                + Sollen mehrere Fernbedienungen angelernt werden, muss dieser Prozess für jede Fernbedienung getrennt durchgeführt werden. + Das Gerät "SD_GT_LEARN" muss jeweils vor Beginn des Anlernens einer neuen Fernbedienung gelöscht werden. +

                + + +

                Attribute:

                + +

                + +

                Readings:

                +
                  +
                • CodesOff: ein bis vier hexadezimale Codes für "off", die angelernt wurden und zum Senden verwendet werden
                • +
                • CodesOn: ein bis vier hexadezimale Codes für "on", die angelernt wurden und zum Senden verwendet werden
                • +
                • SendCode: der zuletzt gesendete Code
                • +
                • SystemCode: Systemcode hexadezimal, bei allen Tasten einer Fernbedienung gleich
                • +
                • SystemCodeDec: Systemcode in dezimaler Darstellng
                • +
                • Version: Version der verwendeten Verschlüsselung
                • +
                • state: Zustand, "on" oder "off"
                • +
              =end html_DE @@ -671,6 +674,7 @@ sub getSystemCodes { } } }, + "version": "v1.2.0", "release_status": "stable", "resources": { "bugtracker": { diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 33e688709..171e882bf 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,6 +1,6 @@ UPD 2024-01-03_09:06:30 240267 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm -UPD 2023-01-09_20:47:40 25008 FHEM/10_SD_GT.pm +UPD 2024-01-03_19:11:00 27250 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm UPD 2023-01-01_18:10:40 10096 FHEM/14_BresserTemeo.pm UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm diff --git a/t/FHEM/10_SD_GT/01_define.t b/t/FHEM/10_SD_GT/01_define.t new file mode 100644 index 000000000..5620626eb --- /dev/null +++ b/t/FHEM/10_SD_GT/01_define.t @@ -0,0 +1,36 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test2::V0; +use Test2::Tools::Compare qw{is}; + +our %defs; + +InternalTimer(time()+1, sub { + my $ioName = shift; + my $ioHash = $defs{$ioName}; + + + subtest 'SD_GT - define SD_GT_Test_D SD_GT C07E2_D' => sub { + plan(1); + + my $device=q[SD_GT_Test_D]; + my $def=q[C07E2_D]; + CommandDefine(undef,qq[$device SD_GT $def]); + is(IsDevice($device), 1, "check device created with define"); + }; + + subtest 'SD_GT - delete device' => sub { + plan(1); + + my $device=q[SD_GT_Test_D]; + CommandDelete(undef,qq[$device]); + is(IsDevice($device), 0, "check device deleted"); + }; + + done_testing(); + exit(0); + +}, 'dummyDuino'); + +1; \ No newline at end of file diff --git a/t/FHEM/10_SD_GT/03_set.t b/t/FHEM/10_SD_GT/03_set.t new file mode 100644 index 000000000..604839d56 --- /dev/null +++ b/t/FHEM/10_SD_GT/03_set.t @@ -0,0 +1,65 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +use Test2::V0; +use File::Basename; + +# Testtool which supports DMSG Tests from SIGNALDuino_tool +use Test2::SIGNALduino::FHEM_Command; +use Test2::Tools::Compare qw{is U validator array hash}; +use Test2::Mock; + +our %defs; +our $init_done; +our $mock; + +my $module = basename (dirname(__FILE__)); + +# This is the testdata, which will speify what to test and what to check +@mockData = ( + { + # Default mocking for every testrun in our loop + defaults => { + mocking => sub { $mock->override ( IOWrite => sub { return @_ } ); } + }, + }, + { + targetName => q[SD_GT_Set], + testname => q[set command on with all readings], + cmd => q[set on], + + prep_commands => [ # Any FHEM custom command can be placed in here, which will be called before the test is run + 'setreading $targetName CodesOff C6B542', + 'setreading $targetName CodesOn C22B92', + 'setreading $targetName SystemCode C07E2', + 'setreading $targetName SystemCodeDec 788450', + 'setreading $targetName Version 2', + ], + + returnCheck => F(), + subCheck => hash { field 'IOWrite' => array { item 0 => hash { field 'args' => array { item hash { etc(); } ; item 'sendMsg'; item 'P49#0xC22B92#R5' }; etc() } } } , + } +); + +sub runTest { + Test2::SIGNALduino::FHEM_Command::commandCheck($module); + + done_testing(); + exit(0); +} + +sub waitDone { + + if ($init_done) + { + runTest(@_); + } else { + InternalTimer(time()+0.2, &waitDone,@_); + } + +} + +waitDone(); + +1; \ No newline at end of file diff --git a/t/FHEM/10_SD_GT/fhem.cfg b/t/FHEM/10_SD_GT/fhem.cfg index bd31945ab..d5c7fb42d 100644 --- a/t/FHEM/10_SD_GT/fhem.cfg +++ b/t/FHEM/10_SD_GT/fhem.cfg @@ -1,2 +1,4 @@ define dummyDuino SIGNALduino none -attr dummyDuino dummy 1 \ No newline at end of file +attr dummyDuino dummy 1 + +define SD_GT_Set SD_GT C77E2_D \ No newline at end of file From 243a8c646a2cd2872a85c809bb8b18bc2658c21e Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 3 Jan 2024 22:06:13 +0000 Subject: [PATCH 65/76] Automatic updated controls and CHANGED --- CHANGED | 10 ++++++++++ controls_signalduino.txt | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 63556fe82..695f68227 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,13 @@ +2024-01-03 - little fix 10_SD_GT and added tests (#1223) + +* Update 10_SD_GT.pm +- replace tabs with spaces (no module restrictions) +- fix META versionssupport +- fix PERL WARNING +- added tests +- revised SVN numbre +- remove old Internals VERSION_SD_GT +- added Meta version 2024-01-03 - Call debug via a coderef if enabled, otherwise return (#1169) * 00_SIGNALduino.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 171e882bf..9db8c4796 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,6 +1,6 @@ UPD 2024-01-03_09:06:30 240267 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm -UPD 2024-01-03_19:11:00 27250 FHEM/10_SD_GT.pm +UPD 2024-01-03_23:05:39 27250 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm UPD 2023-01-01_18:10:40 10096 FHEM/14_BresserTemeo.pm UPD 2023-01-01_18:10:40 16260 FHEM/14_FLAMINGO.pm From c7f21a4ca2ad7b7664ca9136b5a215b863d26b51 Mon Sep 17 00:00:00 2001 From: Udo Date: Sat, 6 Jan 2024 20:21:35 +0100 Subject: [PATCH 66/76] new protocol 131 for BRESSER Lightning detector (#1224) * Bresser lightning detector new protocol 131 for Bresser lightning detector * Update testData.json * Update README.md * Update Versiondate --- FHEM/00_SIGNALduino.pm | 9 ++++- FHEM/14_SD_WS.pm | 68 +++++++++++++++++++++++++++++++---- FHEM/lib/SD_ProtocolData.pm | 22 ++++++++++-- FHEM/lib/SD_Protocols.pm | 28 +++++++++++++-- README.md | 2 +- controls_signalduino.txt | 8 ++--- t/FHEM/14_SD_WS/testData.json | 53 +++++++++++++++++++++++++++ 7 files changed, 174 insertions(+), 16 deletions(-) diff --git a/FHEM/00_SIGNALduino.pm b/FHEM/00_SIGNALduino.pm index 522a873d6..92adcfc49 100644 --- a/FHEM/00_SIGNALduino.pm +++ b/FHEM/00_SIGNALduino.pm @@ -1,4 +1,4 @@ -# $Id: 00_SIGNALduino.pm 3.5.6 2024-01-02 22:22:14Z sidey79 $ +# $Id: 00_SIGNALduino.pm 3.5.6 2024-01-06 16:07:53Z elektron-bbs $ # v3.5.6 - https://github.com/RFD-FHEM/RFFHEM/tree/master # The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages # see http://www.fhemwiki.de/wiki/SIGNALDuino @@ -4832,6 +4832,9 @@ USB-connected devices (SIGNALduino):
              Modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, Packet Length=23 Byte, frequency 868.3 MHz
                Example: BRESSER 7-in-1 outdoor sensor, BRESSER PM2.5/10 air quality meter
              +
            • Bresser_lightning
              + Modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, Packet Length=10 Byte, frequency 868.3 MHz +
                Beispiel: BRESSER lightning sensor
            • Fine_Offset_WH51_434
              Modulation 2-FSK, Datarate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequency 433.92 MHz @@ -5428,6 +5431,10 @@ USB-connected devices (SIGNALduino):
              Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=23 Byte, Frequenz 868.3 MHz
                Beispiel: BRESSER 7-in-1 Außensensor, BRESSER PM2.5/10 Luftqualitätssensor
            • +
            • Bresser_lightning
              + Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=10 Byte, Frequenz 868.3 MHz +
                Beispiel: BRESSER Blitzsensor
              +
            • Fine_Offset_WH51_434
              Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 433.92 MHz
                Beispiel: Bodenfeuchtesensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100
              diff --git a/FHEM/14_SD_WS.pm b/FHEM/14_SD_WS.pm index d38169e87..39fa4ea5f 100644 --- a/FHEM/14_SD_WS.pm +++ b/FHEM/14_SD_WS.pm @@ -1,4 +1,4 @@ -# $Id: 14_SD_WS.pm 26982 2023-12-29 20:00:00Z elektron-bbs $ +# $Id: 14_SD_WS.pm 26982 2024-01-06 16:07:53Z elektron-bbs $ # # The purpose of this module is to support serval # weather sensors which use various protocol @@ -53,6 +53,7 @@ # 06.05.2023 Added protocol 126: ecowitt WH40 support # 21.08.2023 neues Protokoll 129: Sainlogic weather station FT-0835 # 25.11.2023 Protokoll 117: neuer Sensor BRESSER Air Quality Sensor Art.No.: 7009970, Hersteller CCL Electronics LTD Model C3123A +# 06.01.2024 neues Protokoll 131: BRESSER Blitzsensor Art.No.: 7009976, Hersteller CCL Electronics LTD Model C3129A package main; @@ -119,6 +120,7 @@ sub SD_WS_Initialize { 'SD_WS_125_.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4hum4:Temp/Hum,', autocreateThreshold => '2:300'}, 'SD_WS_126_R.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'rain4:Rain,', autocreateThreshold => "2:180"}, 'SD_WS_129.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => 'temp4hum4:Temp/Hum,', autocreateThreshold => '3:180'}, + 'SD_WS_131.*' => { ATTR => 'event-min-interval:.*:300 event-on-change-reading:.*', FILTER => '%NAME', GPLOT => q{}, autocreateThreshold => '2:180'}, }; return FHEM::Meta::InitMod( __FILE__, $hash ); } @@ -1710,6 +1712,53 @@ sub SD_WS_Parse { return 1; }, }, + 131 => { + # BRESSER Blitzsensor Art.No.: 7009976, Hersteller CCL Electronics LTD Model C3129A + # --------------------------------------------------------------------------------- + # The sensor transmits immediately when a flash is detected, otherwise approximately every 60 seconds. + # 0 1 + # 01234567890123456789 + # -------------------- + # 73FB2866AAA298AAAAAA original message + # 8BF082CC138832120000 message after all nibbles xor 0xA + # CCCCIIIIcccB?FDD???? + # C = LFSR-16 digest, generator 0x8810, key 0xABF9, final xor 0x899E + # I = station ID + # c = 3 nibbles lightning count, BCD + # B = flags, 4 bit + # Bit: 0123 + # 1000 + # b??? + # b: 1 bit batteryState, 1 = ok, 0 = low + # ?: 3 bit unknown always 000 + # ? = 1 nibble, unknown, always 0x3 (type?) + # F = flags, 4 bit + # Bit: 0123 + # 1010 xor 0xA = 0000 + # r??? + # r: 1 bit device reset, 1 after device reset + # ?: 3 bit unknown always 000 + # D = 2 nibbles last distance, 0 after reset, BCD + # ? = 4 nibbles, unknown, always 0x0 + sensortype => 'Bresser_lightning', + model => 'SD_WS_131', + modelStat => sub {my ($rawData,undef) = @_; + my $typ = hex(substr($rawData,12,1)); # sensor type + if ($typ eq '3') { + $typ = 'Bresser lightning detector'; + } else { + $typ = 'SD_WS_131'; + } + return $typ; + }, + prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{8}[0-9]{3}[0-9A-F]{3}[0-9]{2}/); }, + id => sub {my ($rawData,undef) = @_; return substr($rawData,4,4); }, + count => sub { my ($rawData,undef) = @_; return substr($rawData,8,3) * 1; }, + bat => sub {my (undef,$bitData) = @_; return substr($bitData,44,1) eq '0' ? 'low' : 'ok';}, + batChange => sub {my (undef,$bitData) = @_; return substr($bitData,52,1) eq '0' ? '1' : '0';}, + distance => sub { my ($rawData,undef) = @_; return substr($rawData,14,2) * 1; }, + crcok => sub {return 1;}, # checks are in SD_Protocols.pm sub ConvBresser_lightning + }, ); Log3 $name, 4, "$name: SD_WS_Parse protocol $protocol, rawData $rawData"; @@ -2223,6 +2272,7 @@ sub SD_WS_Parse { $state .= ' ' if (length($state) > 0); $state .= "PM10: $pm10"; } + ### protocol 33 has different bits per sensor type if ($protocol eq "33") { if (AttrVal($name,'model',0) eq "S522") { # Conrad S522 @@ -2273,7 +2323,7 @@ sub SD_WS_Parse { readingsBulkUpdate($hash, "humidityTrend", $trendHum) if (defined($trendHum) && length($trendHum) > 0); readingsBulkUpdate($hash, "sendmode", $sendmode) if (defined($sendmode) && length($sendmode) > 0); readingsBulkUpdateIfChanged($hash, "type", $SensorTyp, 0) if (defined($SensorTyp)); - readingsBulkUpdate($hash, 'model', $modelStat, 0) if (defined($modelStat)); + readingsBulkUpdateIfChanged($hash, 'model', $modelStat, 0) if (defined($modelStat)); readingsBulkUpdate($hash, "beep", $beep) if (defined($beep)); readingsBulkUpdate($hash, "adc", $adc) if (defined($adc)); readingsBulkUpdate($hash, 'rain', $rain) if (defined($rain)); @@ -2406,7 +2456,7 @@ sub SD_WS_WH2SHIFT {
            • ADE WS1907 Weather station with rain gauge
            • Atech wireless weather station
            • BBQ temperature sensor GT-TMBBQ-01s (transmitter), GT-TMBBQ-01e (receiver)
            • -
            • Bresser 5-in-1, 6-in-1 and 7-in-1 Comfort Weather Center, 7009994, PM2.5/10 air quality meter, Professional rain gauge, Temeo
            • +
            • Bresser 5-in-1, 6-in-1 and 7-in-1 Comfort Weather Center, 7009994, Lightning detector, PM2.5/10 air quality meter, Professional rain gauge, Temeo
            • Conrad S522
            • EuroChron EFTH-800, EFS-3110A (temperature and humidity sensor)
            • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (soil moisture sensor)
            • @@ -2462,12 +2512,15 @@ sub SD_WS_WH2SHIFT {
            • batteryPercent (battery level in %)
            • brightness (kLux)
            • channel (number of channel
            • +
            • count (number of lightnings
            • distance (distance in cm (protocol 111) or km (protocol 116)
            • humidity (humidity (1-100 % only if available)
            • humidityTrend (consistent, rising, falling)
            • -
            • sendmode (automatic or manual)
            • +
            • pm_2_5 (particulate matter <= 2.5 µm)
            • +
            • pm_10 (particulate matter <= 10 µm)
            • rain (l/m²))
            • rain_total (l/m²))
            • +
            • sendmode (automatic or manual)
            • state (T: H: W: R:)
            • temperature (°C)
            • temperatureTrend (consistent, rising, falling)
            • @@ -2550,7 +2603,7 @@ sub SD_WS_WH2SHIFT {
            • ADE WS1907 Wetterstation mit Regenmesser
            • Atech Wetterstation
            • BBQ Temperatur Sensor GT-TMBBQ-01s (Sender), GT-TMBBQ-01e (Empfaenger)
            • -
            • Bresser 5-in-1, 6-in-1 und 7-in-1 Comfort Wetter Center, 7009994, PM2.5/10 Luftqualitätsmesser, Profi Regenmesser, Temeo
            • +
            • Bresser 5-in-1, 6-in-1 und 7-in-1 Comfort Wetter Center, 7009994, Blitzsensor, PM2.5/10 Luftqualitätsmesser, Profi Regenmesser, Temeo
            • Conrad S522
            • EuroChron EFTH-800, EFS-3110A (Temperatur- und Feuchtigkeitssensor)
            • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (Bodenfeuchtesensor)
            • @@ -2607,9 +2660,12 @@ sub SD_WS_WH2SHIFT {
            • batteryPercent (Batteriestand in %)
            • brightness (Helligkeit in kLux)
            • channel (Sensor-Kanal)
            • +
            • count (Anzahl)
            • distance (Entfernung in cm (Protokoll 111) oder km (Protokoll 116)
            • humidity (Luft-/Bodenfeuchte, 1-100 %)
            • humidityTrend (Trend Luftfeuchte, gleichbleibend, steigend, fallend)
            • +
            • pm_2_5 (Feinstaub <= 2.5 µm)
            • +
            • pm_10 (Feinstaub <= 10 µm)
            • rain (Regenmenge l/m²))
            • rain_total (Regenmenge l/m²))
            • sendmode (Sendemodus, automatic oder manuell mittels Taster am Sender)
            • @@ -2699,7 +2755,7 @@ sub SD_WS_WH2SHIFT { "x_fhem_maintainer_github": [ "Sidey79" ], - "version": "v1.0.0", + "version": "v1.1.0", "description": "The SD_WS module processes the messages from various environmental sensors received from an IO device (CUL, CUN, SIGNALDuino, SignalESP etc.)", "dynamic_config": 1, "keywords": [ diff --git a/FHEM/lib/SD_ProtocolData.pm b/FHEM/lib/SD_ProtocolData.pm index b182efa81..75971f68e 100644 --- a/FHEM/lib/SD_ProtocolData.pm +++ b/FHEM/lib/SD_ProtocolData.pm @@ -1,4 +1,4 @@ -# $Id: SD_ProtocolData.pm 26975 2023-12-29 20:00:00Z elektron-bbs $ +# $Id: SD_ProtocolData.pm 26975 2024-01-06 16:07:53Z elektron-bbs $ # The file is part of the SIGNALduino project. # All protocol definitions are contained in this file. # @@ -3472,7 +3472,25 @@ package lib::SD_ProtocolData; length_min => '24', length_max => '24', }, - #"131" => ## reserved for elektron-bbs + "131" => ## BRESSER lightning detector @ elektron-bbs 2023-12-26 + # SD_WS_131 count: 0, distance: 0, batteryState: ok, batteryChanged: 0 MN;D=DA5A2866AAA290AAAAAA;R=23;A=-2; + # SD_WS_131 count: 1, distance: 17, batteryState: ok, batteryChanged: 0 MN;D=5B192866AAB290BDAAAA;R=32;A=-3; + # SD_WS_131 count: 148, distance: 8, batteryState: ok, batteryChanged: 1 MN;D=AA362866BE2298A2AAAA;R=24;A=-2; + { + name => 'Bresser lightning', + comment => 'Bresser lightning detector', + id => '131', + knownFreqs => '868.300', + datarate => '8.232', + sync => '2DD4', + modulation => '2-FSK', + rfmode => 'Bresser_lightning', + register => ['0001','022E','0342','042D','05D4','060A','07C0','0800','0D21','0E65','0F6A','1088','114C','1202','1322','14F8','1551','1916','1B43','1C68'], + preamble => 'W131#', + clientmodule => 'SD_WS', + length_min => '20', + method => \&lib::SD_Protocols::ConvBresser_lightning, + }, "132" => ## Remote control Halemeier HA-HX2 for Actor HA-RX-M2-1 # https://github.com/RFD-FHEM/RFFHEM/issues/1207 @ HomeAuto_User 2023-12-11 # https://forum.fhem.de/index.php?topic=38452.0 (probably identical) diff --git a/FHEM/lib/SD_Protocols.pm b/FHEM/lib/SD_Protocols.pm index 67c902ad3..4c332b8e9 100644 --- a/FHEM/lib/SD_Protocols.pm +++ b/FHEM/lib/SD_Protocols.pm @@ -1,5 +1,5 @@ ################################################################################ -# $Id: SD_Protocols.pm 26975 2023-08-21 19:02:34Z elektron-bbs $ +# $Id: SD_Protocols.pm 26975 2024-01-06 16:07:53Z elektron-bbs $ # # The file is part of the SIGNALduino project # v3.5.x - https://github.com/RFD-FHEM/RFFHEM @@ -16,7 +16,7 @@ use Carp qw(croak carp); use constant HAS_DigestCRC => defined eval { require Digest::CRC; }; use constant HAS_JSON => defined eval { require JSON; }; -our $VERSION = '2.08'; +our $VERSION = '2.09'; use Storable qw(dclone); use Scalar::Util qw(blessed); @@ -2040,6 +2040,30 @@ sub ConvBresser_7in1 { return $hexDataXorA; } +sub ConvBresser_lightning { + my $self = shift // carp 'Not called within an object'; + my $hexData = shift // croak 'Error: called without $hexdata as input'; + my $hexLength = length($hexData); + + return (1, 'ConvBresser_lightning, hexData is to short') if ($hexLength < 20); # check double, in def length_min set + + my $hexDataXorA =''; + for (my $i = 0; $i < $hexLength; $i++) { + my $xor = hex(substr($hexData,$i,1)) ^ 0xA; + $hexDataXorA .= sprintf('%X',$xor); + } + $self->_logging(qq[ConvBresser_lightning, msg=$hexData],5); + $self->_logging(qq[ConvBresser_lightning, xor=$hexDataXorA],5); + + # LFSR-16 gen 8810 key abf9 final xor 899e + my $checksum = lib::SD_Protocols::LFSR_digest16(8, 0x8810, 0xABF9, substr($hexDataXorA,4,16)); + my $checksumcalc = sprintf('%04X',$checksum ^ hex(substr($hexDataXorA,0,4))); + $self->_logging(qq[ConvBresser_lightning, checksumCalc:0x$checksumcalc, must be 0x899E],5); + return ( 1, qq[ConvBresser_lightning, checksumCalc:0x$checksumcalc != checksum:0x899E] ) if ($checksumcalc ne '899E'); + + return substr($hexDataXorA, 0, 20); +} + =item LFSR_digest16() This function checks 16 bit LFSR diff --git a/README.md b/README.md index 54af2a2c5..3151bda86 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Supported Devices / Protocols |BF-301 | Remote control| |benon (Semexo OHG) | Remote control (BH-P)| |BOSCH / Neff / Refsta Topdraft | Remote control (SF01 01319004, SF01 01319004 v2)| -|BRESSER 5-in-1, 6-in-1, 7-in-1, Professional Rain Gauge, TemeoTrend, SM60020 Soil moisture sensor, PM2.5/10 Air quality sensor | Weather Station, Rain Gauge, Thermo-/Hygro Sensor, Particulate meter | +|BRESSER 5-in-1, 6-in-1, 7-in-1, Professional Rain Gauge, TemeoTrend, SM60020 Soil moisture sensor, PM2.5/10 Air quality sensor, Lightning sensor | Weather Station, Rain Gauge, Thermo-/Hygro Sensor, Particulate meter, Lightning detector | |Busch-Transcontrol HF | Remote control (6861)| |CAME TOP 432EV | Remote control | |CTW600, WH1080, WH2315 | Weather station | diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 9db8c4796..08774c92d 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2024-01-03_09:06:30 240267 FHEM/00_SIGNALduino.pm +UPD 2024-01-06_15:07:27 240687 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2024-01-03_23:05:39 27250 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm -UPD 2023-12-31_15:15:49 161715 FHEM/14_SD_WS.pm +UPD 2024-01-06_15:07:27 164816 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2023-12-31_15:15:49 251336 FHEM/lib/SD_ProtocolData.pm -UPD 2023-12-31_15:15:49 80775 FHEM/lib/SD_Protocols.pm +UPD 2024-01-06_15:07:27 252437 FHEM/lib/SD_ProtocolData.pm +UPD 2024-01-06_15:07:27 81862 FHEM/lib/SD_Protocols.pm diff --git a/t/FHEM/14_SD_WS/testData.json b/t/FHEM/14_SD_WS/testData.json index c07837c8a..8aedb5da9 100644 --- a/t/FHEM/14_SD_WS/testData.json +++ b/t/FHEM/14_SD_WS/testData.json @@ -2546,5 +2546,58 @@ "id" : 129, "module" : "SD_WS", "name" : "FT-0835" + }, + { + "data" : [ + { + "comment" : "BRESSER lightning detector", + "dmsg" : "W131#70F082CC00083A000000", + "internals" : { + "DEF" : "SD_WS_131", + "NAME" : "SD_WS_131" + }, + "readings" : { + "batteryChanged" : "0", + "batteryState" : "ok", + "count" : 0, + "distance" : 0, + "state" : "D: 0", + "type" : "Bresser_lightning" + }, + "rmsg" : "MN;D=DA5A2866AAA290AAAAAA;R=23;A=-2;", + "tests" : [ + { + "attributes" : {}, + "comment" : "#0" + } + ] + }, + { + "comment" : "BRESSER lightning detector", + "dmsg" : "W131#009C82CC148832080000", + "internals" : { + "DEF" : "SD_WS_131", + "NAME" : "SD_WS_131" + }, + "readings" : { + "batteryChanged" : "1", + "batteryState" : "ok", + "count" : 148, + "distance" : 8, + "state" : "D: 8", + "type" : "Bresser_lightning" + }, + "rmsg" : "MN;D=AA362866BE2298A2AAAA;R=24;A=-2;", + "tests" : [ + { + "attributes" : {}, + "comment" : "#1" + } + ] + } + ], + "id" : 131, + "module" : "SD_WS", + "name" : "Bresser lightning" } ] From 58b2afaa8621f3a5f0616f2a59c1e4fa24f8653c Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 6 Jan 2024 19:22:08 +0000 Subject: [PATCH 67/76] Automatic updated controls and CHANGED --- CHANGED | 7 +++++++ controls_signalduino.txt | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGED b/CHANGED index 695f68227..40a6619d4 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,10 @@ +2024-01-06 - new protocol 131 for BRESSER Lightning detector (#1224) + +* Bresser lightning detector +new protocol 131 for Bresser lightning detector +* Update testData.json +* Update README.md +* Update Versiondate 2024-01-03 - little fix 10_SD_GT and added tests (#1223) * Update 10_SD_GT.pm diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 08774c92d..b7c0b5615 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -1,4 +1,4 @@ -UPD 2024-01-06_15:07:27 240687 FHEM/00_SIGNALduino.pm +UPD 2024-01-06_20:21:35 240687 FHEM/00_SIGNALduino.pm UPD 2023-01-06_12:08:43 20082 FHEM/10_FS10.pm UPD 2024-01-03_23:05:39 27250 FHEM/10_SD_GT.pm UPD 2023-01-01_18:10:40 25403 FHEM/10_SD_Rojaflex.pm @@ -8,11 +8,11 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm -UPD 2024-01-06_15:07:27 164816 FHEM/14_SD_WS.pm +UPD 2024-01-06_20:21:35 164816 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm UPD 2023-01-28_20:08:00 40378 FHEM/41_OREGON.pm UPD 2020-12-17_23:16:30 15582 FHEM/90_SIGNALduino_un.pm -UPD 2024-01-06_15:07:27 252437 FHEM/lib/SD_ProtocolData.pm -UPD 2024-01-06_15:07:27 81862 FHEM/lib/SD_Protocols.pm +UPD 2024-01-06_20:21:35 252437 FHEM/lib/SD_ProtocolData.pm +UPD 2024-01-06_20:21:35 81862 FHEM/lib/SD_Protocols.pm From a8cdf0f2cfefb5f52d72422a573403bf01d79669 Mon Sep 17 00:00:00 2001 From: Udo Date: Sun, 7 Jan 2024 18:08:13 +0100 Subject: [PATCH 68/76] SD_WS add reading model for statistics (#1225) * add models for FHEM statistics see FHEM statistics https://fhem.de/stats/statistics.html --- FHEM/14_SD_WS.pm | 32 ++++++++++++++++++++++++++++++-- controls_signalduino.txt | 2 +- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/FHEM/14_SD_WS.pm b/FHEM/14_SD_WS.pm index 39fa4ea5f..f0af0aff6 100644 --- a/FHEM/14_SD_WS.pm +++ b/FHEM/14_SD_WS.pm @@ -1,4 +1,4 @@ -# $Id: 14_SD_WS.pm 26982 2024-01-06 16:07:53Z elektron-bbs $ +# $Id: 14_SD_WS.pm 26982 2024-01-07 15:31:22Z elektron-bbs $ # # The purpose of this module is to support serval # weather sensors which use various protocol @@ -930,6 +930,19 @@ sub SD_WS_Parse { model => 'SD_WS_108', prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{8}[0-9]{2}[0-9A-F]{1}[0-9]{3}[0-9A-F]{1}[0-9]{5}[0-9A-F]{1}[0-9]{1}/); }, id => sub {my ($rawData,undef) = @_; return substr($rawData,0,2); }, + modelStat => sub {my (undef,$bitData) = @_; + my $typ = substr($bitData,10,2); + if ($typ eq '00') { + $typ = 'Bresser 5in1, Fody E43 outdoor sensor'; + } elsif ($typ eq '01') { + $typ = 'Fody E42 thermo-/hygro sensor'; + } elsif ($typ eq '11') { + $typ = 'Bresser rain gauge'; + } else { + $typ = 'SD_WS_108'; + } + return $typ; + }, winddir => sub {my ($rawData,$bitData) = @_; return if (substr($bitData,10,2) eq '01' || substr($bitData,10,2) eq '11'); # Bresser rain gauge, Fody E42 my $winddirraw = hex(substr($rawData,6,1)); @@ -1119,6 +1132,21 @@ sub SD_WS_Parse { model => 'SD_WS_115', prematch => sub { return 1; }, # no precheck known id => sub {my ($rawData,undef) = @_; return substr($rawData,4,8); }, + modelStat => sub {my ($rawData,undef) = @_; + my $typ = substr($rawData,12,1); + if ($typ eq '1') { + $typ = 'Bresser 6-in-1, new 5-in-1, 3-in-1 outdoor sensor'; + } elsif ($typ eq '2') { + $typ = 'Bresser Thermo-/hygro sensor'; + } elsif ($typ eq '3') { + $typ = 'Bresser Pool thermometer'; + } elsif ($typ eq '4') { + $typ = 'Bresser SM60020 Soil moisture/temperature sensor'; + } else { + $typ = 'SD_WS_115'; + } + return $typ; + }, bat => sub {my ($rawData,$bitData) = @_; return if (substr($rawData,12,1) eq '1' && substr($rawData,33,1) eq '1'); # not by weather station & rain return substr($bitData,110,1) eq '1' ? 'ok' : 'low'; @@ -2755,7 +2783,7 @@ sub SD_WS_WH2SHIFT { "x_fhem_maintainer_github": [ "Sidey79" ], - "version": "v1.1.0", + "version": "v1.1.1", "description": "The SD_WS module processes the messages from various environmental sensors received from an IO device (CUL, CUN, SIGNALDuino, SignalESP etc.)", "dynamic_config": 1, "keywords": [ diff --git a/controls_signalduino.txt b/controls_signalduino.txt index b7c0b5615..c9ff1d2cb 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -8,7 +8,7 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm -UPD 2024-01-06_20:21:35 164816 FHEM/14_SD_WS.pm +UPD 2024-01-07_14:39:58 166295 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm From f5a9a2a51118e014db275a021a63397e3f253d19 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 7 Jan 2024 17:08:50 +0000 Subject: [PATCH 69/76] Automatic updated controls and CHANGED --- CHANGED | 4 ++++ controls_signalduino.txt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 40a6619d4..1d4e4507a 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,7 @@ +2024-01-07 - SD_WS add reading model for statistics (#1225) + +* add models for FHEM statistics +see FHEM statistics https://fhem.de/stats/statistics.html 2024-01-06 - new protocol 131 for BRESSER Lightning detector (#1224) * Bresser lightning detector diff --git a/controls_signalduino.txt b/controls_signalduino.txt index c9ff1d2cb..551c8127d 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -8,7 +8,7 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm -UPD 2024-01-07_14:39:58 166295 FHEM/14_SD_WS.pm +UPD 2024-01-07_18:08:13 166295 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm From 7e49a6ef01fadfea81642c2c582fba9a4a494e3f Mon Sep 17 00:00:00 2001 From: Udo Date: Tue, 9 Jan 2024 21:34:16 +0100 Subject: [PATCH 70/76] 14_SD_WS.pm small corrections (#1226) * 14_SD_WS.pm small corrections Small corrections without changing the function of the module. --- FHEM/14_SD_WS.pm | 40 ++++++++++++++++++++-------------------- controls_signalduino.txt | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/FHEM/14_SD_WS.pm b/FHEM/14_SD_WS.pm index f0af0aff6..8748df7e0 100644 --- a/FHEM/14_SD_WS.pm +++ b/FHEM/14_SD_WS.pm @@ -1,4 +1,4 @@ -# $Id: 14_SD_WS.pm 26982 2024-01-07 15:31:22Z elektron-bbs $ +# $Id: 14_SD_WS.pm 26982 2024-01-07 20:20:20Z elektron-bbs $ # # The purpose of this module is to support serval # weather sensors which use various protocol @@ -318,7 +318,7 @@ sub SD_WS_Parse { # prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{7}0[0-9]{2}[0-9A-F]{2}$/); }, # prematch 113C49A 0 47 AE (EFTH-800) prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{7}0|8[0-9]{2}[0-9A-F]{2}$/); }, # prematch 3F94519 8 55 C7 (EFS-3110A) channel => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,1,3) + 1 ); }, - id => sub {my (undef,$bitData) = @_; return substr($rawData,1,3); }, + id => sub {my ($rawData,undef) = @_; return substr($rawData,1,3); }, bat => sub {my (undef,$bitData) = @_; return substr($bitData,16,1) eq "0" ? "ok" : "low";}, temp => sub {my (undef,$bitData) = @_; return substr($bitData,17,1) eq "0" ? ((SD_WS_binaryToNumber($bitData,18,27) - 1024) / 10.0) : (SD_WS_binaryToNumber($bitData,18,27) / 10.0);}, hum => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,32,35) * 10) + (SD_WS_binaryToNumber($bitData,36,39));}, @@ -428,7 +428,7 @@ sub SD_WS_Parse { sensortype => 'NC-3911', model => 'SD_WS_38_T', prematch => sub {my $msg = shift; return 1 if ($msg =~ /^[0-9A-F]{9}$/); }, - id => sub {my (undef,$bitData) = @_; return substr($rawData,0,2); }, + id => sub {my ($rawData,undef) = @_; return substr($rawData,0,2); }, bat => sub {my (undef,$bitData) = @_; return substr($bitData,8,1) eq "1" ? "ok" : "low";}, beep => sub {my (undef,$bitData) = @_; return substr($bitData,9,1) eq "1" ? "on" : "off"; }, channel => sub {my (undef,$bitData) = @_; return SD_WS_binaryToNumber($bitData,10,11); }, @@ -467,7 +467,7 @@ sub SD_WS_Parse { prematch => sub {my $msg = shift; return 1 if ($msg =~ /^[0-9A-F]{9}[1-3]$/);}, # 10 nibbles, 9 hex chars, only channel 1-3 # prematch => sub {my $msg = shift; return 1 if ($msg =~ /^[0-9A-F]{10}$/);}, # 10 nibbles, all hex chars crcok => sub {return 1; }, # crc is unknown - id => sub {my (undef,$bitData) = @_; return substr($rawData,0,2);}, # long-id in hex + id => sub {my ($rawData,undef) = @_; return substr($rawData,0,2);}, # long-id in hex sendmode => sub {my (undef,$bitData) = @_; return substr($bitData,12,1) eq "1" ? "manual" : "auto";}, bat => sub {my (undef,$bitData) = @_; return substr($bitData,13,1) eq "1" ? "low" : "ok";}, trend => sub {my (undef,$bitData) = @_; return ('consistent', 'rising', 'falling', 'unknown')[SD_WS_binaryToNumber($bitData,14,15)];}, @@ -506,14 +506,14 @@ sub SD_WS_Parse { return 0; } }, - id => sub {my (undef,$bitData) = @_; return substr($rawData,0,2);}, # long-id in hex + id => sub {my ($rawData,undef) = @_; return substr($rawData,0,2);}, # long-id in hex bat => sub {my (undef,$bitData) = @_; return substr($bitData,8,1) eq "1" ? "low" : "ok";}, channel => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,10,11) + 1);}, temp => sub {my (undef,$bitData) = @_; return substr($bitData,12,1) eq "1" ? ((SD_WS_binaryToNumber($bitData,12,23) - 4096) / 10.0) : (SD_WS_binaryToNumber($bitData,12,23) / 10.0);}, hum => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,24,30) );}, }, 54 => { - # TFA Drop Rainmeter 30.3233.01 + # TFA Drop Rainmeter 30.3233.01 (Funk-Regenmesser DROP 47.3005, Sender 30.3233.01) # ---------------------------------------------------------------------------------- # 0 8 16 24 32 40 48 56 64 - 01234567890123456 # 00111101 10011100 01000011 00001010 00011011 10101010 00000001 10001001 1000 - 3D9C430A1BAA01898 @@ -640,14 +640,14 @@ sub SD_WS_Parse { # ------------------------------------------------------------------------ # 0 4 | 8 12 | 16 20 | 24 28 | 32 36 # 1111 1100 | 0001 0110 | 0001 0000 | 0011 0111 | 0100 1001 - # iiii iiii | hhhh hhhh | bscc tttt | tttt tttt | ???? ???? + # iiii iiii | hhhh hhhh | bscc tttt | tttt tttt | xxxx xxxx # i: 8 bit id (?) - no change after battery change, i have seen two IDs: 0x03 and 0xfe # h: 8 bit relative humidity percentage # b: 1 bit battery indicator (0=>OK, 1=>LOW) # s: 1 bit sendmode 1=manual (button pressed) 0=auto # c: 2 bit channel valid channels are 0-2 (1-3) # t: 12 bit signed temperature scaled by 10 - # ?: unknown + # x: 8 bit check (not for all sensor types) # Sensor sends approximately every 30 seconds sensortype => 'Auriol IAN 283582, TV-4848', @@ -664,7 +664,7 @@ sub SD_WS_Parse { $tempraw /= 10.0; return $tempraw; }, - crcok => sub {return 1;}, # crc test method is so far unknown + crcok => sub {return 1;}, # crc check only takes place when the device is known. The test method is not yet known for all sensor types. } , 85 => { @@ -761,7 +761,7 @@ sub SD_WS_Parse { sensortype => 'TFA 30.3221.02', model => 'SD_WS_89_TH', prematch => sub {my $msg = shift; return 1 if ($msg =~ /^[0-9A-F]{2}[01245689ACDE]{1}[0-9A-F]{7}$/); }, # valid channel only 0-2 - id => sub {my (undef,$bitData) = @_; return substr($rawData,0,2); }, + id => sub {my ($rawData,undef) = @_; return substr($rawData,0,2); }, bat => sub {my (undef,$bitData) = @_; return substr($bitData,8,1) eq "0" ? "ok" : "low";}, sendmode => sub {my (undef,$bitData) = @_; return substr($bitData,9,1) eq "1" ? "manual" : "auto"; }, channel => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,10,11) + 1); }, @@ -796,7 +796,7 @@ sub SD_WS_Parse { Log3 $iohash, 3, "$name: SD_WS_Parse $model ERROR - BCD of temperature ($rawtemp100 $rawtemp10 $rawtemp1)"; return; }; - my $temp = ($rawtemp100 * 10 + $rawtemp10 + $rawtemp1 / 10) * ( substr($_[1],10,1) == 1 ? -1.0 : 1.0); + return ($rawtemp100 * 10 + $rawtemp10 + $rawtemp1 / 10) * ( substr($_[1],10,1) == 1 ? -1.0 : 1.0); }, crcok => sub {return 1;}, # crc test method is so far unknown }, @@ -993,7 +993,7 @@ sub SD_WS_Parse { sensortype => 'ADE WS1907', model => 'SD_WS_110_TR', prematch => sub {return 1;}, # no precheck known - id => sub {my (undef,$bitData) = @_; return substr($rawData,0,4);}, # long-id in hex + id => sub {my ($rawData,undef) = @_; return substr($rawData,0,4);}, # long-id in hex bat => sub {my (undef,$bitData) = @_; return substr($bitData,16,1) eq "0" ? "ok" : "low";}, batChange => sub {my (undef,$bitData) = @_; return substr($bitData,17,1);}, sendCounter => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,20,22));}, @@ -1116,7 +1116,7 @@ sub SD_WS_Parse { # CCCCIIIIIIIIFFGGGWWWDDD?RRRRRR???XSS Msg 2, 36 Nibble, wind, rain # C = CRC16 # I = station ID - # F = flags, 8 bit (nibble 12 1: weather station, 2: indoor, 4: soil probe, nibble 13 1 bit battery change, 3 bit channel) + # F = flags, 8 bit (nibble 12 1: weather station, 2: indoor, 3: pool thermometer, 4: soil probe, nibble 13 1 bit battery change, 3 bit channel) # G = wind gust in 1/10 m/s, inverted, BCD coded, GGG = FE6 =~ 019 => 1.9 m/s. # W = wind speed in 1/10 m/s, inverted, BCD coded, LSB first nibble, MSB last two nibble, WWW = EFE =~ 101 => 1.1 m/s. # D = wind direction in grad, BCD coded, DDD = 158 => 158 ° @@ -1920,7 +1920,7 @@ sub SD_WS_Parse { { if ($sign) { - $temp = 0 - $temp + $temp = 0 - $temp; } } @@ -2249,7 +2249,7 @@ sub SD_WS_Parse { } #my $state = (($temp > -60 && $temp < 70) ? "T: $temp":"T: xx") . (($hum > 0 && $hum < 100) ? " H: $hum":""); - my $state = ""; + my $state = ''; if (defined($temp)) { $state .= "T: $temp"; } @@ -2266,19 +2266,19 @@ sub SD_WS_Parse { $state .= "T4: $temp4"; } if (defined($hum) && ($hum > 0 && $hum < 100)) { - $state .= " H: $hum" + $state .= " H: $hum"; } if (defined($windspeed)) { $state .= ' ' if (length($state) > 0); - $state .= "W: $windspeed" + $state .= "W: $windspeed"; } if (defined($rain_total)) { $state .= ' ' if (length($state) > 0); - $state .= "R: $rain_total" + $state .= "R: $rain_total"; } if (defined($rain)) { $state .= ' ' if (length($state) > 0); - $state .= "R: $rain" + $state .= "R: $rain"; } if (defined($identified)) { $state .= ' ' if (length($state) > 0); @@ -2783,7 +2783,7 @@ sub SD_WS_WH2SHIFT { "x_fhem_maintainer_github": [ "Sidey79" ], - "version": "v1.1.1", + "version": "v1.1.2", "description": "The SD_WS module processes the messages from various environmental sensors received from an IO device (CUL, CUN, SIGNALDuino, SignalESP etc.)", "dynamic_config": 1, "keywords": [ diff --git a/controls_signalduino.txt b/controls_signalduino.txt index 551c8127d..f71a3f25d 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -8,7 +8,7 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm -UPD 2024-01-07_18:08:13 166295 FHEM/14_SD_WS.pm +UPD 2024-01-07_21:06:55 166470 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm From c7053f56f9b7a110893ca24f2f84e823863ffb09 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 9 Jan 2024 20:34:53 +0000 Subject: [PATCH 71/76] Automatic updated controls and CHANGED --- CHANGED | 4 ++++ controls_signalduino.txt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGED b/CHANGED index 1d4e4507a..7dcdabb33 100644 --- a/CHANGED +++ b/CHANGED @@ -1,3 +1,7 @@ +2024-01-09 - 14_SD_WS.pm small corrections (#1226) + +* 14_SD_WS.pm small corrections +Small corrections without changing the function of the module. 2024-01-07 - SD_WS add reading model for statistics (#1225) * add models for FHEM statistics diff --git a/controls_signalduino.txt b/controls_signalduino.txt index f71a3f25d..837e4cd82 100644 --- a/controls_signalduino.txt +++ b/controls_signalduino.txt @@ -8,7 +8,7 @@ UPD 2023-10-14_22:18:35 24045 FHEM/14_Hideki.pm UPD 2023-01-23_21:06:26 13260 FHEM/14_SD_AS.pm UPD 2023-01-01_18:10:40 29419 FHEM/14_SD_BELL.pm UPD 2024-01-02_23:01:30 198578 FHEM/14_SD_UT.pm -UPD 2024-01-07_21:06:55 166470 FHEM/14_SD_WS.pm +UPD 2024-01-09_21:34:16 166470 FHEM/14_SD_WS.pm UPD 2023-01-09_19:54:48 21030 FHEM/14_SD_WS07.pm UPD 2023-01-23_21:06:26 38569 FHEM/14_SD_WS09.pm UPD 2023-01-09_19:54:48 16458 FHEM/14_SD_WS_Maverick.pm From c604c6ece8a06b8601a653f4dba1cec75d0d7d53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 07:10:31 +0000 Subject: [PATCH 72/76] Bump tj-actions/changed-files from 39 to 42 Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 39 to 42. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/v39...v42) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 79cbbb581..d5f0bc2f5 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -64,7 +64,7 @@ jobs: runs-on: ubuntu-latest steps: - id: file_changes - uses: tj-actions/changed-files@v39 + uses: tj-actions/changed-files@v42 with: json: true quotepath: false From 1402fd7ecbcd05e00eeac90fa4d4e4c5dab68825 Mon Sep 17 00:00:00 2001 From: sidey79 <7968127+sidey79@users.noreply.github.com> Date: Sat, 20 Jan 2024 18:20:03 +0100 Subject: [PATCH 73/76] cicd[action]: Update globstar pattern as needed by updated action --- .github/workflows/version.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index d5f0bc2f5..5ec673d6c 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -69,9 +69,9 @@ jobs: json: true quotepath: false files: | - FHEM/*.pm - FHEM/lib/*.pm - lib/FHEM/*.pm + FHEM/**.pm + FHEM/lib/**.pm + lib/FHEM/**.pm - name: Get current date id: date From 601a49b623c5c819e6546bd1d53ca8fda7246ff5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Jan 2024 03:54:17 +0000 Subject: [PATCH 74/76] Bump codecov/codecov-action from 3.1.4 to 3.1.5 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.4 to 3.1.5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.4...v3.1.5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/prove.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index 3c5eb5cba..a4ef67570 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -43,7 +43,7 @@ jobs: FHEM_DIR: /opt/fhem - name: Create clover report for perl Modules run: cover -report clover - - uses: codecov/codecov-action@v3.1.4 + - uses: codecov/codecov-action@v3.1.5 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./cover_db/clover.xml @@ -53,7 +53,7 @@ jobs: - name: Create clover report for fhem tests working-directory: /opt/fhem/ run: cover -report clover - - uses: codecov/codecov-action@v3.1.4 + - uses: codecov/codecov-action@v3.1.5 with: token: ${{ secrets.CODECOV_TOKEN }} file: /opt/fhem/cover_db/clover.xml From 71c1772c89987ee2bed4361cb457563f57a86578 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 03:18:51 +0000 Subject: [PATCH 75/76] Bump shogo82148/actions-setup-perl from 1.27.0 to 1.28.0 --- updated-dependencies: - dependency-name: shogo82148/actions-setup-perl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/perlCritic.yml | 2 +- .github/workflows/prove.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perlCritic.yml b/.github/workflows/perlCritic.yml index 8d645bceb..f6bfd6c0c 100644 --- a/.github/workflows/perlCritic.yml +++ b/.github/workflows/perlCritic.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - uses: shogo82148/actions-setup-perl@v1.27.0 + - uses: shogo82148/actions-setup-perl@v1.28.0 with: perl-version: 5.32 install-modules-with: cpanm diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index a4ef67570..eb5cf0615 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -16,7 +16,7 @@ jobs: name: Perl ${{ matrix.perl }} on ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: shogo82148/actions-setup-perl@v1.27.0 + - uses: shogo82148/actions-setup-perl@v1.28.0 with: perl-version: ${{ matrix.perl }} install-modules-with: cpanm From bbbfa584aecacaf9f78ffdaebfa622d6a7c3e35c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 22:47:52 +0000 Subject: [PATCH 76/76] Bump codecov/codecov-action from 3.1.5 to 4.0.1 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.5 to 4.0.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.5...v4.0.1) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/prove.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index eb5cf0615..57cb50231 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -43,7 +43,7 @@ jobs: FHEM_DIR: /opt/fhem - name: Create clover report for perl Modules run: cover -report clover - - uses: codecov/codecov-action@v3.1.5 + - uses: codecov/codecov-action@v4.0.1 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./cover_db/clover.xml @@ -53,7 +53,7 @@ jobs: - name: Create clover report for fhem tests working-directory: /opt/fhem/ run: cover -report clover - - uses: codecov/codecov-action@v3.1.5 + - uses: codecov/codecov-action@v4.0.1 with: token: ${{ secrets.CODECOV_TOKEN }} file: /opt/fhem/cover_db/clover.xml