Berechnung in Rule

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

Moderatoren: Cyrelian, seppy

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Berechnung in Rule

Beitrag von mad-mike »

Moin zusammen...

Ich schaffe es irgendwie nicht vernünftige zahlen mir anzeigen zu lassen...
Kurz zum Vorhaben:

Habe eine Dect Steckdose zur Ertragsmessung von meinem Balkonkraftwerk.

Dort habe ich eine Gesamt kwh anzeige.

Diese schreibe ich um 0 uhr in ein Item.

Code: Alles auswählen

rule "copy werte"

when
Time cron "0 0 0 * * ? *"
then 
aktpv.postUpdate(FRITZDECT2101_Gesamtverbrauch.state as Number)
PVheute.postUpdate(0)
end
Nun möchte ich einfach nur ""FRITZDECT2101_Gesamtverbrauch"" minus ""aktpv"" rechnen...
und das in PV Heute schreiben lassen..

Code: Alles auswählen

rule "tageswerte"

when
Item FRITZDECT2101_Gesamtverbrauch changed  
then
PVheute.postUpdate((FRITZDECT2101_Gesamtverbrauch.state as Number) - (aktpv.state as Number))
end
Der Rechnet auch irgendwas, aber keine Ahnung was...
Jemand eine idee??


Kann mir jemand sagen, wie ich einfach ""Minus"" rechnen kann??
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Berechnung in Rule

Beitrag von oh73 »

rechnen mit Items hab ich auch so meine Probleme, aber ist machbar!

hab gerade mal aus meiner Heizungs Rule was kopiert und in etwa angepasst,

am besten ist glaube ich du schreibts erst den Wert vom GesamtVerbrauch in eine Variable,
das kwh muss dabei abgeschnitten werden.
in etwa so,

Code: Alles auswählen

var Gesamzverbrauch = Float::parseFloat(String::format("%s", FRITZDECT2101_Gesamtverbrauch.state).replace(' ',''))
dann muss du gucken wie sieht aktpv.state aus ?
eventuell auch erst in eine Variable schreiben?

mite ganzen Zahlen in items könnte das auch so gehen,
PVheute.postUpdate((FRITZDECT2101_Gesamtverbrauch.state as DecimalType).intValue() - (aktpv.state as DecimalType).intValue())
aber da gibt es hier Leute die können das besser als ich, Udo??
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Berechnung in Rule

Beitrag von peter-pan »

...alles richtig (fast ;) ).

Das Item "FRITZDECT2101_Gesamtverbrauch" ist ein sogenanntes UOM-Item (Quantity/Menge). Es führt sozusagen die Mengeneinheit im Status mit.
Dein anderes Item ist ein " normales" Number-Item und das gilt es jetzt zu synchronisieren.

Code: Alles auswählen

PVheute.postUpdate((FRITZDECT2101_Gesamtverbrauch.state as Number).floatValue - (aktpv.state as Number))
Damit (.floatValue) entfernst du sozusagen die Einheit/Unit/Quantity/Pattern/Suffix/UoM (..alles das Gleiche :lol: ) aus dem Status.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Berechnung in Rule

Beitrag von mad-mike »

Danke euch...

Code: Alles auswählen

PVheute.postUpdate((FRITZDECT2101_Gesamtverbrauch.state as Number).floatValue - (aktpv.state as Number))
Funktioniert sofort auf anhieb. :)
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Berechnung in Rule

Beitrag von mad-mike »

Moin zusammen...

habe ein schreiben bekommen das sich der Strompreis ändert.


Wie kann ich so zusagen das so ändern das sich für die gesamt Rechnung nun eine Preisänderung vorhanden ist??

Akutell sieht das ganze so aus:

Code: Alles auswählen

    var Number nKosten = 0
    if(FRITZDECT2101_Gesamtverbrauch.state instanceof Number)
    nKosten = (FRITZDECT2101_Gesamtverbrauch.state as Number).floatValue * 0.28
    kwheuro.postUpdate(nKosten)
    PVheute.postUpdate((FRITZDECT2101_Gesamtverbrauch.state as Number).floatValue - (aktpv.state as Number).floatValue)
    euroheute.postUpdate((PVheute.state as Number).floatValue * 0.28)
Das item ""kwheuro"" muss quasi ab ersten septemper nicht mehr mit 0.28 berechnet werden sondenr mit 0.38

Macht es Sinn einen ""Fest"" Zahl in die Rule zu setzen welche ich exakt am 01.sep. ein speichere??


Gruss
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Berechnung in Rule

Beitrag von udo1toni »

Das dynamisch einzubauen wird schwer, Du müsstest dann quasi die Zeitpunkte der Preisänderungen abfragen, die Zählerstände zum Änderungszeitpunkt abfragen, die Differenzen berechnen, die jeweilige Differenz mit dem jeweilig gültigen Preis multiplizieren und die einzelnen Produkte addieren.
Es wird vermutlich das Einfachste sein, zum Stichtag den Zähler abzulesen, die bis dahin aufgelaufenen Beträge zu notieren (also Zählerstand und Geldsumme) und jeweils in der Berechnung zu berücksichtigen, also Zählerstand von aktuellem Zählstand abziehen, mit neuem Preis multiplizieren und das Ergebnis zur alten Summe addieren.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Harka
Beiträge: 297
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Berechnung in Rule

Beitrag von Harka »

auf die Gefahr hin das ich mich Blamiere :shock: (verstehe das DSL nur ansatzweise)
Du hast doch in kwheuro die bisherigen Kosten. Ändere einfach die Berechnung in dem diese um 0 Uhr nicht komplett neu berechnet werden sondern nur der Wert des vergangenen Tages addiert wird. Am Stichstag änderst Du dann den Faktor für die Berechnung des Tageswerts.

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

Re: Berechnung in Rule

Beitrag von udo1toni »

Klar, das sollte genauso gehen. Man muss halt aufpassen, dass der Wert persistiert und bei einem Neustart wiederherhestellt wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Berechnung in Rule

Beitrag von mad-mike »

Moin.

Ich suche schon die ganze zeit, aber finde kein einfaches Ergebnis. Ich vermute, das ich nur falsch suche...

Eigentlich möchte ich nur ein Ergebnis ohne Komma stelle haben...

Eine Formatierung vom Item bringt keinen Erfolg.

Die Berechnung sieht aktuell wie folgt aus:

Code: Alles auswählen

dhwset1.postUpdate ((dhwset.state as Number - dhw1_actualTemp.state as Number + dhwset.state as Number))
Ich möchte einfach das das Ergebnis ohne Komma nach dhwset1 geschrieben wird... (also anstatt 45,4 Soll 45 stehen) gerundet??

Hat einer eine Idee??

Danke und Gruss
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Berechnung in Rule

Beitrag von udo1toni »

Code: Alles auswählen

dhwset1.postUpdate(((dhwset.state as Number) - (dhw1_actualTemp.state as Number) + (dhwset.state as Number)).intValue)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten