Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
rbeudel
Beiträge: 253
Registriert: 6. Jun 2019 11:25
Answers: 1

Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von rbeudel »

Hallo,
ich habe vor einigen Wochen meine Steuerung der Osram Geräte von der Homematic auf openhab2 umgestellt, weil es Probleme mit Homematic gab. Was ich aber überhaupt nicht hinbekomme, ist das schalten von Steckdosen nach der Helligkeit unter Ausschluss eines Zeitraumes. Das habe ich in Homematic in einer Minute hinclicken können, aber mit einer rule bekomme ich es nicht hin trotz reschersche.
Mein Ansatz war zuerst ein Dummy Item zu erstellen das zu den bestimmten Zeiten umschaltet.

Code: Alles auswählen

rule "Nacht"
when
    Time cron "0 0 23 1/1 * ? *"
then 
    GF_Nightswitch.sendCommand(ON)
end 

rule "Tag"
when
    Time cron "0 0 6 1/1 * ? *"
then 
    GF_Nightswitch.sendCommand(OFF)
end 
Das funktioniert auch laut event.log. Dann folgende rules:

Code: Alles auswählen

rule "Wohnzimmer Event an"
when
	Item GF_LivingDining_Motion_3BRIGHTNESS changed or
    Item GF_Nightswitch changed from ON to OFF
then
		if ((GF_LivingDining_Motion_3BRIGHTNESS.state < 43) && (GF_Nightswitch.state == OFF))//Es ist Dunkel
        FF_Office_Power_O5.sendCommand(ON)
        FF_Office_Power_O6.sendCommand(ON)     
end

rule "Wohnzimmer Event aus"
when
	Item GF_LivingDining_Motion_3BRIGHTNESS changed
then
        if (GF_LivingDining_Motion_3BRIGHTNESS.state > 43){ //Es ist Hell
        FF_Office_Power_O5.sendCommand(OFF)
        FF_Office_Power_O6.sendCommand(OFF)
        }
        else if (GF_Nightswitch.state == ON){
        FF_Office_Power_O5.sendCommand(OFF)
        FF_Office_Power_O6.sendCommand(OFF)
        }
end
Die FF_Office_Power_O6 geht manchmal an, aber ich weis eigentlich nicht genau warum :oops:
Kurz, ich bin halt ratlos. Kann mir einer helfen?
Viele Grüße,
Ralf
von udo1toni » 7. Mär 2020 18:19
Wenn es Number:Dimensionless ist, musst Du die Rule umschreiben.

Code: Alles auswählen

rule "Wohnzimmer Helligkeit"
when
    Item GF_LivingDining_Motion_3BRIGHTNESS changed or
    Item GF_Nightswitch changed
then
    var Number nBright = 100                                                    // default: Licht aus
    if(GF_LivingDining_Motion_3BRIGHTNESS.state instanceof Number)              // Das Item hat einen gültigen Zahlenwert
        nBright = (GF_LivingDining_Motion_3BRIGHTNESS.state as Number).intValue // Setze die Variable auf den Wert
    if(nBright < 43 && GF_Nightswitch.state == ON) {                            // Es ist Dunkel
        FF_Office_Power_O5.sendCommand(ON)
        FF_Office_Power_O6.sendCommand(ON)
    } else {
        FF_Office_Power_O5.sendCommand(OFF)
        FF_Office_Power_O6.sendCommand(OFF)
    }
end
Das Problem mit UoM ist, dass immer eine Einheit mit übergeben wird (selbst wenn es sich um keine Einheit handelt), was dann bei Vergleichen mit Zahlen, die keine Einheit haben, schief geht.
Gehe zur vollständigen Antwort
Viele Grüße,
Ralf


Debmatic und Openhab in Proxmox VM debian x86_64

dreamar
Beiträge: 74
Registriert: 22. Dez 2017 08:41
Answers: 0

Re: Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von dreamar »

Hallo rbeudel,

nimm mal meine rule als Vorlage. Meine funktioniert einwandfrei und zuverlässig.
Vielleicht kommst du damit klar.

Code: Alles auswählen

rule "Wenn XXX da und dunkel dann Licht an"
when 
    Item phoscon_Bewegungsmelder_lightlux received update
then 
    val lux = (phoscon_Bewegungsmelder_lightlux.state as QuantityType<Number>).floatValue
    if (lux < 15 && Licht_Fernseher.state == OFF && Anwesenheit_XXX.state == OPEN && now.getHourOfDay() >= 16 && now.getHourOfDay() <= 20 && nCount == 0){
         Licht_Fernseher.sendCommand(ON)
         Lichtband_An.sendCommand(ON)
         nCount = 1
    }
end
Openhab 2.5.10 mit deconz und Homematic

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

Re: Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von udo1toni »

Deine Rules sind eigentlich ganz ok, aber Du hast für das Einschalten einen Fehler drin. GF_Nightswitch.state ist in der Nacht ON, nicht OFF.
Eine weitere Kleinigkeit ist die nötige Klammerrung, weil jeweils mehr als eine Anweisung nach der bedingten Verzweigung steht.

Besser ist es übrigens, nur eine Rule für die Helligkeit zu verwenden:

Code: Alles auswählen

rule "Wohnzimmer Helligkeit"
when
    Item GF_LivingDining_Motion_3BRIGHTNESS changed or
    Item GF_Nightswitch changed
then
    if ((GF_LivingDining_Motion_3BRIGHTNESS.state < 43) && (GF_Nightswitch.state == ON)) {//Es ist Dunkel
        FF_Office_Power_O5.sendCommand(ON)
        FF_Office_Power_O6.sendCommand(ON)
    } else  {
        FF_Office_Power_O5.sendCommand(OFF)
        FF_Office_Power_O6.sendCommand(OFF)
    }
end
DieTime cron Ausdrücke können leicht abgeändert werden, zum einen ist das Jahr optional, zum anderen kann man statt 1/1 auch * schreiben, also

Code: Alles auswählen

    Time cron "0 0 23 * * ?"  // täglich 23:00:00 Uhr
    Time cron "0 0  6 * * ?"  // täglich 06:00:00 Uhr
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

rbeudel
Beiträge: 253
Registriert: 6. Jun 2019 11:25
Answers: 1

Re: Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von rbeudel »

Hallo,
gleich 2 Lösungsansätze :D
# dreamar
das könnte für meine Zwecke klappen, obwohl ich den Lösungsweg noch nicht verstehe.

#udo1toni
bei Dir ist schon alles fertig zum copy and paste. :idea:
Die cron Einstellung habe ich von so einem Generator.
Ich werde das jetzt mal testen mal sehen ob mecker vom Rest der Bande kommt.
Vielen Dank erst einmal für die Vorschläge.
Viele Grüße,
Ralf
Viele Grüße,
Ralf


Debmatic und Openhab in Proxmox VM debian x86_64

rbeudel
Beiträge: 253
Registriert: 6. Jun 2019 11:25
Answers: 1

Re: Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von rbeudel »

Hallo,
ich habe die Version von udo1toni ausprobiert. Es wird aber immer auf den else Zweig gesprungen, also auf OFF. Klammer ich
(GF_LivingDining_Motion_3BRIGHTNESS.state < 43)
aus, funktioniert es als Zeitschaltung. Das Item ist vom Typ Number:Dimensionless. Ich habe auch probehalber mal <> oder == den derzeitigen Wert eingestellt, den ich auf der basicui ablesen kann. Ohne Erfolg, es wird immer der OFF Befehl gesendet.
Was kann den da noch falsch sein?
Viele Grüße,
Ralf
Viele Grüße,
Ralf


Debmatic und Openhab in Proxmox VM debian x86_64

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

Re: Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von udo1toni »

Wenn es Number:Dimensionless ist, musst Du die Rule umschreiben.

Code: Alles auswählen

rule "Wohnzimmer Helligkeit"
when
    Item GF_LivingDining_Motion_3BRIGHTNESS changed or
    Item GF_Nightswitch changed
then
    var Number nBright = 100                                                    // default: Licht aus
    if(GF_LivingDining_Motion_3BRIGHTNESS.state instanceof Number)              // Das Item hat einen gültigen Zahlenwert
        nBright = (GF_LivingDining_Motion_3BRIGHTNESS.state as Number).intValue // Setze die Variable auf den Wert
    if(nBright < 43 && GF_Nightswitch.state == ON) {                            // Es ist Dunkel
        FF_Office_Power_O5.sendCommand(ON)
        FF_Office_Power_O6.sendCommand(ON)
    } else {
        FF_Office_Power_O5.sendCommand(OFF)
        FF_Office_Power_O6.sendCommand(OFF)
    }
end
Das Problem mit UoM ist, dass immer eine Einheit mit übergeben wird (selbst wenn es sich um keine Einheit handelt), was dann bei Vergleichen mit Zahlen, die keine Einheit haben, schief geht.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

rbeudel
Beiträge: 253
Registriert: 6. Jun 2019 11:25
Answers: 1

Re: Nach Helligkeit schalten mit Ausschluss eines Zeitraumes

Beitrag von rbeudel »

Hallo,
vielen Dank, das hat es gebracht. Es läuft wie gebraucht. Wieder viel gelernt.
Mfg,
Ralf
Viele Grüße,
Ralf


Debmatic und Openhab in Proxmox VM debian x86_64

Antworten