Scenario: Snap4Home the case of: Alexa, Philips, Sonoff, TP-link, etc. (Italiano)

Obiettivi

Creare una Dahsboard locale attraverso l’uso di nodi nod-red per la domotica

Creare una dashbord remota integrando l’applicazione con Snap4City

Usare MyKPI e IOT App per l’analisi dei dati e la loro visualizzazione sulla dahboard remota

 

Prerequisiti  e componenti necessari allo sviluppo della soluzione

  • Philips HUE Starter kit E27, contenente due lampadine Philips HUE white luce calda regolabile e un Philips HUE bridge, necessario per il controllo delle lampadine.
  • SONOFF BASICR2, per il controllo di dispositivi non smart.
  • Adattatore USB-TTL, per fleshare i SONOFF
  • Raspberry Pi 4 Model B, per gestire i flussi node-red e controllare i dispositivi.
  • Amazon Alexa, per il controllo vocale dei dispositivi.
  • Servomotori, per alzamento di una serranda, o apertura di un garage, o per finestra lucernario.
  • Servo Driver HAT, per collegare i servomotori al raspberry.
  • Philips Lighting Hue Sensore di Movimento, per un allarme cotrollo accessi.
  • Presa TP-Link HS110, per permettere il monitoraggio dei consumi di alcuni dispositivi e l’accensione/spegnimento degli stessi.
  • Componenti elettronici per Raspberry, in particolare una breadboard, qualche cavetto, led, relay, resistenze, convertitore digitale analogico PCF8591 e un termistore

Snap4City supports a very large number of protocols for collecting data and for exposing data towards other services and tools: https://www.snap4city.org/drupal/node/65

File necessari

  • edge.json, flow dell’edge(Raspberry Pi)
  • iotApp.json, flow IOT App
  • servo.py, controllore sermotori
  • temp.py, controllore per termistore(sensore di temperatura)

get the files from https://www.snap4city.org/download/video/Snap4home-example1-files.zip

Risultati attesi

Cambio di stato dei dispositivi attraverso comandi locali e remoti e visualizzazione dati proveniente dagli stessi.

Storico dei dati su cloud

gestione remota dei dispositivi che sono nella propria abitazione, and da mobile e da fuori casa

gestione della casa ovviamente da casa tramite un device con browser

 

Snap4City support a very large number of protocols for collecting data and for exposing data towards other services and tools: https://www.snap4city.org/drupal/node/65

 

  1. Aprire il terminale, per installare node-red digitare il seguente comando:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

L’installer provvederà a installare l’ultima versione di node-red e node.js disponibile, compreso npm per la gestione dei pacchetti e i nodi per interagire con i PIN del Raspberry

  1. Digitare il comando: node-red-start per avviare node-red, collegarsi a <IPAdress>:1880 per visualizzare la pagina, dove <IPAdress> è l’idirizzo IP locale del Raspberry.
  2. Attraverso il Manage Palette installare i seguenti nodi:

I nodi presenti nella libreria snap4city(come la dashboard e il MyKPI) verrano trattati alla fine dell’articolo, adesso ci occuperemo di vedere in dettaglio l’installazione di tutti i dispositivi, la loro inizializzazione e la loro integrazione con node-red.

Vi consigliamo di scaricare il file JSON dei nodi e di importarlo in node-red dal menu import, in modo da avere un esempio concreto dove visualizzare i risultati ottenuti alla fine di ogni capitolo.

Alcuni Flow non verranno spiegati nel dettaglio essendo troppi lunghi per poter essere spiegati nodo per nodo, verranno dati invece tutte le informazioni per una corretta inizializzazione e  funzionamento di base degli stessi.

In questa guida non sono spiegati i nodi della dashboard locale di node-red(node-red-dashboard), si assume che il lettore sappia già utilizzarli.

 

Alexa

  1.  Apri il manage palette, cerca e installa i nodi: node-red-contrib-alexa-smart-home
  2.  Collegarsi al sito https://red.cb-net.co.uk/  e seguire la documentazione per la creazione di un account e per collegarlo al proprio account Amazon.
  3.  Trascinare il nodo alexa smart home v3 all’interno del flow, aprirlo per inserire l’account appena creato e selezionare il dispositivo che si vuole controllare(tale dispositivo deve prima essere creato nel sito sopra riportato)
  4.  Se configurato correttamente ad una qualsiasi richiesta fatta ad alexa dal nodo uscirà un messaggio contenente nel payload l’istruzione impartita(es. nel caso di una lampadina, alla richiesta di accensione verrà generato un messaggio con payload “on”, se è richiesto una variazione di luminosità verrà generato un messaggio con payload il valore della luminosità). Il numero di dispositivi e di istruzioni impartibili è estremamente vario, si consiglia di leggere attentamente la documentazione presente sul sito.
  5.  Se il nostro dispositivo prevede un aggiornamento di stato(lampadina accesa/spenta) si utilizzerà il nodo: alexa smart home v3 state, il messaggio che entra in questo nodo deve essere scritto in un formato ben preciso, vedere la documentazione per ulteriori dettagli.

Da ora in poi in ogni dispositivo vedrete dei nodi alexa, ci risparmiamo la spiegazione nei casi particolari.

Alla fine di questo progetto saremo in grado di utilizzare Alexa con i seguenti comandi/domande:

  • Accendi/Spegni Luce
  • Imposta luminosità al --%
  • Accendi/spegni Presa
  • Accendi/spegni Sonoff
  • Che temperatura è in casa?
  • Imposta il Termostato a -- gradi
  • Aumenta/diminuisci il termostato di – gradi
  • Apri/chiudi tapparella/e
  • Apri tapparelle a metà/al --%

  

Sonoff

Hardware

  1. Per fleshare il sonoff avere bisogno di un convertitore USB-TTL come mostrato in foto.
  2. Aprire il Sonoff e rimuovetelo dalla sua scatolina
  3. ATTENZIONE: Il convertitore TTL-USB potrebbe essere configurato per supportare sia 5v che 3.3v, il Sonoff opera a 3.3v, verificare che il jumper sulla scheda(del TTL) selezioni quel voltaggio, un voltaggio errato potrebbe bruciare il Sonoff!!!!
  4. Collegare il Sonoff al TTL nel seguente modo:
  • Dal TTL al SONOFF devono essere collegati i PIN Vcc e GND agli stessi presenti sul Sonoff
  • Per i PIN TX e RX essi vanno collegati scambiandoli ovvero TX va collegato a RX e RX va collegato a TX. Il tutto è illustrato nella seguente foto.
  1. olelgare il convertitore TTL-USB al computer

Software

  1.  Collegarsi al sito https://github.com/letscontrolit/ESPEasy/releases
  2. Scaricare l’ultima versione disponibile ESPEasy-mega-****.zip
  3. Scompattare l’archivio, aprire la cartella bin e cercare il file giusto per il flash, tale file è denominato nel seguente modo: ESP_Easy_mega_*****_normal_ESP82**_1M.bin, dove ** è la versione del chip presente sul vostro sonoff(66 o 85), potete trovarla scritta sul chip principale del vostro dispositivo.
  4. Una volta localizzato il file copiarlo e incollarlo nella cartella principale(quella dove è presente il file FlashESP8266.exe)
  5. Aprire il file FlashESP8266.exe, selezionare la porta COM del vostro dispositivo(dovrebbe esserci solo una porta disponibile, nel caso ce ne fosse più di una, scollegare qualsiasi periferica attaccata al computer tranne il Sonoff), selezionare il file precedentemente copiato (che dovrebbe essere l’unico disponibile nella lista) e cliccare su Flash. Attendere il termine della procedura.
  6.  Scolleghiamo il nostro Sonoff da tutti i cavetti, rimettiamo nella scatola e colleghiamo alla rete elettrica.
  7. Una volta collegato attendere qualche secondo per l’accensione, da un laptop o uno smartphone cercare le reti wifi presenti nell’area, dovrebbe una disponibile una rete wifi denominata esp_0, collegarsi con password “configesp”.
  8. Aprire un browser qualsiasi, dovreste essere indirizzati direttamente al pannello di controllo, selezionare la rete wifi desiderata e inserire la password, il sonoff si riavvierà.
  9. Connettersi alla rete wifi a cui avete connesso il vostro sonoff, per sapere il suo indirizzo ip è bene cercarlo nella pagina di configurazione del vostro router
  10. una volta riestrati nel pannello di controllo andare sul tab “devices”, selezionare nella riga 1 il pulsante edit.
  11. Configurare il dispositivo come da immagine e cliccare su “Submit”.
  12. Per accendere il sonoff basta collegarsi a http://<ip-del-Sonoff>/control?cmd=GPIO,12,1
  13. Per spegnerlo a http://<ip-del-Sonoff>/control?cmd=GPIO,12,0  

 

 Node-red

  1. Per permettere ai nostri Sonoff di accendersi e spegnersi utilizzeremo il nodo “http response” presente in node-red di default.
  2. trascinando tale nodo nel flow, apriamo e nel campo Method selezioniamo “GET”, nel campo url copiamo e incolliamo uno dei link precedenti. In un altro nodo “http response” copiamo l’altro indirizzo.
  3. Abbiamo adesso due nodi, uno per accendere e uno per spegnere il sonoff, in base all’input un nodo “switch” sceglierà quale dei due attivare. Per vedere in dettaglio il funzionamento si guardi direttamente l’esempio(JSON) che è stato allegato.
  4.  

Sensore di movimento(Philips Hue)

  1. Collegare il Philips Hue Bridge alla rete elettrica e al modem tramite il cavo ethernet incluso
  2. Utilizzare l’app Philips Hue su un dispositivo Android/IOS per configurare il sensore di movimento, una volta effettuata la configurazione l’app non è più necessaria
  3. Una volta stabilita la connessione installare su node-red i nodi: node-red-contrib-huemagic e node-red-contrib-telegrambot
  4. Trascinare il nodo “Hue Motion” nel flow, aprirlo, per configurare un nuovo bridge è sufficiente andare nel campo apposto, cliccare l’icona ricerca per cercare il bridge.
  5. Una volta trovato è sufficiente cliccare sull’icona nella riga API Key e successivamente cliccare fisicamente sul pulsante fisico del bridge per ottenere la chiave necessaria, cliccare su update.
  6. A questo punto cliccare sulla lente di ingrandimento nella riga “Sensor” per selezionare il sensore di movimento.
  7. Il sensore restituirà true/false se registra un movimento
  8. Tale dato è salvato sul MyKPI per future analisi(vedesi capitolo MyKPI)
  9. Se è rilevato un movimento viene attivato il nodo telegram sender che provvede a inviare un messaggio di allarme ad un bot presente sulla piattaforma telegram


Nodo Telegram

  1. Collegarsi al seguente sito: https://core.telegram.org/bots e seguire le istruzioni per la creazione di un bot
  2. Aprire il nodo “telegram sender” e inserire i dati che sono stati forniti alla fase precedente
  3. configurare la funzione precedente al nodo telegram come da figura specificando nel campo chat id il valore ritornato dal nodo “receiver”. Collegare quindi il nodo “receiver” a un nodo “debug” e inviare un messaggio tramite lo smartphone al bot precedentemente creato. Otterrete cosi il chatId(visualizzandolo nella parte “debug” del pannello di controllo node-red) della vostra chat telegram.

 

Tapparella

  1. Collegare l’HAT per i servomotori al Raspberry
  2. Collegare il servomotore sui pin 0 dell’HAT
  3. Scaricare il file servo.py,copiarlo nella home del nostro raspberry, tale file accetta in input due valori, il primo è il numero della porta a cui è collegato il servo motore, il secondo l’angolo ai cui il servomotore si deve trovare
  4. si utilizza in questa parte il nodo exec che viene configurato come da immagine

  1. Se il servo non si trova su il pin 0 dell’HAT è sufficiente cambiare il numero dopo “servo.py”
  2. la funzione precedente è scritta come in figura e il suo scopo è quello di trasformare in gradi(0-180) il valore di uno slider(0-100)

 

MyKPI

Verrà mostrato come creare i KPI necessari al funzionamento dell’applicazione, per semplicità verrà mostrato l’invio dei dati a solo uno di essi.

  1. Connettersi al sito https://www.snap4city.org, loggarsi con le credenziali e spostarsi sull’area MyKPI
  2. cliccare su Add MyKPI e creare in 3 KPI come da tabella.
  3. Consideriamo il caso della presa TP-LINK, il goal è quello di inviare i dati di consumo al MyKPI per successi visualizzazioni/analisi
  4. Trascinare il nodo “save my kpidata values” nel flow, aprirlo, inserire le credenziali snap4city se necessario, nel campo SelectKPI selezionare il KPI appena creato(nel nostro caso “Consumo”)
  5. il prossimo passo è inviare i dati al KPI, per fare questo colleghiamo la presa a 3 nodi consecutivi, uno switch che controlla se il dato riguardante il consumo è non nullo, una funzione che arrotonda il dato e trasforma da millliwatt a watt, una seconda funzione che si occupa di incapsulare il dato nel formato comprensibile dal nodo MyKPI. Si consiglia, per il codice, di vedere direttamente l’esempio allegato.
  6. per permettere l’invio dei dati utilizziamo un modo inject configurato come segue, l’obiettivo di questo nodo è di inviare i dati al MyKPI ogni 5 minuti, nel payload inseriamo la funzione “getMeterInfo” richiedere al nodo TP-link di restituire in output il valore del consumo elettrico attuale

 Per i MyKPI “Luce” e “Allarme” sono inseriti solamente valori booleani.

  

Temperatura e termostato


Per l'installazione del sensore di temperatura , si colleghi il sensore nel modo indicato qui sotto:


Per la simulazione dell'attivazione di un termostato, collegare un led al Raspberry come riportato nella figura sottostante, nel caso reale il led viene sostituito da connettori di una caldaia: