Stunde aus DateTime vergleichen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
MRudolph
Beiträge: 11
Registriert: 18. Okt 2020 23:09
Answers: 0

Stunde aus DateTime vergleichen

Beitrag von MRudolph »

Hallo
ich komme hier nicht weiter:
ich habe mehrere item im Format DateTime
z.B
DateTime LocalWeatherForecastHours03TimeStamp "Vorhersage zeit" {channel="openweathermap:weather-and-forecast:api:local:forecastHours03#time-stamp"}

nun möchte ich in einer Regel vergleichen ob die Stunde des Items zwischen 20 und 6 Uhr liegt.

hier mein Versuch, der offensichtlich nicht klappt

Code: Alles auswählen

rule "update hourly forcastconditioID"
when 
    Time cron "*/10 * * * * ?"
then 
    val	Hours03 = (LocalWeatherForecastHours03TimeStamp.state as Number).intValue
    val mySTD03 = (Hours03 / (60*60)) % 24
    
    if (mySTD03 > 20 || mySTD03 < 6
    ) {
        owmConditionFormatedH3.postUpdate(transform("MAP", "openweathermap_night.map", LocalWeatherForecastHours03ConditionId.state.toString()))
    } else {
        owmConditionFormatedH3.postUpdate(transform("MAP", "openweathermap_day.map", LocalWeatherForecastHours03ConditionId.state.toString()))
    }
end
wo liegt mein Fehler?

Danke im Voraus

SchneckenBlitzer
Beiträge: 9
Registriert: 5. Nov 2020 18:14
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von SchneckenBlitzer »

Hallo,

hast du schonmal probiert, die Zahlen manuell auszugeben, sodass du überprüfen kannst, ob sie überhaupt das gewünschte Format haben?
Probiere Mal folgenden Code:

Code: Alles auswählen

rule "update hourly forcastconditioID"
when 
    Time cron "*/10 * * * * ?"
then 
    val	Hours03 = (LocalWeatherForecastHours03TimeStamp.state as Number).intValue
    val mySTD03 = (Hours03 / (60*60)) % 24

logDebug("Zeiten", "Vorhersage:  "+ Hours03 + ", umgewandelte Zeit:  "+ mySTD03)
    
    if (mySTD03 > 20 || mySTD03 < 6
    ) {
        owmConditionFormatedH3.postUpdate(transform("MAP", "openweathermap_night.map", LocalWeatherForecastHours03ConditionId.state.toString()))
    } else {
        owmConditionFormatedH3.postUpdate(transform("MAP", "openweathermap_day.map", LocalWeatherForecastHours03ConditionId.state.toString()))
    }

end
Was wird da denn dann ausgegeben?
Ich hoffe, dass ich dir damit bei deinem Problem weiterhelfen konnte.

Viele Grüße
Jan

Wenn du noch weiter Anleitungen zum Thema openHAB und Smart Home suchst, findest du diese auch unter https://bloggingwelt.de/smart-home/ ;-).

MRudolph
Beiträge: 11
Registriert: 18. Okt 2020 23:09
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von MRudolph »

das Script wird gar nicht ausgeführt
im Log bekomme ich
Error during the execution of rule 'update hourly forcastconditioID': Could not cast 2020-11-22T19:00:00.000+0100 to java.lang.Number;

SchneckenBlitzer
Beiträge: 9
Registriert: 5. Nov 2020 18:14
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von SchneckenBlitzer »

Oh ok, dann würde ich es nochmal mit .toString nach den Variablennamen probieren...
Ich hoffe, dass ich dir damit bei deinem Problem weiterhelfen konnte.

Viele Grüße
Jan

Wenn du noch weiter Anleitungen zum Thema openHAB und Smart Home suchst, findest du diese auch unter https://bloggingwelt.de/smart-home/ ;-).

MRudolph
Beiträge: 11
Registriert: 18. Okt 2020 23:09
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von MRudolph »

und wie bekomme ich dann aus dem String eine Number?
Number('123') funktioniert nicht

SchneckenBlitzer
Beiträge: 9
Registriert: 5. Nov 2020 18:14
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von SchneckenBlitzer »

Achso, ich meinte jetzt in der Log Nachricht .toString, also so:

Code: Alles auswählen

logDebug("Zeiten", "Vorhersage:  "+ Hours03.toString + ", umgewandelte Zeit:  "+ mySTD03.toString)
Ich hoffe, dass ich dir damit bei deinem Problem weiterhelfen konnte.

Viele Grüße
Jan

Wenn du noch weiter Anleitungen zum Thema openHAB und Smart Home suchst, findest du diese auch unter https://bloggingwelt.de/smart-home/ ;-).

MRudolph
Beiträge: 11
Registriert: 18. Okt 2020 23:09
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von MRudolph »

und wo sehe ich das Ergebnis?
in VSC? oder im Log von Openhabian?

sorry...bin noch ganz frisch mit Openhab
Danke für deine Gedult :)

MRudolph
Beiträge: 11
Registriert: 18. Okt 2020 23:09
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von MRudolph »

habe es jetzt so hinbekommen
val mySTD03 = (Float::parseFloat(String::format("%s",LocalWeatherForecastHours03TimeStamp.state.format("%1$tH").toString).replace(',','.')))

SchneckenBlitzer
Beiträge: 9
Registriert: 5. Nov 2020 18:14
Answers: 0

Re: Stunde aus DateTime vergleichen

Beitrag von SchneckenBlitzer »

Super 👍. Ich hatte mir schon gedacht, dass es etwas mit dem Format der Werte zu tun hat...

Die Ergebnisse wenn du eine Ausgabe in einer Rule platzierst würdest du übrigens im Log sehen, also unter http://openhabianpi:9001/
Ich hoffe, dass ich dir damit bei deinem Problem weiterhelfen konnte.

Viele Grüße
Jan

Wenn du noch weiter Anleitungen zum Thema openHAB und Smart Home suchst, findest du diese auch unter https://bloggingwelt.de/smart-home/ ;-).

Antworten