Hallo zusammen,
ich hab nun schon so einiges definiert, aber bekomme immer wieder Probleme bei denen ich keine Ursache finde, teils nach einfach Änderungen eines defines das vorher funktioniert hat.
Bsp:
define GangLEDAutomatik notify myTwilight \
{\
if ((Value("myTwilight") > 6) && ($hms lt "23:59") && ($hms gt "12:00"))\
{\
if(Value("TVwasOn") ne "delayoff")\
{\
fhem("set GangLEDWuerfel on");;\
}\
else\
{\
fhem("set GangLEDWuerfel off");;\
}\
}\
else\
{\
fhem("set GangLEDWuerfel off");;\
fhem("set TVwasOn off");;\
}\
}
hier wurde lediglich der erste "else" Zweig eingefügt, vorher hat das Kommando funktioniert, jetzt führt es immer zu:
2014.06.26 09:26:44 3: GangLEDAutomatik return value: Unknown command {
if, try help.
Unknown command }
else
{
fhem("set, try help.
Unknown command }
}
else
{
fhem("set, try help.
Unknown command fhem("set, try help.
Unknown command }
}, try help.
Irgendwas stimmt mit der Klammerung/Leerzeichensetzung nicht, aber es erscheint mir völlig unlogisch.
Hat jemand ne Idee?
Tipp: Editiere NIEMALS in der Config Datei. Mache deine Defines und Änderungen alle über das Frontend. Das macht vieles einfacher und übersichtlicher. Dein Define sieht für das Frontend so aus und sollte auch funktionieren:
myTwilight {
if (Value("myTwilight") > 6 && $hms lt "23:59" && $hms gt "12:00") {
if(Value("TVwasOn") ne "delayoff") {
fhem("set GangLEDWuerfel on");
}
else {
fhem("set GangLEDWuerfel off");
}
}
else {
fhem("set GangLEDWuerfel off");
fhem("set TVwasOn off");
}
}
Hallo, danke ich habs nicht über die Config geändert, nur dort raus kopiert.
Ich habe jetzt einfach nur Leerzeichen vor die "fhem" Befehle gesetzt und damit scheints zu funktionieren.
Das habe ich allerdings an anderer Stelle nicht so, dort gehts aber trotzdem. Irgendwie macht das für mich keinen Sinn:
define GangLEDAutomatik notify myTwilight {\
if ((Value("myTwilight") > 6) && ($hms lt "23:59") && ($hms gt "12:00"))\
{\
if (Value("TVwasOn") ne "delayoff")\
{\
fhem("set GangLEDWuerfel on");;\
}\
else\
{\
fhem("set GangLEDWuerfel off");;\
}\
}\
else\
{\
fhem("set GangLEDWuerfel off");;\
fhem("set TVwasOn off");;\
}\
}
Nochmal: Editiere nicht die Config. Es liegt mit Sicherheit nicht an irgendwelchen Leerzeichen sondern an der gesamten Syntax. Herauskopieren kannst du auch aus dem Frontend. Der Code ist dann wesentlich aufgeräumter, weil man dort die \ und doppelten ; nicht benötigt (FHEM fügt sie automatisch ein).
Ich habs nicht da drin editiert :(
Danke, aber verstehen tu ichs aber trotzdem nicht
Nun. Ich werde dir nicht erklären, wie du richtig in der Config rumpfuschen kannst, weil das der falsche Weg ist. Mache deine Definitionen und Änderungen über das Frontend und du bekommst solche Probleme nicht.
Ich will ja die config gar nicht ändern (tue ich auch nicht), kopiere nur dort raus damit man sieht welche Zeichen fhem von selbst dazu fügt (um evtl. Fehler besser eingrenzen zu können).
Editiert habe ich nur in der "DEF" Eingabefläche, und dort wie gesagt lediglich Leerzeichen hinzugefügt, bzw. die erste Klammer "{" nach oben verschoben.
Damit gehts jetzt, es treten keine Fehler mehr auf, warum weiß ich nicht.
FHEM fügt die Zeichen korrekt dazu, sodass wir keine Kopien aus der Config benötigen. Wenn du den DEF teil aus den Devices kopierst, reicht das völlig um Fehler zu finden.