Archivi tag: mqtt

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 – 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

 

 

 

 

Mqtt con Beaglebone ed ESP8266 – Lista articoli

Di seguito si elencano i vari articoli da seguire per costruire il proprio ambiente IOT composto da sensori e relé con Beaglebone, ESP8266 e server MQTT Mosquitto.

  1. Architettura e protocollo Mqtt
  2. Mqtt Mosquitto su Beaglebone
  3. Mqtt su ESP8266
  4. Sensore di Temperatura su ESP8266 con protocollo Mqtt
  5. Relé su ESP8266 con protocollo Mqtt
  6. Impostazione server Http, protocollo websocket Mqtt su Beaglebone
  7. Installazione e configurazione Dashboard Freeboard per report misure su Beaglebone
  8. Client Android con protocollo Mqtt per gestione sensori

 

 

Mqtt con Beaglebone ed ESP8266 – Client Android

Dopo  aver configurato il server Mosquitto, i nodi ESP8266 e la dashboard Freeboard

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per sensore temperatura

Mqtt con Beaglebone ed ESP8266-MQTT su ESP8266 per Relé

Mqtt con Beaglebone ed ESP8266 – Freeboard

passiamo ad installare un client Mqtt su un dispostivo Android.

 Dal playstore sono disponibili vari client Mqtt

android mqttDopo aver configurato i topic di publishing e subscriber sul client Android, in modo analogo a quanto fatto per i widget di Freeboard

Mqtt con Beaglebone ed ESP8266 – Freeboard

è possibile controllare temperatura ed umidità del sensore, monitorare lo stato dei dispositivi, inviare comandi al relé (Accensione, Spegnimento, Stato, Riavvio, Sleep) ed al sensore (Riavvio,Sleep, Stato).

Di seguito uno screenshot con alcuni topic e publishing dell’esempio con MQTT Dashboard

android mqtt relayoffCon il relé attivato

android mqtt relayon

Mqtt con Beaglebone ed ESP8266 – Freeboard

Dopo aver installato un client mqtt web

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt websocket

passiamo ad installare la dashboard freeboard

Freeboard

Posizionamoci in /var/www/html sul Beaglebone come root e cloniamo il repository github di freeboard; cambiare il proprietario della cartella freeboard in www-data:www-data

 Accedendo con brower sul Beaglebone nella cartella freeboard si accede alla dashboard

freeboardOccorre a questo punto inserire dei plugin aggiuntivi a freeboard. Si aggiungono i seguenti plugin

  •  freeboard-mqtt

Clonare il github https://github.com/alsm/freeboard-mqtt

Scaricare la libreria javascript mqtt paho

Paho mqtt javascript library

Il link alla libreria è il seguente

Ultima Versione mqttws31.js

Creare una cartella mqtt sotto la cartella plugins di freeboard e copiare i file mqttws31.js e paho.mqtt.plugin.js

Editare il file paho.mqtt.plugin.js ed inserire il riferimento della libreria mqttws31.js nella sezione external_scripts; anche in questo caso cambiare il proprietario per la nuova cartella mqtt ed i suoi contenuti

Cambiare il proprietario

Editare il file /var/www/html/freeboard/index.html ed inserire il riferimento al nuovo plugin paho.mqtt.plugin.js  nella sezione head.js

  • Aggiungere il plugin dynamic-highcharts

Clonare in una cartella il github

Copiare il file plugin_highcharts.js nella cartella /var/www/html/plugins/thirdparty e cambiare il proprietario

Editare anche in questo caso il file /var/www/html/freeboard/index.html ed aggiungere il plugin come fatto al punto precedente

Accedere sulla dashboard freeboard ed aggiungere i collegamenti ai topic di temperatura ed umidità come datasource, i gauge per la misura instananea dei valori e la rappresentazione dei valori nel corso del tempo. Di seguito esempi di impostazioni :

  • Datasource

freeboard datasource

  • Gauge

freeboard gauge

  • Timeseries

freeboard timeseriesUtilizzando Chrome/Chromium come brower è possibile salvare le impostazioni in un file json. La configurazione può essere caricata localmente dal brower o può essere caricata dal browser dal webserver, salvando ad esempio il file dashboard.json in /var/www/html/freeboard; inserendo l’url

si accede alla Dashboard.

Di seguito la interfaccia Freeboard con varie widgets che mostrano lo stato e l’andamento dei sensori e relay ESP8266

freeboard dashboardIn questa serie di articolo il Beaglebone è stato configurato in modo da porte accedere utlizzando l’alias beaglebone.local/beaglebone

Preparazione sd card Debian per Beaglebone Black

ma si può usare comunque l’IP del Beaglebone per accedere ai servizi forniti dalla scheda.

Nel prossimo articolo si tratta la configurazione di client Mqtt Android

Mqtt con Beaglebone ed ESP8266 – Client Android