Archivi tag: texas instruments

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

 

 

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt Websocket

Dopo aver configurato il server MQTT ed i nodi ESP8266

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é

passiamo alla configurazione del webserver su Beaglebone ed alla configurazione del websocket sul broker mqtt mosquitto.

 Accediamo sul Beaglebone in ssh e disabilitiamo i seguenti servizi

Accedere in /etc/apache2/sites-enabled e modificare in 000-default.conf la porta del webserver da 8080 ad 80

In /etc/apache2/port.conf modificare la porta in ascolto da 8080 ad 80

Far ripartire il server http con il comando

Accedere alla configurazione di mosquitto in /etc/mosquitto/conf.d e creare il file websockets.conf con il seguente contenuto

Dopo aver salvato il file far ripartire mosquitto

Disabilitiamo l’ipv6 sul Beaglebone come descritto al link

Disabilitazione Ipv6 Debian

Nel file /etc/sysctl.conf aggiungiamo

e facciamo ripartire il Beaglebone.

Procediamo a questo punto ad installare sul server http un client MQTT su websocket e la dashboard Freeboard.

 Per quanto concerne il client websocket mqtt hive-mqtt si scarica il codice dal github

Hive mqtt

Accedere come root in ssh sul Beaglebone in /var/www/html;  clonare il client sotto mqtt-web e cambiare il proprietario della cartella clonata

Se accediamo da brower sul server http in mqtt-web viene mostrato il client web; si inseriscono le informazioni per la connessione

mqtt web client connessioneSi inserisco i topic in sottoscrizione e publishing e si hanno i vari messaggi e comandi per il broker

mqtt web clientNel prossimo articolo imposteremo la dashboard Freeboard sul Beaglebone

Mqtt con Beaglebone ed ESP8266 – Freeboard

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

Dopo aver esaminato la connessione con il sensore di temperatura ed umidità

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

in questo articolo si imposta l’esp8266 per gestire un relé. Di seguito i collegamenti utilizzati

nodemcu relay

Anche in questo esempio metteremo il nodemcu in sleep. Perché il sistema possa riavviarsi dopo il comando di sleep è necessario collegare il PIN D0 (GPIO16) al PIN RST come specificato nella documentazione nodemcu

Nodemcu sleep

Passiamo ad analizzare il codice da caricare sul dispositivo; consta del init.lua e del file relay.lua.

Analizziamo i punti principali di ciascun file.

  • init.lua

Nel file sono impostate globalmente i parametri dell’access point, l’indirizzo e porta del broker mqtt ed il file da eseguire sull’esp dopo la connessione all’access point. Nel caso non riesca ad acquisire l’indirizzo il sistema viene fatto ripartire.

  • relay.lua

Il file relay.lua gestisce il relay, la sottoscrizione sul broker mqtt con invio dello stato con il topic monitor. Sono stati impostati dei parametri globali per gestire i topic, i tempi di attesa in tmr.alarm. Sono presenti in particolare i seguenti topic

  • /home/relay1/status : viene inviato lo stato del relé all’avvio ed in risposta dei comandi nel topic /home/relay1/command.
  • /home/relay1/monitor: periodicamente viene inviato lo stato del relé.
  • /home/relay1/command: Da altri client è possibile inviare dei comandi all’esp8266.
    • Restart: riavvia l’esp.
    • Sleep n: Tempo di sleep di n secondi.
    • ON: Accende il relay.
    • OFF: Spegne il relay.
    • Status: Richiede lo stato del relé (Acceso o Spento).

Vi sono varie funzioni di servizio che gesticono il tutto. I commenti all’interno del codice descrivono ciascuna funzionalità.

Nel prossimo articolo tratteremo la configurazione del webserver sul Beaglebone e la configurazione del websocket per Mosquitto sempre sul Beaglebone

Mqtt con Beaglebone ed ESP8266-Web server e Mqtt Websocket

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

Dopo aver caricato il firmware sul dispositivo esp8266

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

si passa a collegare tale modulo con un sensore di temperatura ed umidità DHT11. Di seguito i collegamenti utilizzati

Nodemcu DHT11

Nell’esempio che faremo si considererà l’opzione di mettere il nodemcu in sleep. Perché il sistema possa riavviarsi dopo il comando di sleep è necessario collegare il PIN D0 (GPIO16) al PIN RST come specificato nella documentazione nodemcu

Nodemcu sleep

Passiamo ad analizzare il codice da caricare sul dispositivo; consta del file init.lua e del file tempumid.lua.

Analizziamo i punti principali di ciascun file.

  • init.lua

Nel file sono impostate globalmente i parametri dell’access point, l’indirizzo e porta del broker mqtt ed il file da eseguire sull’esp dopo la connessione all’access point. Nel caso non riesca ad acquisire l’indirizzo il sistema viene fatto ripartire.

  • tempumid.lua

Il file temumid.lua gestisce la misura della temperatura ed umidità, la sottoscrizione sul broker mqtt con invio dei dati rilevati. Sono stati impostati dei parametri globali per gestire i topic, i tempi di attesa in tmr.alarm. Sono presenti in particolare i seguenti topic

  • /home/room1/temperature: vengono inviati i dati della temperatura rilevata.
  • /home/room1/humidity: vengono inviati i dati della umidità rilevata.
  • /home/room1/status : viene inviato lo stato del sensore all’avvio ed in risposta dei comandi nel topic /home/room1/command.
  • /home/room1/monitor: periodicamente viene inviato lo stato del sensore.
  • /home/room1/command: Da altri client è possibile inviare dei comandi al sensore.
    • Restart: riavvia il sensore.
    • Sleep n: Tempo di sleep di n secondi.

Vi sono varie funzioni di servizio che gestiscono il tutto. I commenti all’interno del codice descrivono ciascuna funzionalità.

Nel prossimo articolo imposteremo l’esp con il relé

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

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Dopo aver installato il server MQTT sul Beaglebone

Mqtt con Beaglebone ed ESP8266-Installazione mosquitto su Beaglebone

passiamo ad impostare i nodi MQTT basati su ESP8266.

Come prima operazione occorre generare il firmware nodemcu, come descritto nel precedente articolo

Compilare Nodemcu su linux

con almeno i seguenti parametri attivati nel file user_module.h

  • DHT
  • file
  • GPIO
  • MQTT
  • net
  • node
  • timer
  • UART
  • WiFi

Tali impostazioni sono presenti di default sul file user_module.h.

Al momento è stata rilasciata la versione aggiornata del firmware 2.0.  Alleghiamo i file da caricare sul dispositivo.

Nodemcu2.0.0 firmware

Come già descritto negli articoli precedenti e dal link di nodecmu sul flashing

Flashing the firmware

si impostano i parametri corretti per il proprio modello di esp8266.

Nel nostro caso, con la flash di 4MB, si usano i parametri riportati nella immagine per caricare il firmware sul dispositivo con il tool nodemcu-flasher. Si possono utilizzare anche altri tool per il caricamento del firmware. Nel nostro caso le impostazioni usate sono le seguenti

nodemcu flasherNel prossimo articolo viene descritto il nodo MQTT ESP8266 che rileva temperatura ed umidità

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

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone

Dopo aver riassunto l’architettura che si sta implementando nel precedente articolo

Mqtt con Beaglecone ed Esp8266-Architettura

Si procede con l’installazione del message broker mqtt sul Beaglebone Black con il sistema mostrato di seguito

L’immagine usata è la seguente

Immagine Beaglebone Black

Si procede anche alla ulteriori configurazioni già elencate nell’articolo

Preparazione sd card Debian per Beaglebone Black

Procedere ad una estensione dello spazio sulla scheda sd con l’applicazione gparted su host linux o con il tool grow_partition.sh disponibile sul Beaglebone nella cartella /opt/scritpts/tools

Nell’eseguire l’upgrade con tale immagine si riscontrano problemi di spazio con la partizione di 4Gb.

Il message broker che si installa è mosquitto

Mosquitto

Con la versione presente su Debian Jessie di Mosquitto non si hanno a disposizione i servizi di websockets, che si utilizzeranno successivamente con la Dashboard. Per tale motivo occorre installare la versione aggiornata del broker.

Si accede in una shell sul Beaglebone come root e si inserisce il repository di test di debian

aggiungere

Eseguire poi

Dopo l’installazione commentare il riferimento ai software di test di debian in /etc/apt/sources.list

ed eseguire

Testiamo a questo punto se il server è installato correttamente eseguendo in una shell la sottoscrizione ad un topic

In un’altra shell eseguire la pubblicazione sul topic “topic/test”

La  prima shell deve mostrare il messaggio “Prova”

mqtt Test

Con il protocollo MQTT si possono definire diversi QOS , come descritto nelle FAQ di Mosquitto

QOS Mosquitto

Con QOS=0 il messaggio viene spedito una sola volta e non è richiesta la conferma della avvenuta ricezione da parte dei sottoscrittori; negli esempi che si faranno il QOS=0 e non vi sarà protezione dello smistamento dei messaggi con nome e password o canale ssl.

 Nel prossimo articolo si procederà alla preparazione dell’ESP9266 con le librerie lua per gestire il protocollo MQTT

Mqtt con Beaglebone ed ESP8266-MQTT ESP8266

Mqtt con Beaglebone ed Esp8266-Architettura

In questa serie di articoli trattiamo come impostare un message broker mqtt sul Beaglebone Black che permetta di gestire vari dispositivi esp8266, collegati a loro volta a sonde di temperatura, relays.

Il tutto viene gestito con l’ausilio di app su smartphone Android e Dashboard installata su Apache sul Beaglebone.

Partiamo dal message broker  MQTT (Message Queue Telemetry Transport); qui vi è la descrizione del protocollo

MQTT

In particolare nella sezione FAQ vi sono le prime indicazioni sul protocollo e suo utilizzo

MQTT Faq

Il sistema è formato da tre componenti:

  • Mqtt Broker: ruota i messaggi pubblicati a tutti i sottoscrittori.
  • Publisher: Pubblica i messaggi nel topic  sul Mqtt Broker.
  • Subscriber: Riceve i messaggi sui topic su cui è sottoscritto dal Mqtt Broker.

Di seguito mostriamo la topologia per due topic utilizzata nel nostro esempio

archIl sistema è costituito da un server MQTT broker sul Beaglebone. In questo server MQTT broker si possono definire dei topics a cui si possono registrare vari client. Per ciascun topic l’azione può essere di sottoscrizione e di pubblicazione. Con la sottoscrizione si ricevono tutti i messaggi del topics, mentre con la pubblicazione si possono eseguire delle azioni sul topic (ad esempio accendi un  relé, riavvia un dispositivo, inviare la misura del sensore, ecc). Nel caso in esame vi sarà, ad esempio, una coda per il monitor delle temperature, agganciata al client esp8266 di lettura temperatura, un’altra per la gestione di un relay, sempre gestito con esp8266. Il server MQTT broker provvede ad ruotare i messaggi ricevuti fra tutti i client sottoscrittori/publisher per ciascun topic.

Ai topic sul broker mqtt ci si accede con app android mediante le quali si interagisce oltre che per la ricezione dei messaggi anche mediante la pubblicazione di comandi  verso i client esp8266 (Accendi Relay, Riavvia Sensore, ecc).

Con il framework javascript Freeboard

Freeboard

installato su Apache del Beablebone si accede ad una dashboard per il monitor dei dispositivi in tempo reale.

Per ulteriori informazioni sul sistema MQTT fare riferimento al sito indicato sopra.

Nel prossimo articolo si parte dalla installazione del server MQTT sul Beaglebone Black

Mqtt con Beaglebone ed ESP8266 – Installazione mosquitto su Beaglebone