Hauptmenü

DOIF versus Notify

Begonnen von elektrikpe2, 15 Januar 2018, 17:49:17

Vorheriges Thema - Nächstes Thema

elektrikpe2

Hallo,

habe ein Probelm bei der Auflösung eines Notify zum DOIF.

Folgender Notify läuft ohne Error durch:

define n_beiAlarmallesan notify Alarm:on { GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=4') };;{ GetFileFromURL('http://192.xxx.xxx.37:8090/control?scene=10') }

der DOIF dazu (ich hoffe ich habe DOIF richtig verstanden)

define di_beiAlarmAllesan DOIF ([Alarm] eq "on") ({ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=4') };;{ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=10') }) DOELSEIF ([Alarm] eq "off") (set Alarmanlage Aus)

Hintergrund: Ich löse aus einer Alarmanlage (LUPUSEC) bei Alarm eine Action-URL aus, die mir Alarm auf on setzt. Dann solle alle Rolladen hochfahren und das gesamte Licht angehen. Dazu schicke ich einen HTTP Request an einen JBMedia LM Air, der die ganzen Rolladen- und Lichtaktoren steuert. Könnte mit dem notify zufrieden sein, will aber in den DOIF auch noch die Zeitkomponente reinnehmen. Es sollen natürlich die Rolladen nur hoch wenn sie unten sind/bzw. das Licht an, wenn es nötig ist. Schreib mal die logischen Bedingungen hier auch auf, weil das sicher dann die nächste Frage sein wird, wie die Syntax für diesen DOIF ist. Also bei Alarm sollen die Rolladen hoch zwischen Sonnenuntergang und 06:35 und das Licht an zwischen 00:00 und Sonnenaufgang

Ein zweiter DOIF soll dann umgekehrt (also wenn der Alarm wieder ausgeschaltet wird) die Rolladen zwischen Sonnenuntergang und 06:35 wieder runterfahren und das Licht zwischen 00:00 und Sonnenaufgang - 90min wieder ausschalten. Der Beginn dieses DOIF

define d_nachAlarmallesaus DOIF
(["Alarm:on"] and ["Alarmanlage:Aus"])
{ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=5') }
{ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=11') }
(set Alarm off)


Dabei ist in Alarm der Zustand noch auf "on" und der Zustand von "Alarmanlage" wird durch Aktion-URL aus der Alarmanlage ausgelöst bzw. gesetzt.

Habe also zwei Probleme a) Fehler nach zweitem HTTP-Request und Syntax bei komplett ausgebautem DOIF. Allen Helfern schonmal Dank

mfg Peter

Ellert

#1
Bei reinen Perl-Befehlen sind keine runden Klammern erforderlich und das Semikolon muss im DOIF nicht gedoppelt werden, also
{ GetFileFromURL('http://192.xxx.xxx.37:8090/control?scene=4'); GetFileFromURL('http://192.xxx.xxx.37:8090/control?scene=10')}
sollte reichen, und mit FHEM-Befehl so
({ GetFileFromURL('http://192.xxx.xxx.37:8090/control?scene=5'); GetFileFromURL('http://192.xxx.xxx.37:8090/control?scene=11') },set Alarm off)
das Komma trennt FHEM-Befehle im DOIF

Wie lautet die Fehlermeldung?
siehe auch https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Besonderheit_des_Error-Reading

elektrikpe2

#2
Danke für die schnelle Antwort.

Erster Codeschnipsel funktioniert, die Fehlermeldung (vielleicht ist es aber auch keine):

error

{ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=4'); GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=10')}: OK


Beim zweiten Codeschnipsel bekomme ich Fehlermeldung ich wollte eingeben:

define di_nachAlarmallesaus DOIF
([Alarm] eq "on" and [Alarmanlage] eq "Aus) ({ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=5'); GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=11') },set Alarm off) DOELSEIF ([Alarm] eq "off") (set Alarmanlage Aus)


und es kommt die Meldung:

di_nachAlarmallesaus DOIF: no right bracket: ({ GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=5')
Unknown command GetFileFromURL('http://xxx.xxx.xxx.xx:xxxx/control?scene=11'), try help.

elektrikpe2

Hab gerade den define doch mal mit 2 Semikolon eingegeben; dann geht es ohne Fehler beim define.

Bleibt nur noch die Frage ob die error-Meldung wirklich eine Fehlermeldung ist.

Und große Bitte: Hilfestellung bei der Syntax mit Einbau der Zeitfaktoren. Danke