OH3 und OpenWeatherMap: forecastHours18#rain

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45

OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von martin_aus_Ddorf »

Hallo zusammen,

Wenn ich mittels OWM historische Regendaten abrufe, dann heißt es immer dort:

Historische Daten:
"Zeigt den kumulierten Regen der letzten Stunde an."
Beispiel: openweathermap:onecall-history:6436d845b1:local:historyHours03#rain

Kann mir jemand sagen, wie das mit der Vorhersage aussieht?

Forecast Daten
Beispiel: openweathermap:weather-and-forecast:530b24d935:c6a1f1c3fd:forecastHours24#rain
"Zeigt die vorhergesagte Regenmenge an."

Heißt das nun, dass dies die Regenmenge ist in einem (mir) unbekannten Intervall in ca. 24 Stunden fällt, oder ist das die Regenmenge, die (ca.!) von jetzt an, bis in 24 Stunden fallen wird?
Also ein augenblicklicher Wert in 24 Stunden oder ein kumulierter Wert?

Und falls es sich um einen Augenblicklichen Wert handeln sollte (was ist befürchte), kann mir jemand sagen, wie ich die voraussichtliche Regenmenge von jetzt bis in 24 Std. ermitteln kann?
Vielleicht durch aufaddieren von current#rain + forecastHours03#rain + ...06#... + ...09#... + ... + forecastHours24#rain
Nur wie kann ich das in der OH3 Oberfläche machen? Und kann ich diesen Wert dann als Item irgendwie speichern, damit ich ihn per Rule (auf der OH Oberfläche) wieder nutzen kann?

Danke euch!
Martin

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von udo1toni »

Wenn Du kostenlos mit openweathermap arbeitest, dann hast Du nur auf die 3-Stunden-Vorhersagen (bis + 5 Tage bzw. 120 Stunden) Zugriff. Das heißt, der Channel forecastHours24#rain reicht von +21 Stunden bis +24 Stunden. Du musst also tatsächlich die forecast-Channel in einem anderen Item aufaddieren, z.B. durch eine Rule.
Du kannst aber z.B. auch die Forecast Items in eine Gruppe packen und diese Gruppe automatisch aufaddieren lassen (Group:Number:Length:SUM), dann enthält die Gruppe immer die Summe aller Items (bzw. deren Status), die der Gruppe zugeordnet sind - unter der Voraussetzung, dass alle Items eine gültige Zahl enthalten. Logischerweise darfst Du dann dieser Gruppe nur die Forecast-Rain Items von 3 bis 24 zuordnen, damit der Vorhersagewert für die nächsten 24 Stunden gilt. Dabei geht es natürlich immer um die nächsten 24 Stunden, unabhängig von der aktuellen Zeit. Wenn Du stattdessen eine Vorhersage für "Morgen" oder "Übermorgen" haben willst, musst Du über eine Rule gehen, die dann die zum Zeitraum gehörenden Forecast-Items berechnet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von martin_aus_Ddorf »

urgs?
Du schreibst so kompakt - ich muss mir das immer ausdrucken und mit dem Finger die Wörter langfahren ...
Ich kann also Werte aus Items zu neuen Items addieren, indem ich sie Gruppen zuordne?

ok - unter Items habe ich eine Gruppe erstellt (ich bleibe ja auf der OH3 Oberfläche)
BasicType: Group
MembersBaseType: Nummer:Lengs
Aggregation Function: SUM

Dann zu Things, OWM, Channels-> Regen03, add to Item, add to existing Item, Item to link und dort die Gruppe ausgewählt.
In den Items wird mir dann in der Gruppe ein Ergebnis gezeigt, aber nicht, welcher Channel hier verlinkt wurde.
Zurück zu den Things, da kann ich das unter Channels "Linked" herfinden.
Dann habe ich noch einen weiteren Channel der Gruppe hinzugefügt.

Ich habe es auch versucht in dem ich den Channel jeweils mit einem neuen Item versehen habe, welches ich dann in die Gruppe gepackt habe. Im Ergebnis (s.u.) war das kein Unterschied.

Nun stelle ich aber fest, dass immer der Wert des zuletzt hinzugefügten Items in der Gruppe angezeigt wird. Also nicht summiert wird.

Oder muss ich immer Channel von unterschiedlichen Things nutzen?
Ich frage, dass weil in der Übersicht der ge-linkten Channel meins Things sieht so aus:
ScreenShot 068 openHAB - Mozilla Firefox.jpg
Wenn ich einen zweiten Channel des gleichen Things nutze, dann wird bei allen der Wert des letzten angegeben. Im Beispiel sind 10,56 mm der Forecast für morgen. Wenn ich nun dieser Gruppe z.B. ForecastHours05 hinzufüge, wechselt der Wert auf 0,42 mm - und zwar als Anzeige der verlinkten Channel (Sreenshot), als auch in der Gruppe.

Mache ich in der Gruppenanlage was falsch?

ABER: noch eine ganz andere Frage - kann ich unter der OH3 Oberfläche unter Rules einen Schalter für 5 Minuten ein und dann wieder ausschalten lassen? Bisher brauche ich dafür zwei Rules (einmal EIN und einmal AUS). Geht das?

Danke dir, gute Nacht und viele Grüße
Martin

P.S.: Was ist nicht begreife: Offenbar kann ich pro Thing immer nur EIN Channel mit EINEM Item verbinden. Wenn ich ForecastMorgen und ForecastÜbermorgen haben will, muss ich zwei Things erstellen und kann sie dann jeweils einem Item zuordnen. Und wie könnte ich diese Items in einem neuen Item summieren lassen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von udo1toni »

Nein, Du darfst nicht den Channel zum Group Item hinzufügen. JEder einzelne Channel braucht ein Item (vom Typ Number:Length, das macht openHAB aber auch automatisch).
Danach wechselst Du in das Group Item, gehst auf direct Group Members->Change und wählst in der Liste die Items aus, die mit den Channels verbunden sind.
Anschließend werden die Items alle als Member unter Direct Member angezeigt.

Das Summieren funktioniert nur dann, wenn alle Items einen gültigen Wert haben, das sollte spätestens nach dem ersten Update der Fall sein.

Sieht dann so aus:
Screenshot 2021-06-08 231127.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von martin_aus_Ddorf »

Aaaalso - Summieren in Gruppen... klappt jetzt. (Udo, unsere Beiträge haben sich überschnitten!)

Ich musste pro Item je ein Thing anlegen und dort einen entsprechenden Channel auswählen (Vorhersage morgen und Vorhersage übermorgen).
Dann musste ich in den Items unter GroupMembership meine erstellte Gruppe (s.o.) auswählen - dann wird die Summe in der Gruppe gebildet.
Wenn ich allerdings in der Gruppe meine Items als Member angelegt habe, dann klappte das nicht. Erst als ich sie schon mal erfolgreich in der Gruppe hatte (siehe zwei Zeilen höher), sie testweise wieder entfernt hatte, konnte ich sie in der Gruppe wieder als Member anlegen. Ob das noch ein Bug ist?

Gut, das klappt jetzt also :-)
Danke dir für deine Hinweise.

Aber noch mal die Frage:
Warum muss ich pro Channelnutzung z.B. Typ Regen (3-, 6- Stunden, morgen, übermorgen) je ein Thing instanziieren?
In meiner Thing-Liste stehen da jetzt x- mal "One Call API Weather and Forecast".
Oder ist das eben vom Channel-TYP abhängig? Wenn ich der Regenabfrage für morgen, noch ein Item für die Temperatur morgen anfüge, dann klappt das wunderbar.

Und noch mal, was mir auf dem Herzen liegt:
Kann ich in der OH3 Oberfläche per Rule eine Schaltdauer (sonoff für 5 Min auf ein, dann wieder aus) realisieren? Das wäre mir sehr wichtig.

Danke euch!
Grüße
Martin

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von peter-pan »

martin_aus_Ddorf hat geschrieben: 8. Jun 2021 23:23 Und noch mal, was mir auf dem Herzen liegt:
Kann ich in der OH3 Oberfläche per Rule eine Schaltdauer (sonoff für 5 Min auf ein, dann wieder aus) realisieren? Das wäre mir sehr wichtig.

Code: Alles auswählen

rule "Sonoff Schalter Zeitschaltung"
when 
	Item Sonoff_Schalter changed  to ON
then
createTimer(now.plusMinutes(5), [ |
            Sonoff_Schalter.sendCommand(OFF)
        ])
end
So oder so ähnlich könnte die Regel aussehen (ungetestet :) )
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von martin_aus_Ddorf »

Hi Peter!

Danke für deine Antwort. Mit der Frage "Kann ich in der OH3 Oberfläche..." meinte ich die Web Oberfläche, als das UI von OH3. Du hast mir nun freundlicherweise eine Rule erstellt, die ich als .rule Datei einbinden kann, richtig?

Da ergeben sich für mich Folgefragen:
Ist denn "createTimer" eine OH bekannte Funktion und ist "now.plusMinutes(5)" ein bekanntes Argument dieser Funktion, oder muss ich beides irgendwo definieren, um es dann in einer Rule zugreifen zu können?

Auf der OH3 UI - wie gesagt, da bewege ich mich - sieht meine Rule wie folgt aus:

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      cronExpression: 0 0 6 ? * 1/2 *
    type: timer.GenericCronTrigger
conditions:
  - inputs: {}
    id: "3"
    configuration:
      itemName: Regensumme
      state: "5"
      operator: <=
    type: core.ItemStateCondition
  - id: "4"
    configuration:
      itemName: OneCallAPIweatherandforecast_MaximaleTemperatur
      operator: ">="
      state: "15"
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      itemName: VersenkungsregnerAnAus
      command: ON
    type: core.ItemCommandAction
Hier zündet der SONOFF alle zwei Tage, wenn die erwartete Temperatur über 15 °C liegt und nicht eine bestimmte Menge Regen fällt (danke noch mal an Udo mit dem Tip der Group).
Nun hätte ich es gerne, dass halt das der Schalter 15 Minuten auf ON geht und danach wieder aus geht. Am liebsten würde ich sogar die Einschaltdauer berechnen und dann in der Regel nutzen können (das ist aber ein anderes Thema).

Eine Idee, wie ich eine Zeitschleife in einer UI Rule realisieren kann?

Grüße
Martin

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von peter-pan »

martin_aus_Ddorf hat geschrieben: 9. Jun 2021 12:25 "Kann ich in der OH3 Oberfläche..." meinte ich die Web Oberfläche, als das UI von OH3. Du hast mir nun freundlicherweise eine Rule erstellt, die ich als .rule Datei einbinden kann, richtig?
Das war wohl ein Missverständnis. Ich dachte du willst einen Schalter (z.B.: Lichtschalter) einschalten, der dann nach 5 Minuten wieder das Licht ausschaltet.

Die Funktionen/Methoden "createTimer+ now" sind in OH bekannt und soweit ich weiß Java-Funktionen und werden von DSL unterstützt.

Ich habe die Regel gerade mal bei mir in OH3 getestet und das funktioniert so einwandfrei.

Code: Alles auswählen

rule "Sonoff Schalter Zeitschaltung"
when 
	Item Sonoff_Basic_04 changed  to ON
then
logInfo("Sonoff-Schalter", "Schalter wurde eingeschaltet")
createTimer(now.plusMinutes(1), [ |
            Sonoff_Basic_04.sendCommand(OFF)
            logInfo("Sonoff-Schalter", "Schalter wurde ausgeschaltet")
        ])
end
Da in OH3 die Zeit-Methoden von Joda-Time auf Java-Time gewechselt haben, könnte es sein, dass die Methode "now" nicht immer funktioniert. Deshalb wäre eventuell eine Ergänzung mit "ZonedDateTime" besser, also so:

Code: Alles auswählen

rule "Sonoff Schalter Zeitschaltung"
when 
	Item Sonoff_Basic_04 changed  to ON
then
logInfo("Sonoff-Schalter", "Schalter wurde eingeschaltet")
createTimer(ZonedDateTime.now.plusMinutes(1), [ |
            Sonoff_Basic_04.sendCommand(OFF)
            logInfo("Sonoff-Schalter", "Schalter wurde ausgeschaltet")
        ])
end
Das hat bei mir also auch funktioniert.

Ob diese Möglichkeiten des Timers über die WebUI geht weiß ich nicht sicher, aber ich glaube nicht.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von peter-pan »

Hab gerade noch mal weiter gelesen. Es geht, wenn ich das richtig verstanden habe um das Item "VersenkungsregnerAnAus", richtig?!

Dann ändere die Regel einfach ab(copy/paste in VSC hineinkopieren und unter .../rules speichern:

Code: Alles auswählen

rule "Sonoff Schalter Zeitschaltung"
when 
	Item VersenkungsregnerAnAus changed  to ON
then
logInfo("Sonoff-Schalter", "Schalter wurde eingeschaltet")
createTimer(ZonedDateTime.now.plusMinutes(1), [ |
            VersenkungsregnerAnAus.sendCommand(OFF)
            logInfo("Sonoff-Schalter", "Schalter wurde ausgeschaltet")
        ])
end
Diese Regel wird dann automatisch aufgerufen, wenn deine Web-UI-Regel per Cron aufgerufen wird und das "VersenkungsregnerAnAus"-Item auf "ON" geht.


Das müsste dann das sein was du wolltest. ;)

Die Logs kannst du auch weglassen, ist aber am Anfang ganz geschickt um zu prüfen, ob alles so funktioniert wie es soll (Debug).

Gruss - Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

martin_aus_Ddorf
Beiträge: 56
Registriert: 2. Apr 2018 15:45

Re: OH3 und OpenWeatherMap: forecastHours18#rain

Beitrag von martin_aus_Ddorf »

cool!

Es funkt!

danke dir!


Ich hab mir nun noch ein paar Switch Items angelegt, die die Rules zünden lassen. So kann ich den sonoff mal 5, mal 10 Minuten anlassen.
Die Zeiteinheit in der Schleife sind pro ganze Zahl im Übrigen 30 Sekunden (2 = 1 Minute).

Danke dir noch mal! Du hast mir sehr geholfen und mir auch ein wenig den Bammel vor den .rules Dateien genommen (bzw. deren Programmierung).

Wo werden denn die Logs gespeichert? Ich hab ein wenig von Hand gesucht, aber nix gefunden...

Grüße
Martin

Antworten