Wasserzähler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Wasserzähler

Beitrag von udo1toni »

Funktioniert es denn mit der korrigierten Version?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: Wasserzähler

Beitrag von Boxana »

Ja es scheint jetzt alles zu laufen.

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei definieren!
var Number nWasseruhrAlt = null

rule "Beregnung Start"
when
    Channel 'astro:sun:plus30:set#event' triggered START or Item Beregner changed to ON         //Beregnung Starten 30 min nach Sonnenuntergang und Zähler starten wenn Manuel gestartet.

then

    if(!(Rasen_Zaehlerstand_Wasseruhr.state instanceof Number)) {                               // Zählerstand ist keine gültige Zahl
        logWarn("sprinkling","Beregnungsstart - Zählerstand kann nicht abgerufen werden!")      // Warnmeldung
        return;                                                                                 // Und Abbruch der Rule
    }
    if (Bewaesserungsautomatik.state == ON && Regen_Sensor_1.state == ON) {
        Beregner.sendCommand(ON)                                                                // automatisch Starten wenn bedingungen erfüllt
    }
    nWasseruhrAlt = Rasen_Zaehlerstand_Wasseruhr.state as Number                                // alten Zählerstand retten
    logInfo("sprinkling","Zählerstand bei Start: {} cm³", nWasseruhrAlt )                       // und Erfolg melden
end

rule "Beregnung Stop"
when
    Item Rasen_Zaehlerstand_Wasseruhr changed  or Item  Regen_Sensor_1 changed                   // starten wenn Zähler sich ändert oder es Regnet
then 
    val nWasseruhrNeu = Rasen_Zaehlerstand_Wasseruhr.state as Number
    val nWassermenge = Soll_Wassermenge_Sprenkler.state as Number                                // aktueller Zählerstand  
    if(Regen_Sensor_1.state != ON) {                                                             // Regensensor Prüfen ob Nass
        Beregner.sendCommand(OFF)                                                                // Regensensor Nass Bewässerung ausschalten
        logInfo("sprinkling","Regen eingesetzt, Zählerstand bei Stop: {} cm³",nWasseruhrNeu)     // Meldung ausgeben
        nWasseruhrAlt = null                                                                     // alten Zählerstand löschen
        return;                                                                                  // Deshalb Abbruch
    }
    if(!(Rasen_Zaehlerstand_Wasseruhr.state instanceof Number)) {                                // Zählerstand ist keine gültige Zahl
        logWarn("sprinkling","Beregnungsstop - Zählerstand kann nicht abgerufen werden!")        // Warnmeldung
        Beregner.sendCommand(OFF)                                                                //Wasser aus und Abbruch           
        return;                                                                                  // Und Abbruch der Rule
    }        
    if(nWasseruhrAlt === null) {                                                                 // Alter Zählerstand nicht gesetzt
        logWarn("sprinkling","Beregnungsstop - Kein Vergleichszählerstand!")                     // Warnmeldung
        Beregner.sendCommand(OFF)                                                                //Wasser aus und Abbruch           
        return;                                                                                  // Und Abbruch der Rule
    }        
    if(nWasseruhrAlt + nWassermenge <= nWasseruhrNeu) {                                          // Liter Beregnung mit Setpoint setzen
        Beregner.sendCommand(OFF)                                                                // Beregner ausschalten
        logInfo("sprinkling","Zählerstand bei Stop: {} cm³",nWasseruhrNeu)                       // Meldung ausgeben
        nWasseruhrAlt = null                                                                     // alten Zählerstand löschen
    }

end




rule "Reset Schalter Wassertageszähler zurücksetzen"
when
    Item Rasen_WasserZaehler_Reset received command ON
then
    triggeringItem.sendCommand(OFF)
    Wasseruhr_Impuls_Abfrage.sendCommand(ON)
    Wasseruhr_Impuls_Abfrage.sendCommand(OFF)
end 

Wenn der Regensensor Nass wird stopp er grundsätzlich das Wasser egal ob Automatik oder Manuell.
Auch stoppt das Wasser wenn die eingestellte menge an Wasser erreicht ist.

Sitemap:

Code: Alles auswählen

    Frame label="Garten"  {
        Switch item=Garten_Licht_Hecke
        Text item=Beregner label="Bewässerung: [%s]" icon="lawnmower" {
            Frame label="Bewässerung" {
                Switch item=Beregner  label="Rassenbewässerung: [%s]" icon="lawnmower" visibility=[Bewaesserungsautomatik==OFF]
                Text item=TagesZaehler_Rasensprenger icon="faucet" {
                    Switch item=Rasen_WasserZaehler_Reset icon="settings"	
                }
                Switch item=Bewaesserungsautomatik
                Text item=Regen_Sensor_1    icon="flow"  label="Boden: [MAP(bodenfeuchte.map):%s]"  valuecolor=[ON="red", OFF="green"] 
                Text item=Soll_Wassermenge_Sprenkler icon="faucet" {
                     Setpoint item=Soll_Wassermenge_Sprenkler label="Soll Wassermenge: [%.1f cm³]" step=250 minValue=250 maxValue=3000
                }
            }
            Frame label="Gesammt" {                
                Text item=Rasen_Zaehlerstand_Wasseruhr
            }
             
        }                  

    }

Unbenannt.png

was ich jetzt noch gerne wissen möchte, kann ich ein item so formatieren das ich die Kommastelle verschieben. Jetzt stimmt die Einheit cm³ nicht und müsste Liter heißen.
Ich finde aber deinen Vorschlag cm³ besser nur dann müsste das Kommazeichen um drei rutschen. Die Krönung wär wenn es nach dem Komma rot wäre.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Openhab auf einem Qnap NAS
Gruß
Christian

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

Re: Wasserzähler

Beitrag von udo1toni »

Was mir gerade auffällt: es muss natürlich m³ (Kubikmeter) heißen, nicht cm³ (Kubikcentimeter, 1/1000 Liter) :) Für Liter wären es übrigens dm³ (Kubikdezimeter)

Leider wird es nicht möglich sein, das Komma in der Anzeige zu verschieben. Grundsätzlich könnte man das erreichen, wenn man das Item als UoM Item nutzen könnte, aber dazu muss der gekoppelte Channel UoM unterstützen.
knx2 unterstützt (noch?) kein UoM.

Man könnte noch ein zweites Item zur Anzeige anlegen und den Wert dort per Rule durch 1000 geteilt anzeigen, aber das ist zumindest umständlich.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten