Ich möchte mein Regensensor-Projekt mit Euch teilen. Insgesamt entenstehen Kosten von ca. 80€, wovon der Hauptteil auf den optischen Regensensor entfällt. Es funktioniert bei mir prima.
Dazu benötigt man:
1. einen WeMos D1 mini
2. einen 1kOhm Widerstand
3. ein 12V Gleichspannungsnetzteil
4. einen AMS1117CS-5.0 DC-DC Wandler
5. einen Hydreon RG-11 Regensensor (
http://rainsensors.com) Er kostet USD59. Es kommt aber noch Transport und Einfuhrumsatzsteuer dazu, so dass er am Ende rund 75€ kostet.
6. Telefonkabel 4-adrig
ESPEasy:Auf den WeMos flasht man die ESPEasy Firmware (
https://github.com/letscontrolit/ESPEasy/releases). Sobald man den WeMos im eigenen Netz hat, konfiguriert man ihn über sein Web-Interface unter dem Reiter „Controllers“ als MQTT-Device. Unter dem Reiter „Devices“ stellt man ihn als „Generic – Pulse Counter“ ein. Weitere Einstellungen siehe anliegendes pdf.
A C H T U N G: Will man den WeMos neu flashen, bitte vorher unbedingt die 12V Spannungsversorgung unterbrechen!
Schaltung:Den Schaltplan findet ihr ebenfalls in der Anlage. Ich habe den WeMos innen in einer Box sitzen und ihn per 15m Telefonkabel mit dem Regensensor verbunden. Über das Telefonkabel laufen die 12V sowie das Signal; das funktioniert trotz der Länge ohne „Fehlimpulse“.
FHEM:Sobald der WeMos im Netz ist und als MQTT-Device eingerichtet ist, wird in FHEM automatisch ein entsprechendes Gerät angelegt, wenn in FHEM bereits ein MQTT-Server bereits angelegt ist. Soweit der MQTT-Server in FHEM noch nicht installiert hat, geht das so:
define MQTT2Server MQTT2_SERVER 1883 global
Im Nachfolgenden wird davon ausgegangen, dass das Gerät in „Regensensor“ umbenannt wird. Der Regensensor erhält folgende userReadings:
RainCumDay:Total.* {sprintf("%.3f",(ReadingsNum($name,"Total",0)*ReadingsNum($name,"mmRainPerCount",0)))},
RainCumTotal:Total.* monotonic {sprintf("%.3f",(ReadingsNum($name,"RainCumDay",0)))}
Desweiteren benötigt man das reading “mmRainPerCount“ damit die Impulse des Sensors in mm Regen umgerechnet werden können. Dazu gibt man in der FHEM Kommandozeile ein:
setreading Regensensor mmRainPerCount 0.0005
Damit man auch im Web den Zustand sieht, setzt man das Attribut StateFormat auf:
Heute [l/m²]: RainCumDay Gestern [l/m²]: RainCumDayBefore Status: LWT
Weiterhin wird ein „at“ angelegt, das den Sensor täglich neu startet und Werte zurücksetzt
(Achtung: für xxx.xxx die IP des WeMos einsetzen):
define Regensensor_restart_at at *23:59:59 {my $RainCumDayBefore = ReadingsNum("Regensensor","RainCumDay","0");fhem("setreading Regensensor RainCumDayBefore $RainCumDayBefore");;system "wget -O /dev/null -q 192.168.xxx.xxx/?cmd=reboot";;}
Viel Spass beim Basteln!
Viele Grüße
Achim