Morgen,
ich versuche ein Dummy zu schalten wenn der Wert von c-tomorrow auf 1 wechselt. Bekomme es ab leider nicht hin.
Kann mir bitte einer ein Tipp geben wo der Fehler liegt ?
Gruß
Internals:
CFGFN
DEF ([Kalender_muell:c-tomorrow] = 1 ) (set muell_morgen on)
NAME di_m_morgen
NR 51314
NTFY_ORDER 50-di_m_morgen
STATE initialized
TYPE DOIF
Readings:
2017-02-16 09:37:07 cmd 0
2017-02-16 09:37:07 state initialized
Condition:
0 ReadingValDoIf($hash,'Kalender_muell','c-tomorrow') = 1
Devices:
0 Kalender_muell
all Kalender_muell
Do:
0:
0 set muell_morgen on
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Itimer:
Readings:
0 Kalender_muell:c-tomorrow
all Kalender_muell:c-tomorrow
Regexp:
All:
State:
Attributes:
do always
room Kalender
Internals:
DEF Kalender_Muell 1 21600
INTERVAL 21600
KALENDER Kalender_Muell
NAME Kalender_muell
NR 168
NTFY_ORDER 50-Kalender_muell
STATE t: 5 td: 0 tm: 1
TYPE CALVIEW
Readings:
2017-02-16 09:15:40 c-term 5
2017-02-16 09:15:40 c-today 0
2017-02-16 09:15:40 c-tomorrow 1
Internals:
CFGFN
NAME muell_morgen
NR 35191
STATE off
TYPE dummy
Readings:
2017-02-16 09:14:36 state off
Attributes:
room Kalender
webCmd on:off
Moin,
vielleicht hilft Dir das -> https://wiki.selfhtml.org/wiki/Perl/Operatoren :)
Manchmal ist zweimal besser als einmal ==
Gruß Otto
Danke für den Link, aber auch zwei Gleichheitszeichen bringen kein Erfolg bei der Vergleichsabfrage.
([Kalender_muell:c-tomorrow] ==1 ) (set muell_morgen on)
Tja dann wird wohl keine 1 drin stehen.
Versuch mal {ReadingsVal("Kalender_muell","c-tomorrow","")}
oben in der Kommandozeile.
Gruß Otto
Da erhalte ich eine 1
Gruß
Achim
wenn ich ein shutdown restart ausführe wird der Dummy geschaltet.
Ansonsten nicht :-\
Naja Dein DOIF wird ja von nichts weiter getriggert als von [Kalender_muell:c-tomorrow] == 1
Wenn ich DOIF richtig verstehe, wird das in diesem Fall getriggert wenn das Ereignis eintritt.
Der Zustand steht jetzt auf initialized, das wartete also das was passiert. Mit dem Reading passiert aber derzeit nichts.
Aber ich bin mir nicht sicher.
Ich mache das so nicht, ich triggere mein DOIF anders (Zeitraum + Bewegung) und frage nur ab ob Morgen Müll abgeholt werden wird.
Zitat von: achim60 am 16 Februar 2017, 10:23:42
wenn ich ein shutdown restart ausführe wird der Dummy geschaltet.
Ansonsten nicht :-\
Du hast aber auch keine Alternative, also keinen ELSE Zweig, was soll er machen wenn die Bedingung nicht erfüllt ist?
Was willst Du eigentlich tun? Das Reading logisch in ein Dummy spiegeln? Wozu?
Gruß Otto
Hallo Otto,
ich stecke noch in den Anfängen was FHEM angeht und hab mich recht schnell mit DOIF angefreundet. Perl liegt mir leider nicht.
Zu meinem Vorhaben:
Ich nutze das FTUI wo mir die Termine angezeigt werden wann die Tonne raus muss.
Jetzt möchte ich aber das ein Tag zuvor eine Erinnerung erfolgt in Form von einem Switch ( der zb. blinkt) und den ich händisch ausschalten muss wenn die Tonne draußen ist.
Ist Spielerei aber finde ich gut :)
Da sich der Wert bei c-tomorrow von 0 auf 1 ändert, ein Tag zuvor, wollte ich diesen zur Berechnung heranziehen.
DOIF fragt diesen Wert ab und setzt wiederum den Dummy dann bei einer 1 auf ON.
Sobald der auf On ist geht der switch auf meine Tablet an.
Wenn ich dann die Tonne raus gestellt habe schalte ich den switch händisch wieder aus. ;D
So kann ich das nicht vergessen ;)
Deswegen auch kein ELSE Zweig!
Man kann das bestimmt auch mit einem Datumsvergleich bewerkstelligen, jedoch fehlt mir da noch das Wissen.
Gruß
Achim
Hallo Achim,
ok dann wird alles so funktionieren wie Du willst. Wenn sich das Reading ändert wird der Dummy umgelegt.
Ich hätte es dann wahrscheinlich mit einem notify gemacht ;)
Du kannst doch das Reading mal hin und herschalten (https://fhem.de/commandref_DE.html#setreading)und wirst sehen ob es so funktioniert wie du willst.
Gruß Otto
Hallo Otto,
habe heute mal wieder Zeit gefunden weiter zu machen.
Das mit dem setreading klappt wunderbar und er schaltet ;)
Schönes WE noch!
Gruß
Achim