FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: FSausF am 23 Mai 2019, 21:57:19

Titel: Einfaches Rechnen mit Zeiten?
Beitrag von: FSausF am 23 Mai 2019, 21:57:19
Hallo FHEM-Forum,
ich hab' da eine grundsätzliche Frage, bei der ich einen Hänger habe...
FHEM steuert aktuell einen Medienplayer als Radiowecker.
Das geht mit einem DOIF in der Form:
DOIF (([06:30-08:00|Mo Di Mi Do Fr]) or ([08:30-10:00|Sa So]))
(set Media on)
DOELSE (set Media off)

Das läuft so problemlos.
Jetzt soll das Ding luxuriöser werden, indem man die Weckzeit in einem Dummy eingeben kann.
Es gibt also ein Dummy mit drei Readings (dahinter die Werte in Klammern):
Wecker:Weckzeit_Wochentags (6:30)
Wecker:Weckzeit_Wochenende (8:30)
Wecker:Dauer (1:30).

Im DOIF soll nun mit den Zeiten gerechnet werden (Weckzeit / Weckzeit+Dauer), und das kriege ich nicht hin.
Wenn ich es richtig interpretiere, kommen nicht mal die Wert im DOIF an. Also DOIF ([Wecker:Weckzeit-12:00]) ... ist schon syntaktische Fehlanzeige.

Jetzt die Fragen:
Wie kriege ich aus meinen Dummy-Readings eine gültige Uhrzeit zurechtgebaut? Und damit einfach addiert oder subtrahiert?
Wie muß ich diese Ausdrücke Klammern (geschweift, eckig, rund?), damit das DOIF etwas damit anfangen kann?
Geht das überhaupt ohne großes Perl-Gefummel?

Ich würde mich über einen leichten Schlag auf den Hinterkopf oder eine gute Idee freuen!

Frank
Titel: Antw:Einfaches Rechnen mit Zeiten?
Beitrag von: CoolTux am 23 Mai 2019, 22:00:41
Hallo Frank. Diese Frage ist doch sehr DOIF lastig, daher denke ich das sie besser im DOIF Forum aufgehoben wäre.
Magst Du Deinen Threead einmal dahin verschieben?
Titel: Antw:Einfaches Rechnen mit Zeiten?
Beitrag von: rabehd am 23 Mai 2019, 22:10:16
https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung (https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung)

;)Wichtig ist die richtige Menge und Position der []
Titel: Antw:Einfaches Rechnen mit Zeiten?
Beitrag von: FSausF am 23 Mai 2019, 22:14:19
Zitat von: rabehd am 23 Mai 2019, 22:10:16
https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung (https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung)

;)Wichtig ist die richtige Menge und Position der []
Super, Danke für die schnelle Antwort!
So etwas in der Richtung hatte ich vermutet!
Ich werd's morgen Abend testen!
Morgen früh muß die Mimik nochmal wie gewohnt tun; werktags früh liegen die Nerven da etwas blank...
Titel: Antw:Einfaches Rechnen mit Zeiten?
Beitrag von: FSausF am 23 Mai 2019, 23:27:38
So, ich konnte die Finger doch nicht davon lassen und habe das DOIF zusammengebaut.
Bin gespannt, ob es mich morgen früh aus den Federn kitzeln wird.

Weil es aber schon eines von den syntaktisch trickreicheren geworden ist, teile ich es hier mal:
   
DOIF
(([Wecker:aktiv] eq "Ja") and
(([([Wecker:Weckzeit_Wochentag]-[00:06]) - ([Wecker:Weckzeit_Wochentag]+[Wecker:Dauer])|Mo Di Mi Do Fr]) or
  ([([Wecker:Weckzeit_Wochenende]-[00:06]) - ([Wecker:Weckzeit_Wochenende]+[Wecker:Dauer])|Sa So])
)
)

{fhem("set FritzBox wlan on;
set Media_Schlafzimmer on;
sleep 360;
set Rapsody open http://dg-swr-http-fra-dtag-cdn.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3")}
DOELSE
{fhem("set Rapsody off;
  sleep 60;
  set Media_Schlafzimmer off")}

Zur Erklärung:
Der Wecker hat mehrere Attribute, die über das Web-Frontend gesetzt werden können:
Aktiv (Ja / Nein)
Weckzeit_Wochentags (Uhrzeit)
Weckzeit_Wochenende (Uhrzeit)
Dauer (HH:MM)
Media_Schlafzimmer ist ein Schalter. Wenn der Saft gibt, startet der Raspberry mit KODI.
Der braucht - wenn die NAS mit der Bibliothek nicht erreichbar ist - eine halbe Ewigkeit zum Starten. Daher die Zeitberechnung mit den 6 Minuten.
Rapsody ist das KODI.

So, und jetzt Rock and Roll!
Titel: Antw:Einfaches Rechnen mit Zeiten?
Beitrag von: Per am 24 Mai 2019, 12:57:30
Zitat von: FSausF am 23 Mai 2019, 23:27:38Weil es aber schon eines von den syntaktisch trickreicheren geworden ist
Naja, du bist noch neu hier ;)

Zur besseren Übersicht ist es hier üblich, Code in Code-Tags (->