IOT e WEB Development
PUG Rovigo
16/12/2020
milano.grusp.org
PUG
MILANO
IIOT
IOT
Termine ampio / Consumer
Industriale
Terminologia
e
Problematiche
Elementi
Campo
Acquisizione
Controllo
Comunicazione
I/O digitale, variatore, temperatura, umidità, A/V, luminosità, livelli liquidi, flussi
Campo: sorgenti
-
Sensore
-
Attuatore
-
Convertitore
-
Gateway
-
Edge
-
HMI
Campo: comunicazione
- Seriale 485/232
- Onde convogliate
- Ethernet/Dedicata
- WiFI/Radio
Campo: tipologie
- Localizzati
- Impianti adiacenti
- Aree geografiche
Comunicazione long range come LTE-NB, LORA, Sigfox (...)
Comunicazione
Protocolli
- MQTT
- AMPQ
- COAP
- HTTP
- UDP
Mezzi
- Internet
Comunicazione
Controllo
Compiti
- Acquisizione
- Controllo
Tecnologie
- Scada
- Cloud
- Soluzione custom
Un Esempio
Controllo Temperatura
1 - Misuro
2 - Pubblico
3 - Visualizzo
Controllo Temperatura
RPI
MQTT
NODERED
Materiale
- DHT22
- Raspberry PI
- Server Docker
MQTT
Ascesa
MQTT
Perché e Come
MQTT
Perché e Come
- Implementazione semplice
- Quality of Service
- Leggero ed efficiente
- Agnostico nel payload
MQTT
Quality of Service
0
Base
1
Affidabile
2
Molto Affidabile
MQTT
Pubblicazione e Sottoscrizione
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://test.mosquitto.org')
client.publish('presence', 'Hello mqtt', { qos: 1 });
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://test.mosquitto.org')
client.subscribe('presence', function (err) {
if (err) {
console.log('Error');
}
});
client.on('message', function (topic, message) {
console.log(message);
})
MQTT
Retention
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://test.mosquitto.org')
client.publish('presence', 'Hello mqtt', { qos: 1, retain: true });
.. DISCONNECT ..
client.subscribe('presence', function (err) {
if (err) {
console.log('Error');
}
});
client.on('message', function (topic, message) {
console.log(message);
// Ricevo Hello mqtt
})
MQTT
Will
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://test.mosquitto.org', { will: { qos: 1, topic: 'status', payload: 'offline' } });
client.publish('status', 'online', { qos: 1, retain: true });
.. ALTRO CLIENT ..
client.subscribe('status');
client.on('message', function (topic, message) {
console.log(message);
// Ricevo online
});
.. DISCONNESSIONE ..
client.on('message', function (topic, message) {
console.log(message);
// Ricevo offline
});
MQTT
Id e Sessione
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://test.mosquitto.org', { clientId: 'mqtt_client1', keepalive: 60, clean: false } });
client.publish('status', 'online', { qos: 1, retain: true });
.. DISCONNESSIONE ..
.. MESSAGGI ..
.. RICONNESSIONE ..
client.on('message', function (topic, message) {
console.log(message);
// Ricevo i messaggi
});
Piattaforme
ThingsBoard
Soluzione all in one
Amazon IoT Core
Soluzione Cloud
Balena
Soluzione Cloud/Premise flotte
Storing
e
Processing
Hardware
Low Cost
Mid Cost
Mid Cost
Hi Cost
Disegni
https://undraw.co/
alessandro.cappellozza@gmail.com
https://github.com/eppak
Github
A. Cappellozza
Speaker
Ringraziamenti
Hai domande? Scrivici o cercaci su slack #pugRovigo
Riferimenti
Copy of IOT e WEB Development
By Alessandro Cappellozza
Copy of IOT e WEB Development
Meetup PUG Milano del 16/12/2020 IOT e WEB Development
- 687