Hauptmenü

Und nochmal IF

Begonnen von Ralle, 01 Januar 2017, 21:59:09

Vorheriges Thema - Nächstes Thema

Ralle

Habe ein Problem mit der IF Abfrage.
Frage einen Temperatursensor über ein notify ab.

Folgender Code funktioniert:
ESP8266_1:Temperature:.* {if (ReadingsVal("ESP8266_1","Temperature",0) > 1.0 ){ fhem("set Lampe on")}}

Folgender Code nicht obwohl er laut Commandref funktionieren sollte. (Syntax Error)
ESP8266_1:Temperature:.* {if (ReadingsVal("ESP8266_1","Temperature",0) > 1.0) (set Lampe on)}

Auch ist in der Commandref folgende Möglichkeit beschrieben die ich aber auch nicht zum laufen bekomme.
ESP8266_1:Temperature:.* {if ([ESP8266_1:Temperature] > 1.0 ){ fhem("set Lampe on")}}

Wahrschienlich habe ich mich total verrannt und finde den Fehler hier leider nicht.
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

abc2006

Zitat von: Ralle am 01 Januar 2017, 21:59:09
Habe ein Problem mit der IF Abfrage.
Frage einen Temperatursensor über ein notify ab.

Folgender Code funktioniert:

Für mich zum Verständnis:

Du hast Code, der funktioniert.
Du hast ein Beispiel aus der commandref, was nicht funktioniert.

Was genau möchtest du jetzt wissen?

Grüße

Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Ralle

#2
Na, mich würde interssieren warum dei beiden letzten Codes nicht funktionieren, wenn es doch so in der Commandref steht.
Bin ich nur blind oder habe einen Fehler gemacht den ich selber nicht mehr finde?
Würde auf längere Sicht auch gerne "besseren" Code schreiben wollen.
PS. Den Code habe ich so nicht aus der Commandref, sondern mich nur daran orientiert !!

Gruß
Ralf
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

krikan

Die stehen so bestimmt nicht in der commandref.  :)
Es macht einen Unterschied, ob Du Perl if oder FHEM IF einsetzt. Die Groß-/Kleinschreibung ist entscheidend.
Schau Dir die Beispiele in der commandref unter diesem Gesichtspunkt noch einmal an.
Gruß, Christian

Ralle

Da ist nett mich wieder auf die Commanref zu schicken, wo ich die schon zigmal gelesen habe.
Hatte mir einen anderen (besseren) Tipp erhofft.

Gruß
Ralf
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

automatisierer

Zitat von: Ralle am 01 Januar 2017, 22:22:43
Da ist nett mich wieder auf die Commanref zu schicken, wo ich die schon zigmal gelesen habe.
Hatte mir einen anderen (besseren) Tipp erhofft.

Gruß
Ralf
da sage ich mal nix zu...


Zitat von: krikan am 01 Januar 2017, 22:15:49
Die stehen so bestimmt nicht in der commandref.  :)
Es macht einen Unterschied, ob Du Perl if oder FHEM IF einsetzt. Die Groß-/Kleinschreibung ist entscheidend.
Schau Dir die Beispiele in der commandref unter diesem Gesichtspunkt noch einmal an.
Gruß, Christian

if ist nicht gleich IF - das ist der bessere Tipp! Du hast die beiden Dinger durcheinander geschmissen - das funktioniert nicht.

Sollen wir dir die Textpassagen aus der Commandref kopieren und hier posten? Liest du die dann lieber?

Ralle

Na,das ist doch mal ein Tipp mit dem ich was anfangen kann.
Und ich sagte zu Anfangs ja schon das ich mich evtl. verrannt habe.
Manchmal sieht man den Wald eben vor lauter Bäumen nicht.
Werde ich gleich mal ausprobieren.
Gruß
Ralf
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

Ralle

#7
Erst mal ein Sorry @krikan,
in der Hektik des suchens habe ich Deinen Tipp komplett überlesen.
ZitatEs macht einen Unterschied, ob Du Perl if oder FHEM IF einsetzt. Die Groß-/Kleinschreibung ist entscheidend.

Aber leider bleibt es dabei, der erste Code funktioniert auch nur mit kleinem if, aber die beiden anderen nun mit großem IF immer noch nicht.

Hier gibt's folgende Fehlermeldung
Nachricht return value: syntax error at (eval 283937) line 1, near "ESP8266_1:"
syntax error at (eval 283937) line 1, near "}}"


Gruß
Ralf

Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

Wuppi68

also wenn Du in einen FHEM Befehl die geschweifte Klammer öffnest hast Du Perl und keine FHEM Befehle, jedoch fhem als Befehl :-)

bei IF und [Device:Reading] gibt es einen String zurück und den kannst Du nicht als Zahl Vergleichen .... schaue noch einmal in die Commandref nach :d
FHEM unter Proxmox als VM

Ralle

#9
Zitatbei IF und [Device:Reading] gibt es einen String zurück und den kannst Du nicht als Zahl Vergleichen .... schaue noch einmal in die Commandref nach :d

Schaue ich in die Kommandref wird ein Bespiel aber genauso beschrieben ?
Mehrzeilige Eingaben in der cfg-Datei müssen dagegen jeweils am Zeilenende mit \ verknüpft werden (das ist eine Eigenschaft von FHEM und nicht von IF):

define test notify lamp \
IF ([lamp] eq "on") (\
    IF ([outdoor:humidity] < 70)\
        (set lamp off)\
    ELSE\
        (set lamp on)\
) ELSE\
    (set switch on)

Filtern nach Zahlen im Reading "temperature":

define settemp at 22:00 IF ([tempsens:temperature:d] >= 10) (set heating on)


Nach der Änderung des Codes funktioniert es leider auch nicht.
ESP8266_1:Temperature:.* {IF ([ESP8266_1:Temperature:d] > 1.0 ){ fhem("set Lampe on")}}

Es bleibt beim Fehler:Nachricht return value: syntax error at (eval 337864) line 2, near "ESP8266_1:"
syntax error at (eval 337864) line 2, near "}}"


Vorausgesetzt das :d ist so korrekt ?

Gruß
Ralf
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen

Damian

IF ist FHEM und nicht Perl, daher:

ESP8266_1:Temperature:.* IF ([ESP8266_1:Temperature:d] > 1.0 ) (set Lampe on)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ralle

Jepp, nun habe ich es verstanden und funktioniert auch.
Vielen Dank.

Gruß
Ralf
Raspberry 3, Homematic HMLAN, HM Rolladensteuerung, MySensors, MAX CUL (Umbau Telekatz), Sonoff mit Easy-ESP, Arduino, MQTT, USV(Powerbar), 433Mhz Steckdosen