Seite 3 von 4
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 07:26
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!
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 10:09
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.
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 10:51
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
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 11:22
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
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 21:12
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
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 22:13
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
Re: Durchschnittstemperatur anzeigen
Verfasst: 20. Mär 2022 23:04
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.
Re: Durchschnittstemperatur anzeigen
Verfasst: 21. Mär 2022 09:44
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.
Re: Durchschnittstemperatur anzeigen
Verfasst: 21. Mär 2022 11:15
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_Durchschn
itt
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)
Re: Durchschnittstemperatur anzeigen
Verfasst: 21. Mär 2022 11:22
von Lactobacillus
Ok, mache ich später ja meinte Anführungszeichen. Habe das Item allerdings nicht über VS Code erstellt sonder über die UI!