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