Denkfehler bei neuer Rule für Lichtsteuerung?

openHAB - open Home Automation Bus

Moderator: Co-Administratoren

echicor
Beiträge: 42
Registriert: 24.09.2016, 06:45
Wohnort: Bad Zwischenahn

Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von echicor » 04.09.2017, 14:27

Hi @all,

ich versuche gerade eine neue Rule für die Lichsteuerung im Esszimmer zu schreiben. Allerdings scheine ich da einen Denkfehler zu haben.

Aktuell habe ich folgendes:

Code: Alles auswählen

rule "Lichtsteuerung Esszimmer Deckenlicht"
when
	Item Licht_Esszimmer_Wandleuchten	changed or
	Item Licht_Esszimmer				changed
then 
	if			(((Licht_Esszimmer.state as DecimalType >= 50 && < 80)	&& 	(Licht_Esszimmer_Wandleuchten.state == ON))) {
		Licht_Esszimmer.sendCommand (50) 
		}
	else if		(((Licht_Esszimmer.state as DecimalType >= 80 )  &&	(Licht_Esszimmer_Wandleuchten.state == ON))) {
		Licht_Esszimmer_Wandleuchten.sendCommand (OFF)
	}
end 
Die einzelnen if-Bedingungen scheinen als eigenständige Rules zu funktionieren, allerdings nicht wenn ich 2 Rules daraus mache. Auch wie oben im Code dargestellt funktioniert das ganze nicht.
Kann mir da einer helfen? Habe wohl einen Denkfehler :-/

Danke im Voraus.

Didi62
Beiträge: 367
Registriert: 07.10.2007, 16:18
Danksagung erhalten: 2 Mal

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von Didi62 » 04.09.2017, 18:49

Eine neue was?

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von ptweety » 04.09.2017, 20:07

Hallo echicor,

kannst du mal im Detail alle Fälle aufschreiben, die in deiner Lichtsteuerung behandelt werden sollen? Dann können wir auch an einer sinnvollen Lösung arbeiten.

Bsp.
1. Dimmer wird angeschaltet und
a) Dimmwert liegt unter 50% -> dann soll ... passieren
b) Dimmwert liegt >= 50% und 80% -> dann soll ... passieren
c) Dimmwert liegt >= 80% -> dann soll ... passieren
2. Dimmwert verändert sich
a) unter 50% ...
b) >= 50% ...
...
3. Dimmer wird ausgeschaltet ...
...
4. Wandleuchte wird angeschaltet ...
...
5. Wandleuchte wird ausgeschaltet ...
...

echicor
Beiträge: 42
Registriert: 24.09.2016, 06:45
Wohnort: Bad Zwischenahn

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von echicor » 05.09.2017, 06:46

Hi ptweety,

danke für die Unterstützung.
Ja, die Fälle in denen die Regel greifen soll, soll folgendes beinhalten:

Deckenlicht oder Wandleuchten werden oder sind angeschaltet
a) Deckenlicht >= 50% und Wandleuchten werden eingeschaltet -> dann Deckenlicht auf 50 %
b) Deckenlicht wird eingeschaltet und ist dann >= 80% und Wandleuchten sind an -> dann Wandleuchten aus
c) Deckenlicht > 0% und Wandleuchten werden ausgeschaltet -> dann Deckenlicht auf 100%

In der CCU2 hab ich mit diesen Bedingungen 1 Programm laufen und es funktioniert - bekomme es halt leider nur nicht für openHAB umgesetzt ;-)

Danke im Voraus.

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von ptweety » 05.09.2017, 19:43

Hi echicor,
mach doch bitte mal einen Screenshot deines Programms aus der CCU. Ich habe das Gefühl, dass du dort mehr als die bisher genannten zwei Kanäle bzw. Items ansprichst/verwendest.

Weiterhin kannst du bitte noch alle Items mit vollständiger Definition (channel, ...) aus OH zu den Verwendeten Aktoren mal hier auflisten

Ach ja, hier noch ein Draft von zwei Regel, die zu deinen Bedingungen a)-c) passen:

Code: Alles auswählen

rule "Lichtsteuerung Esszimmer Deckenlicht"
when
    Item /* Lichtschalter Deckenlicht */ received command ON
then
    if ( (/* Item mit Dimmwert für Deckenlicht */.state as DecimalType) >= 80 &&
            Licht_Esszimmer_Wandleuchten.state == ON ) {
        Licht_Esszimmer_Wandleuchten.sendCommand(OFF)
    }
end

rule "Lichtsteuerung Esszimmer Wandleuchten"
when
  Item Licht_Esszimmer_Wandleuchten received command
then
    if ( receivedCommand == ON &&
            (/* Item mit Dimmwert für Deckenlicht */.state as DecimalType) >= 50 ) {
        /* Item mit Dimmwert für Deckenlicht */.sendCommand(50)
    } else if ( receivedCommand == OFF &&
            (/* Item mit Dimmwert für Deckenlicht */.state as DecimalType) > 0 ) {
        /* Item mit Dimmwert für Deckenlicht */.sendCommand(100)
  }
end

echicor
Beiträge: 42
Registriert: 24.09.2016, 06:45
Wohnort: Bad Zwischenahn

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von echicor » 06.09.2017, 08:15

Hallo ptweety,

Zunächst Danke schon ein mal für die Unterstützung.
Im Anhang zum Post sind die ScreenShots der beiden Programme, welche die Problematik in der CCU bereits erfolgreich umsetzen.

Die Items haben bei bei mir in openHAB2 folgende Definitionen:
Deckenlicht: Licht_Esszimmer --> channel="homematic:HM-LC-Dim1TPBU-FM:ccu2:MEQ0395413:1#LEVEL"
Wandleuchten: Licht_Esszimmer_Wandleuchten --> channel="homematic:HM-LC-Sw1PBU-FM:ccu2:LEQ1015286:1#STATE"

Deinen Draft habe ich gerade ein mal bei mir eingespielt und mit den notwendigen Items befüllt.
Leider scheint jedoch auch hier keine Reaktion zu erfolgen - zumindest reagieren beide Lampen nicht entsprechend der Regeln.

Code: Alles auswählen

rule "Lichtsteuerung Esszimmer Deckenlicht"
when
    Item Licht_Esszimmer received command ON
then
    if ( (Licht_Esszimmer.state as DecimalType) >= 80 &&
            Licht_Esszimmer_Wandleuchten.state == ON ) {
        Licht_Esszimmer_Wandleuchten.sendCommand(OFF)
    }
end

rule "Lichtsteuerung Esszimmer Wandleuchten"
when
  Item Licht_Esszimmer_Wandleuchten received command
then
    if ( Licht_Esszimmer_Wandleuchten receivedCommand == ON &&
            (Licht_Esszimmer.state as DecimalType) >= 50 ) {
        Licht_Esszimmer.sendCommand(50)
    } else if ( Licht_Esszimmer_Wandleuchten receivedCommand == OFF &&
            (Licht_Esszimmer.state as DecimalType) > 0 ) {
        Licht_Esszimmer.sendCommand(100)
  }
end
Dateianhänge
Licht_Esszimmer_Decke.JPG
Licht_Esszimmer_Wand.JPG

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von ptweety » 06.09.2017, 19:19

Hm,
mangels eigenem Dimmer kann ich das leider nicht selber testen, aber die 2. Regel "Lichtsteuerung Esszimmer Wandleuchten" sollte m.E. funktionieren. bei der 1. Regel "Lichtsteuerung Esszimmer Deckenlicht" solltest du halt noch

Code: Alles auswählen

received command ON
durch

Code: Alles auswählen

changed
ersetzen.

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von eiGelbGeek » 06.09.2017, 23:24

Ich habe nun nicht alles gelesen, aber warum macht man CCU Programme und Openhab Rules ?

Also ich persönlich habe alles nach Openhab portiert .... die CCU ist nur noch ein dummes Gateway ;-)

Aber ich fahre auch mittlerweile 3 Protokolle ;-) bzw. eigentlich sind es sogar 4 ;-)

Homematic, HomematicIP, Z-Wave für Rauchmelder und ZigBee seid heute für Ikea Tradfri ...

Tradfri kann ich nur empfehlen .... funktioniert mit OpenHAB perfekt und ist billiger als HUE ... :mrgreen:

Aber ich komme gerade zu weit weg vom eigentlichen Thema ;-)
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

echicor
Beiträge: 42
Registriert: 24.09.2016, 06:45
Wohnort: Bad Zwischenahn

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von echicor » 08.09.2017, 18:37

Hi,

@ptweety: die Änderung auf changed brachte leider keine Besserung und die andere Regel greift auch nicht ...

@eiGelbGeek: Genau das mache ich ja gerade - ich will die ganzen Regeln von der CCU2 auf openHAB übertragen damit die CCU2 dann nur noch als Gateway läuft. So kann ich dann eben auch andere Funkprotokolle in das System integrieren - genau wie du es auch gemacht hast ;-)

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Denkfehler bei neuer Rule für Lichtsteuerung?

Beitrag von Dragonfly » 08.09.2017, 19:05

Code: Alles auswählen

rule "Lichtsteuerung Esszimmer Deckenlicht"
	when
		Item Licht_Esszimmer received command ON
then
	if (Licht_Esszimmer.state  >= 80 && Licht_Esszimmer_Wandleuchten.state == ON )
		{
		Licht_Esszimmer_Wandleuchten.sendCommand(OFF)
		}
end

rule "Lichtsteuerung Esszimmer Wandleuchten"
	when
		Item Licht_Esszimmer_Wandleuchten received command
then
	var Licht = Licht_Esszimmer     //Hier Namen des Items hin
	if (receivedCommand == ON && Licht.state >= 50)
		{
            Licht.sendCommand(50)
        }
	else if (receivedCommand == OFF && Licht.state > 0 )
		{
		Licht.sendCommand(100)
		}
end
Probier mal.... nichts ändern, sollte so gehen.

Antworten

Zurück zu „openHAB“