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

Email

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