Impara a configurare il firmware ESPEasy

V=IxR .it - L'HUB Italiano dove imparare a costruire l'elettronica e a programmare l'hardware

Impara a configurare il firmware ESPEasy

come configurare espeasy

Per capire le potenzialitá del firmware ESPEasy, installabile sui Chip ESP82XX, é necessario prima capirne i punti cardini, quindi, come fare ad effettuare la giusta configurazione sulla base delle nostre esigenze.

Prima di iniziare

Dopo aver imparato a flashare la nostra board Wemos con il firmware ESPEasy, passiamo ora ad analizzare nel dettaglio la configurazione dello stesso.

Nel precedente articolo l’ultimo passo è stato quello di trasformare la board dallo stato di default di Access Point a quello di dispositivo collegato alla nostra rete locale.

Il nostro router ha assegnato un IP a questo dispositivo che abbiamo visualizzato sul nostro browser al termine delle operazioni.

Avendo la board collegata al nostro computer digitiamo l’indirizzo IP del Wemos ed attendiamo che venga visualizzata la seguente pagina:

Questa pagina è riepilogo con un po’ di informazioni della nostra schedina. Andiamo ad analizzarle una per una:

  1. Load (carico) : è un valore che fornisce indicazioni su quanto è occupato il nostro sistema. Il valore di LC è un contatore che indica quanti cicli di loop vengono eseguiti in un secondo. Più task sono attivi sulla board è più questo valore è basso. Un board che lavora con carico sul 25% ha un valore di LC pari a circa 20.000.
  2. Uptime: indica da quanti minuti è accesa la nostra board.
  3. Wifi RSSI: indica la forza del segnale Wifi espressa in dB. Un valore basso indica un valore un qualità inferiore. Se espresso in numeri negativi più il valore si avvicina a zero e migliore è la qualità.
  4. IP: è l’indirizzo IP della nostra board
  5. GW: è il gateway a cui siamo collegati (normalmente il router di casa)
  6. Build: è la versione del firmware della nostra board
  7. Core version: è la versione del core del firmware
  8. Unit: Ogni board richiede numero univoco compre tra 1 e 31
  9. STA MAC: indica l’indirizzo fisico della scheda quando funziona in modalità stand alone
  10. AP MAC: indirizzo fisico della scheda quando funziona come access point
  11. ESP Chip ID: identificativo che chip ESP montato sulla scheda
  12. Flash Chip ID: identificativo della flash interna dell’ESP
  13. Flash Size: dimensione della memoria flash
  14. Sketch size/free: indica la memoria utilizzata per il programma e quella libera
  15. Free mem: memoria flash libera
  16. Boot cause: cosa ha causato il riavvio della scheda. “Cold boot” viene generato quando la scheda viene scollegata dall’alimentazione e ricollegata. “Manual reboot” quando viene viene resettata.

Nella parte inferiore della pagina c’è una tabella dove vengono indicati i nodi della rete di dispositivi Wemos. Questi valori saranno visualizzati solo se verrà impostata la porta UDP nella configurazione avanzata e assegnando un numero di unità al dispositivo (Unit). Entrambe le opzioni le vedremo più avanti.

Le altre voci del menu

Passiamo adesso ad esaminare le altre voci di menu posizionate in alto.

In sequenza passiamo ora alla sezione “Config” che tra l’altro è sicuramente la prima sezione dove mettere le mani per poter usare la nostra scheda:

Main Settings

  1. Name : qui possiamo assegnare un nome al nostro dispositivo. Per comunicare con la nostra schedina con il protocollo MQTT è importante assegnare un nome coerente al Wemos. Di default il nome è “newdeivce”.
  2. SSID : è l’SSID della rete Wifi a cui siamo collegati.
  3. WPA Key : è la chiave WPA della rete Wifi
  4. WPA AP Mode Key : è la chiave WPA quando il dispositivo funziona come Access Point.
  5. Protocol :
    1. Domoticz HTTP : è stato il primo protocollo e probabilmente il più diffuso in combinazione con ESP Easy. E’ supportato da Domoticz. Per i dettagli rimando al sito. La porta di default è la 8080.
    2. Domoticz MQTT : Questo protocollo è stato sviluppato recentemente su Domoticz. Bisogna installare l’hardware “MQTT Client Gateway with LAN interface” prima di usarlo. Attualmente sono supportati solo sensori che ricevono dati su Domoticz MQTT. Pulsanti e attuatori non sono supportati.
      Domoticz non ha un broker MQTT interno. Si può installare Mosquitto abbastanza semplicemente se si sta usando Domoticz su Raspberry Pi. L’ESP comunica con il broker MQTT sulla porta di default 1883, che può essere anche cambiata. Il broker MQTT distribuisce i messaggi tra i vari nodi connessi (sistemi che si sono sottoscritti al broker).
    3. OpenHAB MQTT : Anche OpenHAB non ha un broker MQTT interno. Anche per questo protocollo vale il discorso fatto per Domoticz MQTT.
    4. PiDome MQTT : Ha un broker MQTT interno. L’ESP comunica con il broker tramite la porta di default 1883, che può essere variata. Anche qui Il broker MQTT distribuisce i messaggi tra i vari nodi connessi (sistemi che si sono sottoscritti al broker).

      Nota
      :Per tutti e tre i protocolli MQTT menzionati in precedenza è importante ricordare che, quando si usa un protocollo MQTT, bisogna settare il numero di unità dell’ESP con un numero diverso da zero e che non vada in conflitto con altri moduli presenti sulla rete.
    5. Nodo Telnet : Questo protocollo è stato creato perché è l’unico modo per poter leggere dati dal dispositivo Nodo Mega. Una scheda Nodo Mega, con il modulo Ethernet (NES), è in ascolto sulla porta telnet di default: 23. Ci può essere solo una sessione attiva e questa è una cosa limitante. Usare più unità ESP con questo protocollo non è stato testato e potrebbe creare conflitti.
    6. ThingSpeak : E’ un semplice Web Service (sito). Può essere utile se non si dispone di un server in esecuzione per l’home automation come Domoticz. Si può indicare la temperatura di casa propria su internet con soltanto un modulo ESP.
      Il web service ThingSpeak lavora con le chiavi API. Prima di usare ThingSpeak, bisogna creare un account, settare un canale e ottenere la API-Key di scrittura. La chiave dovrà poi essere inserita nel campo “Controller password”.
      Per il protocollo ThingSpeak bisogna impostare il parametro “Message Delay” a 15000 ms per poter leggere più sensori. Questo parametro si imposta nel menu “Tools/Advanced setting”.
    7. EmonCMS : Anche questo è un Web Service (sito). Vale lo stesso discorso fatto per il protocollo ThingSpeak.
    8. Generic HTTP Advanced : Molti sistemi forniscono una semplice API HTTP dove i dati possono essere gestiti tramite una chiamata GET con un’appropriata stringa di richiesta.
      Si può settare un template ed ottenere una richiesta del genere come risultato:
      http://www.homeserver.local/update.php?name=demosensor&id=12345&value=23.5
    9. FHEM HTTP : Supporta le API HTTP per il sistema di home automation FHEM (sito).
  1. Locate controller : come identificare il nostro controller. Per default l’opzione è settata su “Use IP address”, cioè utilizzando l’indirizzo IP, ma può anche essere settata “Use Hostname”, cioè specificando il nome dell’host.
    Nota:
    Per controller si intende la macchina server con la quale vogliamo comunicare, mediante il protocollo scelto nel punto 5.
  1. Controller IP / Controller Hostname : questa voce cambia al cambiare della voce precedente (6). Ovviamente qui và specificato l’indirizzo IP dell’host oppure il suo nome.
    Esempio:
    Se sulla nostra rete è collegato una macchina Raspberry che ci fa da broker MQTT con Mosquitto, nel punto 7 mettiamo l’indirizzo IP di questa macchina.
  1. Controller port : per default è settato a 8080. Ovviamente và cambiato in base alla porta di comunicazione del nostro controller con il quale vogliamo comunicare. Per esempio Mosquitto utilizza la porta 1883.
  2. Controller User : qui possiamo impostare la Username con la quale saremo riconosciuti dal nostro controller. Se sul controller non è stata prevista l’autenticazione lasciare il campo vuoto.
  3. Controller Password : stesso discorso fatto per il punto 9.
  4. Sensor Delay : Per default è settato a 60. Indica ogni quanti secondi il Wemos riporta al Controller. Se impostato a zero il Wemos và in “deep sleep”, un “sonno profondo” e può essere risvegliato soltanto portando il pin RST a GND.

Attenzione. Durante il “deep sleep” l’interfaccia Web non funziona. Per uscire da questa modalità dobbiamo spegnere e riaccendere il Wemos. Abbiamo 30 secondi per entrare nella pagina del Wemos e disabilitare il “deep sleep”.

  1. Sleep Mode : spuntare questa opzione per mandare la scheda in modalità “deepsleep”, descritta in precedenza.

Optional Settings:

  1. ESP IP : è l’indirizzo IP del Wemos.
  2. ESP GW : è l’indirizzo del Gateway.
  3. ESP Subnet : è l’indirizzo della subnet. Per default il valore è settato a 0.0.0.0. Di solito viene impostato con il valore 255.255.255.0.
  4. ESP DNS : è l’indirizzo IP del server DNS locale. Per default il valore è settato a 0.0.0.0 ma di solito è indicato l’indirizzo IP del router internet locale.

La prossima voce di menù che andremo ad analizzare nel dettaglio è “Hardware”:

In questa pagina possiamo assegnare ad un pin della nostra board l’indicazione del flusso di dati da/verso la nostra board.

A seguire è possibile scegliere a quale pin della board assegnare il bus I2C che utilizza due segnali: SDA (Serial DAta) e SCL (Serial CLock).

I successivi campi permettono di impostare lo stato iniziale di ogni PIN. La scelta è tra i seguenti valori:

  • Default
  • Output High
  • Output Low
  • Input

Quindi possiamo indicare alla board se vogliamo che all’avvio i pin vengano settati come Input oppure Output (alto e basso) oppure possiamo scegliere “default” che non imposta lo stato del pin, lasciando ai comandi software la configurazione.

Il menu successivo è “Devices”:

In questa pagina possiamo settare 12 dispositivi, scegliendo tra un elenco piuttosto lungo. Si può assegnare alla board il controllo di un pulsante, di un sensore di temperatura, di un relè, ecc..

Cliccando sul pulsante “Edit” in corrispondenza di ogni riga, si aprirà la seguente pagina:

 

Cliccando sul lista in corrispondenza della voce “Device” si aprirà il seguente elenco:

Ogni device ha i suoi parametri di configurazione. Per esempio, selezionando il device “Switch input”:

In questa maschera possiamo configurare un pulsante collegato su uno dei pin della board ed assegnargli un nome. Quest’ultimo è importante per poter leggere il valore relativo allo stato del pulsante nel relativo topic MQTT.

Questo è solo uno dei tanti dispositivi che possiamo configurare in abbinamento alla Wemos. La configurazione di ognuno di essi richiederebbe una trattazione a parte.

Il menu Tools:

Passiamo quindi al menù “Tools“:

System Reboot causa il riavvio del dispositivo.

Log visualizzerà nella pagina una serie di informazioni relativi alla board:

Questa pagina è molto utile per vedere se ci sono errori nella comunicazione tra i device e l’host oppure vedere se stiamo pubblicando su un Topic sbagliato, ecc. ecc..

Se notate che la vostra board si comporta in modo anomalo, andate a vedere il log per capire cosa sta facendo.

Per default, il log è settato su ‘2’ il che significa che verranno letti nel log anche i valori letti dai sensori collegati. Per risparmiare memoria si può disabilitare il log impostandolo a ‘0’ nel menu “Tool/Advanced”.

La voce “Advanced” aprirà una pagina dove possiamo impostare la scheda in maniera più dettagliata:

  1. Subscribe Template : è usato per il subscribe a topic MQTT. Selezionando un protocollo di tipo MQTT questo campo verrà riempito in automatico.
  2. Publish Template : è usato per il publish su un topic MQTT e anche questo verrà riempito in automatico selezionando un protocollo MQTT nella voce “Config/Protocol”. Viene usato anche per il protocollo http generico, infatti è possibile creare qui un proprio template personalizzato.
  3. MQTT Retain Msg : I messaggi MQTT che verranno inviati avranno un flag di retain. Questo indicherà al broker di conservare l’ultimo messaggio in memoria. E’ utile per monitorare un broker usando, per esempio, un MQTT scanner, ecc..
  4. Message Interval : Per evitare il sovraccarico il controller o il web service, è possibile impostare un tempo di ritardo tra i report. Per default il valore è settato a 1000 millisecondi. Per alcune applicazioni è probabile che sia necessario abbassare questo tempo. Non scendere sotto i 100 millisecondi.
  5. Fixed IP Octet : Configurazione di rete speciale in cui l’ESP si avvia con DHCP per ottenere la configurazione di base della rete e quindi imposta l’ultimo ottetto su un IP fisso.
  6. Use NTP : Abilita il clock interno software, sincronizzato usando internet.
  7. NTP Hostname : Può essere lasciato vuoto, perché per default viene usato ntp.org. Volendo si può modificare indicando l’hostname preferito.
  8. Timezone Offset : Offset in minuti rispetto al GMT (tempo di Greenwich). Per l’Italia il valore da settare è 60.
  9. DST : Acronimo di Daylight saving time (ora legale). Se spuntiamo questa opzione la modifica dell’orario, nel passaggio da ora solare a legale dovrà essere fatto in manuale.
  10. Syslog IP : Inseriamo qui l’indirizzo IP del server syslog se lo stiamo utilizzando. Per Windows esiste una versione portable (http://tftpd32.jounin.net/tftpd32_download.html) consigliata. Scaricare il software e scompattarlo. Impostare su ESPEasy l’indirizzo IP della macchina (10) sulla quale abbiamo scompattato il software, e impostiamo a ‘4’ il valore dell’opzione Syslog level (11).

Avviamo il software e se è tutto OK riusciremo a visualizzare il log.

  1. UDP port : E’ usata per la comunicazione tra le varie unità ESP collegate sulla rete. Usare un numero che non vada in conflitto con altri servizi attivi sulla rete. Se stiamo usando un server syslog (10) non possiamo usare la porta UDP 514. Impostando il valore di questo campo diverso da zero vedremo la lista dei nodi nella pagina principale di ogni ESP collegato alla rete.
  2. Enable Serial Port : abilita/disabilita la porta seriale.
  3. Serial log level : Può essere settato con un valore compreso tra 0 e 4:
  • 0 : nessun log
  • 1 : errore
  • 2 : errore + info
  • 3 : errore + info + debug
  • 4 : errore + info + debug completo
  1. Web log level : E’ il livello di log per l’interfaccia Web. Può assumere un valore compreso tra 0 e 4 come nel punto precedente.
  2. Baud Rate : velocità della porta seriale.
  3. WD I2C Address : Indirizzo I2C per inviare messaggi WD (Watch Dog). Funzionalità sperimentale.
  4. Custom CSS : Spuntare questa casella per utilizzare un file CSS (Cascading Style Sheet) personalizzato. Per prima cosa bisogna fare l’upload del file “esp.css”. Il file non deve superare la dimensione di 4 kbyte.
  5. Use SSDP : SSDP (Simple Service Discovery Protocol) è un protocollo di rete basato sul protocollo ‘Internet protocol suite’ che permette di riconoscere i dispositivi collegati alla rete in modo automatico.
  6. Rules : spuntare questa opzione per permettere l’abilitazione della pagina “Rules”. Questa pagina permetterà di impostare degli script che verranno eseguiti dalla board.
  7. I2C ClockStrechLimit e Global Sync sono opzioni sperimentali di cui ignoriamo il funzionamento e quindi non tratteremo.

Ritornando alla pagina “Tools” andiamo a vedere le voci rimaste:

Wifi Connect”, come è facile intuire ci permette di collegare il nostro dispositivo ad una rete Wifi, mentre al contrario “Disconnect” ci disconnette dall’attuale rete Wifi a cui siamo collegati.

L’opzione “Scan” esegue una scansione delle reti Wifi visibili e ci presenta un elenco con il nome (SSID) e la potenza:

A seguire l’opzione “I2C scan” ci presenta una lista di tutti i dispositivi collegati sul bus I2C:

L’opzione “Settings Load” permette di caricare da file .TXT una configurazione salvata in precedenza con l’opzione “Save“.

Cliccando su “Firmware Load” possiamo flashare la nostra board caricando un file (.bin) dal nostro computer. Si aprirà la pagina <ip_espeasy>/download:

Clicando sul pulsante “Sfoglia…” selezioniamo il file da inviare al Wemos, dopodichè premiamo “Update” per eseguire la scrittura del firmware.

L’opzione “Command” permette di inviare dei comandi alla board attingendo da un set di comandi che permettono svariate operazioni.

I comandi si dividono i quattro categorie:

Internal - Possono essere eseguiti da seriale e dall'engine Rules
Rules -  Possono essere eseguiti da seriale e dall'engine Rules
Plugin - Possono essere eseguiti da seriale e dall'engine Rules, HTTP, MQTT
Special - Possono essere eseguiti da qualsiasi sorgente

Possiamo fare riferimento a questa pagina per un’elenco completo dei comandi supportati dal firmware EasyEsp.

Quando inviamo un comando, dopo aver premuto il pulsante “Send“, comparirà poco sotto la textbox “Command Output“:

Se il comando è stato correttamente riconosciuto dal firmware verrà visualizzata la scritta “Ok”, altrimenti “Unknown command!”.

Ultima e non meno importante pagina del nostro firmware è “Rules“. La pagina si presenta così:

In questo editor possiamo inserire degli script che ci permetteranno di far eseguire al nostro dispositivo determinati compiti.

La sintassi del linguaggio di programmazione adottato dal firmware easyesp è dettagliata nel tutorial sui “rules” della pagina di Letscontrolit.

Chiudiamo qui questa mini guida di riferimento alle varie opzioni del firmware EasyEsp. Le nuove versioni del firmware, successive alla 120 hanno più o meno le stesse impostazioni, magari disposte in modo diverso.

Contribuisci alla crescita della community!

Se l’articolo ti é piaciuto, condividilo sui social network e metti mi piace alla nostra pagina facebook. Non dimenticare di partecipare attivamente all’articolo, lasciando il tuo commento!