Archivi tag: mqtt

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