Il protocollo MQTT (Message Queue Telemetry Transport) sostanzialmente si basa su un modello di brokering, vale a dire l’esistenza di un soggetto (il broker) al quale tutti i client
si registrano e verso il quale quest’ultimi inoltrano e ricevono messaggi per e da altri client anch’essi connessi.
## Installazione
```bash
screen -S mosquitto
sudo apt install mosquitto mosquitto-clients -y
systemctl status mosquitto.service
sudo vim /etc/mosquitto/mosquitto.conf
```
Questo il file di configurazione finale di mosquitto:
```bash
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
Per ricevere un messaggio via seriale da parte del simulatore del PIC16F877A, installato su Windows, attraverso la porta COM7 (virtuale), seguire i seguenti passaggi.
const parser = port.pipe(new Readline({ delimiter: '\r\n' })) // Ogni riga deve terminare con questi due caratteri per essere correttamente interpretata
parser.on('data', parseMSg)
// passare i dati via mqtt, per poterli leggere tramite node-red
// trasformare il dato in json
client.on('connect', function () {
console.log("connected")
})
function parseMSg(data) {
let values = data.split('\n')
console.log(values)
let jsonOut = {
"code": values[0],
"rasp_id": values[1],
"home_id": values[2]
}
let jsonStr = JSON.stringify(jsonOut)
console.log(jsonStr)
client.publish('/its_test', jsonStr)
}
```
Quindi avviare il programma tramite il comando:
```bash
nodemon index.js
```
Se il simulatore del PIC16F877A funziona correttamente e il programma invia dei dati via seriale, questi saranno correttamente ricevuti e inviati al broker mqtt.
### Visualizzare i messaggi da node-red
Inserire i due seguenti moduli:
`mqtt in`, avendo cura di inserire le relative credenziali e `debug`, affinché venga stampato il messaggio o il codice ricevuto sul topic.