Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:tech:rainsensor

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:tech:rainsensor [2022/11/12 20:29] bullarde:tech:rainsensor [2026/08/12 12:15] (aktuell) – external edit 127.0.0.1
Zeile 5: Zeile 5:
 Die üppige Vegetation hier in Thailand ist der Wärme aber auch den teils heftigen Niederschlägen geschuldet. Die Temperaturen bewegen sich immer im Bereich von +25...35°C und lassen so keinen Sommer oder Winter erkennen. Schön ist das [[https://de.climate-data.org/asien/thailand/surat-thani-province/koh-samui-710324/#climate-graph|hier]] zu sehen. Die eigene Temperaturaufzeichnung in [[https://www.home-assistant.io|Home Assistant]] bestätigt auch die hohe Luftfeuchtigkeit.  Die üppige Vegetation hier in Thailand ist der Wärme aber auch den teils heftigen Niederschlägen geschuldet. Die Temperaturen bewegen sich immer im Bereich von +25...35°C und lassen so keinen Sommer oder Winter erkennen. Schön ist das [[https://de.climate-data.org/asien/thailand/surat-thani-province/koh-samui-710324/#climate-graph|hier]] zu sehen. Die eigene Temperaturaufzeichnung in [[https://www.home-assistant.io|Home Assistant]] bestätigt auch die hohe Luftfeuchtigkeit. 
  
-{{ :tech:villa_temp_humidity.png?direct&400 |}}+{{ :media:tech:solarvilla:villa_temp_humidity.png?direct&400 |}}
  
 Die Jahresregenmenge kann bis zu 1600 mm/m<sup>2</sup> (1mm = 1 Liter) betragen. In Deutschland ist es je nach Region weniger als die Hälfte. Die beiden folgenden Diagramme machen das deutlich: Die Jahresregenmenge kann bis zu 1600 mm/m<sup>2</sup> (1mm = 1 Liter) betragen. In Deutschland ist es je nach Region weniger als die Hälfte. Die beiden folgenden Diagramme machen das deutlich:
  
-{{ :tech:climate_dus-usm.png?direct&800 | Climate USM/DUS}}+{{ :media:tech:solarvilla:climate_dus-usm.png?direct&800 | Climate USM/DUS}}
  
 Allerdings erfassen wir bisher nicht die wirkliche Regenmenge auf unserem Grundstück. Ein Grund genug für ein neues Projekt... Allerdings erfassen wir bisher nicht die wirkliche Regenmenge auf unserem Grundstück. Ein Grund genug für ein neues Projekt...
Zeile 19: Zeile 19:
 Ein digitaler Niederschlagsmesser verwendet einen Trichter um das Regenwasser zu bündeln und um es dann auf eine Kippwaage zu leiten. Ist die eine Seite vollgelaufen dann kippt die Waage, entleert die vollgelaufene Hälfte und die zweite Seite kann voll laufen. Zählt man die Anzahl der Kippvorgänge hat man ein gutes Maß für die Regenmenge. Natürlich muss das Maß für den Trichtereinlass sowie die Aufnahmemenge der Kippwaage bekannt sein. Genau solch einen Sensor kann man auch selber bauen. [[https://www.thingiverse.com/thing:3039882|Hier]] ist ein gutes Beispiel mit 3D Druck. Es gibt diese Art Sensoren aber auch fertig als Zubehörteil für proprietäre Wetterstationen. Ein Anbieter ist [[https://www.amazon.de/TFA-Dostmann-30-3161-Regensensor-FS-NEUTR/dp/B00FYSUATO/ref=asc_df_B00FYSUATO/?tag=googshopde-21&linkCode=df0&hvadid=256305048636&hvpos=&hvnetw=g&hvrand=2090987274523674214&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9043878&hvtargid=pla-427056504859&psc=1&th=1&psc=1|TFA Drostmann]]: Ein digitaler Niederschlagsmesser verwendet einen Trichter um das Regenwasser zu bündeln und um es dann auf eine Kippwaage zu leiten. Ist die eine Seite vollgelaufen dann kippt die Waage, entleert die vollgelaufene Hälfte und die zweite Seite kann voll laufen. Zählt man die Anzahl der Kippvorgänge hat man ein gutes Maß für die Regenmenge. Natürlich muss das Maß für den Trichtereinlass sowie die Aufnahmemenge der Kippwaage bekannt sein. Genau solch einen Sensor kann man auch selber bauen. [[https://www.thingiverse.com/thing:3039882|Hier]] ist ein gutes Beispiel mit 3D Druck. Es gibt diese Art Sensoren aber auch fertig als Zubehörteil für proprietäre Wetterstationen. Ein Anbieter ist [[https://www.amazon.de/TFA-Dostmann-30-3161-Regensensor-FS-NEUTR/dp/B00FYSUATO/ref=asc_df_B00FYSUATO/?tag=googshopde-21&linkCode=df0&hvadid=256305048636&hvpos=&hvnetw=g&hvrand=2090987274523674214&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9043878&hvtargid=pla-427056504859&psc=1&th=1&psc=1|TFA Drostmann]]:
  
-{{ :tech:rain_sensor.png?direct&300 | TFA Drostmann rain sensor}}+{{ :media:tech:rainsensor:rain_sensor.png?direct&200 | TFA Drostmann rain sensor}}
  
 Der Sensor ist batteriebetrieben und sendet die Messwerte auf 433MHz. Er kann also irgendwo draussen im Garten positioniert werden. Um den Sensor für eigene Anwendungen wie Home Assistant verwenden zu können bedarf es etwas //Reverse Engineering//. Der Sensor ist batteriebetrieben und sendet die Messwerte auf 433MHz. Er kann also irgendwo draussen im Garten positioniert werden. Um den Sensor für eigene Anwendungen wie Home Assistant verwenden zu können bedarf es etwas //Reverse Engineering//.
 Das Trichtergehäuse läßt sich einfach entfernen. Zum Vorschein kommt die Kippwaage mit dem dahinter liegenden Gehäuse für die Elektronik. Ein Magnet in der Kippwaage stimuliert einen Reedkontakt im Innern. Das Batteriefach (2xAA) ist von unten zugänglich. Das Trichtergehäuse läßt sich einfach entfernen. Zum Vorschein kommt die Kippwaage mit dem dahinter liegenden Gehäuse für die Elektronik. Ein Magnet in der Kippwaage stimuliert einen Reedkontakt im Innern. Das Batteriefach (2xAA) ist von unten zugänglich.
  
-{{ :tech:rain_sensor_wippe.png?direct&300 |Mechanics}}+{{ :media:tech:rainsensor:rain_sensor_wippe.png?direct&200 |Mechanics}}
  
 Im Innern residieren zwei Platinen. Eine mit dem Reedkontakt und COB (Chip On Board) und das zweite PCB ist der Sender (433MHz) Im Innern residieren zwei Platinen. Eine mit dem Reedkontakt und COB (Chip On Board) und das zweite PCB ist der Sender (433MHz)
  
-{{:tech:rain_sensor_pcb1.png?nolink&200|CPU PCB}} +<WRAP group> 
-{{:tech:rain_sensor_pcb2.png?nolink&210|Sender PCB}}+<WRAP half column> 
 +{{ :media:tech:rainsensor:rain_sensor_pcb1.png?nolink&200|CPU PCB}} 
 +</WRAP> 
 +<WRAP half column> 
 +{{:media:tech:rainsensor:rain_sensor_pcb2.png?nolink&210 |Sender PCB}} 
 +</WRAP> 
 +</WRAP>
  
 Diese Trennung erlaubt uns einfach das Protokoll zum Sender abzugreifen. Diese Trennung erlaubt uns einfach das Protokoll zum Sender abzugreifen.
Zeile 38: Zeile 44:
 Im Batteriefach gibt es eine Triggertaste, die den aktuellen Messwert sofort sendet. Praktisch für die Aufzeichnung mit einem Logicanalyzer, dann braucht man nicht bis zum nächsten Frame zu warten. Zunächst fällt auf, dass das Protokoll anscheinen 8 mal wiederholt ausgegeben wird mit einer Pause von ca. 9ms dazwischen. Im Batteriefach gibt es eine Triggertaste, die den aktuellen Messwert sofort sendet. Praktisch für die Aufzeichnung mit einem Logicanalyzer, dann braucht man nicht bis zum nächsten Frame zu warten. Zunächst fällt auf, dass das Protokoll anscheinen 8 mal wiederholt ausgegeben wird mit einer Pause von ca. 9ms dazwischen.
  
-{{ :tech:rain_sensor_protocol1.png?direct&700 |entire frame}}+{{ :media:tech:rainsensor:rain_sensor_protocol1.png?direct&700 |entire frame}}
  
 Zoomt man weiter hinein dann zeigt der [[https://www.saleae.com|SALEAE Logic Analzer]] ein ASK (Amplitude-Shift Keying) Protokoll. Zwischen einem immer gleich langen Highpuls von ca. 488µs kommen zwei Arten von Pausen: eine 2ms lang und die andere 4ms.   Zoomt man weiter hinein dann zeigt der [[https://www.saleae.com|SALEAE Logic Analzer]] ein ASK (Amplitude-Shift Keying) Protokoll. Zwischen einem immer gleich langen Highpuls von ca. 488µs kommen zwei Arten von Pausen: eine 2ms lang und die andere 4ms.  
  
-{{ :tech:rain_sensor_protocol2.png?direct&600 |zoomed in}}+{{ :media:tech:rainsensor:rain_sensor_protocol2.png?direct&600 |zoomed in}}
  
 Schauen wir uns nun mal an, was dann wirklich gesendet wird.  Schauen wir uns nun mal an, was dann wirklich gesendet wird. 
Zeile 51: Zeile 57:
 Eine preiswerte Möglichkeit für Untersuchungen im Frequenzbereich so bis ca. 1766 MHz ist ein Software Defined Radio (SDR). Das reicht für die 433MHz des Regensensors völlig aus. Als Hardwarebasis dient ein 'alter' DVB-T Stick sofern er den Chipsatz **RTL2832U+R820T2** beinhaltet. Der lässt sich nämlich frei programmieren. Ich habe mich für das Set von DollaTek entschieden, was für ca. 25,- € im Online-Markt der Wahl zu beschaffen ist. Eine preiswerte Möglichkeit für Untersuchungen im Frequenzbereich so bis ca. 1766 MHz ist ein Software Defined Radio (SDR). Das reicht für die 433MHz des Regensensors völlig aus. Als Hardwarebasis dient ein 'alter' DVB-T Stick sofern er den Chipsatz **RTL2832U+R820T2** beinhaltet. Der lässt sich nämlich frei programmieren. Ich habe mich für das Set von DollaTek entschieden, was für ca. 25,- € im Online-Markt der Wahl zu beschaffen ist.
  
-{{ :tech:sdr_set.png?direct&400 | DollaTek DVB-T set}}+{{ :media:tech:rainsensor:sdr_set.png?direct&400 | DollaTek DVB-T set}}
  
 Die Fernbedienung und auch die Treiber-CD brauchen wir nicht, Antenne und der Stick reichen für die weiteren Untersuchungen aus. Der Stick wird in gängigen PCs automatisch erkannt. Alle weiteren Untersuchungen wurden unter OSX ausgeführt, dürften ähnlich aber auch Windows funktionieren.   Die Fernbedienung und auch die Treiber-CD brauchen wir nicht, Antenne und der Stick reichen für die weiteren Untersuchungen aus. Der Stick wird in gängigen PCs automatisch erkannt. Alle weiteren Untersuchungen wurden unter OSX ausgeführt, dürften ähnlich aber auch Windows funktionieren.  
Zeile 64: Zeile 70:
 Zuerst schauen wir uns erstmal das Frequenzspektrum um 433MHz herum an, ob tatsächlich ein Signal vom Regensensor gesendet wird. Dazu starten wir im URH die Funktion //Spectrum Analyzer...// und triggern den Sendeframe durch Drücken der Taste im Batteriefach. Vor dem Start der Messung muss man noch das Device auswählen, in unserem Fall der USB Stick //RTL-SDR//. Das Ergebnis zeigt tatsächlich bei ca. 433.95MHz ein Sendesignal.  Zuerst schauen wir uns erstmal das Frequenzspektrum um 433MHz herum an, ob tatsächlich ein Signal vom Regensensor gesendet wird. Dazu starten wir im URH die Funktion //Spectrum Analyzer...// und triggern den Sendeframe durch Drücken der Taste im Batteriefach. Vor dem Start der Messung muss man noch das Device auswählen, in unserem Fall der USB Stick //RTL-SDR//. Das Ergebnis zeigt tatsächlich bei ca. 433.95MHz ein Sendesignal. 
  
-{{ :tech:rain_sensor_spectrum.png?direct&400 |Frequency spectrum}}+{{ :media:tech:rainsensor:rain_sensor_spectrum.png?direct&400 |Frequency spectrum}}
  
 Im blauen Block ist der zeitliche Verlauf aufgezeichnet (x=Frequenz, y=Zeit) und die Farbe gibt die Signalintensität an (je wärmer um so stärker). Darüber ist der Amplitudenverlauf über die Frequenz aufgetragen. Mit der Erkenntnis können wir das Signal nun aufzeichnen und weiter untersuchen. Dazu rufen wir die Funktion //Record Signal...// auf. Dann wieder das Device auswählen und die Frequenzen passend einstellen: Im blauen Block ist der zeitliche Verlauf aufgezeichnet (x=Frequenz, y=Zeit) und die Farbe gibt die Signalintensität an (je wärmer um so stärker). Darüber ist der Amplitudenverlauf über die Frequenz aufgetragen. Mit der Erkenntnis können wir das Signal nun aufzeichnen und weiter untersuchen. Dazu rufen wir die Funktion //Record Signal...// auf. Dann wieder das Device auswählen und die Frequenzen passend einstellen:
  
-{{:tech:rain_sensor_record.png?direct&400|Recorded signal}} +<WRAP group> 
-{{:tech:rain_sensor_record_zoom.png?direct&215|Zoomed}}+<WRAP half column> 
 +{{ :media:tech:rainsensor:rain_sensor_record.png?direct&400|Recorded signal}} 
 +</WRAP> 
 +<WRAP half column> 
 +{{:media:tech:rainsensor:rain_sensor_record_zoom.png?direct&215 |Zoomed}} 
 +</WRAP> 
 +</WRAP>
  
 Das Ergebnis zeigt nun das aufgezeichnete Signal im zeitlichen Verlauf. Wir erkennen die sich achtmal wiederholenden Frameanteile und im Zoom die schon im digitalen Signal vorher beschriebenen Pulse und Pausen. Diese Aufzeichnung speichern wir an einer wiederzufindenen Stelle ab. Das Ergebnis zeigt nun das aufgezeichnete Signal im zeitlichen Verlauf. Wir erkennen die sich achtmal wiederholenden Frameanteile und im Zoom die schon im digitalen Signal vorher beschriebenen Pulse und Pausen. Diese Aufzeichnung speichern wir an einer wiederzufindenen Stelle ab.
Zeile 75: Zeile 87:
 Jetzt ist es an der Zeit in URH ein neues Projekt anzulegen damit wir die nächsten Schritte auch abspeichern können. Dann gehen wir auf den Reiter //Interpretation// und laden das aufgezeichnete Signal. Jetzt können wir dieses Signal 'interpretieren' (lassen). Dazu stellen wir die Modulation auf //ASK//, die Anzahl der Samples/Symbol auf z.B. 500. Unten wurde das Signal jetzt in einen Bitstrom umgewandelt. Jede Highamplitude wird zur 1 und die Pausen dazwischen zu 0 gesetzt: Jetzt ist es an der Zeit in URH ein neues Projekt anzulegen damit wir die nächsten Schritte auch abspeichern können. Dann gehen wir auf den Reiter //Interpretation// und laden das aufgezeichnete Signal. Jetzt können wir dieses Signal 'interpretieren' (lassen). Dazu stellen wir die Modulation auf //ASK//, die Anzahl der Samples/Symbol auf z.B. 500. Unten wurde das Signal jetzt in einen Bitstrom umgewandelt. Jede Highamplitude wird zur 1 und die Pausen dazwischen zu 0 gesetzt:
  
-{{ :tech:rain_sensor_interpretation.png?direct&400 |}}+{{ :media:tech:rainsensor:rain_sensor_interpretation.png?direct&400 |}}
  
 Auch hier ist wieder die Pulsfolge mit den zwei unterschiedlich langen Pausen zu finden ''100000000100000000100001000010000100001...''. Um das Signal zu decodieren gehen wir auf den Reiter //Analysis// und definieren unter //Decoding// ein neues Decoding Format mit dem Namen z.B. PDM: Auch hier ist wieder die Pulsfolge mit den zwei unterschiedlich langen Pausen zu finden ''100000000100000000100001000010000100001...''. Um das Signal zu decodieren gehen wir auf den Reiter //Analysis// und definieren unter //Decoding// ein neues Decoding Format mit dem Namen z.B. PDM:
  
-{{:tech:rain_sensor_decode.png?direct&400|Decode}} {{:tech:rain_sensor_analysis.png?direct&700|Anaysis}}+{{:media:tech:rainsensor:rain_sensor_decode.png?direct&400|Decode}} {{:media:tech:rainsensor:rain_sensor_analysis.png?direct&710|Anaysis}}
  
 Um die vorhandene Decoderoption //Morse Code// nutzen zu können, invertieren wir das Signal vorher mit //Invert//. Dann müssen wir noch die Morsecode Parameter festlegen. Nach der Invertierung haben wir genau eine ''NULL'' und dann entweder 4 oder 8 ''Einsen'':  Um die vorhandene Decoderoption //Morse Code// nutzen zu können, invertieren wir das Signal vorher mit //Invert//. Dann müssen wir noch die Morsecode Parameter festlegen. Nach der Invertierung haben wir genau eine ''NULL'' und dann entweder 4 oder 8 ''Einsen'': 
-  * Maximum (<m><=</m>length of 1-sequence for Low (0) = 4 +  * Maximum length of 1-sequence for Low (0) = 4 
-  * Minimum (<m>>=</m>length of 1-sequence for High (1) = 7+  * Minimum length of 1-sequence for High (1) = 7
   * Number of 0s between 1-sequences (just for encoding) = 1   * Number of 0s between 1-sequences (just for encoding) = 1
 Wenn alles richtig eingestellt ist, wird der Frame ohne Fehler decodiert. Die 8 Frames erscheinen jetzt in der Liste. Jeder Frame besteht aus 36 Bits deren Bedeutung wir nun empirisch herausfinden müssen. Dazu legen wir einen neuen Message Type //Rain_Sensor// an. Nun können wir die Bits passend gruppieren und der jeweilige Wert wird sofort in der Spalte //Value// angezeigt. In der Frametabelle kann man sehen, dass der 6. gesendete Frame korrumpiert ist und der 8. nicht mehr vollständig gesendet wurde. Da aber die Daten einer Sendesequenz immer alle gleich sind, reicht ein einziger korrekter Frame aus 36 Bytes. Für die Gruppierung findet man im Netz einige typische Beispiele die man als Startvorlage nehmen kann. Das Ergebnis der iterativen Dekodierung hier nochmals zusammengefasst: Wenn alles richtig eingestellt ist, wird der Frame ohne Fehler decodiert. Die 8 Frames erscheinen jetzt in der Liste. Jeder Frame besteht aus 36 Bits deren Bedeutung wir nun empirisch herausfinden müssen. Dazu legen wir einen neuen Message Type //Rain_Sensor// an. Nun können wir die Bits passend gruppieren und der jeweilige Wert wird sofort in der Spalte //Value// angezeigt. In der Frametabelle kann man sehen, dass der 6. gesendete Frame korrumpiert ist und der 8. nicht mehr vollständig gesendet wurde. Da aber die Daten einer Sendesequenz immer alle gleich sind, reicht ein einziger korrekter Frame aus 36 Bytes. Für die Gruppierung findet man im Netz einige typische Beispiele die man als Startvorlage nehmen kann. Das Ergebnis der iterativen Dekodierung hier nochmals zusammengefasst:
Zeile 111: Zeile 123:
 Um an das Signal des Regenmengensensors zu kommen brauchen wir zuerst einen passenden Empfänger für 433MHz. Die gibt es vielfältig im Online-Handel. Bei der Auswahl ist darauf zu achten, dass es sich um einen Superhet- (Superheterodyne) und nicht um einen Geradeausempfänger handelt. Geradeausempfänger haben eine zu große Bandbreite und eine geringe Verstärkung. Meine Wahl fiel auf den DollaTek RXB6 Superheterodyne Receiver: Um an das Signal des Regenmengensensors zu kommen brauchen wir zuerst einen passenden Empfänger für 433MHz. Die gibt es vielfältig im Online-Handel. Bei der Auswahl ist darauf zu achten, dass es sich um einen Superhet- (Superheterodyne) und nicht um einen Geradeausempfänger handelt. Geradeausempfänger haben eine zu große Bandbreite und eine geringe Verstärkung. Meine Wahl fiel auf den DollaTek RXB6 Superheterodyne Receiver:
  
-{{:tech:rain_sensor_receiver.png?direct&400|433MHz Receiver}} +<WRAP group> 
-{{:tech:rain_sensor_antena.png?direct&400|Antenna}}+<WRAP half column> 
 +{{ :media:tech:rainsensor:rain_sensor_receiver.png?direct&300|433MHz Receiver}} 
 +</WRAP> 
 +<WRAP half column> 
 +{{:media:tech:rainsensor:rain_sensor_antena.png?direct&300 |Antenna}} 
 +</WRAP> 
 +</WRAP>
  
 Bei der Bestellung gleich die passende 433MHz Helical-Antenne mit ordern. Bei der Bestellung gleich die passende 433MHz Helical-Antenne mit ordern.
Zeile 118: Zeile 136:
 Das Empfängermodul arbeitet mit 5V Versorgungsspannung und stellt einen digitalen Ausgang zur Verfügung, der direkt mit einem ESP Modul verbunden werden kann. Hier meine Lösung auf einer Rasterplatine mit ESP8266 Modul, dem Empfänger RXB6 und einem Micro-USB Anschluss. Da wir im Haus an allen Steckdosen auch 5V USB Buchsen haben, können wir auf ein externes Netzteil verzichten. Das Empfängermodul arbeitet mit 5V Versorgungsspannung und stellt einen digitalen Ausgang zur Verfügung, der direkt mit einem ESP Modul verbunden werden kann. Hier meine Lösung auf einer Rasterplatine mit ESP8266 Modul, dem Empfänger RXB6 und einem Micro-USB Anschluss. Da wir im Haus an allen Steckdosen auch 5V USB Buchsen haben, können wir auf ein externes Netzteil verzichten.
  
-{{ :de:tech:rain_sensor_gateway.png?direct&400 |Rain sensor gateway}}+{{ :media:tech:rainsensor:rain_sensor_gateway.png?direct&400 |Rain sensor gateway}}
  
  
Zeile 131: Zeile 149:
 Der Pin an dem der Empfängerausgang angeschlossen ist wird über ''#define RX_PIN 3 '' definiert. Jede Pegeländwerung an diesem Pin generiert einen Interrupt, der das bekannte Protokoll mit einer Statemachine on-the-fly auswertet. Die Impulse der Kippwaage müssen noch mit 0.5 multipliziert werden, da ein Impuls 0.5mm/m<sup>2</sup> Regenmenge entspricht. Der Pin an dem der Empfängerausgang angeschlossen ist wird über ''#define RX_PIN 3 '' definiert. Jede Pegeländwerung an diesem Pin generiert einen Interrupt, der das bekannte Protokoll mit einer Statemachine on-the-fly auswertet. Die Impulse der Kippwaage müssen noch mit 0.5 multipliziert werden, da ein Impuls 0.5mm/m<sup>2</sup> Regenmenge entspricht.
  
 +++++ rf433_rain_sensor.h |
 <file C rf433_rain_sensor.h> <file C rf433_rain_sensor.h>
 include "esphome.h" include "esphome.h"
Zeile 320: Zeile 339:
 }; };
 </file> </file>
 +++++
 In ESPHome generieren wir ein neues Device und fügen den eigenen Code mit einem //includes:// hinzu. Das File ''rf433_rain_sensor.h'' muss dazu in ''/config/esphome'' kopiert werden. In ESPHome generieren wir ein neues Device und fügen den eigenen Code mit einem //includes:// hinzu. Das File ''rf433_rain_sensor.h'' muss dazu in ''/config/esphome'' kopiert werden.
  
-<code>+<code yaml>
 esphome: esphome:
   name: rain-sensor   name: rain-sensor
Zeile 332: Zeile 351:
 Dann definieren wir die vier Sensoren gemäß dem folgenden Beispiel. Dann definieren wir die vier Sensoren gemäß dem folgenden Beispiel.
  
-<code>+<code yaml>
 sensor: sensor:
 - platform: custom - platform: custom
de/tech/rainsensor.1668284959.txt.gz · Zuletzt geändert: von bullar