Hallo zusammen,
ich habe in meiner fhem.cfg mehrere notify 's erfolgreich am laufen:
define AA_EG_Wohnen notify AA_BEW_EG_Wohnen:on.* {system("/home/pi/apps/AA_EG_Wohnen.js");;}
Es wird ein shell script aufgerufen welches Daten an einen Server sendet so wie hier:
https://forum.fhem.de/index.php/topic,11977.msg70879.html#msg70879 (https://forum.fhem.de/index.php/topic,11977.msg70879.html#msg70879)
Nun brauche ich in absehbarer Zeit eine weitere Bedingung
Wenn ("AA_BEW_EG_Wohnen:on" && "AA_Alarm_Aktiv") Dann ......
Darum soll das ganze in eine DOIF:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on")
({system(""/home/pi/apps/AA_EG_Wohnen.js"")})
und ich bekomme ständig Fehlermeldung für den Anweisungsteil:
Unknown command ({system(""/home/pi/apps/AA_EG_Wohnen.js"")}), try help.
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on")
({system("nodejs /home/pi/apps/AA_EG_Wohnen.js")})
Unknown command ({system("nodejs, try help.
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on")
(""/home/pi/apps/AA_EG_Wohnen.js"")
Unknown command (""/home/pi/apps/AA_EG_Wohnen.js""), try help.
Nun habe ich gefühlte 1000 Varianten schon ausprobiert und komme einfach nicht weiter.
Zumal der perl Aufruf beim notify wunderbar funktioniert.
Und aus der commandref werde ich dazu nicht wirklich schlau.
Kann mir bitte jemand helfen?
hab auf die Schnelle mal ein DOIF von mir gesucht, da siehts so aus und funktioniert...
([01:23|135]) ({system ("sudo -u root /opt/fhem/FHEM/backup.sh &")})
Zitat von: Korre am 21 September 2016, 10:55:03
Hallo zusammen,
ich habe in meiner fhem.cfg mehrere notify 's erfolgreich am laufen:
define AA_EG_Wohnen notify AA_BEW_EG_Wohnen:on.* {system("/home/pi/apps/AA_EG_Wohnen.js");;}
Es wird ein shell script aufgerufen welches Daten an einen Server sendet so wie hier:
https://forum.fhem.de/index.php/topic,11977.msg70879.html#msg70879 (https://forum.fhem.de/index.php/topic,11977.msg70879.html#msg70879)
Nun brauche ich in absehbarer Zeit eine weitere Bedingung
Wenn ("AA_BEW_EG_Wohnen:on" && "AA_Alarm_Aktiv") Dann ......
Darum soll das ganze in eine DOIF:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on")
({system(""/home/pi/apps/AA_EG_Wohnen.js"")})
und ich bekomme ständig Fehlermeldung für den Anweisungsteil:
Unknown command ({system(""/home/pi/apps/AA_EG_Wohnen.js"")}), try help.
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on")
({system("nodejs /home/pi/apps/AA_EG_Wohnen.js")})
Unknown command ({system("nodejs, try help.
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on")
(""/home/pi/apps/AA_EG_Wohnen.js"")
Unknown command (""/home/pi/apps/AA_EG_Wohnen.js""), try help.
Nun habe ich gefühlte 1000 Varianten schon ausprobiert und komme einfach nicht weiter.
Zumal der perl Aufruf beim notify wunderbar funktioniert.
Und aus der commandref werde ich dazu nicht wirklich schlau.
Kann mir bitte jemand helfen?
Und warum nimmst du nicht den gleichen?
( {system("/home/pi/apps/AA_EG_Wohnen.js")} )
Zitat von: Damian am 21 September 2016, 11:19:41
Und warum nimmst du nicht den gleichen?
( {system("/home/pi/apps/AA_EG_Wohnen.js")} )
ich würde ja gerne den gleichen Code nehmen, und habe es mehrfach versucht.
Jedesmal kommt die Fehlermeldung:
Unknown command ({system("/home/pi/apps/AA_EG_Wohnen.js")}), try help. :'( :'( :'(
und ich frage mich warum?
Kann mir das jemand erklären?
fehlendes Leerzeichen
nein das Leerzeichen hat keinen Einfluss (habs versucht).
folgendes ist mir nun aufgefallen durch eure Hinweise:
funktioniert:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on" and [AA_Alarm_Aktiv] eq "on")({system("/home/pi/apps/AA_EG_Wohnen.js" )})
funktioniert nicht:#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on" and [AA_Alarm_Aktiv] eq "on")
({system("/home/pi/apps/AA_EG_Wohnen.js" )})
obwohl in der Commandref folgendes steht.....
ZitatDas Modul unterstützt dazu Einrückungen, Zeilenumbrüche an beliebiger Stelle und Kommentierungen beginnend mit ## bis zum Ende der Zeile. Die Formatierungen lassen sich im DEF-Editor der Web-Oberfläche vornehmen.
....scheint mein Zeilenumbruch (zur besseren Lesbarkeit, wie empfohlen) nach der Bedingung zu bewirken, dass der Interpreter die Ausführungszeile als neuen (extra) Befehl ansieht und nicht in Verbindung mit der DOIF Bedingung abarbeiten möchte.
Hat der Zeilenumbruch bei Euch auch einen Einfluss oder habt ihr nur eine Zeile in der fhem.cfg?
Ich editiere über "edit files" auf der Weboberfläche (attr WEB editConfig 1) - ist das falsch?
habe es eben mit Zeilenumbruch getestet...Script-Aufruf funktioniert...
hier meine DOIF-Version
98_DOIF.pm 11314 2016-04-26 18:29:24Z damian-s
Zitat von: Korre am 21 September 2016, 11:59:24
nein das Leerzeichen hat keinen Einfluss (habs versucht).
folgendes ist mir nun aufgefallen durch eure Hinweise:
funktioniert:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on" and [AA_Alarm_Aktiv] eq "on")({system("/home/pi/apps/AA_EG_Wohnen.js" )})
funktioniert nicht:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on" and [AA_Alarm_Aktiv] eq "on")
({system("/home/pi/apps/AA_EG_Wohnen.js" )})
obwohl in der Commandref folgendes steht.........scheint mein Zeilenumbruch (zur besseren Lesbarkeit, wie empfohlen) nach der Bedingung zu bewirken, dass der Interpreter die Ausführungszeile als neuen (extra) Befehl ansieht und nicht in Verbindung mit der DOIF Bedingung abarbeiten möchte.
Hat der Zeilenumbruch bei Euch auch einen Einfluss oder habt ihr nur eine Zeile in der fhem.cfg?
Ich editiere über "edit files" auf der Weboberfläche (attr WEB editConfig 1) - ist das falsch?
Du arbeitest nicht mit der aktuellen Version des DOIF-Moduls.
Zitat von: Damian am 21 September 2016, 12:17:05
Du arbeitest nicht mit der aktuellen Version des DOIF-Moduls.
Ich habe vorgestern ein "update" ausgeführt und meine Datei /opt/fhem/FEHM/98_DOIF.pm zeigt folgendes:
Zitat#############################################
# $Id: 98_DOIF.pm 11314 2016-04-26 18:29:24Z damian-s $
#
# This file is part of fhem.
.... ich habe zwischendurch schon mehrere shutdown restarts gemacht.
muss ich dann nochmal was machen um die aktuelle DOIF zu laden? ???
kann ich in der Webansicht abfragen welche Version von DOIF aktuell verwendet wird?
Zitat von: Korre am 21 September 2016, 11:59:24
nein das Leerzeichen hat keinen Einfluss (habs versucht).
folgendes ist mir nun aufgefallen durch eure Hinweise:
funktioniert:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on" and [AA_Alarm_Aktiv] eq "on")({system("/home/pi/apps/AA_EG_Wohnen.js" )})
funktioniert nicht:
#define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen] eq "on" and [AA_Alarm_Aktiv] eq "on")
({system("/home/pi/apps/AA_EG_Wohnen.js" )})
obwohl in der Commandref folgendes steht.........scheint mein Zeilenumbruch (zur besseren Lesbarkeit, wie empfohlen) nach der Bedingung zu bewirken, dass der Interpreter die Ausführungszeile als neuen (extra) Befehl ansieht und nicht in Verbindung mit der DOIF Bedingung abarbeiten möchte.
Hat der Zeilenumbruch bei Euch auch einen Einfluss oder habt ihr nur eine Zeile in der fhem.cfg?
Ich editiere über "edit files" auf der Weboberfläche (attr WEB editConfig 1) - ist das falsch?
Es dürfte keine der Definitionen funktionieren, solange Du eine Raute vor die Definitionszeile setzt.
ZitatIch editiere über "edit files" auf der Weboberfläche (attr WEB editConfig 1) - ist das falsch?
Empfohlen wird die Nutzung des DEF-Editors, den Du in der Geräteübersicht (DeviceOverview) findest (auf DEF klicken), dann findet auch eine Syntaxprüfung statt. DOIF: Tips leichtere Bedienung Syntaxhervorhebung Klammerprüfung Suchen&Ersetzen, usw. (https://forum.fhem.de/index.php/topic,45373.msg371668.html#msg371668)
Laut Befehlsreferenz reichen zum Systemaufruf doppelte Anführungszeichen (http://fhem.de/commandref_DE.html#command) ", also nicht "", das würde dann für den DOIF-Befehlsteil so aussehen
("/home/pi/apps/AA_EG_Wohnen.js")
Zitatkann ich in der Webansicht abfragen welche Version von DOIF aktuell verwendet wird?
version (http://fhem.de/commandref_DE.html)
in der Webansicht
version 98_DOIF
wir haben die selbe Version und bei mir funktioniert es mit Zeilenumbruch... ::)
version 98_DOIF
gibt mir folgendes zurück:
98_DOIF.pm 11314 2016-04-26 18:29:24Z damian-s
Zitat von: Ellert am 21 September 2016, 12:41:50
Es dürfte keine der Definitionen funktionieren, solange Du eine Raute vor die Definitionszeile setzt.
die Raute war in der fhem.cfg nicht drinn.
Zitat von: Ellert am 21 September 2016, 12:41:50
Empfohlen wird die Nutzung des DEF-Editors, den Du in der Geräteübersicht (DeviceOverview) findest (auf DEF klicken), dann findet auch eine Syntaxprüfung statt. DOIF: Tips leichtere Bedienung Syntaxhervorhebung Klammerprüfung Suchen&Ersetzen, usw. (https://forum.fhem.de/index.php/topic,45373.msg371668.html#msg371668)
OK, das ist hilfreich, danke.
Ich muss also erst das
define AA_EG_Wohnen_do DOIF
in der fhem.cfg eintragen und dann in der Geräteübersicht (DeviceOverview) auf DEF klicken, um die Bedingungen und Ausführungsanweisungen anzugeben, -richtig?
Zitat von: Ellert am 21 September 2016, 12:41:50
Laut Befehlsreferenz reichen zum Systemaufruf doppelte Anführungszeichen (http://fhem.de/commandref_DE.html#command) ", also nicht "", das würde dann für den DOIF-Befehlsteil so aussehen ("/home/pi/apps/AA_EG_Wohnen.js")
..Das habe ich gelesen, soweit bin ich noch nicht gekommen, werde ich einbauen.
ZitatIch muss also erst das
Code: [Auswählen]
define AA_EG_Wohnen_do DOIF
in der fhem.cfg eintragen und dann in der Geräteübersicht (DeviceOverview) auf DEF klicken, um die Bedingungen und Ausführungsanweisungen anzugeben, -richtig?
Nein.
Du gibst
define AA_EG_Wohnen_do DOIF ([AA_BEW_EG_Wohnen])
in die Befehlszeile ein und drückst die Eingabetaste.
Dann öffnet sich die Geräteübersicht, dort klickst Du auf DEF, dann öffnet sich der Editor, darin ergänzt Du den Rest.
Wenn Du die fhem.cfg direkt editierst, dann musst Du alle Steuerzeichen per Hand eintragen und entsprechende Maskierungen selbst durchführen, wie Semikolon verdoppeln oder vervierfachen.
Zitat von: Korre am 21 September 2016, 12:58:10
version 98_DOIF
gibt mir folgendes zurück:
98_DOIF.pm 11314 2016-04-26 18:29:24Z damian-s
Dann liegt das wohl daran, dass du nicht über den Browser im DEF-Editor editierst, dann fehlt in der cfg-Datei das Backslash, welches zusammenhängede Zeilen auch zusammen hält.
Gruß
Damian
vielen Dank euch Dreien,
es läuft seit heute nachmittag recht stabil und alles funktioniert wie es soll.
Nun ist mir die Vorgehensweise sowie die empfohlene Verwendung klar und geläufig.
Nochmals herzlichen Dank! :) :) :)