martedì 3 aprile 2018

Domotica con Telegram




La piattaforma di messaggistica Telegram (https://telegram.org) offre un interessantisssimo servizio che consente di realizzare dei risponditori automatici (roBOT). Sono sostanzailmente degli utenti o account virtuali che leggono e interpretano i messaggi loro inoltrati e rispondono con servizi automatizzati.
I BOT di Telegram possono essere  implementati su schede e dispositivi IoT per realizzare efficienti e versatili controlli domotici. Per esempio, possiamo comandare un azione (aprire un cancello) con un messaggio Telegram.

Il software che implementa  un BOT invia dei comandi HTTP all'indirizzo api.telegram.org nella forma:
https://api.telegram.org/bot<token>/METHOD_NAME

Il bot richiede ciclicamente (polling) i messaggi inviatigli dai client con il metodo getUpdates:

https://api.telegram.org/bot<token>/getUpdates

e risponde al cient con il metodo SendMessage

https://api.telegram.org/bot<token>/sendMessage?chat_id=<clientid>&text="risposta del bot"

Esistono librerie per le più comuni schede utilizzate in applicazioni IoT. Per esempio, per la scheda EspressoLiteV2.0 si può usare la libreria ESP8266TelegramBOT.h (by Giancarlo Bacchio: https://github.com/Gianbacchio/ESP8266-TelegramBot) che è stata aggiornata nel 2020 per conformarsi alle nuove modalità di accesso sicuro alle API di Telegram (vecchie versioni della libreria avevano come risultato un un "failed to update"). La nuova libreria richiede la presenza del sw Arduino di gestione scheda 8266 con verisone 2.5.1 o superiore.

La scheda EspressoLiteV2.0 è molto versatile, dotata di modulo WiFi si programma con l'IDE di Arduino.

Il caricamento dello sketch Arduino compilato è gestito dal software esptool, che fa parte del pacchetto sw Arduino di gestione delle schede ESP8266. Dalla versione 2.5.1 del pacchetto si riceve un timeout durante il caricamento dello sketch su scheda Espressolite 2.0. Il problema può essere aggirato compilando lo sketch (con il sw.gestione scheda aggiornato, scegliendo la voce "Esporta sketch compilato" nel menu Sketch) e caricarlo (file.bin) sulla scheda Espressolite utilizzando la versione di esptool.exe 2.5.0).

[C:\Users\Erberto\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9/]esptool.exe -vv -cd ck -cb 115200 -cp COM9 -ca 0x00000 -cf<file:binario:compilato.bin> 

Nella linea di comando occorre specificare la porta COM utilizzata (-cp COM9)

Per comodità si può copiare la linea di comando in un file batch: carica.bat


Un interessante esempio di utilizzo della scheda Espressolite 2.0 e delle API Telegram in ambito domotico è stato pubblicato sulla rivista ElettronicaIN n.208 per controllare una caldaia per il riscaldamento domestico.

In alternativa alla Espressolite 2.0 si può utilizzare il modulo più compatto ESP01.