Berechnung Füllstand Heizöltank

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

sonic
Beiträge: 74
Registriert: 19. Jan 2020 10:39
Answers: 0

Re: Berechnung Füllstand Heizöltank

Beitrag von sonic »

Das Item Oeltank_Full_Status ist korrekt verbunden und zeigt auch in der sitemap den korrekten Wert vom Sensor an. (in cm).

das Item OelFull habe ich in einer .items Datei angelegt als Number Item. Dieses soll nachher den fertig berechneten Wert bekommen um diesen ebenfalls auszugeben.
Bildschirmfoto 2020-05-15 um 14.22.25.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
---------------------------------
OpenHAB 3 auf Dell ThinClient unter Debian Bullseye und ConBee II
RaspberryPi 4b 2GB in Din Rail Gehäuse mit PiVCCU3
Allerlei Sonoff, Shelly, NodeMCU, Sensoren, Aqara Krams und und und.

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

Re: Berechnung Füllstand Heizöltank

Beitrag von udo1toni »

Bist Du sicher, dass die Rule geladen wird? Zum Test kannst Du zusätzlich(!) ein Switch Item als Trigger einbauen.

Sicherheitshalber kannst Du auch noch die Konstanten fest definieren (das sollte eigentlich nicht notwendig sein):

Code: Alles auswählen

// globale Variablen und Konstanten Zu beginn der Datei definieren
val Number aMin = 10    // [cm Abstand zu Sensor wenn Tank voll]
val Number aMax = 175   // [cm Abstand zu Sensor wenn Tank leer]
val Number vMax = 10000 // [Fassungsvermögen in Liter]

rule "Berechnung Öl"
when
    mySwitch received command or
    Oeltank_Full_Status changed 
then
    if(!(Oeltank_Full_Status.state instanceof Number)) {  // falls Status keine gültige Zahl
        logWarn("oelstand","Öltanksensor liefert keinen Messwert! ({})",Oeltank_Full_Status.state)
        OelFull.postUpdate(NULL)
        return;
    }

    if((Oeltank_Full_Status.state as Number) < aMin) { // falls Status kleiner aMin
        logWarn("oelstand","Öltanksensor liefert zu kleinen Messwert! ({} cm)",Oeltank_Full_Status.state)
        OelFull.postUpdate(NULL)
        return;
    }

    if((Oeltank_Full_Status.state as Number) > aMax) { // falls Status größer aMax
        logWarn("oelstand","Öltanksensor liefert zu großen Messwert! ({} cm)",Oeltank_Full_Status.state)
        OelFull.postUpdate(NULL)
        return;
    }
    val Number aIst = Oeltank_Full_Status.state as Number
    val Number vIst = vMax * (1 - (aIst - aMin) / (aMax - aMin))
    logInfo("oelstand","Abstand Minimum: {} cm; Maximum {} cm; Ist {} cm",aMin,aMax,aIst)
    logInfo("oelstand","Abstand Strecke gesamt: {} cm; Ist {} cm",aMax-aMin,aIst-aMin)
    logInfo("oelstand","Volumen gesamt: {} dm³; Ist {} dm³",vMax,vIst)
    OelFull.postUpdate(vIst)
end
Ich hab die Formel noch leicht abgewandelt, sowie noch ein paar Logzeilen dazu gepackt. Wenn man nun das Item mySwitch über die UI schaltet, wird die Rule ausgelöst. Entweder gibt es eine Warnmeldung über den fehlenden (oder außerhalb des erlaubten Bereichs liegenden) Wert, oder es gibt eine hübsche Zusammenfassung aller relevanten Werte. Eins von beiden muss im openhab.log auftauchen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

sonic
Beiträge: 74
Registriert: 19. Jan 2020 10:39
Answers: 0

Re: Berechnung Füllstand Heizöltank

Beitrag von sonic »

mit dem mySqitch funktioniert es:

Code: Alles auswählen

2020-05-15 15:32:45.103 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'oeltank.rules' has errors, therefore ignoring it: [8,5]: no viable alternative at input 'mySwitch'
[9,5]: no viable alternative at input 'Oeltank_Full_Status'

2020-05-15 15:34:35.189 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'oeltank.rules'
2020-05-15 15:34:49.884 [INFO ] [ipse.smarthome.model.script.oelstand] - Abstand Minimum: 10 cm; Maximum 175 cm; Ist 20.456 cm
2020-05-15 15:34:49.888 [INFO ] [ipse.smarthome.model.script.oelstand] - Abstand Strecke gesamt: 165 cm; Ist 10.456 cm
2020-05-15 15:34:49.891 [INFO ] [ipse.smarthome.model.script.oelstand] - Volumen gesamt: 10000 dm³; Ist 9366.30303030303030303030303030303030000 dm³
2020-05-15 15:35:11.035 [INFO ] [ipse.smarthome.model.script.oelstand] - Abstand Minimum: 10 cm; Maximum 175 cm; Ist 20.456 cm
2020-05-15 15:35:11.038 [INFO ] [ipse.smarthome.model.script.oelstand] - Abstand Strecke gesamt: 165 cm; Ist 10.456 cm
2020-05-15 15:35:11.040 [INFO ] [ipse.smarthome.model.script.oelstand] - Volumen gesamt: 10000 dm³; Ist 9366.30303030303030303030303030303030000 dm³
habe die rule noch geänert im when bereich zu (also Item dazu geschrieben):

Code: Alles auswählen

when
   Item mySwitch received command or
    Item Oeltank_Full_Status changed
dannach war auch der Fehler im Log weg und Zack wird es angezeigt.


GANZ GANZ lieben Dank für die Hilfe. Vielleicht hilft es ja dem ein oder anderen auch so etwas umzusetzen!
---------------------------------
OpenHAB 3 auf Dell ThinClient unter Debian Bullseye und ConBee II
RaspberryPi 4b 2GB in Din Rail Gehäuse mit PiVCCU3
Allerlei Sonoff, Shelly, NodeMCU, Sensoren, Aqara Krams und und und.

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

Re: Berechnung Füllstand Heizöltank

Beitrag von udo1toni »


sonic hat geschrieben:Habe die rule noch geänert im when bereich zu (also Item dazu geschrieben):

Code: Alles auswählen

when
   Item mySwitch received command or
    Item Oeltank_Full_Status changed
dannach war auch der Fehler im Log weg und Zack wird es angezeigt.
Autsch... wie peinlich... [emoji33]

Gesendet von meinem SM-G973F mit Tapatalk

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten