Openhab Raspbee-Modul Tradfri-Lampen
-
- Beiträge: 9
- Registriert: 24. Okt 2019 20:41
Openhab Raspbee-Modul Tradfri-Lampen
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
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"
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...
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...
-
- Beiträge: 78
- Registriert: 1. Aug 2019 10:10
Re: Openhab Raspbee-Modul Tradfri-Lampen
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
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
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Openhab Raspbee-Modul Tradfri-Lampen
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
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
-
- Beiträge: 9
- Registriert: 24. Okt 2019 20:41
Re: Openhab Raspbee-Modul Tradfri-Lampen
Hallo Christian,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.
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"
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...
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...
-
- Beiträge: 9
- Registriert: 24. Okt 2019 20:41
Re: Openhab Raspbee-Modul Tradfri-Lampen
Hallo Christian,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.
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"
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...
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...
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Openhab Raspbee-Modul Tradfri-Lampen
Ich hab zwischen den eigentlichen Befehlen die gesendet werden kleine Timer eingebaut.
Als Beispiel:
Das schöne, finde ich daran, man kann gezielt die Lampen anfahren und je nach Installation eine Art „Lauflicht“ bauen.
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
]
....
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
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
- udo1toni
- Beiträge: 13987
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Openhab Raspbee-Modul Tradfri-Lampen
Die einfachste Möglichkeit, ein Delay einzubauen:
Items:
Rule:
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):
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
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"
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
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
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
- udo1toni
- Beiträge: 13987
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Openhab Raspbee-Modul Tradfri-Lampen
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...KellerK1nd hat geschrieben: ↑26. Okt 2019 08:13 Ich hab zwischen den eigentlichen Befehlen die gesendet werden kleine Timer eingebaut.
Als Beispiel:Das schöne, finde ich daran, man kann gezielt die Lampen anfahren und je nach Installation eine Art „Lauflicht“ bauen.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 ] ....
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Openhab Raspbee-Modul Tradfri-Lampen
Richtig. Das war jetzt nur schnell hingetippt und sollte nur exemplarisch dienen.udo1toni hat geschrieben: ↑26. Okt 2019 08:39Da 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...KellerK1nd hat geschrieben: ↑26. Okt 2019 08:13 Ich hab zwischen den eigentlichen Befehlen die gesendet werden kleine Timer eingebaut.
Als Beispiel:Das schöne, finde ich daran, man kann gezielt die Lampen anfahren und je nach Installation eine Art „Lauflicht“ bauen.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 ] ....
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
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
-
- Beiträge: 78
- Registriert: 1. Aug 2019 10:10
Re: Openhab Raspbee-Modul Tradfri-Lampen
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:
Meine Rule sieht wie folgt aus:
... und meine Items:
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
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
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
Code: Alles auswählen
Group:Switch:OR(ON, OFF) glpanel_EG "Lichtpanele - EG" <light> (Home)
Switch plpanel_EG "Proxy Lichtpanel"
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