[gelöst] If Abfrage mit "und" Abfrage im notify

Begonnen von Paul, 19 Februar 2014, 21:57:08

Vorheriges Thema - Nächstes Thema

Paul

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?
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Thorsten Pferdekaemper

Vielleicht weil || "oder" bedeutet. Versuch mal &&.
Gruß,
Thorsten
FUIP

Paul

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Paul

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
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Thorsten Pferdekaemper

Jetzt wäre hilfreich, wenn Du did Fehlermeldung verraten würdest.
FUIP

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Paul

Die Fehler lautet:

2014.02.20 07:04:52 3: Tablet_Laden return value: Undefined subroutine &main::value called at (eval 494783) line 1.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Rince

Probier mal nach dem { ein Leerzeichen und vor der } auch eines.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Paul

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
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Rince

Dann schreib statt value mal Value bei dem Tablettschalter.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

chris1284

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

betateilchen

#11
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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Paul

#12
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
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Damian

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

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF