Zeitberechnung im set Befehl

Begonnen von Typ1er, 25 Juli 2018, 12:35:42

Vorheriges Thema - Nächstes Thema

Typ1er

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]

Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Typ1er

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.

Frank_Huber

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.

Otto123

#4
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Typ1er

das bekomme ohne Beispiel gesehen habe nicht wirklich hin, da fehlt mir das Wissen.

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz