Effetto WOW con un vecchio telecomando e Home Assistant
di Vincenzo Caputo
14 Dicembre 2018
L'angolo dei lettori
Benvenuti nella rubrica "l'angolo dei lettori". Questo spazio è una sezione del blog che permette a chiunque di scrivere un articolo o realizzare un video, effettuare prove e test che riguardano il mondo della tecnologia e proporne la pubblicazione su queste pagine.
Oggi Nicola Bertelli, che ringraziamo per questa splendida guida, ci spiegherà come poter elaborare un segnale ir emesso da un telecomando di una televisione (o di altri elettrodomestici) per lanciare dei comandi al nostro Home Assistant in base alle nostre necessità.
Alla pressione di un tasto riusciremo così a richiamare script, accendere o spegnere degli switch, accendere luci del colore che più interessa, ma anche andare a dimmerare delle luci.
Insomma l’effetto meraviglia è garantito!!
Come leggerete poi, ho cercato di rendere il procedimento il più semplice e veloce possibile da settare, in modo che veramente tutti possano almeno provare questo progetto.
Lista della spesa:
-
1 arduino o un Nodemcu (o Wemos D1 e simili)https://amzn.to/2BbzNqYhttps://amzn.to/2zoYKyY
-
1 ricevitore ir tipo questohttps://amzn.to/2BcZjvZ
-
1 Raspberry o, come nel mio caso, il mini-pc di Hassio visto qui,https://amzn.to/2RpiM3a
-
Cavetti jumper:https://amzn.to/2PVNC70
-
un telecomando di una tv / stereo, ecc.. che non usate
Nulla vieta di utilizzare anche due telecomandi contemporaneamente !!
ATTENZIONE su alcuni telecomandi ad ogni tasto è assegnato più di un tipo di segnale, questi telecomandi non sono adattabili a questo progetto
Fase 1: programmazione del Nodemcu o dell’ Arduino
Scaricare la mia repository github (https://github.com/nicola-bertelli/ir_home_assistant) con questo link diretto: https://github.com/nicola-bertelli/ir_home_assistant/archive/master.zip
se utilizzate un Arduino entrate nella cartella Arduino, altrimenti aprite la cartella Nodemcu, al loro interno trovate lo sketch da caricare nella vostra schedina.
Per il Nodemcu dobbiamo anche scaricare la libreria IRremoteESP8266 con questo link diretto:
https://github.com/markszabo/IRremoteESP8266/archive/master.zip
I collegamenti sono a dir poco banali:
ATTENZIONE: quelli rappresentati sono i sensori più diffusi, controllate comunque lo schema di collegamento del prodotto acquistato
L’alimentazione è il 5v per l’Arduino e 3.3v per il Nodemcu, (non usate il 5v per il nodemcu), per i segnali in uscita ho scelto il pin 11 per Arduino e pin D6 per Nodemcu.
Una volta collegato il sensore e caricato lo sketch, verifichiamo dalla stampa seriale che, premendo un pulsante del telecomando in direzione della schedina, venga visualizzato il codice corrispondente al comando generato.
Per terminare non ci resta che collegare il microcontrollore al USB del Raspberry.
Ecco il risultato finale
Per il mini-pc:
Fase 2: programmazione del Raspberry o del nostro Debian-Hassio
Come sempre vi rimando a questa guida dove spiego approfonditamente come accedere da remoto e come modificare i file e le cartelle del Raspberry: GUIDA
Ciò non toglie che possiate utilizzare il Raspberry in locale o aprendo un collegamente VNC come spiega Vincenzo in quest’altra guida GUIDA .
Apriamo un terminale e digitiamo questi comandi per clonare la mia repository di Ghitub:
sudo apt-get install git python-pip
git clone https://github.com/nicola-bertelli/ir_home_assistant.git
( 5 spazi dopo gitclone )
copiamo il contenuto della cartella raspberry nella home:
cp -R ir_home_assistant/raspberry/telecomando/ ~/
ora installiamo le librerie mancanti:
sudo pip install requests pyserial pyaml
Su raspberry non è necessario, ma su altri sistemi linux potrebbe essere bloccata la comunicazione seriale per l’utente di default, bisogna quindi lanciare il seguente comando da root :
usermod -g dialout nome_utente
dove nome_utente è il nome utente impostato durante l’installazione
adesso entriamo nella cartella telecomando e lanciamo il primo dei tre script che ho creato:
cd ~/telecomando/python trova_seriale.py
Questo, dopo una breve elaborazione, ci mostrerà in quale porta seriale è state collegata la nostra scheda, confermeremo quindi con s se vogliamo che il file di configurazione venga aggiornato con tale valore (consigliato)
apriamo il file config.yaml, presente nella stessa cartella telecomando, con il nostro editor di testi preferito e verifichiamo che accanto a porta_seriale, sotto la chiave node_arduino, sia stato inserito il valore della porta occupata.
Non chiudiamo il file di configurazione, a breve ci tornerà nuovamente utile.
apriamo il nostro Home Assistant ed andiamo a richiedere un tocken in modo da essere autorizzati all’utilizzo delle RESTapi:
Andiamo nella sezione utenti cliccando vicino ad “Home assistant”
Scorriamo fino alla fine della pagina e clicchiamo CREA TOCKEN
assegnamo un nome a piacere:
ci verrà restituito il tocken che inseriremo nel file di configurazione
quindi torniamo al nostro config.yaml ed incolliamo il codice accanto alla voce tocken e già che ci siamo compiliamo anche la sezione relativa all’ host di Home Assistant
salviamo, e teniamo ancora aperto il file di configurazione.
Torniamo al nostro terminale e lanciamo un secondo script:
python ir_arduino.py
lasciando lo script in esecuzione puntiamo il telecomando verso il sensore ir vedremo così comparire i codici che l’Arduino manda via seriale al Raspberry
mano a mano che proviamo tutti i pulsanti potremo così aggiornare il file di configurazione con i comandi che vogliamo lanciare.
Vi consiglio di provare più volte lo stesso pulsante per individuare il codice corretto e verificate soprattutto che il codice non subisca variazioni ad ogni pressione.
Fase 3: configurazione dei comandi
Facendo scorrere il config.yaml avrete notato che ho inserito dei comandi di esempio, ora vi spiego come configurarli.
Potete utilizzare tre chiavi: comando, dimmer, comando_alternato.
La chiave comando permette di lanciare un servizio o di accendere una luce di cui si può impostare colore e luminosità ecco alcuni esempi:
nome_pulsante è un valore a nostro piacerecodice è il codice del segnale IR che ci trasmette l’Arduino ricavato lanciando lo script descritto precedentementeservizio è il servizio di Home Assistant che vogliamo richiamareentita è appunto l’entità di Home Assistant che subisce il servizioluminosita e colore sono settabili utilizzando il servizio light.turn_on , NON è obbligatorio utilizzarli
La chiave dimmer permette di impostare un tasto per aumentare o diminuire la luminosità di un punto luce compatibile: premendo un pulsante il sistema “chiede” ad Home Assistant il valore della luminosità dell’entità stabilita e, in base alle nostre necessità, aumenta o diminuisce l’intensità luminosa di un passo determinato.
Come vedete sotto ho impostato il bilanciere del volume per questa funzione
Dunque skip è il passo con la quale la luminosità aumenta o diminuisceentita è l’entità di Home Assistant compatibile con il dimmerdirezione “+” indica un aumento di luminostà “-” una diminuzione
La chiave comando_alternato permette di usare un unico pulsante per due servizi differenti che vengono richiamati alternativamente
servizio_da_eseguire è il prossimo servizio che verrà lanciato alla pressione del pulsante settato, può essere servizio_uno o servizio_due.
Di conseguenza in servizio e entita del servizio_uno e del servizio_due imposteremo le azioni che verranno alternate.
Fase 4: avvio dei comandi
NB se non si sta usando il Raspberry o comunque l’utente non è “pi” è necessario editare il file telecomando.py e sostituire “/home/pi” con “home/nome_utente” nelle prime righe del file.
Questo, una volta premuto il tasto corrispondente, si occuperà della comunicazione con Home Assistant e stamperà a video i dettagli del servizio e dell’entità.Se il sistema riceve un segnale non elencato lo stamperà e se vogliamo, possiamo aggiungerlo e rappresentarlo a dovere.
NB: non è necessario riavviare lo script ogni volta che modifichiamo il file di configurazione, potremo cioè aggiungere pulsanti o cambiare caratteristiche alle entità in tempo reale. Soprattutto, se più avanti lanciamo in autoavvio il nostro telecomando.py non saremo costretti a riavviare il sistema ad ogni modifica del file config.
Fase 5: auto-avvio dello script telecomando.py
Clonando la mia repository avete anche scaricato il file avvio.sh, se non avete un altro lanciatore di attività iniziale quindi digitiamo:
cp ~/ir_home_assistant/avvio.sh ~/
ora richiamiamo avvio.sh durante il boot del sistema:
sudo contab -e
andiamo in fondo al file mostrato e aggiungiamo la riga:
@reboot sh /home/pi/avvio.sh
per il mini-pc @reboot sh /home/nome_utente/avvio.sh
NB se non si sta usando il Raspberry o comunque l’utente non è “pi” è necessario editare il file avvio.sh e sostituire “/home/pi” con “home/nome_utente”
salviamo, usciamo e riavviamo con
sudo reboot
Se avete qualsiasi tipo di proposta di miglioramento sarà ben accetta, se avete dubbi o perplessità non dovete far altro che commentare l’articolo o il video e sarà mia premura aiutarvi ad ultimare tutti i passaggi.
Ringraziamo ancora Nicola per questa e per tutte le guide che ci sta proponendo e godiamoci il video dove lo stesso Nicola ci mostrerà passo passo tutta la configurazione. Buona visione!
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.