|
La configurazione di Telegram |
Naturalmente, prima di tutto, è necessario avere installato Telegram, operazione che diamo per scontata. Questa prima operazione è comune a tutti i programmi che presenteremo. Aprire Telegram e inserisci nello spazio di ricerca "BotFather". Si aprirà una finestra simile a questa: Nello spazio inferiore, quello dedicato ai messaggi, digitare: "/newbot". Verrà chiesto il nome. In questo test., l'ho chiamato "door_control" Ora dobbiamo inserire il nome per l'utente che utilizzerà questo bot. E' necessario che il nome sia formalmente esatto e libero. A volte sarà neceasario qualche tentativo. Ho usato "rele_24". Poi si chiede di inserire un utente per questo bot. Ho scelto "RicxRele24Bot". Abbiamo trovato un nome formalmente corretto e disponibile e il bot è stato creato. Salvare con cura il token API evidenziato nel riquadro rosso. Dovrà essere inserito nel programma per poter accedere al proprio bot. |
|
|
Come inviare un messaggio al proprio Bot |
Il prossimo passaggio è molto importante, non tralasciarlo! Altrimenti il progetto non funzionerà! E' necessario inviare un messaggio al tuo Bot dal tuo account Telegram, prima che esso possa inviare a te i messaggi automatici. Tornare alla schermata iniziale di telegram, e nel campo di ricerca, inserire il nome del proprio utente per il bot appena creato, dare invio e premere il tasto START. |
Inserire
il nome del proprio utente per il bot
***
|
|
Come ottenere il proprio "user ID" |
Per
inviare del messaggi automatici al proprio account
Telegram, è necessario conoscere il proprio "user ID". Nel proprio account Telegram, inserire "myidbot" nel campo di ricerca di Telegram. Selezionare l'icona corrispondente a "IDBot". Nella nuova finestra che si apre, digitare "/getid". Salvare il proprio userId, servirà nella compilazione del programma. |
Digitare
"myidbot"
Salvare il proprio "user ID"
|
Si possono trovare informazioni ancora più dettagliate sulla configurazione dei "bot" di Telegram alla seguente pagina (esterna al sito): https://randomnerdtutorials.com/esp8266-nodemcu-door-status-telegram/ |
Il problema dei comandi per l'accensione/spegnimento delle periferiche |
Il modulo con un relè... ... e quello con due |
Ho
riscontrato che ci può essere un problema sui comandi
relativi all'accensione e spegnimento delle periferiche.
Abitualmente un relè o un led si attivano/accendono quando
la porta viene portata a livello "HIGH" e
disattivano/spengono quando essa ritorna a livello "LOW", e
questo vale anche per la nostra basetta sperimentale. Però ho notato che utilizzando il modulo commerciale con un relè (immagine in alto a sinistra), tutto funziona alla rovescia, per cui quando si dà il comando di accensione, si spegne il led o il relè, e quando si invia il comando di spegnimento, esso si attiva! Questo comportamento del programma non è corretto, per cui ho inserito una routine che risolve il problema in modo semplice. All'inizio di ogni programma si troverà la variabile "changeVal": se ha valore "1", i relè si accenderanno se "relayon" è uguale a "1"(ovvero HIGH); se il valore di "changeVal" è un qualsiasi valore numerico intero diveso da "1", per esempio "0"), i relè si attiveranno quando "relayon" prende il valore "LOW" *** Lo stesso avviene con i programmi che attivano due relè; semplicemente le righe da attivare/disattivare saranno quattro invece che due. |
La variabile numerica changeVal Per la gestione di un solo relè: Se changeVal = 1 il relè si attiva se il suo valore è "HIGH"; se changeVal è diverso da 1, il relè si attiva se il suo valore è "LOW". e per la gestione di due relè: ecco la routine completa, simile alla precedente, ma aggiornata per gestire due relè. Di
dalault il valore di "changeVal "
è posto a "1". |
Il primo progetto |
Il
primo progetto permette di controllare un relè, inviando un
segnale dal nostro account di Telegram. Dopo aver creato un
"bot" adeguato, potremo inviare un messaggio che accenderà o
spegnerà il relè - che per i test potrà essere sostituito da
un led - e quindi potremo controllare una
nostra periferica da qualunque luogo, per mezzo di
Internet . Il vantaggio di questa applicazione che non
invieremo semplicemente un segnale, ma dopo alcuni secondi
riceveremo anche la segnalazione che il comando è stato
eseguito! Nota: la reattività di Telegram non è particolarmente brillante. In base alla fascia oraria, potremmo attendere che il comando venga eseguito da qualche secondo fino a un minuto. Ci vuole pazienza... |
Un relè KY-019 |
Lo schema elettrico |
Questo è lo schema elettrico per il collegamento tra ESP01 e il relè KY-019, che d si comporta come un interruttore, o meglio, come un deviatore, avendo un filo comune, un "nc" (normalmente chiuso) e un terzo "na" (normalmente aperto). Nello schema, per semplicità ne ho considerato solo una coppia. Il relè ha tre piedini: quello di segnale di controllo "S", il negativo "-" e il positivo "+". ESP01 deve essere alimentato a 3,3v. Ho notato che il relè non si eccita a questa tensione, quindi ho preferito di alimentarlo a +5v. Nei miei test, anche prolungati, questo schema non ha dato alcun problema all'ESP01. |
Questo
invece è lo stesso schema di collegamento, però
adattato per la nostra basetta sperimentale.
Come si vede, il cavo di segnale, contrassegnato con "S",
andrà collegato sullo zoccolo "DG2", relato alla porta di
ingresso "GPIO0" di ESP01. Se si vuole semplicemente testare il programma senza utilizzare il relè, si potrà ponticellare il jumper "JP4", nascoosto dal relè, e il led "Led3"si accenderà/spegnerà in base ai messaggi inviati da Telegram. |
Il
collegamento del relè sulla scheda in formato 1:1.
Per semplicità il relè appare in orizzontale. |
Il pulsante KY-004 è evidenziato nel riquadro colorato. |
Ed infine, il collegamento sulla scheda sperimentale "reale". Il relè è inserito sullo zoccolo "DG1" (connesso alla porta GPIO0 di ESP01) |
Il programma |
Come
prima cosa, è necessario verificare se si sono
installate tutte le librerie necessarie. Verificando o
lanciando la compilazione del programma, verranno
visualizzate quelle eventualmente mancanti. In questo
caso, provare prima di tutto a scaricarle attraverso la
Ide di Arduino. Nel caso non si trovassero tutte,
scaricarle dalla finestra che appare sulla destra. Nel caso di dubbio, controllare la pagina relativa alla gestione delle librerie |
ESP8266WiFi.h UniversalTelegramBot.h WiFiClientSecure.h |
I dati da inserire nel programma.
|
Nel
programma è necessario inserire alcune informazioni:le prime
sono comuni ai programmi presentati in queste pagine: ovvero
il nome della rete WiFi e la password relativa. Ma sono necessarie anche altre due informazioni, che abbiamo salvato nella configurazione di Telegram, ovvero il token API (riquadro verde) e lo userID (riquadro blu). Più avanti nel programma, inserire il proprio ID(riquadro violetto). |
I
comandi disponibili I comandi che si possono utlilizzare sono i seguenti: /start
per avviare il collegamento;
/status
per verificare lo stato della
periferica;
/ledon - relayon per accendere il led/relè /ledoff
- relayoff per spegne il led/relè
|
Il test del programma su Telegram |
Per
attivare una periferica, collegheremo il relè alla porta
digitale GPIO0 di ESP01, corrispondente allo zoccolo "DG2". Dopo aver caricato il programma,in pochi secondi ESP01 si connetterà alla nostra rete WiFi. In questo caso, non è necessario di registrare l'indirizzo IP. Digitando "/start" o premendo il tasto, se si è appena attivata la chat, viene mostrata la lista dei comandi disponibili. Digitando /"ledon" il relè si attiva (o si accende il led) e appare la conferma dell'attivazione. Digitando "/ledoff" di disattiva il relè o si spegne il led e appare la scritta di conerma dello spegnimento. |
Clicca
qui per visualizzare il programma Clicca qui per scaricare il programma in formato ".zip" Link al video di Brian Lough che spiega nel dettaglio questo primo programma: https://www.youtube.com/watch?v=-IC-Z78aTOs |
Il secondo progetto |
Questo
secondo progetto ha molte similitudini con quello appena
proposto, ma ho pensato di inserirlo, proprio per le sue
interessanti variazioni, ovvero la possibilità di
attivare/disattivare il relè premendo un pulsante, invece
che scrivere un comando, e la possibilità di effettuare
un'attivazione per un tempo definito. La disposizione dei componenti sulla basetta è la stessa a quella proposta per il primo programma; è stata pure utilizzata la stessa configurazione del "bot" di Telegram. |
Rispetto al primo programma, è
necessario installare, oltre a quelle già indicate, una
libreria ulteriore: ArduinoJson.h. Nota: relativamente a questa libreria, è necessario installare la versione 5.x.x, perchè non funziona con la versione 6.x.x. Nel caso di dubbio, controllare la pagina relativa alla gestione delle librerie |
ESP8266WiFi.h UniversalTelegramBot.h WiFiClientSecure.h ArduinoJson.h |
E'
necessario inserire il nome della proria rete Wifi e la sua
password. Inoltre è richiesto l'inserimento del token Api ottenuto durante la configurazione del "bot" di Telegram. |
I
comandi disponibili: anche in questo programma i comandi potrebbero essere lanciati manualmente, ma è molto più pratico utilizzare i punsanti. Quando si preme "/start", appaiono due opzioni: "/options", per attivare la tastiera virtuale di telegram, che mostra cinque pulsanti, e "/status", che in qualunque momento mostra lo stato del relè. |
I
due comandi che appaiono all'avvio del programma
|
Nel
riquadro superiore si sono mostrate le opzioni disponibili
all'avvio; digitando "/options", appaiono cinque pulsanti. "ON" attiva il relè "OFF" disattiva il relè "15 Min." attiva il relè per 15 minuti "30 Min" attiva il relè per 30 minuti "1 ora" attiva il relè per un ora Nota: anche quando si è attivato il relè a tempo, è sempre possibile disattivarlo con il pulsante "OFF". |
I
comandi disponibili
|
Se si
preme il tasto "ON" (immagine a sinistra), dopo qualche
secondo verrà attivato il relè; quando si preme il tasto
"OFF", simmetri-camente, il relè si spegnerà. Appariranno
automaticamente le comunicazioni di accensione/spegnimento.
Tuttavia, se si desidera rivedere autonomamente lo stato del
relè, è sufficiente digitare "/status" e apparirà il
messaggio che ne indica lo stato attuale. |
Con
questo programma si può anche gestire la durata
dell'accensione. In questo caso si sono definiti tre
periodi, che possono essere facilmente modificati.
All'avvio, appare un messaggio automatico che indica
l'accensione, mentre per vedere se e quando è il tempo è
terminato, è necessario digitare "/status". Naturalmente
premendo il tasto "OFF", si può terminare l'accensione del
relè in qualsiasi momento. |
Come
si vede nell'immagine del riquadro superiore, ci sono
due file di pulsanti, la prima ne contiene due, la seconda
tre. Naturalmente è possibile inserirne di più per ogni
riga, e aumentare anche il numero di righe, però senza
esagerare, perché dovranno essere visualizzate sullo schermo
di un telefonino. Vediamo insieme le linee di programma che permettono di ottenere questa grafica accattivante. Purtroppo l'immagine è stata ridotta per rientrare nella pagina, ma spero sia comunque intellegibile. La prima riga contiene le informazioni relative ai due pulsanti. I loro nomi appaiono nei riquadri blu, mentre le variabili corrispondenti appaiono in quelli rossi. Come si vede, nome e variabile in questo caso corrispondono: "ON" e "OFF". La seconda riga genererà tre pulsanti. quindi si può capire istintivamente come procedere se si volesse variare il numero dei pulsanti e delle righe. In questa seconda linea il nome del pulsante e la variabile sono diversi, seppure siano legati logicamente. Per esempio, il primo punsante ha nome "15 Min.", mentre la variabile corrispondente è "TIME15". E' evidente che se creassimo una variante "Time5", corrisponderà a un intervallo di attivazione del relè di cinque minuti; una variabile "TIME120" produrrà un intervallo di due ore, e così via. E' necessario essere assolutamente precisi nella composizione delle righe, pena errori di compilazione o malfunzionamenti del programma. Ma le variabili devono essere interpretate dal programma, e quindi dovranno essere riportate in altre linee dello sketch:
Clicca qui per visualizzare il programma Clicca qui per scaricarlo in formato ".zip" |
Il terzo progetto |
Il
terzo programma è simile al primo, per cui molte delle
informazioni sono comuni; semplicemente si potrà agire
indipendentemente su due relè, raddoppiando le possibilità
di intervento. Come nel primo programma, l'attivazione/disattivazione del programma si otterrà digitando una serie di comandi da tastiera. |
Un
modulo commerciale
|
Lo
schema elettrico |
Ecco lo schema elettrico generale per il collegamento di due relè a un ESP01. Il primo relè sarà collegato alla porta digitale GPIO2 /DG1); il secondo relè alla porta GPIO0.(DG2). |
Lo
schema elettrico del collegamento dei due relè sulla basetta
sperimentale. Il collegamento del secondo relè è del tutto
simmetrico al primo e si collega su DG2. Come per il primo programma, per i test i due relè possono essere sostituiti dai led presenti sulla basetta. E' sufficiente ponticellare i jumper "JP3" e "JP4" per poterli vedere accendere/spegnere in base ai comandi lanciati da Telegram. P.s.: i due jumper sono coperti dalle immagini dei due relè. |
La
basetta sperimentale con i due relè.
|
Ed
infine la foto del collegamento sulla basetta effettiva. Si
vedono i due jumper LP3 e JP4 sono stati ponticellati. In
questo modo, quando arriva l'impulso, si attivano
contemporaneamente i led e i relè. Naturalmente per i test si possono usare per praticità solo i led, che funzionano perfettamente anche a +3,3v. |
Per
quel che riguarda la descrizione del programma, vedere le
informazioni (quali anche le librerie necessarie) relative
al primo programma. |
Ecco
la lista dei comandi disponibili: /ledon avvia entrambi i led/relè /ledoff spegne entrambi i led/relè /led1on avvia il primo led/relè /led1off spegne il primo led/relè /led2on avvia il secondo led/relè /led2off spegne il secondo led/relè /status mostra lo stato dei led/relè |
la routine che mostra i comandi |
Il
test del programma su Telegram |
Ecco
il test dei comandi possibili con questo programma. Il primo comando da digitare è "/start", oppure si può cliccare sul tasto "avvio" se siamo entrati per la prima volta nella chat, oppure se abbiamo cancellato la cronologia. "/ledon" avvia entrambi i relé (o accende i due led), ed appaiono dopo pochi secondi i messaggi di conferma. "/ledoff" spegne /disattiva in rapida sequenza le due periferiche, e appare la conferma dell'avvenuta operazione. "/led1on" accende il led o attiava il relè collegato sullo zoccolo "DG1" (porta "GPIO2"). Segue la conferma "/led1off" spegne/disattiva la periferica connessa a GPIO2. "/led2on" e "/led2off" eseguono le stesse operazioni sulla periferica collegata alla porta GPIO0, stampando ovviamente la conferma dell'avvenuta operazione. "/status" mostra in ogni momento lo stato di entrambi i led/relè. |
Clicca
qui per visualizzare il programma Clicca qui per scaricarlo in formato ".zip" |
Il quarto progetto |
Il
quarto progetto dal punto di vistra dello schema
elettrico è del tutto identico a quello precedente.
Due relè verranno inseriti sulla basetta sugli zoccoli DG1 e
DG2; se invece si connetteranno direttamente al nostro
ESP01, lo schema sarà identico a quello del progetto
precedente. Dal punto di vista del programma invece, è simile a quello presentato nel secondo progetto; semplicemente ci saranno più pulsanti, per poter gestire entrambi i relè. Anche per le librerie, vale la stessa regola: sono le stesse necessarie per il secondo programma. Come per i precedenti progetti, è possibile utilizzare lo stesso "bot" anche per questo programma; naturalmente in questo caso si potrà usare un solo sketch per volta. Questo è il più completo dei programmi, in quanto usa due relè che possono essere attivati/disattivati sia singolarmente che insieme e anche essere attivati a tempo e disattivati automaticamente allo scadere del periodo prefissato. |
I
primi comandi da usare sono: "/start" per avviare il programma; "/options" per accedere alla tastiera virtuale; "/status" per verificare lo stato dei relè/led. |
Dopo
aver digitato "/start" e poi "/options", appare in tutta la
sua bellezza una tastiera con ben 12 tasti, con i quali si
possono ottenere tutte le combinazioni dei due relè. |
I
comandi, piuttosto intuitivi, si dividono in due gruppi,
suddivisi su due file: I primi due pulsanti, in alto a sinistra,rispettivamente "ON" e "OFF", accendono e spengono contemporaneamente entrambi i relè; di seguito, "ON_1" e "OFF_1", accendono o spengono il primo relè, quello che va su "DG1" relativo alla porta "GPIO2". |
L'ultimo
gruppo della prima fila, "ON_2" e "OFF_2",
accendono/spengono il secondo relè, quello che va sullo
zoccolo "DG2" e corrisponde alla porta "GPIO0" dell'ESP01. Il primo gruppo di tre pulsanti della seconda fila, "15_1", "30_1", "60_1", attivano il primo relè rispettivamente per 15, 30 o 60 minuti. Il secondo gruppo, simmetricamente, attiva il secondo relè per 45, 90 o 120 minuti. Lo spegnimento dei relè avviena automaticamente, allo scadere del tempo prefissato. Naturalmente è sempre possibile disattivarli manualmente, prima del termine, premendo "OFF_1", "OFF_2" oppure "OFF". Nota 1: si ricorda che c'è una certo ritardo tra la pressione di un pulsante e il suo effetto, che varia da pochi secondi a quasi un minuto, in base al traffico verso Telegram. Normalmente è comunque accettabile, avendo effetto da qualsiasi luogo del mondo! Nota 2: se si desidera variare la programmazione della durata dell'accensione a tempo dei relè, vedere le istruzioni date per il secondo programma. Semplicemente la riga di istruzioni sarà un pò più lunga, perché ci saranno le istruzioni per gestire sei tasti invece di tre. |
Clicca
qui per visualizzare il programma Clicca qui per scaricarlo in formato ".zip" |
|
Ho
preso lo spunto (e molto di più!) da un video e da un
repository github di Brian Lough, verso cui sono grato, pur
non conoscendolo. Ecco i link: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/tree/master/examples/ESP8266 per il primo e terzo progetto, tratto da "FlashLED" https://www.youtube.com/watch?v=-IC-Z78aTOs 8266 con telegram relativo al secondo e quarto progetto |