Hauptmenü

DOIF - Thema ....

Begonnen von Mops, 06 Oktober 2017, 18:55:00

Vorheriges Thema - Nächstes Thema

Mops

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

viegener

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.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

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
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Ellert

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

Mops

Alles klar. Vielen Dank erst einmal.

Ich werde mich noch einmal durchbeißen.

Gruß