FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mops am 06 Oktober 2017, 18:55:00

Titel: DOIF - Thema ....
Beitrag von: Mops am 06 Oktober 2017, 18:55:00
Hallo Leute,

ich steige gerade mehr oder weniger in FHEM ein.

Einiges gelesen ... viel angeschaut ... leider des Öfteren nur mäßig ans Ziel gekommen.

Ich würde gerne 2 Rolläden abhängig von meiner Anwesendheit und von der Tageszeit hoch und runter fahen.

Dafür frage ich mein Handy via Lan-Ping ab.
Abhängig von dem State und der Tageszeit soll ein DOIF die Sache richten.

Im ersten DOIF möchte ich die Tageszeit erfassen. (Abgeschaut hier irgendwo im Forum):


define doif.isdayreal DOIF (sunset_real("real")) DOELSEIF (sunrise_real("real"))
attr doif.isdayreal cmdState night|day

Der Code scheint nicht richtig zu funktionieren. Denn der State ändert sich nicht.

Also von mir umgebaut zu:


define doif.isdayreal DOIF (sunset_real("real")) ([doif.isdayreal:state = "night"]) DOELSEIF (sunrise_real("real")) ([doif.isdayreal:state = "day"])
attr doif.isdayreal cmdState night|day

Funzt aber auch nicht wirklich.

Das DOIF das af meine Anwesenheit reagieren soll sieht so aus:


define doif.anwesend.markus DOIF ([anwesendheit.handy.markus:"present"] and ([doif.isdayreal] eq "day")) (set eg.rolladen.wohnzimmer.1 on) (set eg.rolladen.schlafzimmer on) DOELSEIF ([anwesendheit.handy.markus:"present"] and ([doif.isdayreal] eq "night")) (set eg.rolladen.wohnzimmer.1 off) (set eg.rolladen.schlafzimmer off) DOELSE (set eg.rolladen.wohnzimmer.1 off) (set eg.rolladen.schlafzimmer off)


Kann mir jemand bei der Erkennung der Tageszeit helfen?
Und dann vielleicht auch direkt mal auf mein DOIF schauen das die Rolläden schaltet?

Vielen Dank.

Gruß
Markus
Titel: Antw:DOIF - Thema ....
Beitrag von: viegener am 06 Oktober 2017, 19:11:30
Ich fang mal an, denn ich denke es gibt da einige Missverständnisse.

Du solltest nicht selber den state des DOIFs anpassen, dass ist nicht Sinn der Sache, denn genau dafür ist ja das DOIF zuständig

sunset_real kenne ich nicht vermute aber es gehört zum Ausführungsteil, dann fehlt beim ersten DOIF die Bedingung

Also grundsätzlich für ein minimales DOIF wird benötigt: eine Bedingung (da gibt es ganz viele Möglichkeiten) und ein Ausführungsteil. Wie gesagt das ist das Minimum mit DOELSE/etc lässt sich das erweitern

Ausführungsteil bezieht sich meistens eher auf ANDERE Devices an denen etwas ausgeführt wird.
Titel: Antw:DOIF - Thema ....
Beitrag von: viegener am 06 Oktober 2017, 19:13:44
Achso: Dies soll jetzt erstmal nur ein erster hinweis sein, denn vermutlich befindest Du Dich auf einem grossen Holzweg

Mein Vorschlag wäre erstmal ein ganz einfaches DOIF aufzubauen nach der Art Wenn etwas passiert oder ein Zeitpunkt erreicht wird mache etwas. Aber eben so einfach wie möglich, vielleicht einfach einen Dummy-state setzen - das könnte auch helfen um Dein Problem anzugehen
Titel: Antw:DOIF - Thema ....
Beitrag von: Ellert am 06 Oktober 2017, 20:16:24
Ein Beispiel aus dem Forum kann schon mal falsch sein, eins aus der Commandref kaum. Es gibt dort Beispiele zur genauen Syntax im Zusammenhang mit sunrise/sunset, s. https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen
Titel: Antw:DOIF - Thema ....
Beitrag von: Mops am 11 Oktober 2017, 20:37:33
Alles klar. Vielen Dank erst einmal.

Ich werde mich noch einmal durchbeißen.

Gruß