Startseite » Zigbee IR Remote mit OpenHAB

Zigbee IR Remote mit OpenHAB

Ein sehr nützliches Tool hab ich per Zufall entdeckt. Es löst Probleme unzureichender Smart-Funktionen von Fernsehern und anderen IR-Fähigen Geräten. Ein IR-Controller, welche per ZigBee angesteuert werden kann.

Hardware

Ich habe den Tuya TS1201 im Einsatz und mit Zigbee2MQTT verbunden.

OpenHAB: Things

Wichtig erscheinen mit lediglich der Batterie-Status und eben der IR-Code, der gesendet werden soll.

	Thing topic irController				"IR Controller"	{
		Channels:
			Type number		: battery			[ stateTopic="+/+/+/+/irController/0x70ac08fffe123370" , transformationPattern="JSONPATH:$.battery" ]
			Type string		: ir_code_to_send	[ commandTopic="tensorpi2/eg/livingRoom/undef/irController/0x70ac08fffe123370/set", transformationPatternOut="MAP:samsungTV.map∩JS:openhabStringVar2zigbeebridge.script?var_name=ir_code_to_send" ]
	}

OpenHAB: Transforms

In den Things werden zwei Transforms verwendet. Diese sind bereits für OpenHAB v. 4.x angepasst. Dementsprechend wird dort noch das JS-Binding gebraucht, damit eines davon ausgeführt werden kann.

openhabStringVar2zigbeebridge.script soll nichts anderes tun, als den zu sendenden code in eine JSON-Variable zu packen:

(function(input,var_name) {
    return "{\"" + var_name + "\": \"" + input + "\" }" ;
})(input,var_name)

samsungTV.map enthält die zu sendenden Codes, passend zu den tasten auf der Fernbedienung. Die Codes habe ich vorher mittels zigbee2mqtt und dem IR-Controller ausgelesen (ggf. weichen eure Codes davon ab):

On=B6wRrBE1ApQG4AED4AsB4BcfQAFAI+APAcAbQAfgCwMH0LesEawRNQLgAxvgCwHgFx9AAUAj4A8BwBtAB+AIAwIGNQI=
Off=B6wRrBE1ApQG4AED4AsB4BcfQAFAI+APAcAbQAfgCwMH0LesEawRNQLgAxvgCwHgFx9AAUAj4A8BwBtAB+AIAwIGNQI=
An=B6wRrBE1ApQG4AED4AsB4BcfQAFAI+APAcAbQAfgCwMH0LesEawRNQLgAxvgCwHgFx9AAUAj4A8BwBtAB+AIAwIGNQI=
Aus=B6wRrBE1ApQG4AED4AsB4BcfQAFAI+APAcAbQAfgCwMH0LesEawRNQLgAxvgCwHgFx9AAUAj4A8BwBtAB+AIAwIGNQI=

1=B8QRxBEzApsG4AED4AsB4BcfwAFAJ+ALAUAXQANAAUAH4AcDB863xBHEETMC4AMX4AsB4BcfwAFAJ+ALAUAXQANAAUAH4AcD4HyHAgYzAg==

2=B6kRqRE0ApgG4AED4AsB4BsfQAFAJ+APAcAbQAfgBwMHxbepEakRNALgAxfgCwHgGx9AAUAn4A8BwBtAB+AEAwIGNAI=

3=B7cRtxEzAp0G4AED4AsB4BcfQAHAI+ALAUAbwAFAC+AHAwfIt7cRtxEzAuADF+ALAeAXH0ABwCPgCwFAG8ABQAvgBAMCBjMC

4=B60RrRE2ApMG4AED4AsB4Bcf4AMBQCvgBwFAE8ADQAHAC8AHB9m3rRGtETYCwA9AB+ALAUAXwAPgFwFAJ+AHAUATwANAAcALB5MGNgKTBjYC

5=B7ARsBEuAqsG4AED4AsB4BsfwAFAK+ALAUAXQANAAUAH4AMDB863sBGwES4C4AMT4AsB4BsfwAFAK+ALAUAXQANAAUAHC6sGLgKrBi4CqwYuAg==

6=B7kRuRE0ApcG4AED4AsB4BcfQAFAI0ABwAfgAwHAE+ADB0ALwAMH8re5EbkRNALAD0AH4AsBQBfAA+APAUAfQAHAB+ADAcAT4AMHC5cGNAKXBjQClwY0Ag==

7=B5cRlxEzAp0G4AED4AsB4BcfwAHAJ+AHAeAHF8APwAcHz7eXEZcRMwLAD0AH4AsBQBfAA+ATAeAPI+AHF8APB50GMwKdBjMC

8=B7kRuRE0ApcG4AED4AsB4BsfQAHAJ+ALAUAbwAFAC+ADAwfxt7kRuRE0AuADE+ALAeAbH0ABwCfgCwFAG8ABQAsLlwY0ApcGNAKXBjQC

9=B6ERoRE2ApEG4AED4AsB4BcfQAHgEyNAG+ADAUAP4AMDB+y3oRGhETYC4AMT4AsB4BcfQAHgEyNAG+ADAUAPC5EGNgKRBjYCkQY2Ag==

0=B7URtRE0ApoG4AED4AsB4Bsf4AMBQC/gBwFAE8ADQAHAC0AHB9q3tRG1ETQCQAvAA+ALAcAbQAfgCwHgBxfgBw9AAUATwANAAQuaBjQCmgY0ApoGNAI=

Source=B60RrRE1ApUG4AED4AsB4Bsf4BcB4AND4AcLB8S3rRGtETUC4AMX4AsB4Bsf4BcB4AND4AQLAgY1Ag==
Quelle=B60RrRE1ApUG4AED4AsB4Bsf4BcB4AND4AcLB8S3rRGtETUC4AMX4AsB4Bsf4BcB4AND4AQLAgY1Ag==

Teletext=B7YRthEzAp4G4AED4AsB4BcfwAHAJ0ABQAvAAUALQAPAAcALQAdAAwfFt7YRthEzAkALwAPgCwHAG0AH4BMBQB9AA0ABwAdAAUALQAPAAcALQAdAA+B8hwIGMwI=

PRE-CH=B54RnhE0ApgG4AED4AsB4B8fwAFAL+ALAUAXQANAAUAHwAMH0beeEZ4RNALAD0AH4AsBQBfAA+ALAeAHG0AP4AsBQBdAA0ABC5gGNAKYBjQCmAY0Ag==

lauter=B7MRsxEzApwG4AED4AsB4Dcf4AMB4ANLwAsH6rezEbMRMwLAD0AH4AsBQBfAA+ALAcAbQAfgFwFAI+AHA+B8hwIGMwI=

leiser=B7kRuREvAqsG4AED4AsB4B8fQAFAK+APAcAbQAfgAwMHx7e5EbkRLwLgAxPgCwHgHx9AAUAr4A8BwBtABwurBi8CqwYvAqsGLwI=

Mute=B8cRxxEvAqgG4AED4AsB4CMfQCvgFwFAI+ADAwfOt8cRxxEvAuADE+ALAeAjH0Ar4BcBQCMLqAYvAqgGLwKoBi8C
Stumm=B8cRxxEvAqgG4AED4AsB4CMfQCvgFwFAI+ADAwfOt8cRxxEvAuADE+ALAeAjH0Ar4BcBQCMLqAYvAqgGLwKoBi8C

CH List=B8gRyBEvAqcG4AED4AsB4B8fQAFAK0ABQAdAA+ADAcAPwAdAAUALB9C3yBHIES8CQAvAA+ALAcAbQAfgCwFAF0ADQAHgAwfAC8ABwA/ABwcvAi8CpwYvAg==

CH up=B6YRphE3ApEG4AED4AsB4BcfQAFAI8AB4AMLQAHAD0AHQANAAUAHwAMHxbemEaYRNwLAD0AH4AsBQBfAA+APAUAfwAHgAwtAAcAPQAdAA0ABC5EGNwKRBjcCkQY3Ag==
weiter=B6YRphE3ApEG4AED4AsB4BcfQAFAI8AB4AMLQAHAD0AHQANAAUAHwAMHxbemEaYRNwLAD0AH4AsBQBfAA+APAUAfwAHgAwtAAcAPQAdAA0ABC5EGNwKRBjcCkQY3Ag==

CH down=B7QRtBE2ApIG4AED4AsB4Bcf4AcBQC/gAwFAD+ADA0AB4AMPB863tBG0ETYC4AMT4AsB4Bcf4AcBQC/gAwFAD+ADA0ABC5IGNgKSBjYCkgY2Ag==

Settings=B8URxREzApsG4AED4AsB4BcfQAFAI0ABQAdAA+ADAcAPwAdAAUALwAMHzLfFEcURMwLAD0AH4AsBQBfAA+APAUAfQAFAB0AD4AMBwA/AB0ABC5sGMwKbBjMCmwYzAg==
Einstellungen=B8URxREzApsG4AED4AsB4BcfQAFAI0ABQAdAA+ADAcAPwAdAAUALwAMHzLfFEcURMwLAD0AH4AsBQBfAA+APAUAfQAFAB0AD4AMBwA/AB0ABC5sGMwKbBjMCmwYzAg==

Home=B7cRtxE1ApUG4AED4AsB4BsfwAHgAytAC8ABQAtAA+AHAUATB863txG3ETUCQAvAA+ALAcAbQAfgCwHgAxdAC+ADA8ABwBPgBwEDlQY1Ag==

Guide=B50RnRExAqMG4AED4AsB4CMfQCvAAeADC+ADAUAXQANAAUAHB8a3nRGdETECQAvAA+ALAcAbQAfgCwFAF+ADA8ABQBPgCwFAFwujBjECMQIxAqMGMQI=

Manual=B7QRtBE0ApgG4AED4AsB4CMf4Bcr4AMBwCsH8Le0EbQRNALAD0AH4AsBQBfAA+ALAcAb4AcH4BcBB5gGNAKYBjQC

Info=B6ARoBE1ApQG4AED4AsB4CMfwCvgFwHAJ0AHB9S3oBGgETUCQAvAA+ALAcAbQAfgCwFAF+AHA+AXAQuUBjUClAY1ApQGNQI=

up=B6oRqhE1ApUG4AED4AsB4Bcf4AsBwDNAAcAL4AMHwAFAEwfHt6oRqhE1AkALwAPgCwHAG0AH4B8BQCtAA0ABQAfgBwPAAUAX4HyHAgY1Ag==
hoch=B6oRqhE1ApUG4AED4AsB4Bcf4AsBwDNAAcAL4AMHwAFAEwfHt6oRqhE1AkALwAPgCwHAG0AH4B8BQCtAA0ABQAfgBwPAAUAX4HyHAgY1Ag==

down=B5wRnBEwAqoG4AED4AsB4Bsf4AcBwDPAAcAPwAfAAUAPB8i3nBGcETACQAvAA+ALAcAbQAfgCwHgCxdAE0ADwAFAC+ADAwswAjACMAIwAqoGMAI=
runter=B5wRnBEwAqoG4AED4AsB4Bsf4AcBwDPAAcAPwAfAAUAPB8i3nBGcETACQAvAA+ALAcAbQAfgCwHgCxdAE0ADwAFAC+ADAwswAjACMAIwAqoGMAI=

left=B8kRyRE0ApgG4AED4AsB4BsfQAFAJ8ABQAtAA8ABwAtAB0ADwAFACwfUt8kRyRE0AkALwAPgCwHAG0AH4AsBwBfAB0ABQAtAA8ABwAtAB0ADCzQCNAI0AjQCmAY0Ag==
links=B8kRyRE0ApgG4AED4AsB4BsfQAFAJ8ABQAtAA8ABwAtAB0ADwAFACwfUt8kRyRE0AkALwAPgCwHAG0AH4AsBwBfAB0ABQAtAA8ABwAtAB0ADCzQCNAI0AjQCmAY0Ag==

right=B54RnhEzAp4G4AED4AsB4BcfQAFAI+ADAUAPQANAAeADB0ALQAPAAUALCPe3nhGeETMCnuBzhwIGMwI=
rechts=B54RnhEzAp4G4AED4AsB4BcfQAFAI+ADAUAPQANAAeADB0ALQAPAAUALCPe3nhGeETMCnuBzhwIGMwI=

Enter=B68RrxEvAqwG4AED4AsB4Bcf4AMBQCtAAUAHQANAAUAHwANAAUALwAFACwfBt68RrxEvAkALwAPgCwHAG0AH4BcBwCNAB0ADQAFAB8ADQAFACwsvAi8CLwIvAqwGLwI=
OK=B68RrxEvAqwG4AED4AsB4Bcf4AMBQCtAAUAHQANAAUAHwANAAUALwAFACwfBt68RrxEvAkALwAPgCwHAG0AH4BcBwCNAB0ADQAFAB8ADQAFACwsvAi8CLwIvAqwGLwI=

Return=B6MRoxE1ApQG4AED4AsB4Bcf4AMBwCtAAUALQAFAB8ADwAFAD0ABQAcHw7ejEaMRNQJAC8AD4AsBwBtAB+ADAQJ0AjXgCAFAI0ADQAHgAwdAC0ADwAELlAY1AjUCNQKUBjUC

Exit=B7wRvBEwAqUG4AED4AsB4BsfQAHAJ0ABQAvgAwHgAw/AC0AHQAMH7Le8EbwRMAJAC8AD4AsBwBtAB+ALAcAXQAdAA0ABwAfAAeADD8ALB6UGMAKlBjAC

A=B7gRuBE2Ao8G4AED4AsB4BcfwAHAJ0AB4A8LQAFAG8ABQAsHx7e4EbgRNgJAC8AD4AsBwBtAB+ATAUAfQANAAUAHQANAAUAHQAPAAeAECwIGNgI=

B=B7ARsBE2ApEG4AED4AsB4BcfwAFAJ0ABwAfAAUAPQANAAeADB0ALQAMHw7ewEbARNgJAC8AD4AsBwBtAB+ATAcAfwAfAAUAPQANAAeADBweRBjYCkQY2Ag==

C=B7cRtxE2ApMG4AED4AsB4BsfQAFAJ0ABwAfgAwHAE+ADB0ALQAMHzbe3EbcRNgJAC8AD4AsBwBtAB+ALAcAX4AcH4AMB4AcbC5MGNgKTBjYCkwY2Ag==

D=B8MRwxE1ApMG4AED4AsB4BcfQAHAI0ABQAvgAwHgAw/AC0AHwAMHybfDEcMRNQLAD0AH4AsBQBfAA+APAeADH0AL4AMB4AMPwAsLkwY1ApMGNQKTBjUC

PIC Size=B58RnxE1ApQG4AED4AsB4BcfQAHgAyPAC8ABQA/gCwFAF0ADB823nxGfETUCQAvAA+ALAcAbQAfgDwFAG+AHA8ABQBfgCwEHlAY1ApQGNQI=

Picture=B7oRuhEyAqAG4AED4AsB4Bcf4AMBQCtAAcAHQAFAC8ADQAFAC0ABQAdAAwfPt7oRuhEyAkALwAPgCwHAG0AH4BcBwCPAB0ABQAvAA0ABQAsLMgIyAqAGMgKgBjIC

AD/Subt=B68RrxE1ApQG4AED4AsB4BsfQAFAJ8AB4AMLQAHAD0AHQANAAUAHQAMHxbevEa8RNQJAC8AD4AsBwBtAB+ALAcAXwAdAAeADC0ABwA9AB0ADCzUCNQKUBjUClAY1Ag==

Stop=B58RnxE1ApMG4AED4AsB4BcfQAHAI+ADAUATQAHAB0ABQAvAA0ABQAsHyLefEZ8RNQJAC8AD4AsBwBtAB+APAUAbQAPgAwHAD8AHQAFAC8ADBzUCNQKTBjUC

Zurückspulen=B7MRsxE1ApQG4AED4AsB4BsfQAFAJ+ADAeADD8ALQAfAA0ABQAsH07ezEbMRNQJAC8AD4AsBwBtAB+ALAcAXwAfAAeADD8ALQAfAAwc1AjUClAY1Ag==
Zurück=B7MRsxE1ApQG4AED4AsB4BsfQAFAJ+ADAeADD8ALQAfAA0ABQAsH07ezEbMRNQJAC8AD4AsBwBtAB+ALAcAXwAfAAeADD8ALQAfAAwc1AjUClAY1Ag==

Play=B8ERwRExAqEG4AED4AsB4BcfQAFAI0ABwAdAAcAL4AsH4AMTB9u3wRHBETECQBPAA+ALAcAbQAfgDwHAG8AHQAHAC+ALBwuhBjECMQIxAqEGMQI=

Pause=B7YRthE1ApMG4AED4AsB4BcfQAFAI0ABwAdAAcAL4AsH4AMTB/a3thG2ETUCQBPAA+ALAcAbQAfgDwHAG8AHQAHAC+ALBwuTBjUCNQI1ApMGNQI=

Vorspulen=B5URlRE0ApkG4AED4AsB4Bcf4AMBQCvAAcALQAfAA0AB4AcLB+23lRGVETQCwBdAB+ALAUAXwAPgFwFAJ8ABwAtAB8ADQAHgBAsCBjQC
Vor=B5URlRE0ApkG4AED4AsB4Bcf4AMBQCvAAcALQAfAA0AB4AcLB+23lRGVETQCwBdAB+ALAUAXwAPgFwFAJ8ABwAtAB8ADQAHgBAsCBjQC

Teile der Codes scheinen irrelevant, da sie sich bei jeder Messung unterscheiden. Nur bestimmte Bereiche der Zeichenketten bleiben immer gleich.

OpenHAB: Items

Ich fasse die Items zu einer Item-Group zusammen. Diese entsprechen immer einem realen Gegenstand. In diesem Fall: dem Fernseher.

Die Lautstärke muss von den anderen Tasten getrennt werden, da Alexa sonst nicht damit klar kommt. Ansonsten definiere ich hier einfach, welche Sprachbefehle akzeptiert werden.

Die Batterie wird aufgrund der semantischen Definition automatisch überwacht.

Group		igSamsungTV							"Fernseher"						<screen>		(sgLivingRoom)["Television"]				{ alexa="Television" }
Number:Dimensionless	irController_battery		"Batterie [%.1f %%]" 		<Battery>		(igSamsungTV)["Battery","Measurement","Energy"]						{ channel="mqtt:topic:myMosquitto:irController:battery" }
String					irController_send			"Taste"										(igSamsungTV)														{
	channel="mqtt:topic:myMosquitto:irController:ir_code_to_send",
	alexa="Mode" [ supportedModes="On,Off,An,Aus,1,2,3,4,5,6,7,8,9,0,Teletext,Source,Quelle,Mute,Stumm,Einstellungen,Settings,hoch,runter,links,rechts,OK,Enter,Home,Return,Exit,A,B,C,D,Stop,Zurück,Zurückspulen,Play,Weiter,Pause,Vorspulen" ]
}
String					irController_LautstRke		"Lautstärke"				<SoundVolume>	(igSamsungTV)["Control"]	{
	channel="mqtt:topic:myMosquitto:irController:ir_code_to_send",
	alexa="VolumeStep" [ VOLUME_UP="lauter", VOLUME_DOWN="leiser" ]
}

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..

Translate »