Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support ecowitt wh40 rain gauge #1164

Merged
merged 25 commits into from
May 16, 2023
Merged

Support ecowitt wh40 rain gauge #1164

merged 25 commits into from
May 16, 2023

Conversation

sidey79
Copy link
Contributor

@sidey79 sidey79 commented Apr 2, 2023

  • Please check if the PR fulfills these requirements
  • Tests for the changes have been added / modified (needed for for bug fixes / features)
  • commandref has been added / updated (needed for bug fixes / features)
  • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
  • Bugfix (please link issue)
  • Feature enhancement
  • Documentation update
  • Unittest enhancement
  • other
  • What is the current behavior?
    (You can also link to an open issue here, if this describes the current behavior)

WH40 rain gauge sensor is not decoded

  • What is the new behavior (if this is a feature change)?

WH40 rain gauge sensor is decoded

  • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)

no

  • Other information:

Test this PR:
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/master-ecowittwh40/controls_signalduino.txt

#1162

- 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
- fixed logmessage typos
- added some protocol spec
- Added dp50 to sensortype
- added _TH to model
@sidey79 sidey79 self-assigned this Apr 2, 2023
@sidey79 sidey79 linked an issue Apr 2, 2023 that may be closed by this pull request
@codecov
Copy link

codecov bot commented Apr 2, 2023

Codecov Report

Merging #1164 (66837d3) into master (08f6446) will increase coverage by 0.00%.
The diff coverage is 70.37%.

@@           Coverage Diff           @@
##           master    #1164   +/-   ##
=======================================
  Coverage   67.71%   67.71%           
=======================================
  Files         133      137    +4     
  Lines        9827     9885   +58     
  Branches     1572     1576    +4     
=======================================
+ Hits         6654     6694   +40     
- Misses       1876     1890   +14     
- Partials     1297     1301    +4     
Flag Coverage Δ
fhem 57.45% <70.37%> (+0.07%) ⬆️
modules 67.71% <70.37%> (+<0.01%) ⬆️
perl 90.33% <ø> (+0.16%) ⬆️
unittests 67.71% <70.37%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
FHEM/lib/SD_ProtocolData.pm 100.00% <ø> (ø)
FHEM/14_SD_WS.pm 69.14% <69.23%> (+<0.01%) ⬆️
FHEM/00_SIGNALduino.pm 64.25% <100.00%> (ø)

... and 5 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

added rfomode to commandref
- Updated length min, max
- Added new RF Mode
- Updated Testdata
- Updated version
FHEM/14_SD_WS.pm Outdated Show resolved Hide resolved
FHEM/14_SD_WS.pm Outdated Show resolved Hide resolved
FHEM/lib/SD_ProtocolData.pm Outdated Show resolved Hide resolved
@sidey79
Copy link
Contributor Author

sidey79 commented Apr 5, 2023

@elektron-bbs

Ich habe da aber noch eine Frage zu den Rain Readings. Da gibt es ja durchaus mehrere.
So eindeutig habe ich nichts gefunden, wie welches Reading zu verwenden ist.
Bei diesem Sensor ist es so, dass er einen counter Verwendet. Der wird mit jeder Wippe um eins erhöht.

Welches Reading soll ich da nehmen und wie rechnen wir dann die anderen readings aus.
Überlauf vom Zähler und Batteriewechsel wären ja auch noch so zwei Themen die ich gerne betrachten würde.

@elektron-bbs
Copy link
Contributor

Ich habe da aber noch eine Frage zu den Rain Readings. Da gibt es ja durchaus mehrere. So eindeutig habe ich nichts gefunden, wie welches Reading zu verwenden ist. Bei diesem Sensor ist es so, dass er einen counter Verwendet. Der wird mit jeder Wippe um eins erhöht.

So ist es wohl bei den meisten Regensensoren.
Ich habe bisher nur das Reading "rain" verwendet, das schon umgerechnet die Regenmenge in l/mm² ausgibt.
"rawRainCounter" sollte dann wohl direkt der Zähler ohne Umrechnung sein - interessiert wahrscheinlich niemanden.
"rain_total" stellt eigentlich das selbe dar wie "rain" - wird nur bei Protokoll 54 verwendet und wurde wohl mal von einem anderen Entwickler verwendet.

Welches Reading soll ich da nehmen und wie rechnen wir dann die anderen readings aus. Überlauf vom Zähler und Batteriewechsel wären ja auch noch so zwei Themen die ich gerne betrachten würde.

Den Überlauf des Zählers bzw. Start bei 0 wenn Sensor neu startet habe ich bisher noch nicht berücksichtigt. Man müsste den aktuellen Zählerstand in einer zweiten Variable speichern und wenn der neue Zählerstand kleiner als der vorhergehende ist, beide Werte addieren. Das könnte dann "rain_total" werden?

@sidey79
Copy link
Contributor Author

sidey79 commented Apr 5, 2023

Hier mal ein paar Daten (ohne Regenfall)

	Line 1: 2023.04.05 04:53:35.205 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A4 RSSI = -87.5
	Line 6: 2023.04.05 04:54:24.204 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A7;R=229;�
	Line 7: 2023.04.05 04:54:24.205 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A7 RSSI = -87.5
	Line 8: 2023.04.05 04:55:13.205 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A0;R=230;�
	Line 9: 2023.04.05 04:55:13.207 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A0 RSSI = -87
	Line 14: 2023.04.05 04:56:02.231 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A7;R=228;�
	Line 15: 2023.04.05 04:56:02.232 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A7 RSSI = -88
	Line 20: 2023.04.05 04:56:51.223 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A6;R=229;�
	Line 21: 2023.04.05 04:56:51.225 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A6 RSSI = -87.5
	Line 26: 2023.04.05 04:57:40.232 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720AA;R=229;�
	Line 27: 2023.04.05 04:57:40.234 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720AA RSSI = -87.5
	Line 28: 2023.04.05 04:58:29.229 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720AC;R=228;�
	Line 29: 2023.04.05 04:58:29.236 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720AC RSSI = -88
	Line 34: 2023.04.05 04:59:18.206 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A6;R=229;�
	Line 35: 2023.04.05 04:59:18.208 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A6 RSSI = -87.5
	Line 40: 2023.04.05 05:00:07.208 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720AB;R=229;�
	Line 41: 2023.04.05 05:00:07.210 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720AB RSSI = -87.5
	Line 46: 2023.04.05 05:00:56.207 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A7;R=229;�
	Line 47: 2023.04.05 05:00:56.209 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A7 RSSI = -87.5
	Line 50: 2023.04.05 05:01:45.208 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A6;R=228;�
	Line 51: 2023.04.05 05:01:45.210 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A6 RSSI = -88
	Line 52: 2023.04.05 05:02:34.233 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A0;R=228;�
	Line 53: 2023.04.05 05:02:34.234 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A0 RSSI = -88
	Line 58: 2023.04.05 05:03:23.232 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A6;R=228;�
	Line 59: 2023.04.05 05:03:23.233 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A6 RSSI = -88
	Line 64: 2023.04.05 05:04:12.235 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A9;R=229;�
	Line 65: 2023.04.05 05:04:12.236 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A9 RSSI = -87.5
	Line 70: 2023.04.05 05:05:01.233 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A0;R=229;�
	Line 71: 2023.04.05 05:05:01.235 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A0 RSSI = -87.5
	Line 74: 2023.04.05 05:05:50.206 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A5;R=229;�
	Line 75: 2023.04.05 05:05:50.208 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A5 RSSI = -87.5
	Line 78: 2023.04.05 05:06:39.209 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A3;R=228;�
	Line 79: 2023.04.05 05:06:39.211 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A3 RSSI = -88
	Line 84: 2023.04.05 05:07:28.211 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A2;R=229;�
	Line 85: 2023.04.05 05:07:28.213 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A2 RSSI = -87.5
	Line 90: 2023.04.05 05:08:17.210 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A6;R=228;�
	Line 91: 2023.04.05 05:08:17.212 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A6 RSSI = -88
	Line 96: 2023.04.05 05:09:06.237 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720AF;R=228;�
	Line 97: 2023.04.05 05:09:06.240 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720AF RSSI = -88
	Line 100: 2023.04.05 05:09:55.236 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A4;R=228;�
	Line 101: 2023.04.05 05:09:55.243 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A4 RSSI = -88
	Line 104: 2023.04.05 05:10:44.237 4: signalESP: Read, msg: �MN;D=40013E3C90004C50E720A0;R=228;�
	Line 105: 2023.04.05 05:10:44.238 5: signalESP: Parse_MN, Decoded matched MN Protocol id 126 dmsg=W126#40013E3C90004C50E720A0 RSSI = -88

sidey79 and others added 9 commits April 5, 2023 23:26
added Testdata for channel 2 and 3
removed max length check
- Added Protocol 126 WH40 rain
- wh40 in commandref ergänzt
- added Protocol 126 WH40 rain gauge
- added rfmode wh40 to commandref
- convert rainvalue from hex to dec
- reemoved rain reading
- added rain_total and rawrainCounter
- added test with rain
@elektron-bbs
Copy link
Contributor

Eben zufällig entdeckt: "Newer version of the WH40 rain gauge report battery voltage."
merbanan/rtl_433#2488
merbanan/rtl_433@c86b41a#diff-bf14f50136e7b7d581a086567c85ce451b0a513ef9aed71bd1b0d6049c1d418c

@sidey79
Copy link
Contributor Author

sidey79 commented Apr 22, 2023

Hmm, da bin ich gespannt, ob ich die neuere habe.

Base automatically changed from master-ecowittwh31 to master May 1, 2023 11:15
@sidey79
Copy link
Contributor Author

sidey79 commented May 6, 2023

@elektron-bbs

Also ich habe vermutlich nicht den Mut Batterie Übermittlung.
So ungetestet den Wert einbauen ist irgendwie unschön, da wir keine Testdaten haben.

Soll ich den Branch aktualisieren und wir merken mal?

@elektron-bbs
Copy link
Contributor

Also ich habe vermutlich nicht den Mut Batterie Übermittlung. So ungetestet den Wert einbauen ist irgendwie unschön, da wir keine Testdaten haben.

Willst du damit sagen. das du deinen Sensor mit verschiedenen Betriebsspannungen getestet hast und er aber nicht die Batteriespannung übermittelt hat?
Wenn dem so ist, so findet sich vielleicht in den RAW-Daten ein Unterschied zwischen alter und neuer Version?

@sidey79
Copy link
Contributor Author

sidey79 commented May 6, 2023

Also ich habe vermutlich nicht den Mut Batterie Übermittlung. So ungetestet den Wert einbauen ist irgendwie unschön, da wir keine Testdaten haben.

Willst du damit sagen. das du deinen Sensor mit verschiedenen Betriebsspannungen getestet hast und er aber nicht die Batteriespannung übermittelt hat? Wenn dem so ist, so findet sich vielleicht in den RAW-Daten ein Unterschied zwischen alter und neuer Version?

Meiner schickt immer 8F in der Anleitung steht auch, er würde die Batteriespannung nicht übermitteln. Hatte gehofft die sei veraltet, aber wohl eher nicht.

@elektron-bbs
Copy link
Contributor

elektron-bbs commented May 7, 2023

Mhmm, ich sehe in den Daten, die du oben gepostet hast zwar kein 0x8F, sondern immer 0x90, dezimal (Bit 0 bis 4) 16 - entspräche 1,6 Volt. In den Beispielen im Quellcode ist FV immer 0x10.
Was auch auffällt, sind die ersten beiden Bytes. Im Quellcode von rtl_433 ist das immer 0x4000 und bei dir 0x4001.

Die meisten Sensoren senden lt. https://www.wxforum.net/index.php?topic=41764.msg438362#msg438362 wohl keine Batteriespannung.

EDIT:
Wenn du da jetzt 0x8F erhältst, entspräche das ja 1,5 Volt - das würde doch passen.

@sidey79
Copy link
Contributor Author

sidey79 commented May 7, 2023

Was auch auffällt, sind die ersten beiden Bytes. Im Quellcode von rtl_433 ist das immer 0x4000 und bei dir 0x4001.

Da das 4. Nibble gehört zur ID. Mag auch sein, dass es längere oder kürzere IDs gitb, aber da die ID auch neben am Sensor aufgeklebt ist, ist es eindeutig.

Die meisten Sensoren senden lt. https://www.wxforum.net/index.php?topic=41764.msg438362#msg438362 wohl keine Batteriespannung.

EDIT: Wenn du da jetzt 0x8F erhältst, entspräche das ja 1,5 Volt - das würde doch passen.
Hmm, jetzt regnet es gerade, aber wenn ich jetzt Akkus einsetze müsste ein geringerer Wert kommen.

@Antannah

Was sendet deine WH40 denn als 5. Byte? Ändert sich da was?

@sidey79
Copy link
Contributor Author

sidey79 commented May 9, 2023

Akku eingebaut , der sollte 1.2V haben.

Seit dem ist der Empfang Schrott aber tatsächlich wird an der vermuteten Stelle nun 8D gesendet.
Wenn die Annahmen stimmen, dann wäre das 1,3 V. Das halte ich hinsichtlich Akku auch für realistisch.

40013E3C8D000FA7FEF1A146B776

Also bauen wir die Batteriespannung ein?

@elektron-bbs
Copy link
Contributor

Das passt doch ausgezeichnet - einbauen!
Bliebe noch die Frage, was Bit 7 von diesem Byte bedeutet? Das ist bei dir bisher 1, aber bei den Beispielen 0.

sidey79 and others added 2 commits May 10, 2023 08:26
- added batteryVoltage reader for wh40
- added batteryState
FHEM/14_SD_WS.pm Outdated Show resolved Hide resolved
elektron-bbs
elektron-bbs previously approved these changes May 16, 2023
@sidey79
Copy link
Contributor Author

sidey79 commented May 16, 2023

@elektron-bbs vermutlich brauche ich gleich eine neue Bestätigung, weil der Branch nicht aktuell war.

@sidey79 sidey79 merged commit 62ff1d7 into master May 16, 2023
18 checks passed
@sidey79 sidey79 deleted the master-ecowittwh40 branch May 16, 2023 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Wh40 - rain drop sensor
3 participants