[Gelöst ]DOIF state abfragen

Begonnen von pinkfloyd66, 11 Mai 2016, 18:53:10

Vorheriges Thema - Nächstes Thema

pinkfloyd66

Hallo

ich habe DOIF für mich entdeckt und habe Probleme mit dem abfragen des "state" eines bestimmen Dummys
hier erstmal der Code


define jalou_ho1 dummy
attr jalou_ho1 alias hoch
attr jalou_ho1 group Jalousie hoch
attr jalou_ho1 room test1
attr jalou_ho1 setList state:time
attr jalou_ho1 sortby 2
attr jalou_ho1 webCmd state

define Licht_Woche1 dummy
attr Licht_Woche1 room test1
attr Licht_Woche1 sortby 10
attr Licht_Woche1 webCmd on:off

define n_jalou_ho notify (jalou_ho1|global:INITIALIZED|global:REREADCFG).* \
modify jalou_mod1 *{ReadingsVal("jalou_ho1","state","05:30")}

define jalou_mod1 DOIF ([[jalou_ho1]]) (set Licht_Woche1 on)
attr jalou_mod1 do always



obwohl der Code hier, funktioniert. Nur leider verstehe ich es nicht warum das so ist

define time dummy
attr time group time
attr time room test1

define lamp dummy
attr lamp group ttt
attr lamp room test1
attr lamp webCmd on:off

define di_time DOIF ([[time]]) (set lamp on)
attr di_time do always

Vielleicht kann mir einer dabei helfen.

LG


viegener

Zitat von: pinkfloyd66 am 11 Mai 2016, 18:53:10
Hallo

ich habe DOIF für mich entdeckt und habe Probleme mit dem abfragen des "state" eines bestimmen Dummys
hier erstmal den Code


lkfdlk


Ich glaube der Code macht nicht nur Schwierigkeiten beim state  ;D

Sorry konnte nicht widerstehen...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

CoolTux

Das ist kein Code, das sieht aus wie hingeschissen  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pinkfloyd66

Sieht wirklich aus wie hingesch....
Ich habe mich verklickt und wollte eigentlich in der Vorschau anschauen ob ich das mit dem Code-Block richtig gemacht habe :) :)

viegener

Ja das mit dem Code-block hat geklappt. Leider fehlt mir jetzt einen vernünftige Erklärung dazu  ;)

Der erste Codeteil ist mir zwar nicht klar, aber ich nehme mal an der funktioniert nicht, denn die Bedingung enthält keine eckigen Klammern, obwohl das wohl eine Reihe von Events sein soll?

Schaue Dir doch mal die Besipiele zu DOIF an und wenn möglich keine Zeichen weglassen, viele davon sind relevant...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

pinkfloyd66

Hallo
danke erstmal für die Antwort

Ich denke du meinst den Teil hier
define jalou_mod1 DOIF ([[jalou_ho1]]) (set Licht_Woche1 on)
attr jalou_mod1 do always

mein Ziel ist es das ich die Zeit manuell einstellen kann, wenn ich aber zum Beispiel den Code ändere in
define jalou_mod1 DOIF ([20:00]) (set Licht_Woche1 on)
attr jalou_mod1 do always

dann funktioniert der Code, das kann ja nur bedeuten das in der Variable des Dummys nicht die Uhrzeit steht.
auch ein jalou_ho1:state bringt nichts .
Wenn ich aber dem Dummy time den Status zuweise mit
set time [jalou_ho1:state]
dann wird im Dummy die Zeit zugewiesen

Vielleicht hat ja jemand eine andere Idee wie ich das Problem lösen kann.

Den zweiten Code-Block habe ich aus der commandref /DOIF und der funzt ja auch

Vielen Dank
erstmal

viegener

Oops mein Fehler ich hatte jetzt glatt übersehen, dass es ein notify und kein DOIF ist im ersten Teil.
Ich verstehe trotzdem nicht was der notify soll.

Der DOIF ist doch soweit vollständig:

define jalou_mod1 DOIF ([[jalou_ho1]]) (set Licht_Woche1 on)
attr jalou_mod1 do always


Genauso wie im funktionierenden Beispiel greift dieser DOIF auf den STATE eines dummy zurück (in diesem fall jalou_ho1), den Du nur mit der entpsrechenden Zeit versorgen musst. z.B. über

set jalou_ho1 05:30

Was der notify soll ist mir unklar
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

pinkfloyd66

Guten Morgen
also ich habe das notify deswegen eingebaut, da sich mit diesem Code im Falle eines Neustartes oder einer Initializierung des Fhem die notify Variable wieder füllt.
Ich habe das notify auskommentiert und siehe da es funktioniert, obwohl ich der Meinung bin das ich das auch schon ausprobiert habe.
Normalerweise hatte ich das so programmiert

define jalou_ho2 dummy
attr jalou_ho2 alias Startzeit2
attr jalou_ho2 group Jalousie hoch
attr jalou_ho2 room test1
attr jalou_ho2 setList state:time
attr jalou_ho2 sortby 2
attr jalou_ho2 webCmd state

define j2e notify (jalou_ho2|global:INITIALIZED|global:REREADCFG).* \
    modify jalou_mod2 *{ReadingsVal("jalou_ho2","state","05:30")}
#########
define jalou_mod2 at *{ReadingsVal("jalou_ho2","state","05:30")} {\
fhem "set Licht_Woche2 on" }

define Licht_Woche2 dummy
attr Licht_Woche2 room test1
attr Licht_Woche2 sortby 20
attr Licht_Woche2 webCmd on:off


Ich finde den Readingsval viel komplizierter als das DOIF und wollte meine komplette Programmierung jetzt mit DOIF umsetzen.
Ach übrigens wenn ich die notify Zeile im ReadingsVal Beispiel auskommentiere und dann Fhem neustarte dann funktioniert der Code nicht mehr.

Leider habe ich gedacht das wäre beim DOIF auch so, na ja wieder was gelernt.
Da es jetzt ja Funzt setze ich das auf gelöst.

Vielen Dank an alle
Bis bald

viegener

Zitat von: pinkfloyd66 am 12 Mai 2016, 10:58:08
also ich habe das notify deswegen eingebaut, da sich mit diesem Code im Falle eines Neustartes oder einer Initializierung des Fhem die notify Variable wieder füllt.
Ich habe das notify auskommentiert und siehe da es funktioniert, obwohl ich der Meinung bin das ich das auch schon ausprobiert habe.

Ich versteh, dass der notify nötig ist, wenn Du es über at machst, da bei at nur bei der Definition den Wert des dummies verwendet wird
Der DOIF wertet den state aber dynmisch aus (quasi beinhaltet er den notify und ändert dann die timespec entsprechend)

Ich denke das Problem war vielleicht: Normalerweise ist der state eines dummys auch nach dem Neustart wieder gesetzt (Stichwort statefile), aber nur wenn man nach dem set auch ein SAVE macht.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können