Openhab + DeConz + Ikea Tradfri On/Off switch

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
bohnehouse
Beiträge: 17
Registriert: 3. Okt 2020 12:30

Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von bohnehouse »

Hallo zusammen,

ich hänge mal wieder etwas und komme nicht weiter:

Ich habe Openhab 3 mit einem Conbee 2 Stick am Laufen. Darüber habe ich schon mehrere schaltbare Steckdosen von Ikea und Xiaomia Aqara Sensoren eingebunden --> funktioniert soweit.
Nun möchte ich ebenfalls über einen Ikea Tradfri E1743 On/off switch eine der Steckdosen schaltbar machen.

Der Schalter wurde mir nach dem Pairing direkt in meiner Inbox angezeigt und ist unter Things auch online.

Nun habe ich folgende Items angelegt:

Code: Alles auswählen

Number      OfficeButtonEvent           "Büro Schalter [%s]"            <office>    (gOffice)       {channel="deconz:switch:00212E05B7C2:XXXXXXXXXXXXXXXXXXXXXX:buttonevent"}
Switch      OfficeButton                "Büro Schalter"                 <office>    (gOffice)       {channel="deconz:switch:00212E05B7C2:XXXXXXXXXXXXXXXXXXXXXX:button"}
Um das Ganze zu testen, habe ich eine Rule erstellt, die auf auf den Buttonevent reagieren und einen Logfile-Eintrag erstellen soll:

Code: Alles auswählen

rule "Buero OnOff_1"
when
    Channel "deconz:switch:00212E05B7C2:XXXXXXXXXXXXXXXXXXXXXX" triggered
then
    logInfo("switch.rules", "test")
end
Im Log erscheint leider kein Eintrag.

Jemand eine Idee wo hier der Fehler sein könnte bzw. wie ich überprüfen kann, ob der Trigger auslöst?


Danke und Gruß,
Daniel

enosworld
Beiträge: 1
Registriert: 10. Jun 2021 12:36

Re: Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von enosworld »

Hi Daniel,

ist zwar schon etwas her dein Post, aber ich hatte mit dem Switch dasselbe Problem.

Mit OH3 wollte ich einen Timer starten, wenn auf I gedrückt wird. Wird nochmal auf I gedrückt sollte der Timer von neuem Starten. Ein druck auf O sollte den Timer deaktivieren. Also habe ich mich für eine klassisch Rule entschieden. Die Vorlage kommt aus der Doku.

Evtl. fehlt bei dir nur das :buttonevent am Ende?

Bei mir erscheint im log (/var/log/openhab/events.log) so etwas, wenn ich den Schalter drücke:

Code: Alles auswählen

[INFO ] [openhab.event.ChannelTriggeredEvent ] - deconz:switch: yyyy:xxxxx:buttonevent triggered 2002

Code: Alles auswählen

rule "timer"
when
// changed reagiert nur, wenn vorher der andere Knopf gedrückt wurde
//    Item SchalterTRADFRI_Button changed

// received update funktioniert bei mir genauso wie der Channel triggered. Feuert also auch bei jedem Knopfdruck.
//    Item SchalterTRADFRI_Button received update

// Der funktioniert auch bei jedem Knopfdruck.
    Channel "deconz:switch:yyyy:xxxxx:buttonevent" triggered
then
 ...
Ansonsten bin ich von dem Ikea Button begeistert, da er sowohl den kurzen, als auch zwei Events beim langen Druck ausspuckt:
  • 1002 = einmal auf on gedrückt
  • 1001 = lange auf on gedrückt, start
  • 1003 = lange auf on gedrückt, losgelassen
  • 2002 = einmal auf off gedrückt
  • 2001 = lange auf off gedrückt, start
  • 2003 = lange auf off gedrückt, losgelassen
Viele Grüße,
eno

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von oh73 »

Hallo,
war gestern bei Ikea und hab mir zum Testen mal die Runde Fernbedienung mit den Fünf Tasten gekauft.

mit der Phoscon App anlernen, Thing TRÄDFRI Fernbeding mit Channel Button installiet.

eine Rule erstellt, wo ich mit jeder Taste einen Schalter schalten kann.
5 Items als Hilsschalter.

Code: Alles auswählen

rule "Ikea_FB_Button2" 
   when Channel "deconz:switch:00212e072015:804b50fffef758d1011000:buttonevent"  triggered
	
then
	//logInfo("Teste Ikea","FB "+TRADFRIFernbedienungIKEAofSweden_Button.state)
	if (TRADFRIFernbedienungIKEAofSweden_Button.state==5002){
		if (Ikea5.state==ON) {
			Ikea5.sendCommand(OFF)
		}
		if (Ikea5.state==OFF) {
			Ikea5.sendCommand(ON)
		}
	}
	if (TRADFRIFernbedienungIKEAofSweden_Button.state==4002){
		if (Ikea4.state==ON) {
			Ikea4.sendCommand(OFF)
		}
		if (Ikea4.state==OFF) {
			Ikea4.sendCommand(ON)
		}
	}
	if (TRADFRIFernbedienungIKEAofSweden_Button.state==3002){
		if (Ikea3.state==ON) {
			Ikea3.sendCommand(OFF)
		}
		if (Ikea3.state==OFF) {
			Ikea3.sendCommand(ON)
		}
	}
	if (TRADFRIFernbedienungIKEAofSweden_Button.state==2002){
		if (Ikea2.state==ON) {
			Ikea2.sendCommand(OFF)
		}
		if (Ikea2.state==OFF) {
			Ikea2.sendCommand(ON)
		}
	}
	if (TRADFRIFernbedienungIKEAofSweden_Button.state==1002){
		if (Ikea1.state==ON) {
			//sendHttpGetRequest("http://192.168.178.23/command?XC_FNC=Send2&type=CODE&code=190800810005001903004400e300d9004e0044090100010101000100010001010100010000000000000000010102")
			Ikea1.sendCommand(OFF)
		}
		else {
			//sendHttpGetRequest("http://192.168.178.23/command?XC_FNC=Send2&type=CODE&code=190800810005001903004400e300d9004e0044090100010101000100010101000100010000000000000101000002") 
			Ikea1.sendCommand(ON)
		}
	}
end
funktioniert soweit alles ganz gut.

Problem hab ich nur wenn ich eine Taste zu lange drücke!
z.B. die mittlere Taste,
dann springt der Button auf Code : 1001 und ich komme da nicht mehr raus!

nur neu anlernen hilft da bei mir!

mache ich da was falsch, oder wie kommt man da wieder zurück?
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von udo1toni »

Ich gehe mal stark davon aus, dass die Fernbedienung dann in einen Programmiermodus wechselt. Das hat jedenfalls nichts mit openHAB zu tun.

Betreffs Deiner Rule :) Die lässt sich auch etwas schlanker bauen (wobei es noch schlanker ginge...):

Code: Alles auswählen

rule "Ikea_FB_Button2" 
when
    Channel "deconz:switch:00212e072015:804b50fffef758d1011000:buttonevent"  triggered
then
    val String nFBld = TRADFRIFernbedienungIKEAofSweden_Button.state.toString.subString(3,1)
    val String nFBfd = TRADFRIFernbedienungIKEAofSweden_Button.state.toString.subString(0,1)
    if(nFBfd != "2") // kein kurzer Tastendruck
        return;

    switch(nFBfd){
        case "5": Ikea5.sendCommand(if(Ikea5.state==ON) OFF else ON)
        case "4": Ikea4.sendCommand(if(Ikea4.state==ON) OFF else ON)
        case "3": Ikea3.sendCommand(if(Ikea3.state==ON) OFF else ON)
        case "2": Ikea2.sendCommand(if(Ikea2.state==ON) OFF else ON)
        case "1": Ikea1.sendCommand(if(Ikea1.state==ON) OFF else ON)
    }
end
In der ersten Zeile wird die letzte Stelle des Codes in die lokale Konstante nFBld übernommen, in der zweiten Zeile geschieht das selbe für die erste Stelle.
Anschließend werden beide Werte ausgewertet.
Da Du ein Toggle erreichen möchtest, bietet sich hier der ternäre Operator an. Der gesendete Befehl wird vom aktuellen Status abgeleitet.
Wenn Ikea1 bis Ikea5 in einem Group Item gIkea zusammengefasst sind, wäre statt des switch-case auch dies hier möglich:

Code: Alles auswählen

val myLamp = gIkea.members.filter[i|i.name.contains(nFBfd)].head
myLamp.sendCommand(if(myLamp.state == ON) OFF else ON)
myLamp wird Stellvertreter für dasjenige Item, in welchem die Nummer im Namen der Nummer der gedrückten Taste entspricht. Anschließend wird das Item wie gehabt getoggelt.

Code ist nicht geprüft, sollte aber so funktionieren (kommt immer mal vor, dass sich ein kleiner Fehler einschleicht).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von oh73 »

Danke,
kürzer ist immer besser, werde ich mal testen.

Programmiermodus bei längeren Tastendruck könnte sein,
müsste ich mal die Beschreibung, Anleitung von der FB lesen, macht man ja meisten erst wenn was nicht geht. :lol:
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von oh73 »

hab jetzt mal die kurze Version getestet,

musste allerdings etwas ändern damit das funktioniert hat.

1. subString(3,1) und subString(0,1) fünktioniert nicht, auch wenn ich substring komplett klein schreibe.
hab das geändert in

Code: Alles auswählen

    val String nFBld = TRADFRIFernbedienungIKEAofSweden_Button.state.toString.split("00").get(0) 
    val String nFBfd = TRADFRIFernbedienungIKEAofSweden_Button.state.toString.split("00").get(1)
2. switch(nFBfd) muss switch(nFBld) sein.

Variablen vertauscht, wahrscheinlich weil ich substring mit split ersetzt habe.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Openhab + DeConz + Ikea Tradfri On/Off switch

Beitrag von udo1toni »

Ach ja... substring(0,1) sollte das erste Zeichen liefern, substring(3,4) das letzte Zeichen. Die Definition ist von (inklusive) bis (exklusive).
Die Variante mit split() geht aber genauso gut.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten