Momentan hat man ja wieder ein wenig Zeit zum basteln. Ich würde gerne aus der aktuellen Zeit die laufenden Stunden des Jahres errechnen um den Stromverbrauch pro Stunde fortlaufend weiter berechnen zu können. Nur leider stecke ich da gerade fest. Aktuelle berechne ich das über einen Tag-Zähler der jeden Tag um 0:00 +1 gesetzt wird. Das würde ich gern auf das NTP Binding anwenden, weiß nur nicht wie ich aus der aktuellen Zeit beim Binding auf die Stunde umrechnen kann.
ITEMS:
Code: Alles auswählen
//Items aus dem NTP-Binding
DateTime Datum "Datum [%1$tA, %1$td.%1$tm.%1$tY]" <calendar> {channel="ntp:ntp:local:dateTime"}
DateTime Zeit "Zeit [%1$tH:%1$tM]" <time> {channel="ntp:ntp:local:dateTime"}
String Datum_String "Datum [%1$tA, %1$td.%1$tm.%1$tY]" <calendar> {channel="ntp:ntp:local:string"}
String Zeit_String "Zeit [%1$tH:%1$tM]" <time> {channel="ntp:ntp:local:string"}
//Jahrestag
Number Tag_Zaehler "Tag des Jahres [%s]" <calendar>
Code: Alles auswählen
rule "Tag des Jahres hochzählen"
when
Time cron "0 1 0 1/1 * ? *"
then
Tag_Zaehler.sendCommand((Tag_Zaehler.state as Number) +1)
end
rule "Tag des Jahres am 1.1. zurücksetzen"
when
Time cron "0 2 0 1 1 ? *"
then
Tag_Zaehler.sendCommand(1)
end
Items:
Code: Alles auswählen
Number Millisekunden "Millisekunden %s"
Number Sekunden "Sekunden %s"
Number Minuten "Minuten %s"
Number Stunden "Stunden %s"
Number Tag_Zeit "Tag %s"
Code: Alles auswählen
rule "aktuelle Zeit in verschiedene Werte"
when
Item Zeit changed
then
val calendar = java.util.Calendar::getInstance
calendar.timeInMillis = now.millis
Millisekunden.postUpdate(now.millis)
Sekunden.postUpdate((Millisekunden.state as Number) /1000)
Minuten.postUpdate((Sekunden.state as Number) /60)
Stunden.postUpdate((Minuten.state as Number) /60)
Tag_Zeit.postUpdate((Stunden.state as Number) /24)
end
Aber etwas stimmt an der Berechnung nicht, bzw. ist mein Ausgangspunkt falsch, jetzt muss es doch eine Möglichkeit geben. Vielleicht könnt ihr mir helfen.