# Utilizzare l'IR interno di CM3-Home con un telecomando ## Prerequisiti Hardware utilizzato TSOP48xx, nel mio caso 4838, collegato in questo modo: <img src="TSOP4838b.jpg" width="512px" height="auto"> Avere funzionate il server mosquitto per la gestione delle code MQTT in localhost E' interessante pubblicare tutti gli eventi provenienti da openhab configurando le direttive "eventbus" nel file /etc/openhab2/services/mqtt-eventbus.cfg: broker=broker1 statePublishTopic=openhab/out/${item}/state commandPublishTopic=openhab/out/${item}/command stateSubscribeTopic=openhab/in/${item}/state commandSubscribeTopic=openhab/in/${item}/command Configurare anche il file /etc/openhab2/services/mqtt.conf: broker1.url=tcp://localhost:1883 broker1.clientId=openhab2 Verificare con il programma mqtt-spy l'arrivo degli eventi sottoscrivendo le varie code, in questo caso openhab/in/# openhab/out/# ## Configurazione Installare il seguente pacchetto: sudo apt-get install lirc Inserire la seguente riga nel path /etc/modules lirc_dev Inserire la seguente direttiva in /boot/config.txt dtoverlay=lirc-rpi,gpio_in_pin=23 Modificare il file /etc/lirc/hardware.conf # # Arguments which will be used when launching lircd LIRCD_ARGS="--uinput" # # Don't start lircmd even if there seems to be a good config file # # START_LIRCMD=false # # # Don't start irexec, even if a good config file seems to exist. # # START_IREXEC=false # # # Try to load appropriate kernel modules LOAD_MODULES=true # # # Run "lircd --driver=help" for a list of supported drivers. DRIVER="default" # # usually /dev/lirc0 is the correct setting for systems using udev DEVICE="/dev/lirc0" MODULES="lirc_rpi" # # # Default configuration files for your hardware if any LIRCD_CONF="" LIRCMD_CONF="" Effettuare un reboot Al riavvio effettuare un test: sudo /etc/init.d/lirc stop mode2 -d /dev/lirc0 Premendo un tasto del telecomando si dovrebbero vedere un output tipo: space 16777215 pulse 877 space 800 pulse 873 space 797 pulse 879 space 798 pulse 1713 space 1636 Se non si vedono caratteri vuol dire che il telecomando non è della frequenza corretta, quindi cambiare telecomando. Ora dobbiamo registrare i codici corrispondenti del telecomando che stiamo usando, quindi lanciamo il seguente comando per "registrare" il file di configurazine corrispondente: irrecord -d /dev/lirc0 ~/lircd.conf Seguire le istruzioni e alla fine verrà creato un file del tipo: begin remote name /home/openhabian/lircd.conf bits 5 flags RC5|CONST_LENGTH eps 30 aeps 100 one 887 786 zero 887 786 plead 899 pre_data_bits 8 pre_data 0xAA gap 107200 toggle_bit_mask 0x800 begin codes KEY_1 0x03 KEY_2 0x04 KEY_3 0x05 KEY_4 0x06 KEY_5 0x07 KEY_6 0x08 KEY_7 0x09 KEY_8 0x0A KEY_9 0x0B KEY_0 0x0C KEY_UP 0x0D KEY_DOWN 0x11 KEY_RIGHT 0x10 KEY_LEFT 0x0E KEY_POWER 0x01 end codes end remote Adesso andiamo a copiare il file nella path corretta: sudo cp ~/lircd.conf /etc/lirc/lircd.conf Effettuamo un restart di lirc: sudo /etc/init.d/lirc restart Adesso se lanciamo il comando irw dobbiamo vedere la decodifica dei tasti che premiamo sul telecomando 0000000000001543 00 KEY_1 /home/openhabian/lircd.conf 0000000000001543 01 KEY_1 /home/openhabian/lircd.conf 0000000000001544 00 KEY_2 /home/openhabian/lircd.conf 0000000000001544 01 KEY_2 /home/openhabian/lircd.conf Andremo ad utilizzare il programma lircrc per ricevere i tasti del telecomando e compiere delle azioni in particolare eseguire un comando ovvero pubblicare su una coda MQTT l'evento. Per fare questo dobbiamo creare e configurare il file nella path: sudo vim /etc/lirc/lircrc completandolo secondo il seguente schema (esempio per i primi due tasti): begin button = KEY_1 prog = irexec config = /usr/bin/mosquitto_pub -h localhost -t openhab/out/ir/command -m key_1 repeat = 0 end begin button = KEY_2 prog = irexec config = /usr/bin/mosquitto_pub -h localhost -t openhab/out/ir/command -m key_2 repeat = 0 end Inserire le seguenti righe nel file /etc/rc.local (da verificare se esiste un path migliore) per permettere l'esecuzione automatica del demone alla partenza del sistema: #Lancio la lettura del telecomando IR /usr/bin/irexec -d & A questo punto quando premiamo il tasto 1 del telecomando verrà pubblicato l'evento key_1 nella coda openhab/out/ir/command del broker in localhost Basta aggiungere la seguente direttiva all'item di openhab che deve reagire alla pressione del tasto1 e del tasto2 (nel mio caso una presa Zwave): Switch WallPlug1_PT_Presa "Wall Plug presa" <poweroutlet> (avgPresa, gPTBagno) {channel="zwave:device:controller:node2:switch_binary", mqtt= "<[broker1:openhab/out/ir/command:command:ON:key_1], <[broker1:openhab/out/ir/command:command:OFF:key_2]", autoupdate="false"} ## Ringraziamenti Un ringraziamento ad Andrea Montefusco per lo studio preliminare su [LIRC](http://www.tanzolab.it/openhab_lirc) e [ir-keytable](http://www.tanzolab.it/ir-keytable) @include='bio_massimiliano_casini'
2018 Ⓒ TanzoLab