Openhab Raspbee-Modul Tradfri-Lampen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

OH-RNHome
Beiträge: 9
Registriert: 24. Okt 2019 20:41
Answers: 0

Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von OH-RNHome »

Hallo Zusammen,

ich habe ein Problem mit Tradfri-Lampen über ein RaspBee-Modul von Dresden. Es geht um 4 Lampen in der Diele die bei Bewegung angeschaltet werden und nach 2 Minuten wieder ausgehen "sollen" und da kommen wir zu meinem Problem!
Teilweise gehen alle Lampen aus, manchmal nur 2, manchmal nur 3 usw.
Im Webinterface von Phoscon zeigt er die Lampen dann auch noch als "AN" an während Openhab sagt das alle Lampen aus sind.
Das Raspbee-Modul ist auf einem eigenen Raspberry nur für Deconz und von den Lampen 1m entfernt. Alle Lampen sind auf aktuellstem Stand.

Bin für Hilfe dankbar!
Gruß Olaf
"Nichts ist unmöglich ... außer meine Frau will es nicht" :D
Hardware: Rasp4 mit OH2.5M4, Raspi-Modul, Sonoff-RFBridge, Sonoff, Shelly, Tradfri, CometDECT, Fritz!Box
Projekte: Heizungssteuerung, Licht, Saugroboter, Haustürüberwachung, Ab-Anwesenheit, Google Home Einbindung...

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von curius »

Hallo,

ich kann dir leider nicht weiterhelfen, aber vielleicht haben wir ja dasselbe Problem.

viewtopic.php?f=15&t=2534

Wenn ich meine drei Ikea Lichtpanele als Gruppe anspreche, reagieren nicht immer alle Teilnehmer zuverlässig.
Ich verwende jedoch nicht das RaspBee Modul sondern den CC2531 mit ZigBee2MQTT.

Meine Vermutung ist immer noch, dass es sich um ein Zeitproblem handelt.

Grüße
Christian

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von KellerK1nd »

Eventuell ein Delay einbauen? Ich hab das bei der HUE Bridge, kommen zu viele Signale, dann verschluckt die Bridge die Signale, bzw. kommen gar nicht an. Darum hab ich mir Timer im Millisekunden Bereich eingebaut um ein Signaldelay zu erzeugen.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

OH-RNHome
Beiträge: 9
Registriert: 24. Okt 2019 20:41
Answers: 0

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von OH-RNHome »

Wenn ich meine drei Ikea Lichtpanele als Gruppe anspreche, reagieren nicht immer alle Teilnehmer zuverlässig.
Ich verwende jedoch nicht das RaspBee Modul sondern den CC2531 mit ZigBee2MQTT.

Meine Vermutung ist immer noch, dass es sich um ein Zeitproblem handelt.
Hallo Christian,

danke für Deine Antwort Deine Vermutung scheint richtig zu sein ich habe zu Testzwecken mal eine Rule erstellt die alle Lampen einzeln ausschaltet bis jetzt gab es noch keine Probleme.

@ KellerKind
Kannst Du mir eventuell auf die Sprünge helfen mit den Delays?

Gruß Olaf
"Nichts ist unmöglich ... außer meine Frau will es nicht" :D
Hardware: Rasp4 mit OH2.5M4, Raspi-Modul, Sonoff-RFBridge, Sonoff, Shelly, Tradfri, CometDECT, Fritz!Box
Projekte: Heizungssteuerung, Licht, Saugroboter, Haustürüberwachung, Ab-Anwesenheit, Google Home Einbindung...

OH-RNHome
Beiträge: 9
Registriert: 24. Okt 2019 20:41
Answers: 0

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von OH-RNHome »

Wenn ich meine drei Ikea Lichtpanele als Gruppe anspreche, reagieren nicht immer alle Teilnehmer zuverlässig.
Ich verwende jedoch nicht das RaspBee Modul sondern den CC2531 mit ZigBee2MQTT.

Meine Vermutung ist immer noch, dass es sich um ein Zeitproblem handelt.
Hallo Christian,

danke für Deine Antwort Deine Vermutung scheint richtig zu sein ich habe zu Testzwecken mal eine Rule erstellt die alle Lampen einzeln ausschaltet bis jetzt gab es noch keine Probleme.

@ KellerKind
Kannst Du mir eventuell auf die Sprünge helfen mit den Delays?

Gruß Olaf
"Nichts ist unmöglich ... außer meine Frau will es nicht" :D
Hardware: Rasp4 mit OH2.5M4, Raspi-Modul, Sonoff-RFBridge, Sonoff, Shelly, Tradfri, CometDECT, Fritz!Box
Projekte: Heizungssteuerung, Licht, Saugroboter, Haustürüberwachung, Ab-Anwesenheit, Google Home Einbindung...

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von KellerK1nd »

Ich hab zwischen den eigentlichen Befehlen die gesendet werden kleine Timer eingebaut.

Als Beispiel:

Code: Alles auswählen

Licht1.sendCommand(ON)
Timer = createTimer(now.plusMillis(600))[|
Licht2.sendCommand(ON)
Timer = null
]
Timer = createTimer(now.plusMillis(600))[|
Licht3.sendCommand(ON)
Timer = null
]
....
Das schöne, finde ich daran, man kann gezielt die Lampen anfahren und je nach Installation eine Art „Lauflicht“ bauen.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von udo1toni »

Die einfachste Möglichkeit, ein Delay einzubauen:

Items:

Code: Alles auswählen

Group:Dimmer gTradfri "Alle Tradfri"
Dimmer dTradfri_01 "Tradfri Lampe 1 [%d %%]" (gTradfri)
Dimmer dTradfri_02 "Tradfri Lampe 2 [%d %%]" (gTradfri)
Dimmer dTradfri_03 "Tradfri Lampe 3 [%d %%]" (gTradfri)

Dimmer pTradfri "Proxy Tradfri"
Rule:

Code: Alles auswählen

rule "control Tradfri Group"
when
    Item pTradfri changed
then
    gTradfri.members.forEach[i|
        i.sendCommand(pTradfri.state as Number)
        Thread::sleep(100)
    ]
end
Du musst natürlich immer das Proxy Item verwenden, um die Gruppe zu steuern, keinesfalls die Gruppe. Man könnte auf die Idee kommen, dioe Gruppe selbst zu verwenden, aber die Gruppe sendet dann selbst die Befehle (ohne Delay) und die Rule zeitgleich auch noch mal (mit Delay), was dann zu noch mehr Durcheinander führt.

Die Zeit in Thread::sleep() kannst Du natürlich anpassen, da ist Platz für Experimente (wieviele Telegrammme/Sekunde verträgt Tradfri?)

Noch kurz ein Hinweis: Thread::sleep() sollte keinesfalls für Verzögerungen über 500 Millisekunden verwendet werden, auch wenn das natürlich möglich ist. Der Grund ist hier, dass openHAB 5 Threads für die Rule-Abarbeitung zur Verfügung hat. Eine laufende Rule blockiert also einen Thread, und die Bezeichnung sleep ist wörtlich zu nehmen, der Thread ist weiterhin blockiert und schläft halt. Wenn man also z.B. eine Rule hat, die mit Thread::sleep(120000) zwei Minuten wartet, bis sie mit der Arbeit fortfährt, und diese Rule vielleicht außerdem mehrfach aufgerufen werden kann, kann die Abarbeitung jeglicher anderer Rules verhindert werden, indem die Rule einfach fünf mal startet wird.
Die Alternative ist dann, einen Timer zu verwenden. Timer werden im Scheduler von openHAB verwaltet und benötigen keinen Thread, bis der Timer abläuft (dann natürlich schon, um den hinterlegten Code auszuführen).

Man könnte die Rule oben genauso auch mit einem Timer realisieren. Nicht empfohlen für kleine Zeitspannen (unter 500Millisekunden):

Code: Alles auswählen

var Timer tTradfri = null

rule "control Tradfri Group"
when
    Item pTradfri changed
then
    tTradfri?.cancel
    tTradfri = createTimer(now.plusMillis(500), [ |
        if(gTradfri.members.filter[i|i.state != pTradfri.state].size > 0) {
            gTradfri.members.filter[i|i.state != pTradfri.state].head.sendCommand(pTradfri.state as Number)
            tTradfri.reschedule(now.plusMillis(500))
        } else
            tTradfri = null
    ]
end
Dieses Konstrukt wird die Lampen solange ansteuern, bis alle Lampen auf dem korrekten Wert sind. Falls man die Tradfri Items mit autoupdate="false"konfiguriert, kann es zu einem Problem kommen, wenn eine der Lampen nicht mehr erreichbar ist, denn das betreffende Item wird dann seinen Status nicht mehr ändern. In der Folge bleibt die Rule an dieser Lampe hängen. Will man das vermeiden, muss man eine zusätzliche Variable als Zeiger nutzen, aber auch hier lauern Fallstricke ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von udo1toni »

KellerK1nd hat geschrieben: 26. Okt 2019 08:13 Ich hab zwischen den eigentlichen Befehlen die gesendet werden kleine Timer eingebaut.

Als Beispiel:

Code: Alles auswählen

Licht1.sendCommand(ON)
Timer = createTimer(now.plusMillis(600))[|
Licht2.sendCommand(ON)
Timer = null
]
Timer = createTimer(now.plusMillis(600))[|
Licht3.sendCommand(ON)
Timer = null
]
....
Das schöne, finde ich daran, man kann gezielt die Lampen anfahren und je nach Installation eine Art „Lauflicht“ bauen.
Da Du mehrere Timer der gleichen Variablen zuweist, wird das so nicht funktionieren. Da die Timer unmittelbar hintereinander angelegt werden, gibt es auch nicht das erhoffte Delay ;) also bis auf das erste Mal...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von KellerK1nd »

udo1toni hat geschrieben: 26. Okt 2019 08:39
KellerK1nd hat geschrieben: 26. Okt 2019 08:13 Ich hab zwischen den eigentlichen Befehlen die gesendet werden kleine Timer eingebaut.

Als Beispiel:

Code: Alles auswählen

Licht1.sendCommand(ON)
Timer = createTimer(now.plusMillis(600))[|
Licht2.sendCommand(ON)
Timer = null
]
Timer = createTimer(now.plusMillis(600))[|
Licht3.sendCommand(ON)
Timer = null
]
....
Das schöne, finde ich daran, man kann gezielt die Lampen anfahren und je nach Installation eine Art „Lauflicht“ bauen.
Da Du mehrere Timer der gleichen Variablen zuweist, wird das so nicht funktionieren. Da die Timer unmittelbar hintereinander angelegt werden, gibt es auch nicht das erhoffte Delay ;) also bis auf das erste Mal...
Richtig. Das war jetzt nur schnell hingetippt und sollte nur exemplarisch dienen.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: Openhab Raspbee-Modul Tradfri-Lampen

Beitrag von curius »

Hallo,

habe soeben versucht ein Delay einzubauen nach der Logik von udo1toni => Besten Dank noch mal dafür...
Irgendwas scheint aber in meiner Syntax nicht zu passen.

Ich bekomme nämlich folgende Fehlermeldung:

Code: Alles auswählen

2019-11-27 21:00:04.812 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Lichtgruppe - EG': Could not invoke method: org.eclipse.smarthome.model.script.actions.BusEvent.sendCommand(org.eclipse.smarthome.core.items.Item,java.lang.String) on instance: null
Meine Rule sieht wie folgt aus:

Code: Alles auswählen

rule "Lichtgruppe - EG"
when
    Item plpanel_EG changed
then
    glpanel_EG.members.forEach[i|
        i.sendCommand(plpanel_EG.state)
        Thread::sleep(400)
    ]
end
... und meine Items:

Code: Alles auswählen

Group:Switch:OR(ON, OFF) glpanel_EG "Lichtpanele - EG" <light> (Home)
Switch plpanel_EG "Proxy Lichtpanel"
Das Gruppenitem "glpanel_EG" ist den einzelnen Lampen zugeordnet.
Im Beispiel von udo1toni handelt es sich um ein Dimmer Item, bei mir wäre es ein Switch.
In der Rule habe ich dementsprechend das ".state to number" weggelassen => da es sich ja nur um ein ON bzw. OFF handelt.

Könnt ihr mir sagen, wo der Fehler liegt?

Besten Dank!

Grüße
Christian

Antworten