rechnen und arbeiten mit DateTime-Formaten macht mir weniger Spaß als gedacht.
Ich möchte die Zeit zwischen Sonnenauf- und untergang ausrechnen, in der Sitemap anzeigen und bei weniger als 10 Stunden einen Event auslösen.
Die Berechnung stimmt, im Log kommt der richtige Wert, aber ich verstehe nicht, warum in der Sitemap kein Wert angezeigt wird und warum die IF-Schleife nicht will. Vielleicht ist hier das Problem differenz.state? Stimmt das Format nicht?
rule "Sonnenauf und untergang"
when
Time cron "* 0/1 * * * ?" // zum Debug, wird später mit Sonnenaufgang getriggert
then
val Date1= new DateTime(( Sunrise_Time.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
val Date2 = new DateTime(( Sunset_Time.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
var double differenz = (Date2.millis - Date1.millis)/1000/60
logInfo("test", "Sonnenzeit in Minuten: " + differenz)
Sunshine_Time.postUpdate(differenz)
if (differenz.state <= 600) {
logInfo("test", "weniger als 10 Stunden")
}
end
"differenz" ist ein double-Variable. Mit ihr kannst und musst du rechnen. Der Zugriff mittels .state ist Objekten, in unserem Falle Items vorbehalten. Allerdings ist "differenz" kein Item.
Das mit dem Log passt so, wie Tokamak geschrieben hat. Allerdings sollte das Item wahrscheinlich vom Typ Number sein oder evtl auch String. Hab's jetzt nicht getestet. Evtl. solltest du auch noch ein Pattern/Formatter/Suffix in den Text mit aufnehmen "Sonnenschein heute [%s]"
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
rule "Sonnenauf und untergang"
when
Item Astro_Sun_Daylight changed
then
if ((Astro_Sun_Daylight.state as Number) <= 600) {
logInfo("test", "weniger als 10 Stunden")
}
end
rule "Sonnenauf und untergang"
when
Item Astro_Sun_Daylight changed
then
if ((Astro_Sun_Daylight.state as Number) <= 600) {
logInfo("test", "weniger als 10 Stunden")
}
end
Das Item wird Nachts um 0:00 aktualisiert.
Heiko
na das ist ja die sauberste und eine Ressourcen sparende Lösung! Danke! Das Daylight habe ich dort noch gar nicht gesehen!
Hallo,
habe eine ergänzende Frage. Das Daylight wird in Minuten angezeigt. Kann man das auch anders formatieren/anzeigen. Hätte das gerne hh:mm
Danke und Gruß
Michael