Telecontrollo via WiFi con Telegram e Espresso Lite: scopri come controllare dispositivi da remoto con il tuo smartphone

Scopriamo le potenzialitร  dellโ€™applicazione di instant messaging Telegram realizzando un telecontrollo basato su uno smartphone e una demoboard dotata di modulo WiFi.

Quando teniamo in mano il nostro smartphone, ormai possiamo dire di avere una porta aperta sul mondo: non solo per la connettivitร  globale (telefono, Internet, Social, Instant Messaging) che ci fornisce, ma anche per le potenzialitร  offerte dai link di rete wireless implementati, ossia il Bluetooth e il WiFi. Grazie ad essi e a specifiche app che spuntano come i funghi, da tempo lo smartphone puรฒ essere utilizzato come comando a distanza per unitร  collocate sotto copertura, ma anche interconnesse via Internet.

Questo articolo nasce dallโ€™idea di utilizzare uno smartphone per realizzare un sistema di controllo da WiFi, che si avvale di una scheda di sviluppo ospitante un modulo wireless ESP8266.

Non รจ la prima volta che proponiamo un sistema per inviare comandi a distanza; questa volta -perรฒ- proponiamo un comando wireless diretto via WiFi, sfruttando un software di instant messaging che possiamo considerare lโ€™antagonista di Whatsapp: Telegram.

La scheda di sviluppo che utilizzeremo รจ la Espresso Lite V2.0, acquistabile direttamente da questo sito; puรฒ funzionare da sola (stand-alone) o insieme a una scheda Arduino, dato che รจ Arduino-compatibile.

Espresso Lite V2.0

La demoboard espresso Lite v 2.0

La scheda monta un modulo ESP8266 WROOM-02 (certificato FCC, CE e TELEC) con 4 Mb di Flash ed รจ stata progettata per le applicazioni IoT; le caratteristiche principali sono:
โ€ข supporto per IDE Arduino e le sue librerie;
โ€ข supporto bootloader per IDE Arduino;
โ€ข tensione di alimentazione da 5 a 12 Vcc;
โ€ข regolatore on-board a 3,3V (800 mA);
โ€ข pulsante di reset e due pulsanti programmabili dallโ€™utente.

Una delle particolaritร  della scheda รจ che la sua piedinatura ha un passo di 2,54 mm; ciรฒ rende facile inserirla se occorre testarla con componenti che si possono disporre su basette millefori. Per agevolare lโ€™inserzione la Espresso Lite puรฒ essere dotata di pin-strip maschio e femmina.

Definito lโ€™hardware che useremo, vediamo ora che cosa possiamo fare e come sfruttare al meglio la nostra demoboard e lo facciamo con un progetto in grado di interfacciarsi con Telegram.

Telegram รจ unโ€™applicazione di messaggistica focalizzata su velocitร  e sicurezza (รจ stata la prima a implementare la crittografia dei messaggi) รจ molto rapida, semplice da usare e gratuita. Basa il proprio funzionamento su un protocollo di comunicazione open source sviluppato appositamente per ridurre al minimo la quantitร  di byte inviati per messaggio.

Il vantaggio di questo sistema consiste nello sfruttare la rete WiFi senza lโ€™uso di moduli telefonici o SIM (invece con Whatsapp si dovrebbe registrare un numero di telefono e quindi bisognerebbe vincolare una SIM).

Espresso Lite V2.0

Telegram e i bot

Lโ€™arma vincente di Telegram รจ che permette di creare, oltre ai classici account associati ai numeri di telefono, anche dei Bot. Un Bot รจ un sistema di risposta automatica che offre agli utenti la possibilitร  di reperire informazioni o contenuti attraverso la scrittura di comandi indicati dal Bot stesso allโ€™avvio della ricerca. Piรน precisamente, un Bot รจ un utente virtuale, ovvero un client automatico che si collega al servizio al nostro posto; per questo viene considerato un robot, non a caso Bot รจ lโ€™abbreviazione di robot.

Lโ€™utente puรฒ interagire con i Bot come fossero utenti, inviando loro messaggi, comandi e richieste utilizzando richieste HTTPS.

I Bot possono essere utilizzati per ottenere notifiche personalizzate e notizie; un Bot puรฒ agire come un giornale intelligente, inviando solo contenuti pertinenti non appena vengono pubblicati. In breve, gli potete dire quali messaggi o argomenti interessano e tra tutti vi invierร  solo quelli.

Un Bot puรฒ arricchire le chat telegram con contenuti provenienti da servizi esterni, quindi offre integrazione con altri servizi. Di ciรฒ si occupano gli Image Bot, GIF Bot, IMDB Bot, Wiki Bot, Music Bot, Youtube Bot, GitHub Bot.

Un Bot permette di creare strumenti personalizzati: ad esempio puรฒ fornire avvisi, previsioni meteo, traduzioni, formattazione o altri servizi. Con i Bot รจ anche possibile creare dei giochi: un Bot puรฒ giocare a scacchi e dama contro di voi, agire come ospite in giochi a quiz, o anche prendere parte a un gioco di ruolo (Trivia Bot).

Un Bot potrebbe anche connettere le persone in cerca di interlocutori sulla base di interessi comuni o della vicinanza (HotOrBot).
Lo stesso canale Futuranet News รจ basato su un bot.

Gli utenti possono interagire con i Bot in due modi:
– inviando loro messaggi e comandi aprendo una chat con essi (come fossero altri utenti) o aggiungendoli ai gruppi; ciรฒ รจ utile per i chat Bot o news Bot come TechCrunch e Forbes bot;
– inviando richieste direttamente dal campo di input digitando lo @username del bot e la richiesta; ciรฒ permette di inviare contenuti dai bot in linea.

Per utilizzare i Bot รจ necessario aggiungerli nelle chat: nella schermata in cui cโ€™รจ lโ€™elenco delle chat si trova la sezione Cerca; qui bisogna scrivere il nome del Bot preceduto dal simbolo @. Allโ€™avvio, il Bot darร  le istruzioni da seguire per poterlo utilizzare. Nel nostro caso andremo a creare un bot personalizzato da noi creato, che ci permetterร  di interfacciarci alla nostra scheda ed in particolare al modulo WROOM-02.

Lโ€™applicazione per ESP

Facciamo un passo avanti e cerchiamo di capire nella realtร  che cosa possiamo fare con il progetto: immaginiamo che sia inverno e faccia molto freddo, siamo al lavoro e ci ricordiamo di non aver acceso la caldaia del riscaldamento; la prima idea che ci viene in mente รจ chiamare il vicino o un amico per chiedergli di accenderla.

Ma essendo appassionati di elettronica vorremmo essere noi a dare il comando…a distanza. Quindi potremmo utilizzare uno dei nostri telecontrolli TDG o installare un termostato GSM con modulo SIM800 che riceva comandi da SMS per attivare e disattivare la caldaia; ma in tal caso servirebbe anche una SIM telefonica e il relativo abbonamento.

Lโ€™alternativa รจ creare un sistema di accensione/spegnimento dal nostro cellulare che faccia a meno della rete telefonica ma utilizzi il WiFi o Internet. Ciรฒ puรฒ essere fatto optando per tre soluzioni:
1. creare unโ€™applicazione sul nostro smartphone (anche se non tutti sarebbero in grado di elaborarla) e un firmware sulla scheda, ma il sistema risulterebbe molto complesso e necessiterebbe una discreta competenza, un tempo di sviluppo molto elevato, quindi le ore impiegate non appagherebbero lo sforzo;
2. aprire una pagina web sul nostro smartphone e creare un firmware sulla Demoboard Espresso lite v2.0 per collegarsi alla pagina allo scopo di scambiare informazioni, ma sarebbe scomodo perchรฉ volendo delle notifiche dovremmo aprire e aggiornare la pagina web, dovendoci autenticare, ecc.;
3. utilizzare un servizio di messaggistica quale รจ Telegram, appoggiandoci ad un Bot.

Avrete capito che questโ€™ultima รจ la soluzione da noi adottata, perchรฉ consente di ricevere notifiche (il modulo WiFi puรฒ inviare notifiche spontanee al nostro smartphone e questโ€™ultimo ci avviserร  come se fosse un messaggio) garantisce sicurezza (solo tramite unโ€™autenticazione -che si fa solo la prima volta- รจ possibile dialogare con il modulo) ed รจ comoda (non dobbiamo aprire una pagina web ma unโ€™applicazione con tutte le sue funzioni).

Vediamo dunque nel dettaglio di cosa si tratta: potete sfruttare TelegramBot lato telefono (si puรฒ utilizzare sia su Android che su smartphone basati su iOS, quindi Apple), perchรฉ non necessita di programmazione, invia notifiche di ricezione dei nuovi messaggi ed รจ unโ€™applicazione; mentre lato Demoboard potete usare il firmware da noi proposto.

La prima cosa da fare รจ cercare di capirlo (molte persone fanno copia/incolla) e nel caso migliorarlo. Come detto in precedenza, lโ€™obiettivo di questo articolo รจ farvi capire come funziona il sistema che stiamo proponendo, provando a inviare e ricevere messaggi da remoto.

Procediamo a piccoli step: se non lโ€™avete ancora fatto, installate Telegram sul vostro smartphone (Fig. 2). Ora, dallโ€™opzione Contatti, digitiamo @BotFather e selezioniamolo; la Fig. 3 illustra lโ€™insieme dei comandi del Bot.

Espresso Lite V2.0

 

Fig. 2 Installazione di Telegram.

 

Fig. 3 Insieme dei comandi del Bot.

 

Adesso stiamo dialogando con un Bot (in questo caso il Botfather) ossia un account virtuale in grado di creare e modificare i Bot; come prima cosa scriviamo nella chat il comando proposto dal Botfather: /newbot. Il BotFather ci risponderร  chiedendo un nome per il nostro Bot e poi lo username con cui potremo farlo aggiungere a chi vogliamo (il nome dopo la @, per intenderci).
Questโ€™ultimo dovrร  necessariamente terminare con โ€œBotโ€.

Nomi validi quindi sono Ardubot, superbot, eccโ€ฆ, sempre che non siano giร  stati scelti da altri utenti (in questo caso scegliete un nome differente). Una volta finita la creazione del Bot, @BotFather ci risponderร  con una schermata come quella in Fig. 4.

Se avete seguito la procedura di creazione alla lettera, noterete una stringa lunga 45 caratteri che รจ il โ€œtokenโ€ e permetterร  di autenticarci al server e di comunicare. Bene, dal lato applicazione per il momento abbiamo tutti gli ingredienti per preparare la nostra ricetta.

Ricordate quando abbiamo parlato della compatibilitร  con Arduino? Ebbene, la nostra scheda puรฒ essere programmata direttamente dallโ€™IDE di Arduino e quindi utilizzata da tutti gli appassionati del settore senza doversi cimentare nellโ€™utilizzo di altri linguaggi (ad esempio LUA, utilizzato per la programmazione dellโ€™ESP8266 tramite il derivato NodeLua).

Detto ciรฒ possiamo cominciare a realizzare la nostra applicazione.

Come prima cosa dobbiamo aggiornare lโ€™IDE di Arduino per far riconoscere la nostra board:
โ€ข assicuratevi di aver scaricato lโ€™ultima versione dellโ€™IDE Arduino;
โ€ข dal menu โ€œFileโ€ selezionare โ€œImpostazioniโ€;
โ€ข nel campo โ€œAdditional Boards Manager URLsโ€ inserire lโ€™indirizzo http://arduino.esp8266.com/package_esp8266com_index.json

 

Fig. 4 I messaggi indicanti che il Bot รจ stato creato; il token รจ la stringa evidenziata dalla freccia rossa.

 

Impostate quindi i parametri come nella Fig. 5. Aprite ora il file termostato_wifi.ino scaricabile qui sotto nella sezione download. Il firmware permette di connettersi a una rete WiFi e una volta raggiunta la temperatura desiderata, attiva unโ€™uscita della demoboard che ci servirร  poi per azionare il relรฉ che accenderร  la caldaia. Come vedremo in dettaglio, sono state inserite le righe di codice:

#define MAX_TEMP_OFF_CALDAIA 23
#define MIN_TEMP_ON_CALDAIA 22

Queste due define permettono di gestire la temperatura di accensione e quella di spegnimento della caldaia. Ricordiamo inoltre che maggiore sarร  lโ€™offset di temperatura, maggiore sarร  lโ€™isteresi applicata (stabilitร  del relรฉ ON/OFF). I comandi disponibili sono:
โ€ข caldaia on (attiva caldaia);
โ€ข caldaia off (disattiva caldaia);
โ€ข temp (invia la temperatura della stanza);
โ€ข tutti gli altri messaggi inviati saranno gestiti da un echo.

รˆ possibile aggiungere altri comandi confrontando il bot.message[i][5] con il testo da riconoscere. Ad esempio se vogliamo attivare lโ€™uscita 13 inviando il comando Uscita ON, รจ necessario inserire nella routine chiamata Bot_EchoMessages() le seguenti linee di codice

if (bot.message[i][5] == โ€œUscita ONโ€) {
digitalWrite(13, LOW);
}

Fig. 5 Impostazioni nellโ€™IDE.

Avvio del programma

Come prima cosa dobbiamo connetterci alla rete WiFi esistente, quindi inseriamo il nome (ssid) e la password della nostra rete, come mostrato nella porzione di codice seguente:

La prima riga contiene il nome della rete, ossia lโ€™SSID WiFi, mentre nella seconda va scritta la password di accesso alla rete stessa. Infine inseriamo i dati che riguardano il nostro bot: le righe di codice che riguardano questa operazione sono visibili nel Listato 1.

Listato 1

// Initialize Telegram BOT
#define BOTtoken โ€œIncollare il codice generato dal botfatherโ€

#define BOTname โ€œnome del botโ€

#define BOTusername โ€œusername del bot (per capirci quello che finisce in bot)โ€

#define ID_TELEGRAM Questo id lo si ricava la prima volta che inviamo 
il messaggio di start e permette di rispondere solo bot che vogliamo noi. 
Dando il comando start, il bot risponde comunicandoci il suo id.

Carichiamo il firmware

Se non ci sono errori di compilazione, procediamo con lโ€™upload sulla scheda espresso lite v2.0; a riguardo ricordiamo che bisogna tenere premuto il pulsante โ€œprogโ€ e premere per un secondo il pulsante di โ€œresetโ€.

Fatto ciรฒ eseguite lโ€™upload e nel momento in cui si visualizzano i puntini (upload in corso) รจ possibile rilasciare il pulsante โ€œprogโ€.

Finalmente siamo giunti alla parte piรน bella e soddisfacente del lavoro! Abbiamo creato la nostra amata comunicazione tra il modulo ESP e il nostro smartphone.

Vediamo nel dettaglio:
โ€ข apriamo ora la seriale e impostiamo il baud-rate a 115.200;
โ€ข spostiamoci su Telegram e scriviamo il comando โ€œstartโ€ (senza apici);
โ€ข possiamo notare sulla console seriale la ricezione del messaggio e quindi lโ€™echo in risposta:

GET Update Messages
…. connected to server
Sent Update request messages up to : 94650296
{โ€œupdate_idโ€:XXXXXXXX,
โ€œmessageโ€:{โ€œmessage_idโ€:669,โ€fromโ€:{โ€œidโ€:XXXXXXXX,โ€first_nameโ€:โ€Gianlucaโ€,โ€last_nameโ€:โ€XXXXXXXXโ€,โ€usernameโ€:โ€XXXXXXXXโ€},โ€chatโ€:{โ€œidโ€:XXXXXXXX,โ€first_nameโ€:โ€Gianlucaโ€,โ€last_nameโ€:โ€XXXXXXXXโ€,โ€usernameโ€:โ€XXXXXXXXโ€,โ€typeโ€:โ€privateโ€},โ€dateโ€:1466755441,โ€textโ€:โ€startโ€}}]}

Copiamo il codice numerico dopo โ€œupdate_idโ€ e impostiamo la #define ID_TELEGRAM con quel valore. Se tutto รจ andato a buon fine, dovrebbe arrivarci la notifica sullo smartphone da parte del nostro modulo, con una sequenza di messaggi, ovvero i comandi disponibili che sono attualmente implementati nel nostro programma e un codice ID_TELEGRAM che dovremmo scrivere nella define del programma.

Ora Telegram accetta i comandi (tranne lo start) solo dal nostro smartphone: pensate a quanti progetti si possono sviluppare avendo a disposizione un โ€œterminale remotoโ€ che puรฒ comandare il modulo basato su ESP2866 da qualunque postazione; si puรฒ parlare a pieno titolo di domotica e pensare al piรน vasto ventaglio di applicazioni!

Vi ricordate che il nostro obiettivo finale รจ poter azionare il termostato da remoto per attivare e disattivare il riscaldamento in casa senza nessuna fatica; ebbene, procuriamoci ora lโ€™hardware necessario, che รจ:
โ€ข sonda termica DS18B20;
โ€ข 1 resistenza da 4,7 kohm;
โ€ข 1 scheda relรฉ comandabile da segnali TTL (3,3V/5V);
โ€ข modulo basato su ESP2866.

Colleghiamo adesso il sensore di temperatura One-Wire DS18B20 al nostro modulo seguendo lo schema di cablaggio mostrato nella Fig. 6. Ora dobbiamo collegare il pin GND (รจ il filo nero, se utilizzate la sonda in versione One-Wire waterproof) al contatto GND; connettiamo poi il pin +5/3,3v (rosso in caso di One-Wire waterproof) al pin 3V3.

Fig. 6 Collegamento del sensore di temperatura alla Espresso Lite.

 

Collegate quindi il pin Data centrale (bianco in caso di one-wire waterproof) al pin digitale (14); verifichiamo ora che il sensore rilevi la temperatura esatta, dando il comando temp dal nostro smartphone (Fig. 7).

La funzione getTemp() restituisce un valore di tipo float dato che abbiamo bisogno di sapere anche il valore dopo la virgola.
Tale funzione รจ chiamata ogni x secondi (dove x รจ possibile impostarlo cambiando il valore di Bot_mtbs) nel loop ed รจ sempre confrontata con le due define:

#define MAX_TEMP_OFF_CALDAIA 23
#define MIN_TEMP_ON_CALDAIA 22

Ora possiamo monitorare la temperatura in qualsiasi momento della giornata.

Non ci rimane che collegare la scheda a relรฉ allโ€™uscita di un altro pin digitale e settarlo nella riga #define PIN_GESTIONE_CALDAIA (abbiamo scelto il pin 13); la scheda รจ la RELAY2CH visibile in Fig. 8 e dispone a bordo di due relรฉ con scambio a 10A/250Vca (10A/30Vcc) attivabili con livello logici TTL o 0/3V (integra la logica del caso); si alimenta a 5 volt in continua, quindi possiamo connetterla in parallelo allโ€™alimentazione della Espresso Lite.

Per i collegamenti fate riferimento alla Fig. 8, ricordando che il Vcc della scheda relรฉ va al Vin della Espresso Lite e le GND delle due vanno unite; siccome utilizziamo un solo relรฉ, colleghiamo il pin 13 della Espresso Lite, che abbiamo designato come uscita, allโ€™IN1 della scheda relรฉ.

Quando la Espresso Lite attiverร  lโ€™uscita e con essa il relรฉ, vedrete il LED della scheda relรฉ accendersi; ciรฒ accadrร  se la temperatura rilevata scende sotto quella impostata e la disattivazione se supera il valore massimo impostato.

Se si invia il comando โ€œcaldaia onโ€ il relรจ si attiva e la caldaia si accende. Nel caso caso la temperatura sia maggiore di MAX_TEMP_OFF_CALDAIA Telegram invia un messaggio dicendo โ€œAvvio spegnimento caldaiaโ€ ma il relรฉ rimane attivo e devโ€™essere lโ€™utente a mandare un messaggio โ€œcaldaia offโ€.

Tale gestione rimane allโ€™utente perchรฉ se lo spegnimento della caldaia fosse stato legato alla MAX_TEMP_OFF_CALDAIA e si fosse poi inviato il messaggio โ€œcaldaia onโ€ la caldaia sarebbe tornata in off. La gestione si potrebbe risolvere in vari modi: reimpostare le varie temperature, dividere le modalitร  termostato ecc.

Conclusioni e Download

Finalmente abbiamo creato un termostato WiFi che ci informa dello stato della caldaia (o del condizionatore dโ€™aria: in tal caso va invertito lo scambio del relรฉ, ossia si usano C ed NC), nonchรฉ della temperatura del locale monitorato.

Il sistema che vi abbiamo proposto in queste pagine giร  funziona, ma se volete potete cimentarvi nella modifica delle due define riguardanti la temperatura: potete ridefinirle a int e creare due comandi sulla falsa-riga di quelli esistenti, che vi permetteranno di settare le due temperature da remoto; oppure potete creare comandi dedicati a eventuali gestioni di luce/tapparelle o altro ancora. In questo articolo vi abbiamo fornito le nozioni di base; non vi resta che metterle in pratica.

 

Lascia un commento

Il tuo indirizzo email non sarร  pubblicato.

Menu