Hobbyproject: verstuur ir-signalen via je netwerk

In mijn vorige blogs zijn al een aantal mogelijkheden van Domoticz beschreven en nu is het tijd om nog meer te automatiseren: met afstandbedieningen.

Waar je er in huis ook ongetwijfeld veel van hebt liggen, zijn afstandbedieningen. Je TV, versterker, tuner, Mediabox, AppleTV, enzovoort. De meeste van deze afstandbedieningen werken via infrarood (ir). Zou het nou niet handig zijn om deze signalen ook vanuit Domoticz te versturen, zodat je met één druk op de knop de TV en versterker aanzet en ook op de juiste ingangen?

Gelukkig kan dat.

Dit heb je nodig:

Natuurlijk zijn hier kant-en-klare oplossingen voor, bijvoorbeeld de Harmony Hub van Logitech, maar zelf maken is uiteraard veel leuker. Wat er voor nodig is, is een Arduino, een ethernet shield en een IR led. (Voor het gemak kun je ook een IR receiver erbij bestellen zodat je ook signalen kunt uitlezen.) 

Volgens onderstaand schema moet dit even in elkaar geklust worden:

Arduino

Op de Arduino moet de code van EthernetIRSender gezet worden. Via de Arduino IDE van Arduino is dat eenvoudig te doen. Let er hierbij op dat je ook de IRLib library beschikbaar hebt en dan ook mijn gemodificeerde variant, voor de ondersteuning van verschillende frequencies.

Als dit allemaal gelukt is, is het tijd om signalen te proberen te versturen. De code ondersteunt nu RC5 (o.a. Philips), NEC en Samsung protocol signalen. Er zijn verschillende soorten protocollen voor het versturen van IR signalen. Van het apparaat dat je hebt, is het wellicht terug te vinden en anders komt die IR receiver nu van pas. Op diverse sites zijn ook veel signalen terug te vinden, bijvoorbeeld bij Remote Central.

Haal meer uit je afstandbediening

Het leuke is ook dat je nu meer mogelijkheden hebt dan met je originele afstandbediening. Veel apparaten ondersteunen namelijk meer IR signalen dan er door je afstandbediening kunnen worden verstuurd. Bijvoorbeeld de aan/uit knop: als de TV aan is, gaat deze uit. Als de TV uit is, gaat deze aan. En dat met hetzelfde signaal. Dat is natuurlijk niet handig als je zeker wil weten dat de TV uit is. Er bestaan dus ook signalen die de TV alleen uit zetten. Deze zogenoemde Discrete IR codes zijn via bovenstaande link van Remote Central vaak wel te vinden. Ook een specifieke input van je TV selecteren kan dan plotseling wel mogelijk zijn. Het zou ook zo maar kunnen dat de 'geheime' service-menu's nu ook bereikbaar zijn.

Webinterface benaderen

Als de Arduino werkt (en op het netwerk is aangesloten), kun je nu de webinterface benaderen van de Arduino. Standaard is het ip 192.168.1.177, maar dat is naar wens aan te passen in de .ino file.

Op de nu zichtbare pagina zijn wat voorgeprogrammeerde commando's te zien. Je kunt deze nu uitproberen, of kiezen om een eigen IR-commando te versturen. Zie de readme.md voor meer informatie over hoe de request wordt opgebouwd.

Door nu een eenvoudig bash script te maken met alle commando's die uitgevoerd moeten worden, kunnen in één keer alle gewenste apparaten worden ingeschakeld:

In dit script wordt er een Receiver aangezet, een TV aangezet, de juiste input op de receiver geselecteerd en ook de juiste input van de TV. Mogelijk staan de apparaten al op de juiste input, of misschien zelfs al aan. Maar door de juiste codes wordt de TV dus niet uitgezet als deze al aan stond.

In domoticz heb ik een scene die de appleTV inschakelt en waar nu ook bovenstaand script wordt toegevoegd:

Apparaten uitschakelen

Voor het uitschakelen staat er een soortgelijk script, maar dan met de codes om de apparaten uit te schakelen.

Ook dat deel is overigens geautomatiseerd. In mijn geval draait Kodi op OpenElec. Daarbij wordt er bij het afsluiten een script uitgevoerd en daarin kunnen we natuurlijk de scene in Domoticz weer schakelen. 

In het geval van een 'halt' of 'poweroff' wordt nu de scene in Domoticz uitgeschakeld, en daarmee wordt weer het script uitgevoerd om alle apparaten uit te zetten.

Omdat mijn AppleTV het geluidssignaal digitaal doorgeeft aan de receiver is het niet mogelijk om vanuit Kodi het geluid harder en zachter te zetten. Tenzij je de keymapping wat aanpast en daarin een script aanroept dat weer een http request doet naar je Arduino, die op zijn beurt de receiver harder danwel zachter zet. Toegegeven: dit is niet de meest snelle manier om je volume in te stellen, maar je hebt tenminste maar 1 afstandbediening nodig. 

Het relevante deel van de keymap.xml van Kodi, vind je hier.

Veel succes!

[Henri is ontwikkelaar bij Infi.]

Gezocht: ondernemende nerds!

› Wil jij je hersens bij ons laten kraken?

Wil je iets waarmaken met Infi?

Wil jij een eigen webapplicatie of mobiele app waarmee jij het bij anderen maakt?

Waargemaakt door de nerds van Infi.
Nerds met liefde voor softwareontwikkeling en die kunnen communiceren. En heel belangrijk: wat we doen, doen we met veel lol!

Wij willen het fixen. Laat jij van je horen?

Voor wie heb je een vraag?