Unterstützung bei Rule für Beleuchtung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Unterstützung bei Rule für Beleuchtung

Beitrag von Backbe01 »

Hallo,

auf meinem rpi läuft openHAB 2.5.5 Release Build.

Ich habe eine abgehängte Decke in der 4 Shelly Dimmer und ein Shelly 2.5 switch verbaut sind. Je einen Dimmer für Spots (großes Licht Warmweiß, kleines Licht Warmweiß, großes Licht Kaltweiß, kleines Licht Kaltweiß) und der Shelly 2.5 schaltet einmal die indirekte Beleuchtung und einmal die zwei Dimmer für das jeweilige "kleine Licht". Der Shelly 2.5 war bisher so eingestellt, dass er bei einem Shortpush die indirekte Beleuchtung ein-/ausschaltet und bei einem Longpush die zwei kleinen Spots an-/ausschaltet (also Strom weg). Die Dimmer werden über einen Serientaster geschalten, jeweils Warmweiß und Kaltweiß. Mittlerweile sind aber die Shelly Dimmer für die kleinen Lichte auf detachted gestellt, d.h. sie erhalten keine Ansteuerung über die Wandtaster.

Nun mein Vorhaben:
1. und wichtigstes

Ich möchte, dass die Spots über die Wandtaster erstmal nur die "großen Spots" einschalten. Der Shelly 2.5 soll über einen Longpush die zwei jeweiligen "kleinen Spots" dazuschalten, dann auch gleich in der richtigen Dimmstärke. (Optional bei einem weiteren Longpush wenn an, wieder aus). Wenn der jeweilige KW oder WW Spot geschalten wird sollen immer zuerst nur die jeweils geschaltenen großen Spots angehen. Die kleinen sollen immer nur zusätzlich aus Unterstützung dazugeschaltet werden können.

2. optional
Wenn die großen Spots aus sind und die indirekte Beleuchtung an, soll über einen Longpush die ind. Beleuchtung gedimmt werden. Da ich nur einen Taster habe soll die Dimmung zuerst ganz runter und wenn das Signal bestehen bleibt wieder hochdimmen dann wieder runter... Der Stripe wird über hue angesteuert. Die Dimmung erfolgt mit Werten zwischen 0 - 100.

Hier meine bisherige Rule. Problem ist derzeit, dass sich die kleinen Spots immer sofort mit einschalten, finde den Fehler nicht. Den Teil mit dem Dimmen habe direkt wieder aus kommentiert, dass gab ein never endig Blinken! :lol:

Code: Alles auswählen

var Timer tSpot = null 
//var int percent = 0
//var Timer fade_Timer = null

rule "Spotklein WW"

when 
    Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered LONG_PRESSED

then 
    if(Shellie_Dimmer_WW_Gross_RelayBrightness.state == 0 /* && Shellie_Dimmer_WW_Klein_RelayBrightness.state == 0*/ )  return;
    /*
    if (LEDstripe_EG_EsszimmerDH.state instanceof DecimalType) {
        percent = ((LEDstripe_EG_EsszimmerDH.state as DecimalType)/5).intValue * 5 //round to 5
        fade_Timer = createTimer(now.plusMillis(200)) [|
            LEDstripe_EG_EsszimmerDH.sendCommand(percent)
            if (percent > 1) {
                percent = percent - 5
                fade_Timer.reschedule(now.plusMillis(200))
            }
            else
                percent = percent + 5
                fade_Timer.reschedule(now.plusMillis(200))
        ]
    }
    */
    if(Shellie_Dimmer_WW_Gross_RelayBrightness.state != 0) {
        logInfo("Spotklein", "WW Groß war an")
        if (Shellie_25_Relay1Output.state !=ON) {
        Shellie_25_Relay1Output.sendCommand (ON)}
        tSpot = createTimer(now.plusSeconds(5), [
        Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)
        tSpot = null
    ])
    }
        else 
        logInfo("Spotklein", "TEST2")
        Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)
    
end

rule "Spotklein KW"

when 
    Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered LONG_PRESSED

then 
    if(Shellie_Dimmer_KW_Gross_RelayBrightness.state == 0)  return;

    if(Shellie_Dimmer_KW_Gross_RelayBrightness.state != 0) {
        logInfo("Spotklein", "KW war an")
        if (Shellie_25_Relay1Output.state !=ON) {
        Shellie_25_Relay1Output.sendCommand (ON)}
        tSpot = createTimer(now.plusSeconds(5), [
        Shellie_Dimmer_KW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_KW_Gross_RelayBrightness.state)
        tSpot = null
    ])
    }

    else  
        logInfo("Spotklein", "TEST1")
        Shellie_Dimmer_KW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_KW_Gross_RelayBrightness.state)
end



rule "spot klein ww synchron"

when 
    Item Shellie_Dimmer_WW_Gross_RelayBrightness changed 
then 
    if(Shellie_Dimmer_WW_Klein_RelayON.state == ON)
    logInfo("Spotklein", "WW synchron")
    Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)
end 

rule "spot klein kw synchron"

when 
    Item Shellie_Dimmer_KW_Gross_RelayBrightness changed 
then 
    if(Shellie_Dimmer_KW_Klein_RelayON.state == ON)
    logInfo("Spotklein", "KW synchron")
    Shellie_Dimmer_KW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_KW_Gross_RelayBrightness.state)
end 
/*
rule "Spot Klein aus"

when 

    Item Shellie_Dimmer_WW_Gross_RelayON changed from ON to OFF or 
    Item Shellie_Dimmer_KW_Gross_RelayON changed from ON to OFF

then 

    if(Shellie_Dimmer_WW_Gross_RelayON == OFF && Shellie_Dimmer_KW_Gross_RelayON == OFF)
    logInfo("Spotklein", "Shellie spot klein aus")
    if(Shellie_25_Relay1Output.state!= OFF) Shellie_25_Relay1Output.sendCommand(OFF)
end
*/
Habe lange überlegt hier zu schreiben, mittlerweile sollte auch ich so "einfache" Rules hingekommen. Bin immer ganz neidisch wen ich diese Super Rules mit Photovoltaik und sonst was sehe. Aber da meine Frau kurz davor steht mir ein Licht-Tast-Verbot :D auszusprechen und um des Frieden willens wende ich mich an Euch.

Hier noch meine Rule für die ind. Beleuchtung, sollte aber für o.g. keine Bedeutung haben:

Code: Alles auswählen

var int iFarbtemperatur = 80
var int iHelligkeit = 75

rule "Esszimmer"
when 
    Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered SHORT_PRESSED
then 
    logInfo("dimmer", "Shelly wurde ausgelöst")
    if(LEDstripe_EG_EsszimmerDH.state != 0) {
        logInfo("dimmer", "Stripe war an")
        //sendCommand(LEDstripe_EG_EsszimmerDH, 1)
        LEDstripe_EG_EsszimmerDH.sendCommand (0)
        logInfo("dimmer", "Stripe geht aus")
        return;
    } else {
        sendCommand(Shellie_25_Relay2Output, ON)
        logInfo("dimmer", "LED Stripe geht an")
    }
    if(Besuch_anwesend.state != ON) {
             if(now.getMinuteOfDay < 5 * 60 +29) {iHelligkeit = 20 iFarbtemperatur = 80}
        else if(now.getMinuteOfDay < 7 * 60)     {iHelligkeit = 60 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 10 * 60)    {iHelligkeit = 80 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 14 * 60)    {iHelligkeit = 80 iFarbtemperatur = 10}
        else if(now.getMinuteOfDay < 18 * 60)    {iHelligkeit = 80 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 20 * 60)    {iHelligkeit = 60 iFarbtemperatur = 30}
        else                                     {iHelligkeit = 60 iFarbtemperatur = 70}
    } 
    else                                       {iHelligkeit = 80 iFarbtemperatur = 80} 
    LEDstripe_EG_EsszimmerDH.sendCommand(iHelligkeit)
    LEDstripe_EG_EsszimmerDF.sendCommand(iFarbtemperatur)
end

rule "Abwesend"
when 
    Item Handy_Gerhard changed from OPEN to CLOSED or
    Item Handy_Tanja changed from OPEN to CLOSED or 
    Item Handy_Gabriel changed from OPEN to CLOSED or
    Time cron "0 0 0 * * ?"// täglich 0 Uhr
then 
    if((Handy_Gerhard.state == CLOSED && Handy_Tanja.state == CLOSED && Handy_Raphael.state == CLOSED) || now.getMinuteOfDay < 5 * 60 +28) {
        if(LEDstripe_EG_EsszimmerDH.state != OFF) LEDstripe_EG_EsszimmerDH.sendCommand(OFF)
        if(Shellie_25_Relay2Input.state!= OFF) Shellie_25_Relay2Output.sendCommand(OFF)
    }
end
Vielen Dank
Gerhard
OH 4.1.0M2 auf nuc in Docker

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

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von udo1toni »

So als Vorüberlegung wäre eine Tabelle sinnvoll, mit den Leuchten (alle Leuchten, die immer gemeinsam gesteuert werden sind „eine“ Leuchte) und dem Taster (also z.B. pro Tastendruck kurz,lang...), hier vermutlich noch in Verbindung mit den Vorbedingungen (Leuchte 1 und 2 an, Leuchte 1 an usw.).
Aus Deiner textlichen Beschreibung werde ich nur begrenzt schlau, nicht zuletzt, weil Du die Leuchten teilweise unterschiedlich benennst...

Bei der Gelegenheit wäre auch eine Tabelle mit den Itemnamen aller Beteiligten gut.

Wie sieht das mit dem Taster aus? Welche Codes werden vom Taster empfangen, wenn Du kurz drückst, wenn Du lang drückst, wenn Du loslässt?


Gesendet von iPad mit Tapatalk
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von Backbe01 »

Hallo Udo, es freut mich sehr, dass gerade du antwortest! Du bist in meinen Augen DER Rule-Spezialist!!

Ich habe befürchtet, dass das Ganze etwas ungenau geschrieben ist. Habe mich gerade an den Block gesetzt und das Ganze für mich skizziert. Heute Abend bringe ich es in ein passendes Format. So ganz kompliziert ist es eigentlich gar nicht, es hackt nur an der Umsetzung! ;-)

VG
Gerhard
OH 4.1.0M2 auf nuc in Docker

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von Backbe01 »

Ich habe versucht die Schaltung grafisch darzustellen. Ich hoffe es ist mir gelungen. Leider wusste ich nicht wie ich Dokumente anhängen kann, daher der Link auf meine NAS bis zum 31.01.21:

https://gofile.me/6yoDD/MOwBOOTh1

Hier noch die betroffenen Items:

Code: Alles auswählen

Switch        Shellie_25_Relay1Output              "Spot Klein Betrieb"                    {channel="shelly:shelly25-relay:40f5202d5543:relay1#output"}

Dimmer               Shellie_Dimmer_WW_Gross_RelayBrightness         "Spot WW Groß Helligkeit"                 (gEZ_Spot_dmr, gEZ_WW, gEZ_gross)      {channel="shelly:shellydimmer2:40f52000d3c9:relay#brightness"}

Dimmer               Shellie_Dimmer_WW_Klein_RelayBrightness         "Spot WW Klein Helligkeit"       (gEZ_Spot_dmr, gEZ_WW, gEZ_Klein)      {channel="shelly:shellydimmer:d0ecff:relay#brightness"}           

Dimmer               Shellie_Dimmer_KW_Gross_RelayBrightness         "Spot KW Groß Helligkeit"        (gEZ_Spot_dmr, gEZ_KW, gEZ_gross)      {channel="shelly:shellydimmer2:40f52000d95e:relay#brightness"}

Dimmer               Shellie_Dimmer_KW_Klein_RelayBrightness         "Spot KW klein Helligkeit"            (gEZ_Spot_dmr, gEZ_KW, gEZ_Klein)      {channel="shelly:shellydimmer:d464e9:relay#brightness"}

Dimmer  		  LEDstripe_EG_EsszimmerDH    "Helligkeit Esszimmer"                     (EG_Esszimmer,gLampen,gSzenengeraete)  [ "Lighting" ]    {channel="hue:0220:001788a519da:27:brightness"}

Channel "shelly:shelly25-relay:40f5202d5543:relay2#button"
OH 4.1.0M2 auf nuc in Docker

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

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von udo1toni »

Wenn ich es richtig verstehe, ist der Shelly2.5 quasi der Hauptschalter, sowohl für die Hue (der Ledstripe, Kanal 2) als auch für die beiden Lampen 1.2 und 2.2. Deshalb auch die verzögerte Weiterleitung des Steuerbefehls...

Gibt es die Möglichkeit, das Ende des langen Tastendrucks zu erkennen?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von Backbe01 »

Richtig, der Shelly 2.5 ist der "Hauptschalter" für Lampe 1.2 und 2.2 und Ledstripe. Hintergrund dieser Überlegung war (..und hier kommt der Schwabe durch), dass ich bei Abwesenheit und in der Nacht das (rel. große Netzteil) des LED stripes abschalten kann und ich die Lampen 1.2 und 2.2 dazuschalten kann, wenn sie wirklich benötigt werden. Der Shelly 2.5 läuft ebenfalls im Detached Modus, d.h. er empfängt das Steuersignal vom Taster, warten dann aber auf einen Befehl was ausgeführt werden soll. Der Trigger für Short- bzw. Longpush lautet:

Code: Alles auswählen

Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered LONG_PRESSED  //Longpush
Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered SHORT_PRESSED //Shortpush
Diese werden von OH erkannt, sehr schnell und dementsprechend verarbeitet.

Läuft auch sehr gut, meine Rule mit dem LED Stripe läuft schon länger ohne Fehler:

Code: Alles auswählen

var int iFarbtemperatur = 80
var int iHelligkeit = 75

rule "Esszimmer"
when 
    Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered SHORT_PRESSED
then 
    logInfo("dimmer", "Shelly wurde ausgelöst")
    if(LEDstripe_EG_EsszimmerDH.state != 0) {
        logInfo("dimmer", "Stripe war an")
        //sendCommand(LEDstripe_EG_EsszimmerDH, 1)
        LEDstripe_EG_EsszimmerDH.sendCommand (0)
        logInfo("dimmer", "Stripe geht aus")
        return;
    } else {
        sendCommand(Shellie_25_Relay2Output, ON)
        logInfo("dimmer", "LED Stripe geht an")
    }
    if(Besuch_anwesend.state != ON) {
             if(now.getMinuteOfDay < 5 * 60 +29) {iHelligkeit = 20 iFarbtemperatur = 80}
        else if(now.getMinuteOfDay < 7 * 60)     {iHelligkeit = 60 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 10 * 60)    {iHelligkeit = 80 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 14 * 60)    {iHelligkeit = 80 iFarbtemperatur = 10}
        else if(now.getMinuteOfDay < 18 * 60)    {iHelligkeit = 80 iFarbtemperatur = 20}
        else if(now.getMinuteOfDay < 20 * 60)    {iHelligkeit = 60 iFarbtemperatur = 30}
        else                                     {iHelligkeit = 60 iFarbtemperatur = 70}
    } 
    else                                       {iHelligkeit = 80 iFarbtemperatur = 20} 
    LEDstripe_EG_EsszimmerDH.sendCommand(iHelligkeit)
    LEDstripe_EG_EsszimmerDF.sendCommand(iFarbtemperatur)
end

rule "Abwesend"
when 
    Item Handy_Gerhard changed from OPEN to CLOSED or
    Item Handy_Tanja changed from OPEN to CLOSED or 
    Item Handy_Gabriel changed from OPEN to CLOSED or
    Time cron "0 0 0 * * ?"// täglich 0 Uhr
then 
    if((Handy_Gerhard.state == CLOSED && Handy_Tanja.state == CLOSED && Handy_Raphael.state == CLOSED) || now.getMinuteOfDay < 5 * 60 +28) {
        if(LEDstripe_EG_EsszimmerDH.state != OFF) LEDstripe_EG_EsszimmerDH.sendCommand(OFF)
        if(Shellie_25_Relay2Input.state!= OFF) Shellie_25_Relay2Output.sendCommand(OFF)
    }
end
Vorteil dieser Rule ist, dass der Stripe viel schneller einschaltet, da das Netzteil bereits Strom hat. Und nebenbei bekomme ich Tagsüber die Lichtfarbe die ich für richtig halte.

Und genau diese schnelle Reaktion wünsche ich mir auch für die Spots (Lampen 1.2, 2.2). Wenn ich immer erst die Shelly Dimmer der Lampen 1.2 2.2 einschalte (über Shelly2.5), müssen die sich erst ins Netz buchen und haben dann auch nicht den Dimmwert der Lampen 1.1 bzw. 2.1. Deshalb mein Wunsch der Rule, die auch teilweise schon funktionierte. Aber in der Rule vom ersten Post muss ein Fehler sein, da die "kleinen" Lampen 1.2 bzw. 2.2 auch immer sofort einschalten. Und mein Wunsch wäre, wenn die (großen) Lampen 1.1 und 2.1 aus sind, also keine Spots an sind, dann wäre auch der Longpush Befehl "frei". Diesen könnte ich dann nutzen um den Stripe zu dimmen. Da aber für diese Funktion nur ein Taster zur Verfügung steht, müsste dass Dimmen so erfolgen, dass z.B. zuerst ganz herunter gedimmt wird und wenn der Steuerbefehl erhalten bleibt wieder hochgedimmt wird. Entsprechend sollte es natürlich auch in die andere Richtung funktionieren. Ich habe mir auch schon eine Dimm-Rule aus einem anderen Beitrag geklaut. Das führte zu einem Blinken, dass nur durch einen Neustart von OH behoben werden konnte... :?

Und gestern ist mir noch aufgefallen, wenn gar keine Lampen/Stripe an sind, ist der Longpushbefehl ebenfalls "frei". Da würde mir bestimmt auch noch ein Szenario einfallen 8-)
OH 4.1.0M2 auf nuc in Docker

ThomasW
Beiträge: 33
Registriert: 9. Jan 2021 16:12
Answers: 1

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von ThomasW »

So ich habe mir deine Rule mal vorgenommen und ein wenig geschaut ob ich da was finde
Ich hoffe ich habe deine Vorstellung richtig verstanden

Hier die Rule für den Long Press vom Shelly2.5 habe dir deine gewünschten zustände eingebaut teilweise mit kommentaren so das du hier noch ergänzen musst.

Code: Alles auswählen

var Timer tSpot = null 


rule "Spotklein WW + Spotklein KW"

when 
    Channel "shelly:shelly25-relay:40f5202d5543:relay2#button" triggered LONG_PRESSED

then 
    
    if(Shellie_Dimmer_WW_Gross_RelayBrightness.state != 0 && Shellie_Dimmer_WW_Klein_RelayBrightness.state == 0) {      //Wenn WW Groß an ist und WW Klein aus
        logInfo("Spotklein", "WW Groß war an")          
        if (Shellie_25_Relay1Output.state !=ON) {                                                                       //Relay Prüfen
            Shellie_25_Relay1Output.sendCommand (ON)                                                                    //Relay einschalten
            tSpot = createTimer(now.plusSeconds(5), [                                                                   //Zeitverzögerung
                Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)      //Dimmer WW Klein = WW Groß
                tSpot = null
            ])
        }else{                                                                                                          //Relay ist schon an
            logInfo("Spotklein", "Relay war an WW Klein eingeschaltet")
            Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)          //Dimmer WW Klein = WW Groß
        }
    }else if(Shellie_Dimmer_WW_Gross_RelayBrightness.state != 0 && Shellie_Dimmer_WW_Klein_RelayBrightness.state != 0) { //Wenn WW Groß an ist und WW Klein an
        logInfo("Spotklein", "WW Klein aus")
        //hier WW Klein ausschalten und wen KW Klein aus ist Relay ausschalten
    }          

    if(Shellie_Dimmer_KW_Gross_RelayBrightness.state != 0 && Shellie_Dimmer_KW_Klein_RelayBrightness.state == 0) {      //Wenn KW Groß an ist und KW Klein aus
        logInfo("Spotklein", "KW Groß war an")
        if (Shellie_25_Relay1Output.state !=ON) {                                                                       //Relay Prüfen
            Shellie_25_Relay1Output.sendCommand (ON)                                                                    //Relay einschalten
            tSpot = createTimer(now.plusSeconds(5), [                                                                   //Zeitverzögerung
                Shellie_Dimmer_KW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_KW_Gross_RelayBrightness.state)      //Dimmer KW Klein = KW Groß
                tSpot = null
            ])
        }else {                                                                                                         //Relay ist schon an
            logInfo("Spotklein", "Relay war an KW Klein eingeschaltet")
            Shellie_Dimmer_KW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_KW_Gross_RelayBrightness.state)          //Dimmer KW Klein = KW Groß
        }
    }else if(Shellie_Dimmer_KW_Gross_RelayBrightness.state != 0 && Shellie_Dimmer_KW_Klein_RelayBrightness.state == 0) { //Wenn KW Groß an ist und KW Klein aus
         logInfo("Spotklein", "KW Klein aus")
        //hier KW Klein ausschalten und wen WW Klein aus ist Relay ausschalten
    }

    if(Shellie_Dimmer_WW_Gross_RelayBrightness.state == 0 && Shellie_Dimmer_KW_Gross_RelayBrightness.state == 0 /* && Lampe 5 an*/) { //WW Groß und KW Groß aus und 5 an
        logInfo("Spotklein", "Nur Lampe 5 an")
        // Hier dann die Dimmfunktion für Lampe 5
     }

    if(Shellie_Dimmer_WW_Gross_RelayBrightness.state == 0 && Shellie_Dimmer_KW_Gross_RelayBrightness.state == 0 /* && Lampe 5 aus*/) { //WW Groß und KW Groß aus und 5 aus
        logInfo("Spotklein", "Keine Lampe an was soll ich machen?")
        // Hier ist noch frei
     }
end
Was jetzt noch fehlt sind die Rules für deine Serientaster?

Wenn ich dich richtig verstanden habe sollte das in etwa so aussehen?

Code: Alles auswählen

rule "Serientaster 1"

when 
    Sereintaster 1 gedrückt
then 
    if(Shellie_Dimmer_WW_Gross_RelayBrightness.state == 0){
        Shellie_Dimmer_WW_Gross_RelayBrightness.sendCommand(ON)
        logInfo("Spotklein", "WW Groß an")
    }else{
        Shellie_Dimmer_WW_Gross_RelayBrightness.sendCommand(OFF)
        logInfo("Spotklein", "WW Groß aus")
        if (Shellie_Dimmer_KW_Klein_RelayBrightness.state == 0){
            logInfo("Spotklein", "WW Klein aus")
        //hier WW Klein ausschalten und wen KW Klein aus ist Relay ausschalten
        }
    }
end
OH3 auf RPI4,
Heizungssteuerung: Fritz DECT,
Zigbee: Conbee2 über Phoscon-GW: Aqara Opple Schalter, Aqara Temperatursensoren, Aqara Fenstersensoren, Aqara Aktoren, IKEA Lichter
Astro Binding
DWDUnwetter Binding
OpenWeatherMap Binding
FritzBox TR 064 Binding
iRobot Binding
Telegramm Binding für Benachrichtigungen und Steuerung von unterwegs
Rolladensteuerung: Rademacher DuoFern über HTTP Binding

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von Backbe01 »

Hi Thomas,

vielen Dank für die deine Unterstützung. Die Rule sieht im lesen gut aus!

Diesen Teil:

Code: Alles auswählen

 //hier WW Klein ausschalten und wen KW Klein aus ist Relay ausschalten
werde ich noch anpassen.

Was noch fehlen würde wäre der Teil mit der Dimmung. Ich habe wie oben geschrieben dies schon versucht. Das Dimmen hat auch geklappt. Als ich dann aber am Nullpunkt ankam, fing die Lampe an zu blinken zwischen 0 und 5 und ich musste OH neustarten. Seither habe ich mich da nicht mehr rangetraut. Vielleicht findest du den Fehler. Ich hänge mal den Teil der rule an:

Code: Alles auswählen

var int percent = 0
var Timer fade_Timer = null

if (LEDstripe_EG_EsszimmerDH.state instanceof DecimalType) {
        percent = ((LEDstripe_EG_EsszimmerDH.state as DecimalType)/5).intValue * 5 //round to 5
        fade_Timer = createTimer(now.plusMillis(200)) [|
            LEDstripe_EG_EsszimmerDH.sendCommand(percent)
            if (percent > 1) {
                percent = percent - 5
                fade_Timer.reschedule(now.plusMillis(200))
            }
            else
                percent = percent + 5
                fade_Timer.reschedule(now.plusMillis(200))
        ]
    }

Die Rule für den Wandtaster benötige ich nicht. Die Lampen 1.1 und 2.1 werden direkt über den Wandtaster geschalten.

Leider komme ich frühestens heute Abend zum testen, aber ich halte Dich/Euch auf dem laufenden...

VG
Gerhard
OH 4.1.0M2 auf nuc in Docker

ThomasW
Beiträge: 33
Registriert: 9. Jan 2021 16:12
Answers: 1

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von ThomasW »

Hey

dein dimmer ist ein Problem da nicht bekannt ist wann der abbrechen soll
habe deinen Teil jetzt einfach angepasst so das der n beide Richtungen arbeitet.

Aber Achtung nicht benutzen wenn du das so auslöst wird dein LED stripe immer hoch und runter dimmen bis du OH neu startest.
Wie Udo schon gesagt hat musst du das ende des langen tastendrucks erkennen können um hier sinnvoll weiterzukommen

Code: Alles auswählen

var i = 1 //als schalter ob heller oder dunkler
if (LEDstripe_EG_EsszimmerDH.state instanceof DecimalType) {
        percent = ((LEDstripe_EG_EsszimmerDH.state as DecimalType)/5).intValue * 5 //round to 5
        fade_Timer = createTimer(now.plusMillis(200)) [|
            LEDstripe_EG_EsszimmerDH.sendCommand(percent)
            if (percent < 5){ //Richtungswechsel
                i=0
            }else if (percent > 95){
                i=1
            }
            if (i == 1 ) { //runterdimmen
                percent = percent - 5
                fade_Timer.reschedule(now.plusMillis(200))
            }
            else if (i == 0){ //hochdimmen
                percent = percent + 5
                fade_Timer.reschedule(now.plusMillis(200))
            }
          //  if (/* Abbruchbedingung Schalter lossgelassen*/){
             //   fade_Timer.cancel
            //}
        ]
    }
OH3 auf RPI4,
Heizungssteuerung: Fritz DECT,
Zigbee: Conbee2 über Phoscon-GW: Aqara Opple Schalter, Aqara Temperatursensoren, Aqara Fenstersensoren, Aqara Aktoren, IKEA Lichter
Astro Binding
DWDUnwetter Binding
OpenWeatherMap Binding
FritzBox TR 064 Binding
iRobot Binding
Telegramm Binding für Benachrichtigungen und Steuerung von unterwegs
Rolladensteuerung: Rademacher DuoFern über HTTP Binding

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Unterstützung bei Rule für Beleuchtung

Beitrag von Backbe01 »

Hi Thomas,

habe die Rule gestern nur kurz testen können. Läuft vom Prinzip, lediglich die Lampe 2.2 (KW klein) ging bei longpress nicht aus. Evtl. habe ich auch einen Fehler drin, werde das noch prüfen. Mir ist dann aufgefallen, dass das synchron Schalten noch fehlt. Aber ich denke, da kann ich die vorhanden Rule verwenden.

Aber: geht ja gar nicht! Wenn die Rule läuft und das vorgeschaltene Shelly2.5 relay auf on steht, wird dieser Befehl sofort an die Lampen 1.2 und 2.2 (kleine Lampen) weitergeleitet. So langsam denke ich, mein Vorhaben ist nicht realisierbar...

Rule:

Code: Alles auswählen

rule "spot klein ww synchron"

when 
    Item Shellie_Dimmer_WW_Gross_RelayBrightness changed 
then 
    if(Shellie_Dimmer_WW_Klein_RelayON.state == ON)
    logInfo("Spotklein", "WW synchron")
    Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)
end 

rule "spot klein kw synchron"

when 
    Item Shellie_Dimmer_KW_Gross_RelayBrightness changed 
then 
    if(Shellie_Dimmer_KW_Klein_RelayON.state == ON)
    logInfo("Spotklein", "KW synchron")
    Shellie_Dimmer_KW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_KW_Gross_RelayBrightness.state)
end 
Jetzt kapier ich auch das Problem mit dem Dimmer! Klar, der würde bei nur dem Starttrigger ewig auf und abdimmen. Das stellt sich wirklich als Problem heraus, da der Shelly nur entweder Short- Longpress liefert oder state.input on/off.Habe aber evtl. schon eine Lösung, dies muss aber Hardware mäßig erfolgen. Mal schauen wann ich Zeit finde.
OH 4.1.0M2 auf nuc in Docker

Antworten