Durchschnittstemperatur anzeigen

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Durchschnittstemperatur anzeigen

Beitrag von Lactobacillus »

eine Frage wäre allerdings noch, wie bekomme ich das nun in ein Item? Falls es mal vorkommt dass Telegram nicht funktioniert damit ichs im Habpanel sehe oder in der UI? Grafana Gauge ist zwar schön braucht aber immer recht lange zum laden an meinem Wandpanel!

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

Re: Durchschnittstemperatur anzeigen

Beitrag von udo1toni »

Na, genau wie oben beschrieben... Du legst Dir ein zusätzliches Number Item an, in dem Du diesen Durchschnittswert als Zahl speicherst, oder Du legst Dir ein String Item an, in dem Du den Wert (eventuell zusammen mit weiteren Werten) als Text speicherst, ganz nach Belieben.
z.B. so:

Code: Alles auswählen

String WP_24 "Summe 24h (13:30)" // Schreibweise für *.items Dateien, kann man aber genauso über die UI anlegen

Code: Alles auswählen

rule "Waermepumpe um 13:30 Telegram"
when
   Item Verbrauch_gesamt changed
then
   val telegramAction = getActions("telegram","telegram:telegramBot:72fede4e77")
   val Temp           = Wetterstation_Aussen_Temperatur.averageSince(now.minusDays(1)).toString
   val Verbrauch      = Verbrauch_gesamt.state.toString
   val Itemtext       = Verbrauch + "kWh (" + Temp + " °C)"
   val Text           = Hallo, dies ist der tägliche Report der Wärmepumpe von 13:30 Uhr. Verbrauch: " + Verbrauch + " kWh. Durchschnittstemperatur: " + Temp + " °C. Schönen Tag noch."
   WP_24.postUpdate(Itemtext)
   telegramAction.sendTelegram(Text)
end
Nun musst Du nur noch das Item irgendwo anzeigen, es wird einfach mit aktualisiert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Durchschnittstemperatur anzeigen

Beitrag von Lactobacillus »

Irgendwie fehlt mir gerade die Idee wie ich vom Temperatur Item zum Tagesaktuellen Average komme. Vielleicht liegts daran dass ich gestern gearbeitet habe und jetzt auch schon wieder fast auf dem Weg zur Arbeit bin.

Mir fehlt die Brücke wie das Item in der UI erstellt werden soll. Habe gestern mal ein Aussentemperatur_Durchschniit Item erstellt aber komme nun nicht drauf wo, wie ich da jetzt den Wert erhalte

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

Re: Durchschnittstemperatur anzeigen

Beitrag von udo1toni »

Immer noch über die Rule. :) Aus einer Rule heraus setzt Du den Status eines Items mit der Methode .postUpdate()
wenn Du ein einzelnen Number Item für die Durchschnittstemperatur möchtest, musst Du eben den Zahlenwert schicken:

Code: Alles auswählen

rule "Waermepumpe um 13:30 Telegram"
when
   Item Verbrauch_gesamt changed
then
   val telegramAction = getActions("telegram","telegram:telegramBot:72fede4e77")
   val Temp           = Wetterstation_Aussen_Temperatur.averageSince(now.minusDays(1))
   val Verbrauch      = Verbrauch_gesamt.state.toString
   val Text           = Hallo, dies ist der tägliche Report der Wärmepumpe von 13:30 Uhr. Verbrauch: " + Verbrauch + " kWh. Durchschnittstemperatur: " + Temp.toString + " °C. Schönen Tag noch."
   Aussentemperatur_Durchschniit.postUpdate(Temp) 
   telegramAction.sendTelegram(Text)
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Durchschnittstemperatur anzeigen

Beitrag von Lactobacillus »

udo1toni hat geschrieben: 20. Mär 2022 11:22 Immer noch über die Rule. :) Aus einer Rule heraus setzt Du den Status eines Items mit der Methode .postUpdate()
wenn Du ein einzelnen Number Item für die Durchschnittstemperatur möchtest, musst Du eben den Zahlenwert schicken:

Code: Alles auswählen

rule "Waermepumpe um 13:30 Telegram"
when
   Item Verbrauch_gesamt changed
then
   val telegramAction = getActions("telegram","telegram:telegramBot:72fede4e77")
   val Temp           = Wetterstation_Aussen_Temperatur.averageSince(now.minusDays(1))
   val Verbrauch      = Verbrauch_gesamt.state.toString
   val Text           = Hallo, dies ist der tägliche Report der Wärmepumpe von 13:30 Uhr. Verbrauch: " + Verbrauch + " kWh. Durchschnittstemperatur: " + Temp.toString + " °C. Schönen Tag noch."
   Aussentemperatur_Durchschniit.postUpdate(Temp) 
   telegramAction.sendTelegram(Text)
end
Irgendwas passt ihm da nicht wenn ich den Code über VS Code eingebe erscheint in den Rules in der UI nix, Gebe ich in der UI alles ein kommen Fehlermeldungen

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Durchschnittstemperatur anzeigen

Beitrag von int5749 »

Lactobacillus hat geschrieben: 20. Mär 2022 21:12 Irgendwas passt ihm da nicht wenn ich den Code über VS Code eingebe erscheint in den Rules in der UI nix, Gebe ich in der UI alles ein kommen Fehlermeldungen
Hmm, es hatte doch schon funktioniert und nun sind nur noch wenige Zeilen Code hinzugekommen.

Du speicherst die Rule, welche Du über VSC erstellt hast aber dann auch im entsprechenden Rules Verzeichnis? Und die Datei endet auf rules als z.B. meineRule.rules ?

Diese sollte - nach dem speichern und einlesen durch openHAB - dann in der MainUI auch unter Rules auftauchen. Dort hat diese dann ein Schloß-Symbol, da diese über eine Datei erstellt wurde und über die MainUI nicht veränderbar ist. Du kannst auch vorher in der MainUI unter Rules die Anzahl sehen (ganz oben) und wenn Du eine neue über eine Datei erstellt hast, sollte die Anzahl entsprechend der Rules in der Datei ansteigen. Jede Rule zählt, nicht Datei und eine Datei kann x Rules enthalten ;-)

Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Durchschnittstemperatur anzeigen

Beitrag von udo1toni »

Der angegebene Code ist so nur in einer *.rules Datei verwendbar. Wobei das so nur die halbe Wahrheit ist...
Also, der Code ist auch über die UI verwendbar, aber...

Rules bestehen immer aus zwei Bereichen, das sind der when-Teil und der then-Teil.
Im when-Teil werden alle Trigger gelistet, welche die Rule starten sollen.
Im then-Teil steht der auszuführende Code.

Wenn Du also die Rule über die UI eingeben möchtest, so musst Du die Trigger über die UI im When-Teil konfigurieren und den eigentlichen Code aus dem then-Teil mit "execute a given script" abspeichern. dabei musst Du darauf achten, dass der Code als DSL-Code behandelt wird, nicht als JavaScript, ECMA oder gar Blockly...

Es gibt DSL-Code, den man so nicht in der UI ausführen kann, weil z.B. imports fehlen oder man globale Variablen benötigt, diese aber über die UI nicht erstellen kann. Selbst Items sind nicht uneingeschränkt als Ersatz für globale Variablen nutzbar, z.B. Timer kann man so nicht anlegen.
Die vorliegende Rule sollte aber problemlos auch über die UI erstellt werden können.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Durchschnittstemperatur anzeigen

Beitrag von Lactobacillus »

Habe jetzt nochmal eine Rule in VS Code erstellt ganz normal als ...rules.

zuerst gab es 7 Konflikte habe dann vor dem Hallo in Zeile 8 Ausrufezeichen gesetzt. Dadurch gingen die Fehler auf 1 zurück dieser ist nun in dem Postupdate, Der Fehlerbericht ist:

Code: Alles auswählen

Ambiguous feature call.
The extension methods
	postUpdate(Item, State) in BusEvent and
	postUpdate(Item, Number) in BusEvent
both match.

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Durchschnittstemperatur anzeigen

Beitrag von int5749 »

Lactobacillus hat geschrieben: 21. Mär 2022 09:44 Habe jetzt nochmal eine Rule in VS Code erstellt ganz normal als ...rules.

zuerst gab es 7 Konflikte habe dann vor dem Hallo in Zeile 8 Ausrufezeichen gesetzt. Dadurch gingen die Fehler auf 1 zurück dieser ist nun in dem Postupdate, Der Fehlerbericht ist:

Code: Alles auswählen

Ambiguous feature call.
The extension methods
	postUpdate(Item, State) in BusEvent and
	postUpdate(Item, Number) in BusEvent
both match.
Moin

in der Rule war noch ein Typo, aber ich hoffe Du hast vor das Hallo kein ! sondern " gesetzt?
Zudem sieht ein Item auch Typo-belastet aus => Aussentemperatur_Durchschniit => Aussentemperatur_Durchschnitt

Ich habe dies mal "bereinigt" und hoffentlich nichts übersehen.

Code: Alles auswählen

rule "Waermepumpe um 13:30 Telegram"
when
   Item Verbrauch_gesamt changed
then
   val telegramAction = getActions("telegram","telegram:telegramBot:72fede4e77")
   val Temp           = Wetterstation_Aussen_Temperatur.averageSince(now.minusDays(1))
   val Verbrauch      = Verbrauch_gesamt.state.toString
   val Text           = "Hallo, dies ist der tägliche Report der Wärmepumpe von 13:30 Uhr. Verbrauch: " + Verbrauch + " kWh. Durchschnittstemperatur: " + Temp.toString + " °C. Schönen Tag noch."
   Aussentemperatur_Durchschnitt.postUpdate(Temp) 
   telegramAction.sendTelegram(Text)
end
Poste doch mal bitte Dein Item und Deine Rule (so, wie es jetzt bei Dir aussieht)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Durchschnittstemperatur anzeigen

Beitrag von Lactobacillus »

Ok, mache ich später ja meinte Anführungszeichen. Habe das Item allerdings nicht über VS Code erstellt sonder über die UI!

Antworten