FHEM Heizungsalarm soll über Fritzbox mich anrufen

Begonnen von MichaelK-T, 30 September 2015, 09:46:56

Vorheriges Thema - Nächstes Thema

MichaelK-T

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.

bergadler

Die Klammer muß ganz nach hinten, siehe Beispiel in #12.

... if ($EVTPART1 >18);}
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

MichaelK-T

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.

bergadler

Und wo kommt jetzt das doppelte Semikolon vor dem "if" her?

Nimm doch mal die Beispielsyntax von @CoolTux aus #12.
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

MichaelK-T

@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

Starkstrombastler

Zuletzt hast du den Vergleichsoperator in der if( ) - Bedingung unterschlagen.
if ($EVTPART1 eq "on")
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

bergadler

#21
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.
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

RoBra81

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

MichaelK-T

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......

CoolTux


"/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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux


"/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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MichaelK-T

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

CoolTux

#28
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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MichaelK-T

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......