FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Typ1er am 25 Juli 2018, 12:35:42

Titel: Zeitberechnung im set Befehl
Beitrag von: Typ1er am 25 Juli 2018, 12:35:42
ich habe versucht ein doif umzubauen und möchte die "Zeit" in einen Dummy schreiben.

das funktioniert:
set du_FL_Rollo_Zeit_ho {twilight("TC_TWILIGHT","sr_indoor","07:00","10:00")}


so steht es bis jetzt im Doif, ich bekomme die Klammern nicht gesetzt, damit es mit "set" geht.
Zufällig 10Minuten und +20Minuten bekomme ich nicht addiert.

[({twilight("TC_TWILIGHT","sr_indoor","7:00","10:00")}+(rand(600)+1200))|8]
Titel: Antw:Zeitberechnung im set Befehl
Beitrag von: Otto123 am 25 Juli 2018, 13:19:16
Einfach falsch gemacht :)

https://commandref.fhem.de/commandref_DE.html#set

ZitatAb featurelevel 5.7 ersetzt der set und setreading Befehl
[device:name] mit dem Wert des Readings, Internals oder Attributes für device, falls sowohl device, als auch Reading, Internal oder Attribut existiert, und nicht leer ist.
Man kann einen der Präfixe r:, i: oder a: verwenden, um die Suche einzuschränken, genau wie im devspec.
Das Suffix :d extrahiert die erste Zahl.
Das Suffix :i extrahiert die erste Zahl als Ganzzahl.
Das Suffix :r<n> extrahiert die erste Zahl, und rundet sie auf <n> Dezimalstellen. Falls <n> fehlt, dann wird auf eine Dezimalstelle gerundet.
Das Suffix :t liefert den Zeitstempel des Readings
Das Suffix :sec liefert Anzahl der Sekunden seit Änderung des Readings.
Beispiel:
set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
{(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
so sollte es gehen:
{(twilight("TC_TWILIGHT","sr_indoor","07:00","10:00"))}
set bla {3+5} rechnet nicht.
set bla {(3+5)} rechnet.

Innerhalb vom DOIF kann aber alles wieder anders sein  :-X

Gruß Otto
Titel: Antw:Zeitberechnung im set Befehl
Beitrag von: Typ1er am 25 Juli 2018, 14:28:24
mit {(twilight("TC_TWILIGHT","sr_indoor","05:00","10:00"))}
--> bekomme ich "05:52:59" zurück (Hier ist die Zeit noch ok

mit {(twilight("TC_TWILIGHT","sr_indoor","05:00","10:00")+1200)}
-->" 1205"

das ist falsch, wenn ich jetzt die Zeit versuche zu addieren  in der Form +02:00
{(twilight("TC_TWILIGHT","sr_indoor","05:00","10:00")+"02:00")}
--> "7"

nur ist es nicht mehr als Uhrzeit formatiert. Minuten und Sekunden verschluckt.
Titel: Antw:Zeitberechnung im set Befehl
Beitrag von: Frank_Huber am 25 Juli 2018, 14:54:31
noch dazu ist bei DOIF das Komma ein Separator für Befehle.
Hast Du ein Komma innerhalb eines befehls muss diese befehlssequenz doppelt geklammert werden.
Titel: Antw:Zeitberechnung im set Befehl
Beitrag von: Otto123 am 25 Juli 2018, 14:57:00
Das Problem mit Zeiten rechnen ist dann noch ein anderes. Du kannst Zeitformate nicht einfach addieren.
Hat twilight nicht die interne Funktion etwas zu addieren? So wie sunrise?

Ansonsten musst die Zeiten in anderes Format (Sekunden) wandeln, addieren und zurück.
https://forum.fhem.de/index.php?topic=77694.0

Gruß Otto
Titel: Antw:Zeitberechnung im set Befehl
Beitrag von: Typ1er am 25 Juli 2018, 16:32:17
das bekomme ohne Beispiel gesehen habe nicht wirklich hin, da fehlt mir das Wissen.
Titel: Antw:Zeitberechnung im set Befehl
Beitrag von: Otto123 am 26 Juli 2018, 00:13:45
Ich habe da jetzt auch nix parat, aber schau mal im Wiki
https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit