Ankündigung

Einklappen
Keine Ankündigung bisher.

Lüftungsanlagen in Openhab - Regelbeispiele?!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Lüftungsanlagen in Openhab - Regelbeispiele?!

    Hallo zusammen,

    da ja einige von uns Lüftungsanlagen in OH integriert haben - wie wäre es mal mit Ideen Sammlung von Regeln - die damit umgesetzt werden könnten - ggfls schon mit Regel Code?

    Ich bin derzeit dabei folgende Regeln zu implementieren:

    1. Nachlauf der Lüftung auf voller Stufe nach Lichtschaltung im Bad/ WC und danach wieder Fallback auf den vorherigen Status (kleinere Stufe, oder aus) (habe keinen Feuchtefühler integriert bei mir)

    2. Lüftung einschalten wenn Sommer und die Außentemperatur unter der durchschnittlichen Innentemperatur liegt (Nachtlüftung) und dann wieder aus wenn sich die Temperaturen umkehren.

    Die erste Regel ist noch sehr unrein - sollte aber bis kommende Woche soweit funktionieren dass ich sie posten kann. Bei der zweiten wird es wohl noch etwas dauern - da ich dieses WoEnde nicht viel Zeit habe.

    Irgendwelche anderen Regeln die ihr implementiert habt/ im Auge habt für Lüftung?

    Grüsse
    Karsten

    #2
    Nachlauf der Lüftung auf voller Stufe nach Lichtschaltung

    Und hier mal die erste Regel:

    Code:
    [SIZE="2"]var Timer  HeliosNachlauf = null
    var Number HeliosFanPrev = null
    
    rule "Nachlauftimer Test"
    when
    	Item Light_DG_Studio_Wall_right received command ON
    then
    		HeliosFanPrev = heliosFanStatus.state as DecimalType
      		if(HeliosNachlauf==null) {
            	logInfo("HeliosNachlauf", "Value NULL")
    			// first ON command, so create a timer to turn the heating off again after 3 hrs
    			if (kwlOnOff.state == ON) {
            		logInfo("HeliosOnOff", "Value 1/ On")
    			sendCommand(heliosFan8, ON)
            		logInfo("sendcommand", "heliosFan8")
     				if 	(HeliosFanPrev == 1){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan1, ON) 
    					]
    				}				
    				if 	(HeliosFanPrev == 2){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan2, ON)
    					]
    				}
    				if 	(HeliosFanPrev == 3){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan3, ON)
    					]
    				}
    			}
    			if (kwlOnOff.state == OFF) {
            		logInfo("HeliosOnOff", "Value 0 - HWL Off")
    				//HeliosFanPrev = heliosFanStatus.state as DecimalType
    				//var HeliosScriptName = ("heliosFan" + heliosFanStatus.state) 
    				sendCommand(heliosOnOffSW, ON)
    				logInfo("HeliosOnOff", "Switch HLW ON")				
    				sendCommand(heliosFan8, ON)
            			logInfo("sendcommand", "heliosFan8")
     				if 	(HeliosFanPrev == 1){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan1, ON)
    					sendCommand(heliosOnOffSW, OFF) 
    					]
    				}				
    				if 	(HeliosFanPrev == 2){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan2, ON)
    					sendCommand(heliosOnOffSW, OFF)
    					]
    				}
    				if 	(HeliosFanPrev == 3){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan3, ON)
    					sendCommand(heliosOnOffSW, OFF)
    					]
    				}
    				if 	(HeliosFanPrev == 4){	
    					HeliosNachlauf = createTimer(now.plusSeconds(120)) [|
    					sendCommand(heliosFan4, ON)
    					sendCommand(heliosOnOffSW, OFF)
    					]
    				}
    			}
    
    		} else {
    			subsequent ON command, so reschedule the existing timer
    			HeliosNachlauf.reschedule(now.plusSeconds(120))
    			logInfo("HeliosNachlauf", "Verlaengern")
    	}
     
    end
    [/SIZE]

    Kommentar


      #3
      Ich habe folgende Regeln:
      • bei Abwesenheit Stufe 1
      • bei Anwesenheit Stufe 2
      • bei WC-Besuch 10 Minuten Stufe 3
      • bei Hitze Stufe 1

      Das mit der Nachtlüftung habe ich mir auch schon überlegt. Aber Stufe 3 ist hörbar, daher muss ich mal sehen, ob wir das so wollen.
      Außerdem hat mir mein Lüfterer mehr oder weniger "verboten" die Lüftung abzuschalten, da sich Keime bilden können.
      Ich denke aber, dass eine Abschaltung für ein paar Stunden keine Probleme bereiten sollte. Tagelang würde ich die Anlage aber nicht aus lassen.

      Kommentar


        #4
        Hi,

        ich habe mir eine Nachtschaltung gebaut. Ist noch im Aufbau, deshalb die vielen Log Einträge. Aber es funktioniert.

        Abhängigkeiten zum Ausschalten der Belüftung sind :

        1. dass die gesamte Heizung im Sommerbetrieb läuft
        2. die innen Temperatur höher als die außen Temp ist

        Code:
         rule "Beluefung im Sommerbetrieb"
        when
                Time cron "0 0 * * * ?"
        then
                        var aussenTemp = Wetter_Temperatur_Gernsheim_jetzt.state as DecimalType
                        var innenTemp = G_Ist_Temperatur.state as DecimalType
        
        // Wenn Heizung auf Sommerbetrieb
        
        if (G_Ist_Temperatur.state instanceof DecimalType && Wetter_Temperatur_Gernsheim_jetzt.state instanceof DecimalType)
                {
                if (G_Sommerbetrieb.state == ON && aussenTemp < innenTemp)
                {
                logInfo("hoffmann.rules", "Wenn Heizung auf Sommerbetrieb und außentemperatur niedriger als innen = Beluefung = ON aktuell " + verbraucher_og_lastschalter_belueftung_schalten.state )
                logInfo("hoffmann.rules", "aussenTemp" +aussenTemp )
                notifyMyAndroid("4564564565","Lüftung","Aussentemperatur niedriger als innen")
                sendCommand(verbraucher_og_lastschalter_belueftung_schalten, ON)
                if (G_Sommerbetrieb.state == ON) {logInfo("hoffmann.rules","G_Sommerbetrieb.state" +G_Sommerbetrieb.state ) }
                if (aussenTemp < innenTemp) {logInfo("hoffmann.rules","innenTemp" +innenTemp  ) }
                if (aussenTemp < innenTemp) {logInfo("hoffmann.rules","aussenTemp" +aussenTemp  )       }
                }
                else if (G_Sommerbetrieb.state == OFF || aussenTemp > innenTemp)
                {
                logInfo("hoffmann.rules", "Wenn Heizung nicht auf Sommerbetrieb und außentemperatur höher als innen = Beluefung = OFF aktuell " + verbraucher_og_lastschalter_belueftung_schalten.state )
                logInfo("hoffmann.rules", "aussenTemp" +aussenTemp )
                notifyMyAndroid("4564564565","Lüftung","Aussentemperatur höher als innen")
                sendCommand(verbraucher_og_lastschalter_belueftung_schalten, OFF)
                if (G_Sommerbetrieb.state == OFF) {logInfo("hoffmann.rules","G_Sommerbetrieb.state" +G_Sommerbetrieb.state ) }
                if (aussenTemp > innenTemp) {logInfo("hoffmann.rules","innenTemp" +innenTemp  ) }
                if (aussenTemp > innenTemp) {logInfo("hoffmann.rules","aussenTemp" +aussenTemp  )       }
                }
        }
        end

        Kommentar

        Lädt...
        X