Erstes Projekt - Wassersensor

Begonnen von bismosa, 07 August 2017, 08:29:17

Vorheriges Thema - Nächstes Thema

bismosa

Hallo zusammen,

ich bin blutiger Anfänger in FHEM. Ich habe gestern FHEM auf meinem Raspberry Installiert und fange jetzt meine ersten Projekte an. Daher bitte ich um Nachsicht, wenn ich einges noch durcheinander bekomme.
Ich habe mehrer Wassersensoren auf Basis eines ESP8266 laufen. Eigentlich sehr simpel: Sobald Wasser an den Kontakten anliegt, wird der CH_PD Eingang auf High gesetzt, der ESP startet und ruft eine URL (derzeit noch über Pushingbox) auf. Danach legt er sich für 15Min. schlafen und meldet den Wassereinbruch erneut, wenn das Problem nicht mittlerweile behoben wurde. (Das Projekt ist hier zu finden: http://esp8266-server.de/Wassermelder.html )
Gleichzeitig wird über die URL die aktuelle Batteriespannung und der RSSI-Wert mitgegeben. Also ungefähr so:
http://URL/UBatt=3.1V&Empfang=-70&Nachricht=Wasseralarm Keller

Nun wäre es doch toll, wenn ich das ganze zum Üben in FHEM umsetzen würde. Ich stelle es mir so vor, das ich statt der Pushingbox-Adresse eine Adresse vom FHEM aufrufe. Für mich wäre dabei wichtig:
1.) Bei Meldung eine Benachrichtigung per Mail
2.) Alarmmeldung auf meinen Squeezeboxen
3.) Loggen der Alarme (wie oft muss ich den Wassereimer an der Heizung ausleeren)
4.) Loggen der Batteriespannung mit Plot (Dann sieht man schön, wann man die Batterien wechseln muss)
5.) Loggen der RSSI-Werte

Nun ist natürlich das Problem, das ich keine Ahnung habe, an welcher Stelle ich nun anfangen soll. Je mehr ich in der Dokumentation wühle und andere Beiträge lese, desto verwirrter werde ich.
Könnt ihr mir hier ein bisschen Starthilfe geben? Wo fange ich am beten an? Wie kann ich auf eine URL in FHEM einrichten, bei der Werte übergeben werden?

Vielen Dank!

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

gloob

Schau dir doch mal das KeyValueProtocol in FHEM an. Damit kann man einfach Nachrichten als Broadcast senden ohne die genaue IP vom FHEM und co zu kennen.
Ich schicke darüber erkannte IR Signale von einem Gateway an FHEM.

Den Rest kannst du dann mit FHEM Mitteln umsetzen.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

bismosa

Hallo,

danke für die Antwort. Aber ich glaube das führt ebenfalls nicht in die gewünschte Richtung.
Wäre es nicht irgendwie machbar per UDP oder einfach per POST an eine URL (Sorry...neuland für mich) Daten an FHEM zu übermitteln?
Bin gerade ein wenig am verzweifeln...hatte nicht damit gerechnet, das es so schwierig ist den Anfang zu bekommen...

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Amenophis86

das geht. Zweites FHEMWeb device, csrf token ausschalten, allowed nur für den zu beschreibenden dummy freigeben und diese mittels der url bestücken. Wie genau findest du, wenn du entsprechenden Begriffe in der commandref nachliest.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

chris1284

#4
du kannst auch einfach statt der jetzigen url die fhem url nehem und darüber einem dummy werte setzen

http://ipOderNameDesDerversrv00:8083/fhem?cmd.dummyWassermelder1=set%20dummyWassermelder1%20alarm
http://ipOderNameDesDerversrv00:8083/ffhem?cmd=setreading%20dummyWassermelder1%20battery%202.4

auf den dummy setzt du dann ein notify welches zb eine pushnachricht oder eine mail sendet. loggen kannst du damit auch und entsprechend dann auch plotteb. einfacher gehts kaum.

per telnet würde auch gehen wenn du das auf dem esp hinbekommst

bismosa

#5
Hallo!

Danke! Genau danach habe ich gesucht. Ich bin noch dran, wie ich es jetzt am besten umsetzen kann...ist halt alles erstmal neu  :)

Ich habe bereits ein Dummy-Device angelegt und habe auch erst einmal den csrfToken deaktiviert. Darum muss ich mich dann später nochmal kümmern.
Gibt es zum URL-Layout keine Wiki-Seite? Habe ich die vielleicht nur nicht gefunden?
Ich suche jetzt nach einer Möglichkeit, sowohl die readings als auch den set-Befehl in nur einem Aufruf unterzubringen. Geht das irgendwie?
Ich versuche es gerade so:
http://server:8083/fhem?cmd=setreading%20Wassermelder%20battery%2019.2&cmd.Wassermelder=set%20Wassermelder%20on&XHR=1
Hier wird aber immer nur der letzte Befehl (also hier set on) ausgeführt. Der erste Befehl wird nicht verarbeitet?

Danke!
Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Amenophis86

Wie in der Kommandozeile arbeiten und nicht mit &cmd. Siehe zB diesen Post: https://forum.fhem.de/index.php/topic,75164.msg669480.html welche die Suche sicher schnell gefunden hätte ;)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

bismosa

#7
Hallo,

Zitat von: Amenophis86 am 08 August 2017, 17:49:19
...welche die Suche sicher schnell gefunden hätte ;)
Nö. Leider hatte die Suche das nicht ergeben! Der Beitrag wurde erst nach meinem Veröffentlicht  :'(
Außerdem ist für mich das Problem, das ich nicht genau weiß mit welchen Begriffen ich hier suchen muss. Auch der Beitrag ist wenig aufschlussreich, da es hier um zwei "cmd" Befehle geht.
Der entscheidene Hinweis war hier wohl zu arbeiten wie in der Kommandozeile. Nach vielen Versuchen hat es nun endlich geklappt:
http://server:8083/fhem?cmd=set%20Wassermelder%20on%3bsetreading%20Wassermelder%20battery%2000.2&XHR=1
Danke!

Ich habe es nun auch soweit erfolgreich einrichten können. Es sind zwar noch viele Fragen offen...aber hier erstmal das, was ich hinbekommen habe (Wenn es falsch ist, bitte ich um einen Hinweis!)
Es geht hier um den Wassermelder, der in einem Auffangeimer hinter unserer Heizung steht. Beim erzeugen von Warmwasser steigt bei uns der Druck zu stark an...und das Überdruckventil löst aus. 1x die Woche muss der Einmer im schnitt geleert werden. Ich vergesse es nur zu gern...

Dummy Device anlegen:
define Wassermelder_Heizung dummy
attr Wassermelder devStateIcon Alarm::Alarm
attr Wassermelder room Heizung
attr Wassermelder webCmd :


Der ESP ruft nun diese Url auf:
http://server:8083/fhem?cmd=set%20Wassermelder_Heizung%20Alarm%3bsetreading%20Wassermelder_Heizung%20battery%2003.0%3bsetreading%20Wassermelder_Heizung%20RSSI%2080&XHR=1
Es wird also der Alarm ausgelöst und die Readings battery + RSSI übergeben

Dann habe ich ein Notify Mail eingerichtet:
define n_Mail_Wassermelder_Keller notify Wassermelder:Alarm {DebianMail("Mail\@jemand.de","Wassereimer in der Heizung leeren!","Bitte den Wassereinmer in der Heizung leeren!");;}

Noch schöner (mit den aktuellen Daten):
Wassermelder_Heizung:Alarm
{
my $temp=ReadingsVal("Wassermelder_Heizung", "battery","");
my $temp2=ReadingsVal("Wassermelder_Heizung", "RSSI","");
DebianMail("saschasmolny\@gmx.de","Wassereimer in der Heizung leeren!","Bitte den Wassereinmer in der Heizung leeren!\n"."Batterie: ".$temp." V (min.2,4V!)\n"."RSSI: ".$temp2);}


Readings loggen (Hier können alle in eine Datei...):
define log_Wassermelder FileLog ./log/wassermelder.log Wassermelder_.*

SVG-Plot erstellen (Siehe Anhang...der wird ja erst nach längerer Zeit interessant)

Somit wären ja jetzt die meisten Sachen endlich geschafft. Den Anfang habe ich mir irgendwie selbst viel zu schwierig gemacht...

Es bleiben aber noch ein paar Fragen:
1.) Ist das so ok, wie ich es jetzt umgesetzt habe?
2.) Ich habe für den FileLog Wassermelder_.* angegeben. Nun taucht beim Dummy bei "Probably associated with" der Filelog nicht mehr auf. Nur wenn ich den vollständigen Namen eingebe. Ist das Verhalten normal? Kann ich dies irgendwie ändern? Praktisch ist es ja schon direkt zu sehen, das diese miteinander verknüpft sind...
3.) Ich habe den Wasssermelder in dem Raum Heizung. Nun steht in der Übersicht Heizung über den Wassermelder "dummy". Lässt sich der Name ändern? Ist nicht wichtig, aber optisch wäre es schöner
Schon erledigt. Sobald ich eine Gruppe definiere, steht diese dort :)

Meine weiteren ToDo´s:
Leider sendet der ESP alle 35Min. (max. deep-sleep time) einen weiteren Alarm, wenn der Eimer noch nicht geleert wurde. Ich brauche nun nicht jedes Mal eine neue Mail zu bekommen. Wie kann ich den Mailversand für eine bestimmte Zeit (ich würde hier z.B. 12Stunden nehmen) pausieren?

Die Alarmmeldung auf den Squeezeboxen muss ich erst noch überdenken. Ich habe (noch) keine Anwesenheitserkennung. Auch soll der Alarm nicht nachts erfolgen  ::)

Vielen Dank für eure Hilfen!

Gruß
Bismosa


1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Amenophis86

Das ist korrekt, der Lösende Beitrag wurde erst danach geschrieben. Mea Culpa ;)

1) Solange es funktioniert und du keine Fehler bemerkst, ist es immer ok. Viele Wege führen nach Rom.
2) Ja, ist normal. Wenn du willst, dass es wieder auftaucht musst du den kompletten Namen nehmen
3) ---
4) Bei einem Notify kann ich es dir nicht sagen. Wenn du jedoch das notify durch ein DOIF tauschst, dann kannst du mit den Attr repeatcmd, repeatsame, wait etc. arbeiten und hier einstellen, wie oft die Meldung max in einem bestimmten Zeitraum gesendet werden soll. Auch kannst du hier einen Zeitraum definieren in dem der Alarm nur ausgelöst werden soll.

Ich habe mir die Seite mal angeschaut und gefällt mir ganz gut. Hast du Probleme mit der flimmernden blauen LED festgestellt, oder funktioniert alles soweit gut bei dem Sensor?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Amenophis86

#9
Ich versuche gerade auch das Ding nachzubauen, allerdings komme ich nicht ins Webinterface. Ich habe die bin geflasht, TX mit RX auf dem ESP direkt verbunden, 3,3v und gnd angelegt, aber sehe kein Netzwerk "Wassermelder". Hab ich da was falsch verstanden? Es scheint, dass er nicht in den accessmode kommt. Die blaue LED leuchtet auch nicht auf. Habe auch mal einen Arduino als Stromquelle genommen, geht trotzdem nicht.

Das Auslösen über verbinden der "Sensoren" führt allerdings dazu, dass die blaue LED kurz flackert, dann an bleibt und wieder ausgeht.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

bismosa

Hallo,

sorry...ich bin hier so beschäftigt und schicke mir so viele Mails das ich die Forenantwort-Mail übersehen habe.

Ich nutze einen ESP-03 (dann werde ich die mal endlich los...sind schwer zu löten...) Da gibt es keine LED. Daher kann ich das leider nicht beantworten.

Hast Du denn beim Versuch ins Webinterface zu kommen die Sensoren ebenfalls kurzgeschlossen? Sonst startet der ESP ja nicht...es muss auch zuerst TX-RX verbunden werden. Erst dann starten...

Ich bin noch dabei das Ganze zu erweitern. Ich habe jetzt auch gerade das Webinterface und den Code des ESP angepasst. Ich muss aber den Author fragen, bevor ich es weiter geben kann. Sonst beschreibe ich nur meine Änderungen.

Bitte um etwas Geduld  :) Ich bin leider nicht so schnell mit dem ganzen Kram...

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Amenophis86

Wie? ih muss sowohl tx-rx brücken und die sensoren verbinde, wie wenn wasser da wäre?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

bismosa

Jup. Denn die Verbindung "Wasser da" ist auf dem CH_PD Eingang. Nur wenn der auf High steht, geht der ESP an.
Das ist der "Trick" warum absolut kein Strom verbraucht wird. In den Deep-Sleep geht der ESP nur, wenn immer noch Wasser anliegt.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Amenophis86

Ok, das heißt ich verbinde ihn wie folgt:

3,3V (extern) an VCC (ESP)
GND (extern) an GND (ESP)
3,3V (ESP) an Reset (ESP)
Reset (ESP) mit CH_PD (ESP)
TX (ESP) an RX (ESP)

Und dann geht er in den Access Mode?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

bismosa

Ja...das sollte so richtig sein....klappt bei mir sehr gut :)
Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...