Skip to content

Commit

Permalink
new protocol 107 for Fine Offset WH51 (#1055)
Browse files Browse the repository at this point in the history
Soil moisture sensor Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1
* Update 00_SIGNALduino_initialize.t
  add new rfmodes in array
* Update 00_SIGNALduino.pm
  add documentation
* Update 14_SD_WS.pm
  add protocol 107
* Update SD_ProtocolData.pm
  add definition 107 and 107.1
* Update README.md
  add sensors Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1
  • Loading branch information
elektron-bbs committed Jan 9, 2022
1 parent 6cc7f28 commit 3e01850
Show file tree
Hide file tree
Showing 7 changed files with 157 additions and 56 deletions.
53 changes: 11 additions & 42 deletions CHANGED
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
2022-01-06 - new sensor Fody E42 (#1052)

The temperature / humidity sensor Fody E42 uses the protocol 108.

2021-12-30 - new protocol definition 7.1 for Mebus HQ7312-2 (#1050)

* various updates
SD_ProtocolData.pm - new definitiion protocol 7.1 for sensor Mebus HQ7312-2 decoded in modul SD_WS07
14_SD_WS07.pm - update commandref
README.md - add sensor


2021-12-20 - Filling the rfmode array for the attribute list. (#1047)

Update 00_SIGNALduino.pm
* SD_Protocols.pm
getKeys um eine Filterfunktion erweitert
Expand All @@ -20,90 +16,65 @@
* 00_SIGNALduino.t
array rfmode wird in SIGNALduino_Initialize und nicht mehr global mit Wert initialisiert.
Co-authored-by: sidey79 <7968127+sidey79@users.noreply.github.com>
2021-12-17 - wrong syntax in SIGNALduino_Parse_MS & SIGNALduino_Parse_MC (#1049)

2021-12-17 - wrong syntax in SIGNALduino_Parse_MS & SIGNALduino_Parse_MC (#1049)
* Update 00_SIGNALduino.pm
2021-12-16 - wrong syntax in SIGNALduino_Parse_MU (#1043)

2021-12-16 - wrong syntax in SIGNALduino_Parse_MU (#1043)
* Update 00_SIGNALduino.pm
2021-12-09 - Conrad S522 no reading batteryState (#1042)

2021-12-09 - Conrad S522 no reading batteryState (#1042)
* Conrad S522 no reading batteryState, but temperatureTrend
update 14_SD_WS.pm protocol 33

2021-12-05 - wrong syntax in SIGNALduino_Parse_MN (#1040)

* Update 00_SIGNALduino.pm
2021-11-28 - new protocol 109 for rojaflex remote controls (#1030)

2021-11-28 - new protocol 109 for rojaflex remote controls (#1030)
* New protocol 109 for Rojaflex remote controls
* New module 10_SD_Rojaflex.pm for protocol 109
* Update SD_ProtocolData.pm
* Update README.md
* Update 00_SIGNALduino.pm

2021-11-27 - PERL WARNING - sub ConvLaCrosse robust (#1038)

* ConvLaCrosse revised
- hex check added (eliminates PERL WARNINGS)

* Update SD_Protocols.pm

* Update Versiondate

* Update 02_ConvLaCrosse.t
2021-11-22 - Parse_MU check expanded - ToDo eliminated (#1033)

2021-11-22 - Parse_MU check expanded - ToDo eliminated (#1033)
* Update 00_SIGNALduino.pm
- more exact check for faulty MU message
- Parse_MU capture groups entfernt

* Update 01_SIGNALduino_Parse_MU.t

* 10_FS10/09_parseData.t
- compensate removed test due to stricter regex
2021-11-21 - Introduce dmsg Tests fs10 with corrupt data (#1034)

2021-11-21 - Introduce dmsg Tests fs10 with corrupt data (#1034)
* lib/Test2/SIGNALduino/RDmsg.pm

- Testtool to easily verify parseFN with dmsg Data.


* t/FS10/09_parseData.t

- Uses RDmsg to verify FS10 Module parseFN


* 10_FS10/testData.json

- added some data to cover errors

2021-11-21 - Allow incremental addition of match list entries (#1026)

00_Signalduino

- Added commandrefs for MatchList Attribute

- Changed MatchList attribute

01_SIGNALduino_Attr.t

- Added some tests to verify add and remove MatchList attribute

- remove test for deleted attribute



Co-authored-by: sidey79 <7968127+sidey79@users.noreply.github.com>
2021-11-04 - sub SIGNALduino_CheckccConfResponse - is more robust #1015 (#1031)

2021-11-04 - sub SIGNALduino_CheckccConfResponse - is more robust #1015 (#1031)
* Update 00_SIGNALduino.pm
https://github.com/RFD-FHEM/RFFHEM/issues/1015

* Update 02_SIGNALduino_CheckccConfResponse.t
test added with wrong value
2021-10-16 - LaCrosse mode 2 optimization register settings (#1027)

2021-10-16 - LaCrosse mode 2 optimization register settings (#1027)
* LaCrosse mode 2 optimization register settings
SD_ProtocolData.pm
Reg. 0x02 - IOCFG0 0x2E, GDO0 output pin configuration High impedance (3-state) - unused in FSK-modes
Expand All @@ -118,7 +89,6 @@ SD_ProtocolData.pm
change field register array

2021-10-04 - LaCrosse mode 1 optimization register settings (#1022)

SD_ProtocolData.pm
Reg. 0x02 - IOCFG0 0x2E, GDO0 output pin configuration High impedance (3-state) - unused in FSK-modes
Reg. 0x03 - FIFOTHR 0x41, Design Note DN009, FIFOTHR.ADC_RETENTION - CC1101 will wake up with optimal ADC settings for low data rate (≤ 100 kbps)
Expand All @@ -128,20 +98,19 @@ SD_ProtocolData.pm
Reg. 0x12 - MDMCFG2 0x02, SYNC_MODE 16/16 sync word bits detected

2021-10-04 - Bresser 5in1 optimize register settings CC110x (#1020)

Reg. 0x02 - 0x2E GDO0 output pin configuration, High impedance (3-state) - unused in FSK-modes
Reg. 0x06 - 0x1A (26 Byte) PKTLEN
Reg. 0x08 - 0x00 Fixed packet length mode. Length configured in PKTLEN register.
2021-09-17 - Update SD_ProtocolData.pm - remove register entry (#1017)

2021-09-17 - Update SD_ProtocolData.pm - remove register entry (#1017)
* Update SD_ProtocolData.pm
* Update 01_verifyFSK.t
* Update 01_SIGNALduino_Attr_rfmode.t
2021-09-08 - Fixes perlcritic prototypes in 14_SD_WS part 2 (#1013)

2021-09-08 - Fixes perlcritic prototypes in 14_SD_WS part 2 (#1013)
* Fixes perlcritic prototypes in 14_SD_WS
2021-08-30 - new protocol 115 for Bresser 6-in-1 and new 5-in-1 Comfort Wetter Center (#1010)

2021-08-30 - new protocol 115 for Bresser 6-in-1 and new 5-in-1 Comfort Wetter Center (#1010)
* 00_SIGNALduino.pm - add rfmode Bresser_6in1
* 14_SD_WS.pm - add protocol 115
* SD_ProtocolData.pm - add definition for protocol 115
Expand Down
34 changes: 30 additions & 4 deletions FHEM/00_SIGNALduino.pm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $Id: 00_SIGNALduino.pm v3.5.2 2021-12-19 18:11:16Z elektron-bbs $
# $Id: 00_SIGNALduino.pm v3.5.2 2022-01-08 20:06:52Z elektron-bbs $
# v3.5.2 - 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
Expand Down Expand Up @@ -38,7 +38,7 @@ use List::Util qw(first);


use constant {
SDUINO_VERSION => '3.5.2+20211219', # Datum wird automatisch bei jedem pull request aktualisiert
SDUINO_VERSION => '3.5.2+20220108', # 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,
Expand Down Expand Up @@ -4772,12 +4772,25 @@ USB-connected devices (SIGNALduino):<br>
<li>rfmode<br>
Configures the RF transceiver of the SIGNALduino (CC1101). The available arguments:
<ul>
<li>Avantek<br>
Modulation 2-FSK, Datarate=50.087 kbps, Sync Word=0869, FIFO-THR=8 Byte, Frequency 433.3 MHz
<ul><small>Example: AVANTEK Wireless Digital Door Bell</small></ul>
</li>
<li>Bresser_5in1<br>
modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, FIFO-THR=28 Byte, frequency 868.35 MHz
Modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, Packet Length=26 Byte, Frequency 868.35 MHz
<ul><small>Example: BRESSER 5-in-1 weather center, BRESSER rain gauge, Fody E42, Fody E43</small></ul>
</li>
<li>Bresser_6in1<br>
modulation 2-FSK, Datarate=8.23 kbps, Sync Word=2DD4, FIFO-THR=20 Byte, frequency 868.35 MHz
</li>
<li>Fine_Offset_WH51_434<br>
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequency 433.92 MHz
<ul><small>Example: Soil moisture sensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100</small></ul>
</li>
<li>Fine_Offset_WH51_868<br>
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequency 868.35 MHz
<ul><small>Example: Soil moisture sensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100</small></ul>
</li>
<li>KOPP_FC<br>
modulation GFSK, Datarate=4.7855 kbps, Sync Word=AA54, frequency 868.3MHz
</li>
Expand Down Expand Up @@ -5330,12 +5343,25 @@ USB-connected devices (SIGNALduino):<br>
<li>rfmode<br>
Konfiguriert den RF Transceiver des SIGNALduino (CC1101). Verf&uuml;gbare Argumente sind:
<ul>
<li>Avantek<br>
Modulation 2-FSK, Datarate=50.087 kbps, Sync Word=0869, FIFO-THR=8 Byte, Frequenz 433.3 MHz
<ul><small>Example: AVANTEK Funk-Türklingel</small></ul>
</li>
<li>Bresser_5in1<br>
Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, FIFO-THR=28 Byte, Frequenz 868.35 MHz
Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=26 Byte, Frequenz 868.35 MHz
<ul><small>Beispiel: BRESSER 5-in-1 Wetter Center, BRESSER Profi Regenmesser, Fody E42, Fody E43</small></ul>
</li>
<li>Bresser_6in1<br>
Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, FIFO-THR=20 Byte, Frequenz 868.35 MHz
</li>
<li>Fine_Offset_WH51_434<br>
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 433.92 MHz
<ul><small>Beispiel: Bodenfeuchtesensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100</small></ul>
</li>
<li>Fine_Offset_WH51_868<br>
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 868.35 MHz
<ul><small>Beispiel: Bodenfeuchtesensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100</small></ul>
</li>
<li>KOPP_FC<br>
Modulation GFSK, Datenrate=4.7855 kbps, Sync Word=AA54, Frequenz 868.3MHz
</li>
Expand Down
74 changes: 72 additions & 2 deletions FHEM/14_SD_WS.pm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $Id: 14_SD_WS.pm 21666 2022-01-05 20:44:16Z elektron-bbs $
# $Id: 14_SD_WS.pm 21666 2022-01-08 20:06:52Z elektron-bbs $
#
# The purpose of this module is to support serval
# weather sensors which use various protocol
Expand Down Expand Up @@ -38,6 +38,7 @@
# 30.08.2021 PerlCritic - fixes for severity level 5 and 4
# 07.12.2021 Protokoll 33: Conrad S522 kein Batteriebit, dafuer Trend Temperatur
# 05.01.2022 Protokoll 108: neuer Sensor Fody E42
# 08.01.2022 neues Protokoll 107: Soil Moisture Sensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100

package main;

Expand Down Expand Up @@ -86,6 +87,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_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'},
Expand Down Expand Up @@ -140,6 +142,7 @@ sub SD_WS_Parse {
my $id;
my $bat;
my $batChange;
my $batVoltage;
my $sendmode;
my $channel;
my $rawTemp;
Expand All @@ -161,6 +164,7 @@ sub SD_WS_Parse {
my $beep;
my $distance;
my $uv;
my $adc;

my %decodingSubs = (
50 => # Protocol 50
Expand Down Expand Up @@ -699,6 +703,62 @@ sub SD_WS_Parse {
},
crcok => sub {return 1;}, # CRC test method does not exist
} ,
107 => {
# Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100 Soil Moisture Sensor
# ---------------------------------------------------------------------------
# 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 51 00 6b 58 6e 7f 24 f8 d2 ff ff ff 3c 28
# MN;D=51 00 C6 BF 10 7F 23 F8 C7 FF FF FF 5D A1 ;R=14; H: 35
# FF II II II TB YY MM ZA AA XX XX XX CC SS
# FF: Family code 0x51 (ECOWITT/FineOffset WH51)
# IIIIII: ID (3 bytes)
# T: Transmission period boost: highest 3 bits set to 111 on moisture change and decremented each transmission, if T = 0 period is 70 sec, if T > 0 period is 10 sec
# B: Battery voltage: lowest 5 bits are battery voltage * 10 (e.g. 0x0c = 12 = 1.2V). Transmitter works down to 0.7V (0x07)
# YY: ? Fixed: 0x7f
# MM: Moisture percentage 0%-100% (0x00-0x64) MM = (AD - 70) / (450 - 70)
# Z: ? Fixed: leftmost 7 bit 1111 100
# AAA: 9 bit AD value MSB byte[07] & 0x01, LSB byte[08] ??? 10 bit ??? WH51 Manual.pdf says: 100%AD setting range:0%AD+10~1000
# XXXXXX: ? Fixed: 0xff 0xff 0xff
# CC: CRC of the preceding 12 bytes (Polynomial 0x31, Initial value 0x00, Input not reflected, Result not reflected)
# SS: Sum of the preceding 13 bytes % 256
sensortype => 'WH51, DP100, MISOL/1',
model => 'SD_WS_107_H',
prematch => sub { ($rawData,undef) = @_; return 1 if ($rawData =~ /^51[0-9A-F]{16}[F]{6}/); },
id => sub { my ($rawData,undef) = @_; return substr($rawData,2,6); },
batVoltage => sub { my (undef,$bitData) = @_; return round(SD_WS_binaryToNumber($bitData,35,39) / 10 , 1); },
adc => sub { my (undef,$bitData) = @_; return SD_WS_binaryToNumber($bitData,62,71); },
hum => sub { my ($rawData,undef) = @_; return hex(substr($rawData,12,2)); },
crcok => sub { my $rawData = shift;
my $rc = eval {
require Digest::CRC;
Digest::CRC->import();
1;
};
if ($rc) {
my $datacheck1 = pack( 'H*', substr($rawData,0,24) );
my $crcmein1 = Digest::CRC->new(width => 8, poly => 0x31);
my $rr3 = $crcmein1->add($datacheck1)->hexdigest;
if (hex($rr3) != hex(substr($rawData,24,2))) {
Log3 $name, 3, "$name: SD_WS_107 Parse msg $rawData - ERROR CRC8";
return 0;
}
} else {
Log3 $name, 1, "$name: SD_WS_107 Parse msg $rawData - ERROR CRC not load, please install modul Digest::CRC";
return 0;
}
my $checksum = 0;
for (my $i=0; $i < 26; $i += 2) {
$checksum += hex(substr($rawData,$i,2));
}
$checksum &= 255;
if ($checksum != hex(substr($rawData,26,2))) {
Log3 $name, 3, "$name: SD_WS_107 Parse msg $rawData - ERROR checksum";
return 0;
}
return 1;
}
} ,
108 => {
# https://github.com/merbanan/rtl_433/blob/master/src/devices/bresser_5in1.c
# The compact 5-in-1 multifunction outdoor sensor transmits the data on 868.3 MHz.
Expand Down Expand Up @@ -1305,12 +1365,14 @@ sub SD_WS_Parse {
$channel = $decodingSubs{$protocol}{channel}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{channel}));
$model = $decodingSubs{$protocol}{model};
$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}));
$rawRainCounter = $decodingSubs{$protocol}{rawRainCounter}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{rawRainCounter}));
$rain = $decodingSubs{$protocol}{rain}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{rain}));
$rain_total = $decodingSubs{$protocol}{rain_total}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{rain_total}));
$sendCounter = $decodingSubs{$protocol}{sendCounter}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{sendCounter}));
$beep = $decodingSubs{$protocol}{beep}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{beep}));
$adc = $decodingSubs{$protocol}{adc}->( $rawData,$bitData ) if (exists($decodingSubs{$protocol}{adc}));
if ($model eq "SD_WS_33_T" || $model eq "SD_WS_58_T") { # for SD_WS_33 or SD_WS_58 discrimination T - TH
$model = $decodingSubs{$protocol}{model}."H" if $hum != 0; # for models with Humidity
}
Expand Down Expand Up @@ -1480,6 +1542,7 @@ sub SD_WS_Parse {
readingsBulkUpdate($hash, 'windDirectionText', $winddirtxt) if (defined($winddirtxt)) ;
readingsBulkUpdate($hash, 'windGust', $windgust) if (defined($windgust)) ;
readingsBulkUpdate($hash, "batteryState", $bat) if (defined($bat) && length($bat) > 0) ;
readingsBulkUpdate($hash, "batteryVoltage", $batVoltage) if (defined($batVoltage));
readingsBulkUpdateIfChanged($hash, "batteryChanged", $batChange) if (defined($batChange));
readingsBulkUpdate($hash, "channel", $channel, 0) if (defined($channel)&& length($channel) > 0);
readingsBulkUpdate($hash, "trend", $trend) if (defined($trend) && length($trend) > 0);
Expand All @@ -1488,6 +1551,7 @@ sub SD_WS_Parse {
readingsBulkUpdate($hash, "sendmode", $sendmode) if (defined($sendmode) && length($sendmode) > 0);
readingsBulkUpdate($hash, "type", $SensorTyp, 0) if (defined($SensorTyp));
readingsBulkUpdate($hash, "beep", $beep) if (defined($beep));
readingsBulkUpdate($hash, "adc", $adc) if (defined($adc));
readingsBulkUpdate($hash, 'rain', $rain) if (defined($rain));
readingsBulkUpdate($hash, "rawRainCounter", $rawRainCounter) if (defined($rawRainCounter));
readingsBulkUpdate($hash, "rain_total", $rain_total) if (defined($rain_total));
Expand Down Expand Up @@ -1594,6 +1658,7 @@ sub SD_WS_WH2SHIFT {
<li>Bresser 5-in-1 and 6-in-1 Comfort Weather Center, 7009994, Professional rain gauge, Temeo</li>
<li>Conrad S522</li>
<li>EuroChron EFTH-800, EFS-3110A (temperature and humidity sensor)</li>
<li>Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (soil moisture sensor)</li>
<li>Fody E42 (temperature and humidity sensor)</li>
<li>NC-3911, NC-3912 refrigerator thermometer</li>
<li>Opus XT300</li>
Expand Down Expand Up @@ -1634,8 +1699,10 @@ sub SD_WS_WH2SHIFT {
Some devices may not support all readings, so they will not be presented<br>
</ul>
<ul>
<li>adc (raw value from analog to digital converter)</li>
<li>batteryChanged (1)</li>
<li>batteryState (low or ok)</li>
<li>batteryVoltage (battery voltage in volts)</li>
<li>channel (number of channel</li>
<li>distance (distance in cm)</li>
<li>humidity (humidity (1-100 % only if available)</li>
Expand Down Expand Up @@ -1714,6 +1781,7 @@ sub SD_WS_WH2SHIFT {
<li>Bresser 5-in-1 und 6-in-1 Comfort Wetter Center, 7009994, Profi Regenmesser, Temeo</li>
<li>Conrad S522</li>
<li>EuroChron EFTH-800, EFS-3110A (Temperatur- und Feuchtigkeitssensor)</li>
<li>Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (Bodenfeuchtesensor)</li>
<li>Fody E42 (Temperatur- und Feuchtigkeitssensor)</li>
<li>Kabelloses Grillthermometer, Modellname: GFGT 433 B1</li>
<li>NC-3911, NC-3912 digitales Kuehl- und Gefrierschrank-Thermometer</li>
Expand Down Expand Up @@ -1755,11 +1823,13 @@ sub SD_WS_WH2SHIFT {
<b>Generierte Readings:</b><br><br>
<ul>(verschieden, je nach Typ des Sensors)</ul>
<ul>
<li>adc (Roh-Wert vom Analog-Digital-Wandler)</li>
<li>batteryChanged (1)</li>
<li>batteryState (low oder ok)</li>
<li>batteryVoltage (Batteriespannung in Volt)</li>
<li>channel (Sensor-Kanal)</li>
<li>distance (Entfernung in cm)</li>
<li>humidity (Luftfeuchte, 1-100 %)</li>
<li>humidity (Luft-/Bodenfeuchte, 1-100 %)</li>
<li>humidityTrend (Trend Luftfeuchte, gleichbleibend, steigend, fallend)</li>
<li>rain (Regenmenge l/m&sup2;))</li>
<li>rain_total (Regenmenge l/m&sup2;))</li>
Expand Down
Loading

0 comments on commit 3e01850

Please sign in to comment.