DOIF mit indirekten Zeitangaben

Begonnen von Damian, 25 Februar 2015, 19:19:38

Vorheriges Thema - Nächstes Thema

flurin

#75
Hier noch ein Beispiel:

define interval dummy
set interval 00:02

define di_time_var DOIF ([+[interval]]) ({myLog("Interval expired: do what you like")})
attr di_time_var do always

automatisierer

Ist es eigentlich möglich, doif mit einer Unix-Zeit-Angabe zu steuern? Dann hätte man eine absolute Zeit, die auch mal ein paar Tage in der Zukunft liegen kann. Ich benutze so etwas um meinen Sat-Reciever per Schaltsteckdose für Aufnahmen einzuschalten. Dabei wird über das ENIGMA2 Modul die Unix-Zeit der nächsten Aufnahme ausgelesen und der Reciever dann 10 Minuten vor der Aufnahme eingeschaltet.

Gruß
Ingo

Damian

#77
Zitat von: automatisierer am 09 März 2015, 17:15:56
Ist es eigentlich möglich, doif mit einer Unix-Zeit-Angabe zu steuern? Dann hätte man eine absolute Zeit, die auch mal ein paar Tage in der Zukunft liegen kann. Ich benutze so etwas um meinen Sat-Reciever per Schaltsteckdose für Aufnahmen einzuschalten. Dabei wird über das ENIGMA2 Modul die Unix-Zeit der nächsten Aufnahme ausgelesen und der Reciever dann 10 Minuten vor der Aufnahme eingeschaltet.

Gruß
Ingo

Die Zeitangaben sind auf HH:MM beschränkt, weil es ja für den User nachvollziehbar ist. Unix-Time wird natürlich intern benutzt.

was geht ist z. B:

define u_time dummy
set u_time {mytime()}

DOIF ([[u_time]])(set receiver on)


mytime ist dann eine Perl-Funktion, die aus der Unix-Zeit HH:MM berechnet, allerdings nur 24 Stunden im voraus. Na ja nicht ganz, denn man kann (inoffiziell) 99:59 angeben, also vier Tage im voraus.

Daher nur bedingt sinnvoll.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

automatisierer

schade... jetzt prüfe ich per at befehl alle x minuten ob die programmierte unix-time minus fünf minuten kleiner ist als die aktuelle unix-time und schalte dann halt entsprechend... funktioniert zuverlässig, benötigt aber diverse dummy's, at's und notify's...

Ich glaube auch schon mal irgendwo gelesen zu haben, dass eine absolute Zeitangabe in FHEM nicht vorgesehen, bzw nicht FHEM konform ist. Ich hatte halt so nen bissl gehofft, dass DOIF, die Eier legende Wollmilchsau unter den FHEM Modulen das auch noch kann...


msdv

Hallo,

ich versuche ein Velux-Rollo mit einem RadioWecker zeitgleich aufgehen zu lassen.
Der Radiowecker wird über das squeezboxModul bereitgestellt.
Dort sehe ich in den Readings:
alarm1_time 09:40:00
alarmsEnabled on


Die Readings werden auch geändert, wenn ich den Alarm auf dem Radio ändere. Soweit zu gut.

Dann habe ich folgendes DOIF geschrieben:
([[Radio:alarm1_time]] and ([Radio:alarmsEnabled] eq "on")) (set Velux pct 100)

Nun zum Problem:
wenn ich das DOIF ändere und speichere, wird auch die alarm1_time im DOIF korrekt ausgelesen und dann geht auch das Velux hoch.
Aber wenn ich nur am Radio die Zeit ändere, bekommt das DOIF das nicht mit. Ich habe keine Attribute gesetzt... sollte ich irgendwelche setzen?

Danke für Eure Hilfe,
Markus.

Damian

Zitat von: msdv am 13 Mai 2021, 12:04:03
Hallo,

ich versuche ein Velux-Rollo mit einem RadioWecker zeitgleich aufgehen zu lassen.
Der Radiowecker wird über das squeezboxModul bereitgestellt.
Dort sehe ich in den Readings:
alarm1_time 09:40:00
alarmsEnabled on


Die Readings werden auch geändert, wenn ich den Alarm auf dem Radio ändere. Soweit zu gut.

Dann habe ich folgendes DOIF geschrieben:
([[Radio:alarm1_time]] and ([Radio:alarmsEnabled] eq "on")) (set Velux pct 100)

Nun zum Problem:
wenn ich das DOIF ändere und speichere, wird auch die alarm1_time im DOIF korrekt ausgelesen und dann geht auch das Velux hoch.
Aber wenn ich nur am Radio die Zeit ändere, bekommt das DOIF das nicht mit. Ich habe keine Attribute gesetzt... sollte ich irgendwelche setzen?

Danke für Eure Hilfe,
Markus.

Die Änderung der Uhrzeit muss ein Event auslösen, sonst bekommt DOIF es nicht mit.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

msdv

Zitat von: Damian am 13 Mai 2021, 12:15:36
Die Änderung der Uhrzeit muss ein Event auslösen, sonst bekommt DOIF es nicht mit.

Ich habe das Problem gefunden - im Radio war das Attribute "donotnotify" gesetzt.
Nachdem ich das auf "false" gesetzt habe, funktioniert es nun wie es aussieht.