lunedì 7 marzo 2022

Console Tasmota - I log

 

Ora che sappiamo muoverci più o meno bene nella console di Tasmota, vediamo come poter accedere ai log per cercare eventuali errori o anomalie!

Cosa si intende per log?

Il logging è la funzione di tenere traccia degli eventi di sistema, intercettandoli, classificandoli ed andandoli a scrivere da qualche parte.

I log si possono abilitare in diversi modi, il più semplice è via interfaccia web seguendo il percorso Configuration - Configure Logging



Ovvio, si possono anche abilitare da console, ma quello lo vedremo più avanti in questo post. 
Come si vede nell'immagine sopra, si possono avere i log in quattro modi :
  • seriale
  • web
  • mqtt
  • server syslog

Facciamo una rapida analisi del tutto per capire le diverse opzioni che abbiamo. Per il momento evitiamo i livelli di log, li analizziamo poco più avanti. Iniziamo con il capire dove vengono serviti log!


Seriale
Il log via seriale è erogato o tramite interfaccia seriale/usb (la stessa che si usa per il flash e per accedere alla console via seriale). Se c'è un qualche link seriale (per esempio con un dispositivo extra), viene disabilitato. Se non viene specificatamente abilitato, all'avvio del sistema il log seriale è sempre abilitato e viene disabilitato dopo 10 minuti.

Web
Il log web, in realtà, non eroga un log di qualche tipo via web, ma tiene traccia di tutto quello che succede nell'interfaccia web. Questo è utile per capire se qualcuno smanetta nei parametri del dispositivo, quando lo ha fatto e cosa è andato a toccare.

MQTT
Tutti i dati di log possono essere mandati come payload MQTT, in modo che vengano immagazzinati dal broker. Questa soluzione, in mancanza di meglio, è percorribile comodamente. Ma, a mio avviso, bisogna usare gli strumenti giusti per ogni eventualità. Fare un log su un server MQTT non è veramente fare un log, passiamo all'opzione migliore!

Server Syslog
Questa opzione è a mio avviso la migliore e la più sicura. I server Syslog nascono proprio per tenere traccia di tutti gli eventi che vengono mandati dai vari apparati della rete. Capisco che per uso domestico magari uno non abbia (o non voglia) un server dedicato, ma ci sono mille opzioni. Per esempio, i NAS spesso hanno l'app dedicata Syslog, oppure un serverino light che giri su un raspberry lo si trova , ad iniziare da rsyslog


Ora che abbiamo capito dove possiamo mandare i nostri log di sistema, vediamo di capire anche il dettaglio che possiamo avere!


Il dettaglio dei log

Poco prima parlavamo dei livelli di log, ovvero di quante informazioni possiamo avere. Il dettaglio va da un livello 0 ad un livello 4, così denominati :

0 - None, non si tiene traccia di nessun evento.
1 - Error, vengono segnalati solo gli errori
2 - Info, vengono segnalati gli errori e le informazioni
3 - Debug, come sopra, ma anche con le informazioni di debug
4 - More Debug, vengono tracciate tutte le informazioni in maniera dettagliata

Sta poi all'utente decidere il livello di log che si desidera. Ovvio che si tende a loggare il meno possibile, se le cose vanno per il verso giusto. Quando invece si hanno dei problemi, si inizia da un livello 1 e si sale fino a che non si hanno le informazioni che servono.

Di base, i dispositivi con il firmware Tasmota hanno questa configurazione :

SerialLog 2
WebLog 2
MqttLog 0
SysLog 3

Questi valori si possono ottenere lanciando un banale Status 3.
Se non sai cosa sono e come interpretare i valori di Status, ho scritto un post enorme sull'argomento : Console Tasmota - Status

Ora che abbiamo capito i tipi di log e le loro destinazioni, vediamo alcuni esempi 



Log via Seriale


Per abilitare il log via seriale il comando corretto è SerialLog .
Avviamo il log per avere le informazioni di livello 4 (More Debug), ecco come ci risponde Tasmota:

07:04:42 CMD: SerialLog 4
07:04:42 MQT: tasmota/test_test/stat/RESULT = {"SerialLog":{"4":{"Active":"4"}}}
07:04:42 CFG: Saved to flash at F9, Count 19, Bytes 4096

Vediamo subito che intanto vengono salvati i dati nella memoria flash nella locazione F9, specificando anche quanti Bytes vengono usati.
Lanciando il comando di Status 5, questo è l'output :

07:10:26 CMD: status 5
07:10:26 SRC: Serial
07:10:26 CMD: Group 0, Index 1, Command "STATUS", Data "5"

Passando invece il comando IpAddress 1 ecco cosa ci dice :

07:11:59 CMD: ipaddress1
07:11:59 SRC: Serial
07:11:59 CMD: Group 0, Index 1, Command "IPADDRESS", Data ""
07:11:59 MQT: tasmota/test_test/stat/RESULT = {"IPAddress1":"192.168.1.50 (192.168.1.50)"}

Ecco invece come si comporta con il comando Teleperiod 30

07:13:18 CMD: teleperiod 30
07:13:18 SRC: Serial
07:13:18 CMD: Group 0, Index 1, Command "TELEPERIOD", Data "30"
07:13:18 MQT: tasmota/test_test/stat/RESULT = {"TelePeriod":30}
07:13:18 CFG: Saved to flash at F8, Count 20, Bytes 4096

Anche per questo comando, possiamo vedere che i dati sono stati salvati nella locazione di memoria F8,

Come dicevo all'inizio, al boot del dispostivo il log seriale viene abilitato per 10 minuti. Alla fine di questo tempo, se viene abilitato un serial log più alto del livello 2, potete vedere questo messaggio :

07:27:34 APP: Serial logging disabled

Ora passiamo al modo successivo di loggare cosa succede, il log web!



Weblog

Come dicevo prima, questo log tiene traccia di cosa succede all'interfaccia web dei dispositivi con il firmware Tasmota. Si lancia molto banalmente con il comando WebLog seguito dal livello di dettaglio che si desidera :

07:44:41 CMD: weblog 4
07:44:41 MQT: tasmota/basic_test/stat/RESULT = {"WebLog":4}
07:44:41 CFG: Saved to flash at FA, Count 114, Bytes 4096

Oltre a comunicare che il log è abilitato, viene anche segnalato in che locazione di memoria vengono salvate le operazioni.

Primo esperimento, partendo dalla pagina web della console sono andato nel menu principale e sono tornato alla pagina della console :

07:44:49 HTP: Main Menu
07:44:51 SRC: WebGui from 192.168.1.157
07:44:51 CFG: Saved to flash at F9, Count 115, Bytes 4096
07:44:53 HTP: Console

Viene segnalato, una volta che il log è abilitato, anche da indirizzo IP è stata inizializzata la comunicazione.
Altro giro, questa volta sono andato nel menu principale, sono passato alla pagina di Configurazione e poi alla Configurazione Timer.
Ho lasciato tutti i parametri invariati, ho salvato e sono tornato indietro fino alla console :

07:46:38 HTP: Main Menu
07:46:40 HTP: Configuration
07:46:44 HTP: Configure Timer
07:46:51 HTP: Configure Timer
07:46:51 MQT: Timers 0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000
07:46:51 HTP: Configuration
07:46:57 HTP: Main Menu
07:46:58 WIF: Checking connection...
07:46:59 HTP: Console

Per tornare al normale livello di log via http basta lanciare il comando WebLog 2

07:50:35 CMD: weblog 2
07:50:35 SRC: WebConsole from 192.168.1.157
07:50:35 CMD: Group 0, Index 1, Command "WEBLOG", Data "2"
07:50:35 MQT: tasmota/basic_test/stat/RESULT = {"WebLog":2}

Bene, anche questo lo abbiamo spiegato, andiamo avanti con gli altri due metodi!



Log via MQTT


Il comando corretto è MqttLog seguito da un numero compreso tra 0 e 4.
Ovviamente questi numeri fanno riferimento ai livelli di log.
Qui di seguito due esempi :

08:37:18 CMD: mqttlog
08:37:18 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"MqttLog":0}

08:37:24 CMD: mqttlog 4
08:37:24 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"MqttLog":4}

Come dicevo, per me loggare le informazioni su un server MQTT è fondamentalmente sbagliato. Andiamo avanti e dedichiamoci al vero log, ovvero mandare le informazioni ad un server SysLog!


Log su server SysLog


Il modo più pulito e più corretto di gestire i log è, come dicevo, usare un server SysLog. Per abilitare il logging, prima bisogna specificare a che indirizzo risiede il server ed a quale porta sta in ascolto. Come si fa? Ma con i due comandi dedicati, ovvero LogHost e LogPort!
Esempio pratico, qui specifico quale sarà il mio server syslog :

07:34:37 CMD: loghost 192.168.1.162
07:34:37 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"LogHost":"192.168.1.162"}

Lo vado a verificare lanciando il comando senza parametri :

07:34:56 CMD: loghost
07:34:56 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"LogHost":"192.168.1.162"}

Così, invece, elimino l'indirizzo IP del server syslog

07:35:02 CMD: loghost 1
07:35:02 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"LogHost":""}

Passiamo ora al comando complementare, LogPort.
Con questo comando posso vedere, modificare o far tornare ai valori di default la porta del server syslog, vediamo come!

Qui specifico che la porta alla quale ascolta il server syslog è la 2468 : 

07:36:01 CMD: logport 2468
07:36:01 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"LogPort":2468}

Controllo che affettivamente il valore sia stato recepito passando il comando senza parametri :

07:37:39 CMD: logport
07:37:39 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"LogPort":2468}

Ora, invece, resetto la porta al valore di default, ovvero 514 :

07:38:26 CMD: logport 1
07:38:26 MQT: tasmota/tasmota_F6C3E5/stat/RESULT = {"LogPort":514}

Ed ora, finalmente, lancio il SysLog :

16:36:02 CMD: SysLog 4
16:36:02 RSL: RESULT = {"SysLog":{"4":{"Active":"4"}}}

Per un rapido esperimento, ho installato il Kiwi SysLog Server, free :



Nella parte sopra, il log sia seriale, mentre in basso gli stessi pacchetti dati sono presentati all'interno del server SysLog.


Conclusioni


Con questo post abbiamo visto tutti i possibili modi per loggare le informazioni (o le operazioni compiute) in un dispositivo con firmware Tasmota a bordo. 
Siamo partiti dal "semplice" log sulla porta seriale per andare alla soluzione "industriale" del server SysLog.
Tutto il lavoro preparatorio di standarizzare i parametri puntava a questo, mandare tutti i dati ad un server SysLog per agevolarne la lettura.

Direi quindi che l'obbiettivo lo abbiamo raggiunto in pieno, ora abbiamo sia uniformità dei parametri (se hai letto il mio post intitolato Tasmota - Standarizzare i parametri sai di cosa stiamo parlando, altrimenti ti consiglio caldamente di leggerlo) ed un posto unico dove mandare i dati in caso di bisogno.

Tutto questo ci si augura che non serva mai, ma nel momento del bisogno con un solo comando possiamo accedere a tutti i dettagli che vogliamo!


Se ti è piaciuto questo post, ho scritto un sacco di cose riguardanti il firmware Tasmota ed i suoi comandi da console, ecco l'elenco: tutti i post con il tag "Tasmota" nel blog

Se poi hai bisogno di una mano, lascia un commento qui sotto e vedrò di aiutarti!

Nessun commento:

Posta un commento

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