giovedì 13 settembre 2018

Parliamo un pochino di Tasmota e della console.


Mi sono reso conto che molti non hanno capito cosa vuol dire cambiare il firmware ai dispositivi Sonoff. Parliamone un pochino!


Nel tempo ho scritto diverse altre cose su Tasmota, ecco i varii articoli :
Console Tasmota : il comando Power
Console Tasmota : il comando Power Blink
Console Tasmota : il comando PulseTime
I comandi del tempo in Tasmota
Mettiamo a nanna i Sonoff

Come flashare Tasmota sui Sonoff


L'operazione che ho fatto vedere nel video è tutto sommato facile, si saldano 4 piedini per poter collegare il Sonoff ad un programmatore usb, poi si invia il firmware.




Io ho usato un programmatore da 10 euro comprato su Amazon ed ho seguito la guida sulla wiki di Tasmota passo passo.

Pare enorme come guida, ma accompagna l'utente che non ha MAI usato Arduino (come me) nel riprogrammare un Sonoff. Io ci ho messo circa 1 ora, perchè la mia connessione va a carbonella, ma con una linea decente suppongo di portare a termine il tutto in meno di 30 minuti.
Controllando due volte.
Ad ogni modo, il tutto è andato a buon fine alla grande!

Perchè usare Tasmota sui Sonoff

Perchè voglio che i dispositivi che sono in casa mia, restino in casa mia.
Sia come hardware, che come dati.
Mi eccita poco che un comando che mando con il cellulare, magari collegato in wifi alla mia rete domestica, passi per un server cinese per ritornare ai miei dispositivi.
Così come mi eccita poco che i miei dati sui consumi o sulle temperature siano "da qualche parte".
Per questo, risolvo il problema alla radice, cambiando il "sistema operativo" dei Sonoff.

Questa cosa, tra l'altro, mi permette di poter raccogliere i dati come e quando meglio mi aggrada, di poter espandere il sistema usando hardware di mia scelta e di far dialogare tutto usando un linguaggio comune.


Scambio dati tra Sonoff con Tasmota e hub domotico

Il linguaggio con il quale i varii sonoff "parlano" tra loro, una volta che sono stati "tasmotizzati" si chiama MQTT ed è un protocollo oramai maturo (ha quasi vent'anni di vita alle spalle) ed è perfetto per questa tipologia di dati.

Un bellissimo articolo introduttivo lo ha pubblicato Luca Dentella e mi pare assurdo riscrivere il tutto. Chi vuole approfondire, ha il link.

Chi invece va di fretta, gli basti sapere che per la sua struttura, il protocollo MQTT è perfetto per questo scambio di dati.
Scambio che, però, presuppone l'uso di un "broker" ovvero di un sistema centralizzato che riceve i messaggi, li inoltra a chi di dovere e ne tiene traccia.

Io come broker ho scelto Mosquitto perchè è un broker leggero, con un'ampia base di installato ed una buona documentazione. Altro lato molto interessante, gira anche con risorse molto limitate.

Quest'ultimo punto mi interessa molto, siccome ho in mente di usare come hardware un RaspberryLa scelta è caduta su di lui per molti motivi, vediamoli!


Perchè scegliere un Raspberry come hub domotico

I motivi sono molti, qui ho elencato quelli che sono importanti per me. Sicuramente ce ne saranno altri, ma a me ora come ora interessano questi.

Costo
Io ho preso una versione "full optional" del Raspberry Pi, ovvero la versione B+ , con scheda SD da 32Gb, alimentatore da 2.5A, adattatore da SD a USB, tre dissipatori e case in plastica. Settantasette euro su Amazon :-)
Ah, c'è anche un cavo HDMI, ma non lo uso di sicuro!

Consumo energetico
A casa mia, 2.5A moltiplicati per 5Volts danno 12.5W di consumo. Visto che è un sistema che deve restare acceso 24 ore su 24, direi che come spesa di corrente me lo posso permettere.

Spazio
Le misure sono ridicole, stiamo parlando di un pacchetto di sigarette. Se non è piccolo questo...

Sistema operativo
Linux a bordo, ottima occasione per rinverdire i comandi ed imparare cose nuove, perchè no?

Documentazione
Tra le tonnellate di documentazione su Linux, quelle su Mosquitto, quelle su Domoticz, openHab e Home Assistant, ho solo che l'imbarazzo della scelta! Sospetto fortemente che non sarà sicuramente questo il punto debole del sistema...

Una delle caratteristiche che mi hanno fatto propendere per Tasmota in accoppiata ad MQTT è il fatto che viene supportato in maniera nativa.


Questo vuol dire che posso prendere un qualunque dispositivo con Tasmota a bordo, andare in Configuration e da lì mi trovo la voce "Configure MQTT".
Inserisco i due (DUE) parametri del broker MQTT e sono in pista.
Se voglio fare il raffinato, ci metto anche login e password, ed i parametri diventano 4.
Raffinato e sborone?
Metto un'intestazione ai messaggi ed i parametri diventano 5.
Tempo totale?
Trenta secondi, a dir tanto.

Direi che il gioco vale la candela, decisamente.




Nel complesso, tra aprire i Sonoff, saldare i pin, installare e configurare l'ambiente Arduino per il flash, fare il flash e configurare tutti ed 11 i dispositivi, ci ho messo 3 ore scarse. Al momento sono soddisfatto, ma sto iniziando la ricerca di un software di domotica che possa gestire e visualizzare tutti i dati.
Vedremo, per ora mi sto concentrando su Domoticz e su OpenHAB , ma non escludo di provarne anche altri :-)

La console di Tasmota

Altra cosa simpatica del firmware Tasmota è la Console di comando, una shell nella quale inserire i comandi per interagire direttamente con il dispositivo, senza tanti menu e sottomenu, in modo facilissimo.

La console vi serve per mille cose, prima tra tutte capire se e dove ci sono dei problemi.
In caso di problemi di comunicazione con il server, viene riportato qui l'errore per aiutarvi nella soluzione del tutto. 

I comandi utili della console di Tasmota

Qui alcuni comandi che trovo utili e veloci da digitare (o copiare ed incollare) nella console per svolgere le operazioni più "delicate".

Mantenere sempre l'interruttore acceso.

Con questo comando mi voglio assicurare che, qualunque cosa succeda, il Sonoff sarà sempre sullo stato ON.
Sia quando il dispositivo si riavvia per un qualche salvataggio, sia per quando riavvierò il sistema domotico centralizzato che installerò.

SwitchRetain on

Forse è un controsenso per un'interruttore wi-fi, ma siccome io voglio monitorare temperature e consumi energetici, per me ha senso...



Mandare i dati via MQTT ad intervalli di proprio gusto


Mi sono reso conto che i miei dispositivi Sonoff/Tasmota mandano le misurazioni solo ogni 5 minuti, perchè? Beh, perchè sono di default installati così, ma è un parametro che si può cambiare eccome!
Tale parametro si chiama teleperiod ed è espresso in secondi, se vogliamo che i dati partano ogni 30 secondi, basta scrivere

TELEPERIOD 30 

e dare invio. Ecco quindi il risultato :

20:54:17 CMD: teleperiod 30
20:54:17 MQT: stat/sonoff_pow_cong_mino/RESULT = {"TelePeriod":"30"}
20:54:17 MQT: tele/sonoff_pow_cong_mino/STATE = 
20:54:17 MQT: tele/sonoff_pow_cong_mino/SENSOR =
20:54:47 MQT: tele/sonoff_pow_cong_mino/STATE = 
20:54:47 MQT: tele/sonoff_pow_cong_mino/SENSOR =
20:55:17 MQT: tele/sonoff_pow_cong_mino/STATE = 
20:55:17 MQT: tele/sonoff_pow_cong_mino/SENSOR = 
20:55:47 MQT: tele/sonoff_pow_cong_mino/STATE = 
20:55:47 MQT: tele/sonoff_pow_cong_mino/SENSOR =


Ok, direi che ci siamo!
Modifica semplice, stupidina e veloce, però ci sono diventato scemo a trovarla!
Ovvio, si può fare anche via web, andando in "Configure" e poi "Configure logging" .



Come si riavvia?


Esiste il comando apposta, ovvero

Restart 1

Salva e riavvia il dispositivo con il firmware Tasmota a bordo, utile quando si cambia indirizzo, gateway o subnet.


Comandi relativi all'orario


Un sistema domotico si basa sull'orario per compiere alcune azioni, ma se si ha l'orario sballato si parte già con il piede sbagliato...  Iniziamo ad impostare sul nostro dispositivo con Tasmota un server time affidabile! Se scriviamo questo :

Ntpserver1 ntp1.inrim.it

metteremo come il primo server NTP (ovvero da dove viene "pescato" l'orario) sul server italiano gestito dall'INRIM. Andiamo avanti, settiamo anche il secondo scrivendo

Ntpserver2 ntp2.inrim.it

In questo modo, abbiamo settato il secondo server NTP sul server "di scorta" sempre gestito dall'Inrim

Timezone 

Mostra il fuso orario nel quale il dispositivo è. Solitamente è timezone 1, mentre in Italia siamo nella timezone 2.

Timezone 2

Allinea l'orario del dispositivo con l'ora locale italiana.

ATTENZIONE : c'è un post aggiornato relativo ai comandi del tempo : I comandi del tempo in Tasmota



Comandi relativi alla rete


Altri comandi molto utili specie nelle prime fasi di setup di un sonoff (o simili) flashato con firmware Tasmota, sono relativi ai settaggi di rete.
Ne elenco alcuni :

IPAddress1
Mostra l'indirizzo ip attuale. 

IPAddress1 192.168.1.123 
Viene settato il dispositivo all'indirizzo ip statico 192.196.1.123
Dopo questo comando, è meglio dare il comando Restart 1

IPAddress2
Mostra gateway attuale

IPAddress3
Mostra la subnet mask

Un elenco completo dei comandi si trova sulla wiki di Tasmota , qui ho riportato solo quelli che trovo comodi avere sottomano...
La prossima volta, si continua il discorso e si fanno i primi passi ad installare un sistema domotico!


Update : questo post sebbene sia valido dal punto di vista delle procedure, è uno dei tanti post che trattano di Tasmota, se li vuoi vedere tutti, li ho raggruppati a questo link!


17 commenti:

  1. Il comando Timezone 2 non tiene conto dell'ora legale (vale solo in estate).
    La sequenza corretta è:
    TimeDST 0,0,3,1,2,120
    TimeSTD 0,0,10,1,2,60
    Timezone 99

    RispondiElimina
  2. Grazie Mino, affidabile e competente

    RispondiElimina
  3. Salve a tutti.....Sto cercando di caricare Tasmota su un sensore magnetico porte/finestre ovviamente wifi con TYSW3E, l ho aperto ed ho saldato dei pin sui 4 fori che ci sono controllandoli con il datasheet e tester corrispondono a Vcc Tx Rx e GND ma non riesco a flashare, in fase di comunicazione con la seriale (provato sia con Linux che con Win), prima di fare il flash premo il pulsante a bordo per entrare (credo) in modalita programming, ho provato pure a mettere a GND il G0 ma niente........ cosa sbaglio ?

    RispondiElimina
  4. Hai provato usando il banalissimo ESPEasy? Lo trovo velocissimo e super facile da usare al posto di Arduino. Ovvio, non puoi personalizzare tutto come con Arduino, ma per un flash "standard" che poi ti andrai a personalizzare via http va benissimo!

    RispondiElimina
  5. Sono un neofita, posso inviare comandi al sonoff flashato con Tasmota usando una mia web application , dove ad esempio creo un pulsante ON/OFF ed alla pressione invio il comando Accendi/spegni ?
    Grazie

    RispondiElimina
  6. Ciao Luigi, certamente lo puoi fare! Puoi mandare un comando direttamente via http così come puoi collegarti a tasmota via http ed usare il tasto di accensione esposto, senza problema alcuno.

    RispondiElimina
    Risposte
    1. Grazie.
      Mi hanno chiesto di sviluppare una web application che comunicasse con sonoff, devo creare una dashboard custom, oltre a creare una web page sai se esistono dei tool come OpenHab che ti permette di creare dei widget che comunicano con i sonoff ?

      Elimina
    2. Ti consiglio caldamente di usare Home Assistant, che ti consente di creare tutte le custom dashboard che vuoi. L'interfaccia, poi, è modificabile e flessibile al massimo, se sei in grado di scrivere una webapp vedrai che non ti troverai affatto spaesato!

      Elimina
  7. salve
    sto cercando senza successo di far comunicare due ESP caricati con Tasmota 9.1.0 tramite MQTT. L'obbiettivo è quello di pubblicare, con primo, un dato qualsiasi e sottoscrivere con l'altro, magari su UART.
    Quello che pubblica è pilotato da un arduino con comando su uart "Publish Prova/variabile xxx" che funziona, visto che riesco a leggere su MQTT Explorer la pubblicazione, ma il ricevitore non mostra nulla, non ho ancora capito se bisogna comandarlo con "Subscribe" da console e chi dovrebbe dargli questo comando (un altro arduino ?)
    Inoltre, nei settaggi di MQTT di Tasmota il topic è impostato a "Prova/variabile" questo non dovrebbe essere sufficiente ad attivare la sottoscrizione?

    grazie

    RispondiElimina
  8. Ciao Anonimo, il secondo dispositivo deve per forza sottoscriversi al topic di tuo interesse, altrimenti ciccia. Ogni Tasmota si auto-sottoscrive ai topic che pubblica a suo nome, ma per fare in modo che un dispositivo possa ricevere dei comandi, ti serve un server MQTT. Senza di esso, ce la vedo dura. Tanto vale allora usare direttamente l'http e le rule...

    RispondiElimina
  9. Grazie per la risposta
    se per server intendi un broker, ovviamente è presente, uso Jeedom su raspberry con plug-in MQTT e la pubblicazione avviene regolarmente.
    Su entrambi i client come topic è impostato "Prova" anzi sul ricevitore il topic è "Prova/variabile"quindi il ricevitore, come dici, dovrebbe automaticamente sottoscriversi a questo topic e mostrare su console i messaggi provenienti da altri client che pubblicano su tale topic.
    Dal trasmettitore, tramite uart pubblico tramite proprio :
    Serial.print("Publish Prova/variabile "); Serial.println(x++);
    e questo lo vedo sul broker e su altri client non Tasmota ma il ricevitore Tasmota non mostra il messaggio sulla console ne tantomeno sul log seriale.
    Sto impazzendo perchè è interessante ma nonostante la mole di informazioni in rete alcune informazioni sono molto difficili da trovare rendendo vana la semplicità del sistema.

    Pasquale

    RispondiElimina

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre