Hallo kann jemand mal helfen.
Ich sitze schon über 3 Stunden eigentlich an einfachen Aufgabe aber ich bekomme es nicht hin.
Möchte einen Schalter anschalten wenn er aus ist. Mein Code lautet so:
define An notify Tablet.*:.* {if(ReadingsVal("Tablet","powerLevel","999")<90 || (value("Tabletschalter") eq "off")) {fhem "set Tabletschalter on"}}
Also das notify schaltet, aber leider auch wenn der Schalter bereits on ist.
Was ist an value ("Tabletschalter") eq "off" falsch?
Vielleicht weil || "oder" bedeutet. Versuch mal &&.
Gruß,
Thorsten
Danke ich idiot
Hat leider nichts genutzt wenn ich jetzt das richtige UND benutze
Tablet.*:.* {if(ReadingsVal("Tablet","powerLevel","999")<90 && (value("Tabletschalter") eq "off")) {fhem "set Tabletschalter on"}}
erhalte ich ein Fehlermeldung im Logfile und es wird nicht geschaltet
Jetzt wäre hilfreich, wenn Du did Fehlermeldung verraten würdest.
Moin,
Zitaterhalte ich ein Fehlermeldung im Logfile und es wird nicht geschaltet
Dann sagt dir ja die Fehlermeldung was falsch ist - Problem gelöst?
Dann bitte den ersten Beitrag bearbeiten und dem Titel ein (Gelöst) vorne dran - danke.
Grüße
Die Fehler lautet:
2014.02.20 07:04:52 3: Tablet_Laden return value: Undefined subroutine &main::value called at (eval 494783) line 1.
Probier mal nach dem { ein Leerzeichen und vor der } auch eines.
Tablet.*:.* { if(ReadingsVal("Tablet","powerLevel","999")<90 && (value("Tabletschalter") eq "off")) { fhem "set Tabletschalter on" }}
Hat auch nichts geholfen. Verstehe es nicht habe nur || gegen && ausgetauscht und damit geht es nicht
Dann schreib statt value mal Value bei dem Tablettschalter.
{if(ReadingsVal("Tablet","powerLevel","99")<90)&&(Value("Tabletschalter") eq "off"){fhem "set Tabletschalter on"}}
du kannst auch "and" nehmen und ich meine if (Bedingung)and/or(Bedingung){Anweisung} ist von der Syntax richtig, nicht
if (Bedingung and/or Bedingung){Anweisung} (so hat es bei mir nicht funktioniert).
Zitat von: chris1284 am 20 Februar 2014, 14:36:29nicht if (Bedingung and/or Bedingung){Anweisung}
das ist genauso richtig und funktioniert definitiv. Gib mal in die Kommandozeile ein: {(5 > 3 && 5 < 8)} da kommt eine 1 raus - wie es sich gehört.
Danke
Das klappt jetzt:
define Tabletladen notify Tablet.*:.* { if(ReadingsVal("Tablet","powerLevel","999")<95 && (Value("Tabletschalter") eq "off")) { fhem "set Tabletschalter on" }}
PS jetzt weiß ich auch das 8) > 5 ist. :D
Zitat von: Paul am 20 Februar 2014, 19:42:16
Danke
Das klappt jetzt:
define Tabletladen Tablet.*:.* { if(ReadingsVal("Tablet","powerLevel","999")<95 || (Value("Tabletschalter") eq "off")) { fhem "set Tabletschalter on" }}
PS jetzt weiß ich auch das 8) > 5 ist. :D
je nachdem, wie oft dein Notify (der fehlt hier offenbar) zuschlägt, kann immer wieder set Tabletschalter on ausgelöst werden.
das kannst du verhindern mit:
define Tabletladen notify Tablet.*:.* { if(ReadingsVal("Tablet","powerLevel","999")<95 || (Value("Tabletschalter") eq "off")) { fhem "set Tabletschalter:FILTER=STATE!=on on" }}
oder das Ganze etwas kürzer mit:
define Tabletladen notify Tablet.*:.* IF ([Tablet:powerlevel]<95 or [Tabletschalter:state] eq "off") (set Tabletschalter:FILTER=STATE!=on on)
siehe: http://forum.fhem.de/index.php/topic,17895.msg118503.html#msg118503
Gruß
Damian