diff --git a/CHANGED b/CHANGED index 9bd3c61c3..ef2968474 100644 --- a/CHANGED +++ b/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 14_SD_WS07.pm: new sensor / station Auriol AFW 2 A1, IAN: 297514 - feature: 90_SIGNALduino_un.pm: support tracing geiger rohrmotor signals - change: 00_SIGNALduino.pm: v3.4.0 Option to reconstruct last bit of transmission in MU and MS signals diff --git a/FHEM/14_SD_WS07.pm b/FHEM/14_SD_WS07.pm index 785d8c987..04c279c9e 100644 --- a/FHEM/14_SD_WS07.pm +++ b/FHEM/14_SD_WS07.pm @@ -21,7 +21,7 @@ # flags are 4 bits B 0 C C, where B is the battery status: 1=OK, 0=LOW # and CC is the channel: 0=CH1, 1=CH2, 2=CH3 # temp is 12 bit signed scaled by 10 -# const is always 1111 (0x0F) +# const is always 1111 (0xF) or 1010 (0xA) # humiditiy is 8 bits package main; @@ -37,8 +37,7 @@ sub SD_WS07_Initialize($) { my ($hash) = @_; - - $hash->{Match} = "^P7#[A-Fa-f0-9]{6}F[A-Fa-f0-9]{2}"; ## pos 7 ist aktuell immer 0xF + $hash->{Match} = "^P7#[A-Fa-f0-9]{6}[AFaf][A-Fa-f0-9]{2,3}"; ## pos 7 ist aktuell immer 0xF oder 0xA $hash->{DefFn} = "SD_WS07_Define"; $hash->{UndefFn} = "SD_WS07_Undef"; $hash->{ParseFn} = "SD_WS07_Parse"; @@ -104,15 +103,18 @@ SD_WS07_Parse($$) Log3 $iohash, 4, "$iohash->{NAME}: SD_WS07_Parse $model ($msg) length: $hlen"; - # 0 4 8 9 12 24 28 36 - # 0011 0110 1 010 000100000010 1111 00111000 0000 eas8007 - # 0111 0010 1 010 000010111100 1111 00000000 0000 other device from anfichtn - # 1101 0010 0 000 000000010001 1111 00101000 other device from elektron-bbs - # 0110 0011 1 000 000011101010 1111 00001010 other device from HomeAuto_User SD_WS07_TH_631 - # 1110 1011 1 000 000010111000 1111 00000000 other device from HomeAuto_User SD_WS07_T_EB1 - # 1100 0100 1 000 000100100010 1111 00000000 other device from HomeAuto_User SD_WS07_T_C41 - # 0110 0100 0 000 000100001110 1111 00101010 hama TS36E from HomeAuto_User - Bat bit identified - # ID Bat CHN TMP ?? HUM + # 0 4 8 12 24 28 36 + # 00110110 1010 000100000010 1111 00111000 0000 eas8007 + # 01110010 1010 000010111100 1111 00000000 0000 other device from anfichtn + # 11010010 0000 000000010001 1111 00101000 other device from elektron-bbs + # 01100011 1000 000011101010 1111 00001010 other device from HomeAuto_User SD_WS07_TH_631 + # 11101011 1000 000010111000 1111 00000000 other device from HomeAuto_User SD_WS07_T_EB1 + # 11000100 1000 000100100010 1111 00000000 other device from HomeAuto_User SD_WS07_T_C41 + # 01100100 0000 000100001110 1111 00101010 hama TS36E from HomeAuto_User - Bat bit identified + # Long-ID BCCC TEMPERATURE ?? HUMIDITY B=Battery, C=Channel + + # 10110001 1000 000100011010 1010 00101100 Auriol AFW 2 A1, IAN: 297514 + # Long-ID BSCC TEMPERATURE ?? HUMIDITY B=Battery, S=Sendmode, C=Channel # Modelliste my %models = ( @@ -125,9 +127,13 @@ SD_WS07_Parse($$) my $id = substr($rawData,0,2); my $bat = substr($bitData,8,1) eq "1" ? "ok" : "low"; # 1 = ok | 0 = low --> identified on hama TS36E + my $sendmode; my $channel = oct("0b" . substr($bitData,9,3)) + 1; + if (substr($bitData,24,4) eq "1010") { + $sendmode = substr($bitData,9,1) eq "1" ? "manual" : "auto"; # 1 = manual | 0 = auto --> identified on Auriol AFW 2 A1 + $channel = oct("0b" . substr($bitData,10,2)) + 1; + } my $temp = oct("0b" . substr($bitData,12,12)); - my $bit24bis27 = oct("0b".substr($bitData,24,4)); my $hum = oct("0b" . substr($bitData,28,8)); my $modelkey; @@ -265,6 +271,7 @@ SD_WS07_Parse($$) readingsBulkUpdate($hash, "temperature", $temp) if ($temp ne""); readingsBulkUpdate($hash, "humidity", $hum) if ($models{$modelkey} eq "TH"); readingsBulkUpdate($hash, "batteryState", $bat); + readingsBulkUpdate($hash, "sendmode", $sendmode, 0) if (defined($sendmode)); readingsBulkUpdate($hash, "channel", $channel) if ($channel ne ""); readingsEndUpdate($hash, 1); # Notify is done by Dispatch @@ -306,6 +313,7 @@ sub SD_WS07_Attr(@)
Known models: @@ -387,6 +395,7 @@ sub SD_WS07_Attr(@)
Unterstützte Modelle: