Uhrezit im Ausführungsteil berechnen und an Dummy übergeben

Begonnen von Sirel, 21 Februar 2016, 15:06:38

Vorheriges Thema - Nächstes Thema

Sirel

Hallo zusammen,
ich würde gerne eine Zeitberechnung im Ausführungsteil eines DOIF's vornehmen.

Ich habe einen Dummy der meine normale "Bürozeit" beinhaltet. Ich weiss zudem, wie lange wir morgens brauchen, bis wir abfahrbereit sind. Zudem kennt FHEM die aktuelle Zeitsituation auf der Straße.
Über ein DOIF möchte ich nun anhand dieser Parameter die optimale Aufstehzeit berechnen lassen und an einen Dummy übergeben.

Das sieht dann so aus:
([Fahrzeit:duration_diff] > 10) (set wakeupzeit {([Buerozeit]-[01:30]-[Fahrzeit:duration_in_traffic_hr])}) DOELSEIF ([Fahrzeit:duration_diff] < 10) (set wakeupzeit {([Buerozeit]-[01:30]-[Fahrzeit:duration_hr])}) DOELSE

Als Attribut habe ich waitsame 320 gesetzt, damit kurzfristige Schwankungen nicht sofort zu einer früheren Aufstehzeit führen.

Alle Dummies haben das Format hh:mm .

Ich bekomme jetzt aber immer die Fehlermeldung
Illegal octal digit '9' at (eval 37088) line 1, at end of line syntax error at (eval 37088) line 1, near "09:"
und der Dummy "wakeupzeit" hat jetzt den Status
(09:00-[01:30]-00:28)

Wie kann ich das Problem lösen?

Vielen Dank vorab,
Max

Damian

Zitat von: Sirel am 21 Februar 2016, 15:06:38
Hallo zusammen,
ich würde gerne eine Zeitberechnung im Ausführungsteil eines DOIF's vornehmen.

Ich habe einen Dummy der meine normale "Bürozeit" beinhaltet. Ich weiss zudem, wie lange wir morgens brauchen, bis wir abfahrbereit sind. Zudem kennt FHEM die aktuelle Zeitsituation auf der Straße.
Über ein DOIF möchte ich nun anhand dieser Parameter die optimale Aufstehzeit berechnen lassen und an einen Dummy übergeben.

Das sieht dann so aus:
([Fahrzeit:duration_diff] > 10) (set wakeupzeit {([Buerozeit]-[01:30]-[Fahrzeit:duration_in_traffic_hr])}) DOELSEIF ([Fahrzeit:duration_diff] < 10) (set wakeupzeit {([Buerozeit]-[01:30]-[Fahrzeit:duration_hr])}) DOELSE

Als Attribut habe ich waitsame 320 gesetzt, damit kurzfristige Schwankungen nicht sofort zu einer früheren Aufstehzeit führen.

Alle Dummies haben das Format hh:mm .

Ich bekomme jetzt aber immer die Fehlermeldung
Illegal octal digit '9' at (eval 37088) line 1, at end of line syntax error at (eval 37088) line 1, near "09:"
und der Dummy "wakeupzeit" hat jetzt den Status
(09:00-[01:30]-00:28)

Wie kann ich das Problem lösen?

Vielen Dank vorab,
Max

Rechnen mit Zeit funktioniert nur in der Bedingung eines DOIFs. Du kannst in einer Bedingung deine Zeitberechnung definieren z. B. 

di_weckzeit DOIF ([([Buerozeit]-[01:30]-[Fahrzeit:duration])]) (...

und in deinem DOIF im Ausführungsteil dann Fahrzeit:duration unterschiedlich setzen.


Fahrzeit:duration_diff] > 10) (setreading Fahrzeit duration [Fahrzeit:duration_in_traffic_hr]) DOELSEIF ([Fahrzeit:duration_diff] < 10) (setreading Fahrzeit duration [Fahrzeit:duration_hr]) DOELSE


Gruß

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

Sirel

Hi Damian,

vielen Dank für den Tipp. Habe das DOIF jetzt entsprechend angepasst. Parallel dazu habe ich noch auf die aktuellste Version geupdatet und lese jetzt den Timer des DOIFs aus und übergebe disen formatiert an den Dummy.

Mir ist jetzt allerdings aufgefallen, dass nach dem Update viele meiner andere DOIF's nicht mehr richtig funktionieren. Sie triggern zwar korrekt, aber der Befehl wird nicht an den Aktor gesendet. Ich verwende häufig Filter im Ausführungsteil, welchen ich bspw. auf Gruppen meiner Rollläden etc. anwende. Nehme ich den Filter raus, funktioniert alles, pack ich ihn wieder rein, geht der Befehl nicht durch.
Hast Du eine Idee womit das zusammenhängen kann?

Viele Grüße und Dank,

Max

Damian

Zitat von: Sirel am 21 Februar 2016, 19:34:06
Hi Damian,

vielen Dank für den Tipp. Habe das DOIF jetzt entsprechend angepasst. Parallel dazu habe ich noch auf die aktuellste Version geupdatet und lese jetzt den Timer des DOIFs aus und übergebe disen formatiert an den Dummy.

Mir ist jetzt allerdings aufgefallen, dass nach dem Update viele meiner andere DOIF's nicht mehr richtig funktionieren. Sie triggern zwar korrekt, aber der Befehl wird nicht an den Aktor gesendet. Ich verwende häufig Filter im Ausführungsteil, welchen ich bspw. auf Gruppen meiner Rollläden etc. anwende. Nehme ich den Filter raus, funktioniert alles, pack ich ihn wieder rein, geht der Befehl nicht durch.
Hast Du eine Idee womit das zusammenhängen kann?

Viele Grüße und Dank,

Max

ja, da war ein Fehler drin, siehe hier: http://forum.fhem.de/index.php/topic,49663.msg413737.html#msg413737

Gruß

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

Sirel

Hi Damian,

thx! Ich hatte the Faden heute morgen gesehen und angelesen - dann aber nicht mehr weiter verfolgt ;)

Besten Dank für Deine Hilfe und das super Modul!

Max