FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MichaelK-T am 30 September 2015, 09:46:56

Titel: FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 09:46:56
Hallo Gemeinde,

wir haben als Heizung einen Kessel aus Forst dieser wird gesteuert von unserem Raspi wo FHEM drauf läuft funktioniert soweit alles wunderbar. Jetzt komme ich aber an meine Grenzen und zwar möchte ich das FHEM mich über unsere FritzBox anruft wenn der Ofenvorlauf über 80°C steigt damit ich auch in der Nacht kontrolle habe und nichts in die Luft gehen oder kaputt gehen kann.

Derzeit habe ich es so gelöst was aber leider nicht funktioniert.
Ich habe Sipcmd auf dem Raspi installiert das funktioniert auf der Shell wunderbar mit dem Befehl /opt/sipcmd/sipcmd -P sip -u 6** -c Passwort -a Alarm -w 192.168.178.1 -x 'c015222674***'"

Dann habe ich das ganze im FHEM als notify eingerichtet dort passiert aber gar nichts leider :-(
Hier der Code:

define Heizungs_Alarm notify OWX_10_D216E7020800:temperature|OWX_10_D216E7020800:temperature:. 80 "/opt/sipcmd/sipcmd -P sip -u 6** -c Passwort -a Türklingel -w 192.168.178.1 -x 'c015222674***'"
attr Heizungs_Alarm disable 1
attr Heizungs_Alarm room Heizungsraum


Ich habe jetzt schon 2 Wochen im Netz gesucht aber leider keine Antwort auf meine Fragen gefunden vielleicht könnt ihr mir Helfen. Vielen Dank schon mal im vorraus
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: Rince am 30 September 2015, 09:54:15
Zitatattr Heizungs_Alarm disable 1

Das Notify ist ja ausgeschaltet.

Setze disable 0

;)
(Wenn es dann immer noch nicht geht, würde ich anfangen ein Rechteproblem zu vermuten. Aber da könnte dann ein Auszug aus dem Logfile weiter helfen...)
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: Otto123 am 30 September 2015, 10:02:34
Hallo,

alternativ gibt es auch SIP für FHEM (http://forum.fhem.de/index.php?topic=40219.0)

Gruß Otto
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 30 September 2015, 10:04:02

define Heizungs_Alarm notify OWX_10_D216E7020800:temperature|OWX_10_D216E7020800:temperature:. 80 { system("/opt/sipcmd/sipcmd -P sip -u 6** -c Passwort -a Türklingel -w 192.168.178.1 -x 'c015222674***'")}
attr Heizungs_Alarm disable 0
attr Heizungs_Alarm room Heizungsraum


Damit sollte es dann klappen
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 10:17:03
Vielen Dank.

Das disable habe ich nur gesetzt damit er falls es spontan doch geht nicht ausversehen mitten in der Nacht wahllos anruft.

Ich werde jetzt mal probieren, vielen Dank für eure Antworten
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 10:54:15
@ CoolTux leider funktioniert deine Ausführung auch nicht was ich sehr schade finde hier das Log
2015.09.30 10:48:59 5: Triggering Heizungs_Alarm
2015.09.30 10:48:59 4: Heizungs_Alarm exec 16 { system("/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Alarm -w 192.168.178.1 -x 'c015222674888'")}
2015.09.30 10:48:59 3: Heizungs_Alarm return value: Unknown command 16, try help.


Zum versuchen habe ich die °C des Alarms runtergesetzt da unser Ofen derzeit aus ist.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 30 September 2015, 11:03:41
Verstehe ich ehrlich gesagt gar nicht. Wo kommt denn auf einmal die 16 her?

Also mal kurz zur Klärung, das system(... sagt nur das es sich um ein Systemkommando handelt. Du hast ja gesagt das Du den Befehl in der Linux Shell ausführen kannst. Machst Du das als root oder als FHEM User. Teste noch mal den Befehl in der Shell als User FHEM. Wenn das geht, sollte auch der Befehl mit einem system(... gehen
Ansonsten schau Dir mal das weiter oben erwähnte Modul an. Ist dann glaube einfacher.



Grüße
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 11:17:58
Root und Fhem als Benutzer auf der Shell können den Befehl ausführen.
Fhem läuft bei mir als Benutzer Fhem und der ist in der Gruppe root,dailout,media und andere

Das andere Modul schaue ich mir derzeit auch an habe nur äger mit cpanm
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: Puschel74 am 30 September 2015, 11:39:50
Das 80 resp. 16 sieht mir nach einem missglückten Versuch aus die Temperatur mit einem Wert zu vergleichen.
Das das so nicht klappen kann sollte einleuchten da die 16 mit nichts verglichen werden.
Es ist aber egal ob ich Rollläden nach Temperatur fahren will oder mich anrufen lassen will - der Vergleich muss korrekt geschrieben sein.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 11:43:44
Das denke ich mir auch mal der Temepratursensor liefert den Wert aber ich weis nicht wie ich den Höchstwert also für das Auslösen des Alarms schreiben soll......
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 30 September 2015, 12:10:44

define Heizungs_Alarm notify OWX_10_D216E7020800:temperature|OWX_10_D216E7020800:temperature.* { system("/opt/sipcmd/sipcmd -P sip -u 6** -c Passwort -a Türklingel -w 192.168.178.1 -x 'c015222674***'")  if ($EVTPART1 >18);}
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 12:55:12
Bin am verzweifeln...... :( :( :(

2015.09.30 12:44:51 5: Triggering Heizungs_Alarm
2015.09.30 12:44:51 4: Heizungs_Alarm exec { system("/opt/sipcmd/sipcmd -P sip -u 620 -c 060984Micha -a Türklingel -w 192.168.178.1 -x 'c015222674888'")}  if ($EVTPART1 <18)
2015.09.30 12:44:51 3: Heizungs_Alarm return value: Unknown command {, try help.
2015.09.30 12:49:51 5: Triggering Heizungs_Alarm
2015.09.30 12:49:51 4: Heizungs_Alarm exec system("/opt/sipcmd/sipcmd -P sip -u 620 -c 060984Micha -a Türklingel -w 192.168.178.1 -x 'c015222674888'") if ($EVTPART1 <18)
2015.09.30 12:49:51 3: Heizungs_Alarm return value: Unknown command system("/opt/sipcmd/sipcmd, try help.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 30 September 2015, 13:14:28
Kann es sein das Du da was falsch eingegeben hast


{ system("/opt/sipcmd/sipcmd -P sip -u 620 -c 060984Micha -a Türklingel -w 192.168.178.1 -x 'c015222674888'")}  if ($EVTPART1 <18)


IST NICHT


{ system("/opt/sipcmd/sipcmd -P sip -u 6** -c Passwort -a Türklingel -w 192.168.178.1 -x 'c015222674***'")  if ($EVTPART1 >18);}
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 14:41:54
Hbae die {} entfernt da er da gleich beim define Befehl gemeckert hatte

Hier das Log:
2015.09.30 14:54:51 3: Heizungs_Alarm return value: Unknown command {system, try help.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: bergadler am 30 September 2015, 15:18:29
Hust...
ZitatHbae die {} entfernt ...
Würde ich nicht machen, die sind nicht umsonst da, aber
Deine geschweifte-Klammer-Zu ist/war am falschen Platz.
(siehe Post #12)

Gruß
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 16:15:45
So ich habe das ganze mal etwas verändert, zum Testen habe ich die Pumpe des Speichers verwendet
Pumpe_Puffer_Gross:state:.* {system('sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;h'')} if ($EVTPART1 on)



Jetzt bringt es folgenden Fehler:
2015.09.30 15:58:55 5: Triggering Heizungs_Alarm
2015.09.30 15:58:55 4: Heizungs_Alarm exec {system('sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;h'')} if ($EVTPART1 <18)


2015.09.30 15:58:55 3: Heizungs_Alarm return value: Unknown command {system('sudo, try help.
Unknown command h'')}, try help.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: bergadler am 30 September 2015, 16:30:53
Die Klammer muß ganz nach hinten, siehe Beispiel in #12.

... if ($EVTPART1 >18);}
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 17:24:31
Habe es geändert hilft aber leider auch nichts.
Pumpe_Puffer_Gross:on.*|Pumpe_Puffer_Gross:state:.* {system('sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;h'');; if ($EVTPART1 on);}

Fehlermeldung:
2015.09.30 17:23:06 5: Triggering Heizungs_Alarm
2015.09.30 17:23:06 4: Heizungs_Alarm exec {system('sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;h'');; if ($EVTPART1 on);}


2015.09.30 17:23:06 3: Heizungs_Alarm return value: Unknown command {system('sudo, try help.
Unknown command h'');, try help.
Unknown command }

, try help.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: bergadler am 30 September 2015, 17:28:58
Und wo kommt jetzt das doppelte Semikolon vor dem "if" her?

Nimm doch mal die Beispielsyntax von @CoolTux aus #12.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 30 September 2015, 18:17:39
@bergadler aus #12 habe ich den Code auch schon probiert der fuktioniert auch nicht, auch nicht wenn ich die } ganz ans Ende setze.

Es muss doch möglich sein mit FHEM ein PRogramm auszuführen, selbst wenn ich es wie in der comandref unter notify schreibe funktioniert es nicht
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: Starkstrombastler am 30 September 2015, 23:10:45
Zuletzt hast du den Vergleichsoperator in der if( ) - Bedingung unterschlagen.
if ($EVTPART1 eq "on")
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: bergadler am 30 September 2015, 23:27:09
Zitat von: MichaelK-T am 30 September 2015, 18:17:39
@bergadler aus #12 habe ich den Code auch schon probiert der fuktioniert auch nicht
Das hast Du in Deinen Beispielen bisher aber noch nicht verraten.
Und wie es aussieht, ist es bei Dir trotzdem "einfach" nur ein Syntaxproblem.
Ich würde das Beispiel in #12 noch einmal genau unter die Lupe nehmen.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 01 Oktober 2015, 06:23:21
Guten Morgen Michael,

Wie Du ja an Deinem eigenen immer wiederkehrendem scheitern siehst, fehlt Dir grundlegendes Wissen über Perl, Perlsyntax und FHEM. Das ist nicht böse gemeint sondern eine Feststellung die ich beobachten muss.. Desweiteren hilft es nicht wenn Du uns Perlcode gibst, sagst es funktioniert nicht, Wir Dir sogar den Code so schreiben das er eigentlich gehen sollte, Du dann wieder schreibst geht nicht mit der Fehlermeldung und Wir feststellen müssen das der Code komplett anders geschrieben wurde wie im ersten Beispiel von Dir vorgegeben und noch schlimmer wie von uns verbessert.

Ich bin somit hier raus. Sorry. Ist wirklich das erste mal das ich hier glaube nicht weiter zu kommen mit dem Hilfesuchenden.


Grüße und viel Erfolg dennoch.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: RoBra81 am 01 Oktober 2015, 07:06:01
Guten Morgen Michael,

für mich sieht es so aus als hättest du (mindestens) zwei Baustellen: ersten ein notify bauen, dass bei Temperatur > 80 auslöst und zweitens daraufhin einen Linuxbefehl ausführen. Daher würde ich die beiden Herausforderungen getrennt angreifen: Baue erstmal ein notify, welches bei Auslösen einen Dummy auf einen beliebigen Wert setzt. Wenn das funktioniert kannst du zunächst mal versuchen, den Linuxbefehl aus der Eingabezeile im FHEMWEB auszuführen. Dann kannst du den Befehl so ins notify übernehmen...

Noch einen Hinweis: Linux-Kommandos kannst du übrigens ohne {system(...)} in FHEM ausführen indem du sie einfach in "" schreibst:

"sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;;h'"

(da scheint übrigens eines deiner Probleme zu liegen: die ineinander verschachtelten ' und das einfache ; in folgendem Befehl:

system('sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;h''))

Noch ein Hinweis: wenn du (oder FHEM) Probleme mit den vielen Attributen oder den ' und ; haben sollte, könntest du alles in ein Linux-Script auslagern und das dann aufrufen:

"/opt/sipcmd/deinscript.sh"

Ronny
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 01 Oktober 2015, 20:36:39
Hallo Ronny,

ich habe etwas rum probiert und kleine Erfolge gehabt.
bei Eingabe oben im FHEM von
/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;h'

kam folgender Fehler
Unknown command /opt/sipcmd/sipcmd, try help.
Unknown command h', try help.


Bei Eingabe von
"sudo /opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;;h'"

kommt folgender Fehler im Log
sudo: no tty present and no askpass program specified

Mit dem Tip das ganze in ein eigenes Scrip zu stecken kommt der gleiche Fehler wie gerade Beschrieben also
sudo: no tty present and no askpass program specified

Bei google Fand ich dazu das sudo wenn ich es richtig verstanden habe kein Passwort hat oder so ähnlich, jedoch wie CoolTux schon richtig erfasst hat habe ich von Linux, Fhem und umso mehr von Perl keine Ahnung bzw nicht viel Basiswissen jedoch bin ich lernbereit und Lebe das Motto "Learning by doing!"

Vielen Dank für eure Hilfe, wenn das nicht funktioniert bin ich schon am Überegen wie ich unsere Ofenheizung sonst sicher bekomme......
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 01 Oktober 2015, 21:22:12

"/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x 'c015222674888;;h'"


Bitte mal oben in die Befehlszeile von FHEM eingeben.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 01 Oktober 2015, 21:25:25

"/opt/sipcmd/sipcmd -P sip -u 6** -c Passwort -a Alarm -w 192.168.178.1 -x 'c015222674***'"


Das war Dein Ausgangsbefehl in Deinem aller ersten Post. Ich kenne das Programm nicht, frage mich aber gerade wieso da auf einmal am Ende ein h mit zwei ; hin kommt. Siehe ein Post hiervor.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 01 Oktober 2015, 21:51:49
Das ;;h' war der Ausgangsbefehl den ich im Netz gefunden habe wenn man das entfernt funktioniert das trotzdem in der Shell.
CoolTux du hast den ersten Erfolg wenn ich oben im FHEM das "/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x c015222674888" eingebe ruft mich FHEM tatsächlich an nur wenn ich das im notify eingebe passiert folgendes
2015.10.01 21:49:01 3: Alarm return value: Unknown command >, try help.
2015.10.01 21:49:01 3: Alarm return value: Unknown command >, try help.
2015.10.01 21:49:50 5: Triggering Heizungs_Alarm
2015.10.01 21:49:50 4: Heizungs_Alarm exec "/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x c015222674888" if ($EVTPART1 on)


2015.10.01 21:49:50 3: Heizungs_Alarm return value: Unknown command "/opt/sipcmd/sipcmd, try help.
im Log

Der notify schaut so aus:
Pumpe_Puffer_Gross:on.*|Pumpe_Puffer_Gross:state:.* "/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x c015222674888" if ($EVTPART1 on)

Wie schon einmal geschrieben habe ich die Temp mit dem Pumpenstatus ausgetauscht um nicht immer triggern zu müssen
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 01 Oktober 2015, 22:01:56
Zum testen
aus


Pumpe_Puffer_Gross:on.*|Pumpe_Puffer_Gross:state:.* "/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x c015222674888" if ($EVTPART1 on)


mache


Pumpe_Puffer_Gross:on.*|Pumpe_Puffer_Gross:state:.* "/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x c015222674888"


Noch ein Tip. Wenn Du mit einem Befehl erfolg hast dann bau ihn genau so erstmal in das notify ein und nicht noch was dazu machen. Das if (.... blabla hattest Du ja in der FHEM Kommansozeile nicht dabei. Also vorerst weg lassen.
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 01 Oktober 2015, 22:10:55
Siehe da es funktioniert.....yeeaahhhhh  ;D ;D ;D
Vielen Dank CoolTux nun habe ich wieder etwas dazu gelernt, werde jetzt immer die Befehle oben im FHEM erstmal ausprobieren bevor ich rum bastel......
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 01 Oktober 2015, 22:14:56
Na also geht doch.

So und nun noch die Abfrage


Pumpe_Puffer_Gross:on.*|Pumpe_Puffer_Gross:state:.* { fhem("/opt/sipcmd/sipcmd -P sip -u 620 -c 060984 -a Türklingel -w 192.168.178.1 -x c015222674888") if ($EVTPART1 on);


Bitte genau so ins Notify
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: RoBra81 am 01 Oktober 2015, 22:19:00
Darf ich fragen, warum man "if ($EVTPART1 on)" extra abfragen sollte und das nicht in die regex vom Notify nimmt? Das macht imho nur Sinn, wenn man sich das off abfragen will...
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: CoolTux am 01 Oktober 2015, 22:22:58
Muss man in der Tat nicht. Ich würde es auch ins RegEx mit auf nehmen. Allerdings kenne ich seine weiteren Wünsche nicht. Vielleicht will er ja was weiterverarbeiten
Titel: Antw:FHEM Heizungsalarm soll über Fritzbox mich anrufen
Beitrag von: MichaelK-T am 01 Oktober 2015, 22:33:50
Die Abfrage war gedacht da ich das ganze eigentlich Temp gesteuert brauche. Wenn ich in unseren Kessel aus Forst also eine Forsterheizung Nacht Kohlen rein mache aber unsere Puffer voll sind und dann das Heizungswasser anfängt zu Kochen muss ich reagieren bevor alles hier kaputt geht dazu der notify mehr wie 90 °C sollte nicht auf der Anlage sein schon wegen dem Sicherheitsventil das verträgt nur 110°C lt. Hersteller dem Vertraue ich aber nicht da ich eins schon aus versehen mit nur 85°C zerstört habe und wenn das öfter passiert geht das ins Geld. Ich habe hier 2 Räume die eine Heizung verbaut haben aber im Winter in der Regel nicht geheizt werden und da die Räume nur eine 12´er Wand haben könnte ich da per at oder doif die Wärme hin leiten wenn ich sie denn wirklich "Verschenken" muss damit die Heizung nicht kaputt geht wäre schade um die schöne Anlage naja komfortabel ist sie nicht aber wir haben andere Baustellen die viel Geld kosten in einem Haus von 1804 da habe ich derzeit weder Lust eine Heizung zu kaufen noch das Geld da kommt mir Holz gelegen da wir Wald haben und ich finde es besser wie Öl oder gar Gas.
Wenn das soweit rledigt ist Plane ich eine kleine Alarmanlage mit Bewegungssensoren da wir nahe CZ wohnen ca. 400m zu Fuß

Vielen Dank für eure Hilfe ich weis das ich ein Linux & FHEM nood bin aber ich lerne gern.