Archivi tag: esp8266

Monitoraggio Sensori – Configurazione Grafana

Dopo aver configurato nodered per inoltrare i dati ai database, si utilizzano dei sensori di temperatura ed umidità con ESP8266, come già visto negli articoli precedenti

Mqtt con Beaglebone ed ESP8266 – Lista Articoli

Di seguito il firmware utilizzato ed il codice per l’invio dei dati dei nodi ESP8266

Firmware ESP8266

Temperatura-Umidià ESP8266

All’interno dello zip del firmware è presente lo script per eseguire l’upload del firmware sulla porta COMX (da modificare nella propria porta COM) su windows.

Nel codice LUA invece occorre inserire i dati del proprio router wireless, l’ip del server mqtt, le impostazione della stanza, sostituendo roomx, con room1, room2,ecc.

Si può quindi impostare Grafana, accedendo alla Dashboard, aggiungendo come sorgenti dati Mysql ed InfluxDB

grafanaSourceCon Add data source si accede alla schermata dei Data Source, da cui si scelgono InfluxDB e MySql

grafanaAddSourceDi seguito le impostazioni eseguite per InfluxDB e MySql

InfluxDBInfluxDBESPMySqlMySqlESPLe due connessioni sono presenti nella configurazione dei datasource

AllDataSource

Di seguito l’export delle due Dashboard usate nell’articolo da importare sul proprio sistema con il pulsante Import

importDashboards

Dashboards

Ecco la schermata della Dashboard ESPRealtime con i dati reperiti su InfluxDB

RealTimeGrafanaPer visualizzare lo storico dei dati, si utilizza MySql con la Dashboard ESPHistory

HistoryGrafana

 

Monitoraggio Sensori – Configurazione Nodered

A questo punto impostiamo nodered per leggere i messaggi su Mosquitto ed inserire i dati in InfluxDB e MySql.

Di seguito il file json da importare in nodered

Json Nodered

Tale flusso è funzionale alla spiegazione del funzionamento della architettura nel complesso; il flusso deve essere ottimizzato programmando nodered in modo da generare automaticamente le informazioni dei nodi da cui arrivano i dati senza ricorrere a diversi nodi per ciascun sensore.

Per eseguire l’import procedere come segue, dopo aver acceduto a nodered

http://dashboardora.local/nodered

e dopo aver cliccato sul menù a destra, scegliere di importare il json da clipboard

importFlowsAlla schermata successiva, scegliere di importare il file json in un nuovo flusso

flowUna volta importato, impostare le credenziali per accedere a MySql ed InfluxDB, selezionando dal menu a destra Configuration nodes ed impostando utenza e password

configureNodesVengono mostrate le connessioni ai db e mosquitto

configureNodesDBDi seguito l’impostazione di MySql, accedibile cliccando con il mouse due volte su ESPMYSQL

MySqlSetting

Con Update si aggiorna il nodo.

Per rendere operativi i flussi cliccare su Deploy

deployOra con nodered prendiamo il contenuto dei vari topic mqtt e li inseriamo all’interno di MySql e di InfluxDB.

Nel prossimo articolo visualizziamo tali dati in Grafana

Monitoraggio Sensori – Configurazione Grafana

 

Monitoraggio Sensori – Configurazione InfluxDB

Dopo aver creato le tabelle su MySql

Monitoraggio Sensori – Configurazione MySql

si procede alla creazione di un database  su InfluxDB.

Come prima operazione si attiva un utente amministrativo sul sistema, come descritto al link

Autenticazione ed autorizzazione

Si accede al db dal client locale eseguendo da una shell il comando influx

Si esegue

Si imposta nel file /etc/infuxdb/influxdb.conf, con l’utenza root di Debian o mediante sudo, il parametro auth-enabled  da false a true

Si fa ripartire InfluxDB

Si accede in una shell su Debian e si crea il database DATAESP con il seguente comando

Inserire le credenziali di admin al comando auth e procedere alla creazione del database

Di seguito il risultato dei comandi sopra elencati

datainfluxdb

Per la gestione del database Influxdb, è possibile installare Chronograph

Chronograph

Il download di Chronograph è disponibile al link

Chronograph Download

L’installazione può essere eseguita in due modalità.

Avvio applicazione

Accedere con l’utenza monitor ed eseguire in una shell

Avviare l’applicazione chronograf

 

Avvio Servizio

Accedere sempre con l’utenza monitor; eseguire in una shell

Nella cartella /opt/chronograf/usr/lib/chronograf/scripts esistono gli scripts per l’avvio automatico di chronograf.

Di esguito le operazioni eseguite nel nostro sistema:

  • Copiare /opt/chronograf/usr/lib/chronograf/scripts/init.sh in /etc/init.d/chronograf ed assegnare i permessi di esecuzione

  • Copiare /opt/chronograf/usr/lib/chronograf/scripts/chronogaf.service  in /etc/systemd/system/chronograf.service

Cambiare in entrambi i file l’utenza ed i path dei vari componenti di chronograf, ossia l’utenza in monitor ed i path che puntano a /opt/chronograf

Di seguito il link ai file modificati

Avvio Automatico Chronograf

Dopo la modifica eseguire

Per abilitarlo all’avvio ed avviarlo eseguire

Dopo aver avviato chronograf in una delle modalità descritte sopra è possibile accedervi  mediante browser e porta 8888

http://dashboardora.local:8888

ChronografPremere Get Started ed impostare la connessione e le credenziali dell’utenza admin con relativa password definito prima

Chronograf2conImpostare la dashboard di Influxdb

ChronografDashboardNon impostare la componente Kapacitor

Chronograf3Completare la configurazione e cliccando su View All Connections

Chronograf4si accede alla connessione appena creata

ChronografConnections

Tale componente potrà essere utile in seguito per gestire e monitorare InfluxDB.

Nel prossimo articolo si inseriscono su nodered le regole per popolare i database MySql ed InfluxDB con i dati inviati dai sensori

Monitoraggio Sensori – Configurazione Nodered

 

Monitoraggio Sensori – Configurazione MySql

Dopo aver installato il software su Orange Pi PC procediamo alla configurazione degli stessi

Monitoraggio Sensori – Preparazione Ambiente 2

Creazione Tabelle su MySql

Su MySql sono state create 3 tabelle contententi i valori di temperatura, umidità e pressione dei sensori.

Di seguito il modello

Modello MySql

da importare in MySql Workbench

ESPModelloUna volta importato si accede al menù Database->Forward Engineering e si importano le tabelle sul proprio sistema MySql presente sull’Orange Pi PC, immettendo l’utenza root di MySql e relativa password

ESPImport

Alla schermata successiva si utilizza la connessione creata su MySql Workbench per connettersi al database

ESPImport1

Lasciare tutto di default ed inserire la password di root quando richiesto.

Le tabelle ora sono presenti sul database

ESPTablesNel prossimo articolo si configura InfluxDb per la ricezione dei dati in tempo reale dai sensori

Monitoraggio Sensori – Configurazione InfluxDB

 

Monitoraggio Sensori – Preparazione Ambiente 2

Dopo aver installato parte dei componenti software nel precedente articolo

Monitoraggio Sensori – Preparazione Ambiente

continuamo tale operazione con il presente articolo.

Infludb

Si procede alla installazione di Influxdb secondo quanto indicato al link

Influxdb

Per Debian 9 si esegue

Controllare che il tutto funzioni correttamente eseguendo la connessione con il client

infux

Nodered

Si procede alla installazione di node.js

Si installa quindi nodered, come indicato al link

Installazione nodered

Per eseguire all’avvio di Armbian nodered si utilizza lo script presente al seguente link

Autostart nodered

Non abbiamo eseguito lo script automatizzato, ma eseguiti i seguenti passi

Editare /etc/init.d/nodered e modificare l’utente da pi a monitor, ossia cambiare il parametro

in

Eseguire

Avviare nodered

Controllare che nodered risponda accedendo con il browser al link

http://dashboardora.local:1880

noderedRiavviare il sistema e controllare che nodered si avvii automaticamente.

Procedere alla installazione dei moduli aggiuntivi di nodered

Grafana

Si procede al download alla versione per arm

Grafana per ARM

Abilitare e far partire Grafana

Accedere al sistema mediante l’url

http://dashboardora.local:3000

collegarsi con l’utenza admin e password admin; procedere al cambio della password

GrafanaUna volta impostata la nuova password si accede alla interfaccia di impostazione

Grafana2Nei prossimi articoli eseguiremo le impostazioni per poter visualizzare i dati dei sensori.

Installazione reverse proxy

Per poter accedere al sistema attraverso la porta 80 del server http si può utilizzare nginx come reverse proxy

nginx

Se si utilizza nginx come proxy si disabilita apache

Si procede alla installazione di nginx

Si configura il tutto per accedere ai due sistemi mediante i seguenti link

http://dashboardora.local/nodered per nodered

http://dashboardora.local/grafana per grafana

Per grafana si segue la documentazione ufficiale

Grafana proxy

Si procede quindi a modificare il file /etc/grafana/grafana.ini modificando i parametri domain e root_url; nel nostro caso si modifica tale sezione come segue

Si configura quindi nginx, creando nella cartella /etc/nginx/sites-available  il file servizi con il seguente contenuto

Di seguito la configurazione di nginx

Configurazione nginx

Si esegue il seguente comando

e si fanno ripartire i servizi grafana e nginx

A questo punto è possibile accedere ai due servizi mediante il link

http://dashboardora.local/nodered

nodered-nginx

http://dashboardora.local/grafana

grafana-nginxNel prossimo articolo si inizia la configurazione dei vari moduli necessari per la gestione del sistema

Monitoraggio Sensori – Configurazione MySql

Monitoraggio Sensori – Preparazione Ambiente

Nella impostazione della infrastruttura per il monitoraggio dei sensori costituiti da dispositivi ESP8266 in articoli pubblicati in precedenza

Mqtt con Beaglebone ed ESP8266 – Freeboard

si era impostato Freeboard per la visualizzazione dei dati provenienti dai sensori.

In questa nuova serie di articoli, si intende impostare Grafana

Grafana Dashboard

come ambiente per visualizzare i dati dei vari sensori.

L’ambiente in questo caso lo implementiamo su una scheda Orange Pi PC, ma può essere utilizzato altro sistema arm o pc.

Di seguito l’architettura utilizzata in questa serie di articoli

archGrafana

Nel corso di questi articoli si useranno utenze con il massimo delle autorizzazioni per ciascun ambiente, non si useranno autorizzazioni su mosquitto e non vengono utilizzare connessioni cifrate. In un ambiente di test tale impostazione va bene, ma in un ambiente di esercizio occorre impostare le corrette autorizzazioni e possibilmente le cifrature nelle connessioni in tutti gli ambienti.

Abbiamo installato una versione da noi compilata di Debian 9 Stretch per Orange PI PC. L’immagine usata è la seguente

Download Immagine

E’ stato creato l’utente monitor, mentre l’hostname è stata rinominato in dashboardora. Se non installato procedere ad installare il demone avahi

In tale modo i servizi sono accessibili tramite la pubblicazione dell’hostname, utilizzando dashboardora.local.

Utilizzando la utility armbian disabilitare ip6 sul sistema; per eseguire tale impostazione lanciare armbian-config

ipv6Disable1Procedere alla disabilitazione dell’ip6

ipv6Disable2

Come primo passo installiamo il broker mqtt mosquitto

Installare i servizi http ed i database Mysql e MySqlWorkbench

Apache2

e vari prerequisiti

Avviare apache

e controllare che il server risponde all’indirizzo web, che nel nostro caso corrisponde a http://dashboardora.local

apache

MySql

Con Debian 9 si installa MariaDB; bisogna impostare la password dell’utenza di amministrazione root del database con il seguente comando

Impostiamo la password di root e la possibilità di accesso da altri host come root

mariadb-secure

Il resto delle opzioni scelte sono elencate di seguito

mariadb-secure2

Installiamo  phpmyadmin per la gestione del database

Alla schermata successiva scegliere apache2

phpmyadmin

Infine  scegliere NO

phpmyadmin1

Eseguire i comandi di seguito elencati

Controllare che il sistema funzioni correttamente accedendo tramite web browser aggiungendo all’indirizzo di apache phpmyadmin, nel nostro caso

http://dashboardora.local/phpmyadmin

phpmyadmin2

Collegarsi con le credenziali di root del database.

Per poter accedere dall’esterno occorre abilitare mariadb ad accettare connessioni da altri host. Per tale scopo accedere in

ed editare come root il file 50-server.cnf, modificando l’impostazione

in

Per consentire all’utente root del database di poter accedere da un client esterno, occorre accedere su mariadb localmente con il suo client ed abilitare tale opzione; si esegue pertanto quanto segue

 

Installazione su PC di Mysql Workbench

Accedere al link

MySql Workbench

e scaricare la versione per il proprio sistema operativo per poi procedere alla installazione.

Sulle distribuzioni Linux è presente anche nei repository.

Dopo aver configurato la connessione si accede alla schermata di controllo del systema MySql

MySQLWorkbenchNel prossimo articolo continueremo la installazione degli altri componenti per il monitoraggio  dei sensori

Monitoraggio Sensori – Preparazione Ambiente 2

MicroPython – Compilazione MicroPython per ESP8266 con moduli aggiuntivi

Dopo aver visto nel precedente articolo la compilazione del firmware MicroPython per ESP8266

MicroPython – Compilazione MicroPython per ESP8266

mostriamo ora come compilare un modulo all’interno del firmware; tale modalità ottimizza l’esecuzione del modulo e minimizza la dimensione dello stesso sul dispositivo: il modulo è congelato nel firmware.

Con il firmware compilato in modalità standard si hanno a disposizione i seguenti moduli, elencati nella consolle REPL con il comando

standardmodulesProviamo ora a compilare il firmware con i moduli mqtt già all’interno. Per tal obiettivo si copiano i sorgenti dei moduli nella cartella umqtt sotto modules

umqttfolderSi provvede a ricompilare il firmware, come visto nell’articolo pubblicato sull’argomento. Da micropython/ports/esp8266 si eseguono i comandi

Come si può notare dal log di compilazione anche questi sorgenti vengono posti nello stato frozen

frozenmodulesSi carica di nuovo il firmware. In questo caso nella lista dei moduli presenti nel firmware otteniamo

firmwarewithmodulesE’ possbile anche creare il firmware con i moduli non compilati ed ottimizzati copiando i sorgenti nella cartella scripts sotto esp8266; nel caso specifico i sorgenti vanno posti sotto la cartella scripts

I moduli sono sempre visibili nel firmware, ma non ottimizzati, per cui se serve qualche modulo lo si copia sul dispositivo durante la lavorazione e nell’ultima fase del progetto si compila il firmware con i moduli congelati.

 

 

 

 

 

 

MicroPython – Compilazione MicroPython per ESP8266

Dopo aver utilizzato in alcuni esempi il firmware MicroPython sulla scheda ESP8266

MicroPython – Esempi nodi con DHT11, Relé ed MQTT

in questo articolo viene mostrato come generare il firmware MicroPython per la scheda ESP8266.

Il sistema operativo è Debian 9 già incontrato in precedenza per le utility esptool

MicroPython – Python su dispositivi embedded

Collegarsi con l’utenza scelta su Debian 9, sviluppo nel nostro caso; sotto la home creare la cartella Micropython e successivamente la cartella esp8266

 Il codice sorgente di MicroPython è presente al link

Github Micropython

Le istruzioni per compilare il firmware per l’ESP8266 sono presenti al link

MicroPython ESP8266

Clonare il repository

Scaricare il cross compilatore, come indicato qui

Cross compilatore

Come indicato al link sopra, scarichiamo i sorgenti del cross compilatore  sempre dalla cartella esp8266

Installare i prerequisiti per la compilazione

Procedere alla compilazione del cross compilatore

Dopo la compilazione esportare nel PATH la cartella dei binari del cross compilatore

Accedere alla cartella micropython presente in ~/Micropython/esp8266

Eseguire

per aggiungere le dipendenze esterne.

Si compila il cross compilatore MicroPython

Si compila infine l’immagine per l’ESP8266 con il comando

Il firmware è generato nella cartella ports/esp8266/build con il nome firmware_combined.bin.

Procedere al caricamento del firmware sulla scheda con il comando

dove in /dev/ttyXXX va inserito il riferimento alla porta seriale cui è connesso l’ESP8266.

Nel nostro caso il deploy ha avuto esito positivo con il comando

E’ possible caricare l’immagine firmware_combined.bin con il comando

Nel prossimo articolo si analizza come compilare all’interno del firmware dei moduli aggiuntivi MicroPython

MicroPython – Compilazione MicroPython per ESP8266 con moduli aggiuntivi

MicroPython – Esempi nodi con DHT11, Relé ed MQTT

In una serie di articoli visti in precedenza su Mqtt, Beaglebone ed ESP8266

Mqtt con Beaglebone ed ESP8266 – Lista Articoli

abbiamo creato l’infrastruttura per la gestione dei nodi esp8266.

In questo articolo gestiamo i due nodi esp8266 invece che non Nodemcu e Lua con MicroPython.

Il resto della infrastruttura rimane identica; sul Beaglebone vi è il mqtt Mosquitto e Freeboard per la gestione dei topic mqtt, visualizzazione ed interazione.

Per gli esempi del nodo ESP8266 con relé e sensore DHT11 occorre caricare le librerie MicroPython umqtt, disponibili sul sito

umqtt simple

Negli esempi che seguono si utlizza solo la umqtt simple; nel codice sono stati inseriti vari delay per permettere alla scheda di gestire i messaggi e non incorrere in errori; è stato, inoltre, impostato che nel caso il server mqtt non risponda di riavviare la scheda.

Di seguito il codice utilizzato per gli esempi.

Nodo con sensore DHT11

  • boot.py: codice eseguito all’avvio

  • umqtt/simple.py: libreria mqtt

  • dht11.py: modulo per la lettura della temperatura ed umidità sul GPIO2.

  • main.py: codice eseguito dopo il boot

  •  client_mqtt.py: Modulo principale per la gestione del nodo

  • riavvia.py: codice di servizio per riavviare il modulo da uPyCraft

Nodo con relé

  • boot.py: codice eseguito all’avvio

  • umqtt/simple.py: libreria mqtt

  • main.py: codice eseguito dopo il boot
  •  client_mqtt.py: Modulo principale per la gestione del nodo

  • riavvia.py: codice di servizio per riavviare il modulo da uPyCraft

Di seguito il filesystem su ESP8266 per l’esempio del relé

ESPFilesystemAccedendo a Freeboard si hanno le stesse informazioni ottenute con Nodemcu e LUA

FreeboardMicroPython

Di seguito le schermate della gestione da Smartphone con MQTT Dashboard, con la possibilità di controllare lo stato del relè, leggere i parametri del sensore e far ripartire o mettere in sleep i due nodi

MqttPublish

MqttSubscribe

Questi sono i collegamenti per scaricare i due esempi

Esempio sensore dht11

Esempio relé

Nel prossimo articolo compileremo il firmware MicroPython per ESP8266

MicroPython – Compilazione MicroPython per ESP8266

 

 

 

 

MicroPython – Struttura programma MicroPython

Dopo aver esaminato diversi strumenti di sviluppo per MicroPython negli articoli precedenti

MicroPython – Strumenti di sviluppo Ampy – Eric

MicroPython – IDE MicroPython uPyCraft

in questo articolo si descrivono brevemente le principali caratteristiche di MicroPython. Esaminiamo in particolare la documentazione inerente all’ESP8266, ma i concetti possono essere estesi anche alle altre schede.

La documentazione sul soc ESP8266 e MicroPython è disponibile al link

Documentazione MicproPython ESP8266

Al link si trovano tutte le informazione necessarie per implementare il proprio codice sulla scheda e le caratteristiche di MicroPython nonché le differenze rispetto a Python.

Di seguito i punti principali per la codifica in MicroPython:

  • MicroPython ha una consolle REPL (Read Evaluate Print Loop) attraverso la porta seriale cui è connesso il dispositivo sui cui si posso impartire i vari comandi MicroPython in modo interattivo.
  • Si può accedere alla consolle REPL anche tramite connessione all’indirizzo IP del dispositivo mediante l’abilitazione della consolle WEBREPL  (Web Browser Interactive prompt)

Documentazione WebREPL

importando il pacchetto webrepl, abilitandolo ed avviandolo ad ogni ripartenza del dispositivo. Per accedere al dispositivo configurato si puo usare il link

Accesso WEBREPL

o localmente clonandolo da github

  • I file che vengono eseguiti all’avvio del dispositivo sono  boot.py e successivamente main.py.
  • Le librerie disponibili per MicroPython sono  presenti sul github al link

Librerie MicroPython

  • Pacchetti aggiuntivi

I moduli aggiuntivi possono essere scaricati dal link delle librerie presentato sopra o scaricati con la utility upip (Package Manager) dalla consolle REPL se presenti nel repository Python Package Index (PyPI)

PYPI

come descritto di seguito

upip

Di seguito un semplice esempio che si connette al router e ci permette di accedere alla consolle MicroPython con il browser e WEBREPL.

  • Codice boot.py

Al primo accesso viene richiesta l’abilitazione di webrepl da eseguire nella consolle REPL con il comando

e seguendo le istruzioni si abilita il servizio e si imposta  la  password di accesso.

La procedura genera sul dispositivo il file webrepl_cfg.py.

Dopo l’impostazione e riavvio accediamo alla consolle web aprendo il file webrepl.html clonato  localmente con un browser

WebreplPremiamo connetti e dopo aver inserito la password impostata nel setup iniziale accediamo alla consolle

WebreplConnectedInstalliamo ora dalla consolle WEBREPL, ad esempio,  il modulo stat utilizzando upip

Per  incollare del testo nella consolle eseguire Ctrl+A e Ctrl+V

WebreplupipIn questo caso il pacchetto è stato prelevato dal repository PYPI, scompattato ed installato sul dispositivo.

Abbiamo notato che alcuni moduli, sebbene presenti sul repository, danno errore in fase di installazione con upip; tali moduli li installiamo direttamente senza usare la utility upip, ma scaricando la libreria dal sito elencato sopra e trasferendo il codice sul dispositivo.

Di seguito il link al codice mostrato sopra

Webreplsample

Altra opzione disponibile è compilare il firmware con i moduli richiesti.

Nel prossimo articolo esamineremo degli esempi analoghi a quanto fatto con LUA su ESP8266 in articoli precedenti

MicroPython – Esempi nodi con DHT11, Relé ed MQTT