Appunti su MQTT e Node-RED

Appunti su MQTT e NODE-RED


Cosa è MQTT ?

MQTT sta per Message Queue Telemetry Transport ed è un protocollo di messaggistica di tipo publish-subscribe. È stato disegnato per le situazioni in cui la banda è limitata e si basa sull'uso di un broker ovvero un server responsabile della distribuzione dei messaggi ai client destinatari. Il protocollo è stato inventato da Andy Stanford-Clark di IBM e Arlen Nipper di Cirrus Link Solutions

Cosa è Node-RED ?

Links

Installazione MQTT e Node-RED su Raspberry

Scaricare Rasbian Jessie Lite da questo link:

Installare NodeJS e Node-RED usando lo script nella sezione Rasbian di questa pagina:

Sinottico per web scritto Javascript

Questo sinottico è in grado di inviare eventi verso un broker MQTT quando viene cambiato lo stato degli switch e aggiornarle lo stato degli swtch quando vengono ricevuti dei messaggi in un determinato topic.

LED 0
LED 1
LED 2
LED 3
LED 4
LED 5
LED 6
LED 7

In questa riga vengono replicati i messaggi ricevuti dal broker MQTT (Mosquitto) installato su www.tanzolab.it:1884 via WebSocket.
InBox

Esempio 1 - Pannello a led RGB

In questo articolo c'é un esempio di pannello a led RGB (32x32 pixel) pilotato da una scheda Arietta G25 in grado di prendere i messaggi da far apparire sul display da un broker MQTT.

MAC address dei pannelli disponibili in Acme

  • Mac address Led panel 1: 7c:dd:90:89:09:01
  • Mac address Led panel 2: 7c:dd:90:99:20:6d

Esempio 2 - Banco di 8 led e 8 pulsanti

Client in Python realizzato su scheda Linux Arietta G25

Connessioni tra led, pulsanti e Arietta G25 usati per fare il banco di test

Button Led ADC
P0 J4.23 LED 0 J4.39 TRIMMER J4.40
P1 J4.36 LED 1 J4.37 PWM J4.38
P2 J4.34 LED 2 J4.35
P3 J4.32 LED 3 J4.33
P4 J4.30 LED 4 J4.31
P5 J4.28 LED 5 J4.29
P6 J4.26 LED 6 J4.27
P7 J4.24 LED 7 J4.25

Installazione di paho-mqtt su Arietta G25

apt-get update
apt-get install python-setuptools
apt-get install git
git clone https://github.com/eclipse/paho.mqtt.python.git
cd paho.mqtt.python
python setup.py install

Altre schede installate in Acme

Node-RED TanzoLab

Quick notes for mosquitto build on Ubuntu 14.04 and later

Warning! This guide is specific to Debian/Ubuntu Intel Linux platforms. Do not use this guide on non Intel platforms (RPI, RoadRunner, Acqua).
Info! The libwebsockets is available on Ubuntu 14.04 as apt package libwebsockets-dev, however it is built from a quite old release (1.2) that is not suitable for mosquitto usage.

Build libwebsockets:

sudo apt-get update && sudo apt-get install build-essential cmake libssl-dev uuid-dev xsltproc docbook-xsl
wget https://github.com/warmcat/libwebsockets/archive/v2.4-stable.zip  -O libwebsockets-2.4-stable.zip
unzip libwebsockets-2.4-stable.zip 
cd libwebsockets-2.4-stable
mkdir build
cd build 
cmake ..
make
sudo make install
sudo ldconfig

Build mosquitto:

sudo apt-get install git
git clone https://github.com/eclipse/mosquitto.git
cd mosquitto
make WITH_WEBSOCKETS=yes  WITH_TLS=yes
sudo make install

In order to enable both websocket and MQTT protocol at the same time the mosquitto config file has to contain the following lines:

listener 1883
protocol mqtt
listener 9001
protocol websockets
mosquitto -c ./mosquitto.conf 

1524324402: mosquitto version 1.4.15 (build date 2018-04-21 17:10:26+0200) starting
1524324402: Config loaded from ./mosquitto.conf.
1524324402: Opening ipv4 listen socket on port 1883.
1524324402: Opening ipv6 listen socket on port 1883.
1524324402: Opening websockets listen socket on port 9001.

Andrea Montefusco
Currently employed as network architect, always Internet working man, real C/C++ programmer in the past, network and Unix system engineer as needed, HAM Radio enthusiast (former IW0RDI, now IW0HDV), aeromodeller (a person who builds and flies model airplanes) since 1976 (ex FAI10655).
http://www.montefusco.com - https://github.com/amontefusco - https://github.com/IW0HDV - andrew@montefusco.com

Sergio Tanzilli (Autore - Progettista hw & sw - Imprenditore - Musicista dilettante, classe 1964)
Fondatore di Area SX srl, Acme Systems srl e del TanzoLab, si occupa dal 1974 di elettronica digitale, dal 1978 di microprocessori, dal 1992 di microcontroller, dal 1995 di Linux e pubblicazioni su Web, dal 2005 di progettazione, produzione e commercializzazione di schede Linux Embedded.
http://www.tanzilli.com - http://www.acmesystems.it - https://github.com/tanzilli - sergio@tanzilli.com