Utilizzare Tasmota con ESP-EYE e ESP32-CAM
Da anni ormai utilizzo i miei sistemi di domotica con dispositivi fatti in casa basati su chip Espressif (di recente ho inziato ad usare anche il Raspberry Pi Pico W per divertimi col MicroPython), Node-RED come server centrale + gestione interfaccia e MQTT come protocollo di comunicazione tra i vari devices (anni fa scrissi un tutorial per html.it).
Utilizzare Node-RED è un sistema che può piacere o meno (certo, ci sono i più accattivanti Home-Assistant, OpenHAB, Domoticz, PiDome e altri) e c’è sempre qualcuno che critica poco costruttivamente credendo che i suoi sistemi siano i migliori in assoluto. Onestamente le diatribe su quali siano i sistemi di domotica migliori sono discorsi che mi scivolano addosso: fino a quando una cosa mi ha sempre funzionato senza creare problemi… a me sta benissimo così! Sono anni (da prima del tutorial di HTML, che risale al 2019) che questo sistema mi funziona ininterrottamente senza mai un blocco o un reset, su una Raspberry Pi 3 (che forse è anche esagerata per quello che sta facendo! Ho amici che con lo stesso sistema usano la Raspberry Pi UNO). In aggiunta tutto va sempre rapportato all’utilizzo che se ne intende fare: non mi serve a nulla un sistema che può implementare la funzionalità Y se già so che quella cosa non mi servirà mai. Fermo restando che su Node-RED, grazie all’installazione di nodi aggiuntivi, fin’ora sono riuscito a fare tutto, anche a controllare i dispositivi tramite Alexa in maniera nativa ovvero senza installare skills. Insomma, a me piace, funziona, e mi sta bene così.
Inizialmente scrivevo da me i miei firmware per i dispositivi ESP, poi, da quando ho cominciato ad utilizzare Tasmota sia per riprogrammare i vari modelli di Sonoff, sia per programmare i dispositivi fatti da me con gli ESP8266, mi sono abituato con questo e così ho continuato: sempre perchè non mi sono mai capitati malfunzionamenti o blocchi. Anche qui si potrebbe dire: eh! Ma c’è ESP-Home, c’è Espurna (che però non aggiornano da parecchio) e compagnia bella… Ognuno usa quello che gli piace, che ha imparato ad usare, che gli da soddisfazione, che gli funziona, che… [motivo qualsiasi]. Ho bisogno di un device che controlli una luce? (è successo questo Natale, perchè ho deciso di automatizzare tutte le luci di Natale) Lo butto giù in due secondi con un ESP8266 e un relè, ci carico su Tasmota, configuro l’MQTT e buonanotte: costi irrisori (ma quanto costa un modulo con ESP8266?) e cose che ormai faccio con una certa velocità senza troppi sbattimenti, anche perchè: Tasmota funziona, e funziona benissimo.
Indice dei contenuti
Premessa
Chiaramente se non sapete di cosa stiamo parlando, ma vorreste entrare nell’argomento della domotica low cost fai-da-te, a parte il mio tutorial linkato prima (che oramai risentirà sicuramente dell’età per cui temo che molte cose non siano più valide), ci sono tante altre risorse in rete che parlano dell’argomento e che, bene o male, girano sempre intorno all’ MQTT, anche se non è l’unico sistema per far comunicare i dispositivi tra loro ma sicuramente è il più diffuso, affidabile, semplice e low-cost.
Dicevo: Tasmota! Utilizzo sempre la versione di Tasmota base (non la lite), in Italiano, che carico normalmente sugli ESP8266 e ESP8285 mediante collegamento seriale e Tasmotizer
Anche qui ricevo spesso critiche: mi piace collegare i Sonoff via seriale e usare Tasmotizer, e sinceramente non afferro quali siano i problemi per chi critica poco costruttivamente, dato che il lavoro lo sto facendo io, per me stesso, per hobby. La modalità DIY? La trovo noiosa e laboriosa, in più un paio di volte ci ho provato e mi si è bloccato tutto l’ambaradan. A conti fatti, poi, con la manualità che ho preso faccio prima a saldare due fili e andare di Tasmotizer, specie quando compro i pacchi da 5 a buon prezzo e li tasmotizzo in un’unica sessione. Pace.
Ci sono le versioni di Tasmota anche per ESP32 (Tasmota32) e, cosa molto interessante, c’è la versione per le schedine ESP32 munite di Telecamera OV2640 (tasmota32-webcam).
In questa guida mi riferirò alla scheda in mio possesso: la ESP-EYE che forse è meno comune della ESP32-Cam ma è quella realizzata da Espressif e che ha delle features che però non andrò ad utilizzare (il microfono I2S). Comprai la ESP-EYE appena uscì, quando era l’unica scheda con ESP32 munita di telecamera, ma non ve la consiglio (vi consiglio la ESP32-Cam).
Per l’una e per l’altra board i passaggi sono uguali, tranne per il fatto che, per schede diverse dalla ESP32-Cam (e quindi ESP-EYE inclusa), c’è un po’ di sbattimento in più dal momento che tasmota32-webcam esce già configurato per ESP32-Cam.
La peculiarità di avere Tasmota-webcam sulla board è che, avendo altri GPIO a disposizione si possono integrare in unico dispositivo stream video e sensori, e in più lo stream video è utilizzabile da software di videosorveglianza. Ma andiamo per gradi.
Installazione Tasmota32-webcamera
Come dicevo, le release Tasmota32, per ora, non possono essere caricate su ESP32 con i sistemi “classici”, per cui il binario va caricato sulla board tramite un programma apposito. Un programma molto usato è ESP-Flasher ma Chrome non me lo fa scaricare più in nessun modo, per cui ho utilizzato il programma della casa madre Espressif: Flash Download Tools. Scarichiamo quindi Flash Download Tools e il file binario compilato tasmota32-webcam.bin che trovate a questo link.
Teniamo premuto il pulsante boot sulla ESP-EYE (tenendo la board con la telecamera di fronte a voi e col connettore USB in basso, il tasto boot è quello sulla sinistra. Se la vostra board non ha il pulsante boot, va collegato il GPIO0 a GND) colleghiamo quindi la board al PC con un cavetto USB. Dopo aver collegato la board possiamo rilasciare il pulsante (ovvero possiamo staccare il collegamento GPIO0-GND).
Non preoccupatevi se non vedete nessun led acceso sulla ESP-EYE: è normale. L’importante è aver sentito il suono di windows all’atto del collegamento del cavo, ad indicare che è stata creata la porta COM. Il tenere premuto il pulsante di boot durante l’alimentazione della scheda serve per mettere l’ESP32 in modalità bootloader, ovvero accettare un nuovo programma.
Lanciamo quindi Flash Download Tools. Si aprirà una finestra terminale di windows che scompare dopo qualche secondo, dopodichè una finestra ci chiede di selezionare che tipo di chip vogliamo programmare:
Per l’ESP-EYE va selezionato ESP32-D2WD come nell’immagine sopra, invece per la ESP32-CAM va selezionato semplicemente ESP32, per altri tipi di board cercate di leggere la sigla sul chip ESP e selezionate quello corrispondente dalla casella a discesa. In WorkMode lasciamo Develop. Premiamo quindi OK.
Nella successiva finestra va selezionato il file da caricare e l’indirizzo di memoria a cui caricarlo:
Alla prima riga, che a voi apparirà vuota, clicchiamo sul tasto coi 3 puntini per selezionare il file tasmota32-webcam.bin che abbiamo scaricato prima. Nella casella affianco, dopo il simbolo @, scriviamo 0x10000 che è l’indirizzo di memoria alla quale è mappata la flash esterna su ESP32 (diverso da ESP8266). Diamo quindi il segno di spunta all’inizio della riga (guardate l’immagine). In COM selezioniamo la porta COM creata dalla board (se non ci sono altri dispositivi collegati, è l’unica disponibile). Premiamo quindi il pulsantone START. Nella casella bianca compaiono gli indirizzi MAC del modulo. L’upload dura un minuto circa. La fine dell’upload viene segnalata dalla scritta FINISH su sfondo blu.
Configurazione Tasmota
Possiamo quindi chiudere il programma e premere il tasto di reset sulla board (è quello sulla destra). Adesso prendiamo un cellulare, e con il wifi attivo cerchiamo la rete che si chiama tasmota-xxxxxx-yyyy (dove le xxxxxx sono le ultime 3 cifre esadecimali dell’indirizzo MAC del modulo stazione WiFi dell’ESP32). Il cellulare vi dirà che questa rete WiFi non ha internet e vi chiederà se volete connettervi ugualmente, chiaramente risponderete di si, dopodichè aprirete il browser e digiterete l’indirizzo 192.168.4.1
Comparirà la pagina di prima configurazione di Tasmota nella quale saranno elencate le reti WiFi disponibili nell’ambiente: selezionate la vostra rete di casa, immettete la password e premete Save. Non chiudete il browser sul cellulare ma osservate la schermata: il dispositivo si riavvierà e connetterà alla rete mostrando l’indirizzo IP assegnato dal vostro router.
Da un PC (ma potete continuare anche dal telefono) digitate l’indirizzo IP sopracitato. Nel caso in cui stiate utilizzando una ESP32-Cam, avete già finito: vedrete già l’immagine trasmessa dalla telecamera (in realtà per ESP32-cam si possono fare ulteriori aggiustamenti per utilizzare il led bianco ultra-luminoso che è collegato su GPIO4). Se state usando una ESP-EYE cliccate su Configuration e quindi su Configure Other. Dove c’è scritto Template inserite la seguente stringa che viene fuori dal template che ho preparato io (ripeto: vale solo per ESP-EYE):
{"NAME":"ESP-EYE","GPIO":[1,0,0,1,4992,5120,1,1,1,5089,5090,32,1,1,5024,1,0,288,576,5056,0,5184,1,5152,0,0,0,0,1,1,5088,5091,5095,5094,5093,5092],"FLAG":0,"BASE":1}
Spuntate la casella Activate e premete quindi Save. Al Riavvio dovreste vedere l’immagine nella home page di Tasmota, insieme ai tasti.
Dal momento che esistono altre schede munite di telecamera e che potrebbero avere collegamenti diversi, vi spiego da dove viene fuori quella stringa e come fare se la vostra scheda è diversa o volete personalizzarla.
Template per telecamera
Se avete caricato il mio template, non avete bisogno di fare questa procedura, per cui, volendo, potete anche saltare questo paragrafo. Ritornate alla pagina iniziale (digitate l’indirizzo IP della board, pulito). Premete Configuration e quindi Configure Template. Qui potete definire la funzione specifica di ogni singolo pin: oltre ad impostare i pin utilizzati dalla telecamera, possiamo anche definire altro nel caso volessimo utilizzarlo (led, pulsanti, relè, sensori vari). Per configurare la telecamera abbiamo bisogno di conoscere a quali pin è collegata. Nel caso di ESP-EYE i collegamenti della telecamera ai GPIO sono i seguenti:
Collegamento | Sigla Pin telecamera | GPIO ESP32 |
---|---|---|
Clock Serial Camera Control Bus | SIOC | 23 |
Data Serial Camera Control Bus | SIOD | 18 |
Clock di sistema | XCLK | 4 |
Sincronismo verticale | VSYNC | 5 |
Riferimento orizzontale | HREF | 27 |
Pixel Clock | PCLK | 25 |
Data Bit 0 | D1 | 34 |
Data Bit 1 | D2 | 13 |
Data Bit 2 | D3 | 14 |
Data Bit 3 | D4 | 35 |
Data Bit 4 | D5 | 39 |
Data Bit 5 | D6 | 38 |
Data Bit 6 | D7 | 37 |
Data Bit 7 | D8 | 36 |
In questa pagina andremo a scrivere sopra, in Name, ESP-EYE (nome a piacere). Sotto, per ogni GPIO che ci interessa, andremo a selezionare dalla lista a scorrimento la funzione specifica: le funzioni della camera iniziano per CAM_, ad esempio per il GPIO4, come da tabella sopra, selezioneremo CAM_XCLK e così via. Per le linee dati, una volta selezionato CAM_DATA, affianco compare un’altra casella a discesa dalla quale sceglieremo il numero (la numerazione su Tasmota è a base 1, quindi per la linea dati 0 selezioneremo 1, per la linea dati 1 selezioneremo 2 e così via). Vi lascio con le immagini della mia configurazione per farvi capire meglio:
Come vedere alcuni GPIO inutilizzati sono messi come user altri come none questo perchè erano già così e non li ho toccati. In più vedete che ho configurato altri GPIO dal momento che la board in questione ha anche dei led e dei pulsanti. In particolare:
- GPIO15 = Button 1 (il pulsantino laterale a sinistra)
- GPIO21 = LED 1 (il led rosso a destra – seguirà la pressione del pulsante)
- GPIO22 = LedLink_i (il led bianco a sinistra – indicherà il collegamento alla rete Wifi e la trasmissione)
La funzionalità Button è di default associata ad un relè e un led di stato: il led l’ho configurato (sul GPIO21) e avendo a disposizione un pin libero, potrei collegarci un relè. Cliccando il pulsante il relè commuta, così come il led associato e posso anche controllare il relè da remoto mediante MQTT o richieste HTTP. Ma ESP-EYE non ha pin liberi (credo, sto indagando sui pad della seriale presenti frontalmente, se posso utilizzarli e a quali pin fanno capo). Non so se ESP32-CAM ne abbia dato che non la ho, ma se me la volete regalare, posso aggiornare l’articolo o farne uno nuovo.
Chiaramente, ripeto: questa configurazione vale per la ESP-EYE, per altre board munite di telecamera avete bisogno dello schema. Una volta fatte queste modifiche bisogna salvare. Al riavvio non dovreste ancora vedere nulla: bisogna andare in Configuration -> Configure Other e dare il segno di spunta ad Activate sotto la stringa del template. Premete Save.
Opzioni telecamera
Potrebbe non piacervi l’orientamento della telecamera, oppure potreste trovare troppo piccola l’immagine. Niente paura: è possibile configurare svariate opzioni con 3 diversi metodi: dalla console di Tasmota, via HTTP request o via MQTT. La console è sicuramente il sistema più semplice.
Dal menù principale cliccate su Consoles -> Console
A differenza di Tasmota per ESP8266 ed ESP8285, Tasmota32 ha Consoles, al plurale, perchè oltre alla console standard è presente la Berry Console che consente di eseguire degli script più complessi, che a noi in questo momento non servono, ma se volete approfondire c’è la documentazione.
Compare la console di comando e log di Tasmota. Se volete capovolgere l’immagine, nella barra inferiore, dove c’è scritto Enter Command, digitate:
wcflip 1
E date invio.
Se volete aumentare la risoluzione, digitate, ad esempio:
wcresolution 7
Questo porterà la risoluzione dell’immagine ad 800×600. Però più saliamo di risoluzione, più l’immagine andrà a scatti. Ricordatevi che state utilizzando un ESP32, non una telecamera di sorveglianza che nasce con quel preciso scopo. L’elenco completo dei comandi e dei parametri si trova qui.
Accesso remoto alle immagini
Chiaramente fin’ora avete visto l’immagine trasmessa nella home page di tasmota, insieme ai tasti. Per accedere allo stream, ovvero visualizzare solo l’immagine, potete utilizzare i seguenti due URL indifferentemente:
- http://[indirizzo ip]:81/stream
- http://[indirizzo ip]:81/cam.mjpeg
mentre digitando l’indirizzo:
- http://[indirizzo ip]:80/snapshot.jpg
Viene catturata un’immagine. C’è solo un rovescio della medaglia, che ho notato: se un secondo dispositivo accede allo stream, lo stream del primo dispositivo viene bloccato. Non so se è una cosa bypassabile o meno, devo ancora indagare. Gli URL possiamo utilizzarli nei sistemi di cattura che preferiamo, ad esempio Motion EyeOS, iSPy o altri oppure, ancora, visualizzarli nel nostro sistema di domotica preferito se ha i componenti per visualizzare gli stream video.
E’ chiaro che, in tutti questi casi, dobbiamo configurare il router perchè assegni sempre lo stesso indirizzo IP alla board. Ogni router ha la sua pagina di configurazione: normalmente la tabella con gli IP fissi si trova nella pagine di gestione del DHCP: da qui andrete ad assegnare l’IP fisso alla board fornendo l’indirizzo MAC che potete prendere dalla pagina Information di Tasmota.
Commenti
Per commenti potete utilizzare Threads, sotto questo post.
Consigli per gli acquisti
- ESP32-cam munita di schedina USB per la programmazione
- ESP32-cam con antenna esterna (ma senza schedina USB per la programmazione)
Links
- Tasmota webcam server for ESP32
- Release (.bin) Tasmota32
- Tabelle di connessione camera
- Comandi Tasmota per Camera
- Configurazione Tasmota per ESP32-Cam