{"id":4154,"date":"2022-02-18T13:58:00","date_gmt":"2022-02-18T12:58:00","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=4154"},"modified":"2022-02-17T15:15:49","modified_gmt":"2022-02-17T14:15:49","slug":"deep-dive-in-iot-core-rules-guida-pratica-e-casi-duso","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/deep-dive-in-iot-core-rules-guida-pratica-e-casi-duso\/","title":{"rendered":"Deep dive in IoT core rules: Guida pratica e casi d\u2019uso"},"content":{"rendered":"\n

Introduzione<\/h2>\n\n\n\n

L\u2019Internet of Things (IoT) \u00e8 diventato uno dei termini pi\u00f9 cool e ricercati degli ultimi tempi in ambito di innovazione tecnologica. Sia nel settore industriale, che retail troviamo infatti sempre pi\u00f9 oggeti interconnessi tra loro, accessibili via Internet e costantemente controllabili.<\/p>\n\n\n\n

Nel nostro precedente articolo <\/a>abbiamo presentato una panoramica del mondo IoT su Amazon Web Services. Grazie ai suoi serivzi, AWS ci offre molti vantaggi per la realizzazione di applicazioni IoT sul cloud come ad esempio la possibilit\u00e0 di avere un punto centralizzato di gestione e monitoring dei device grazie ai servizi managed, sempre disponibili, in alta disponbilit\u00e0 e con scaling gestito. <\/p>\n\n\n\n

In questo articolo entreremo nel dettaglio di una parte specifica dell\u2019ecosistema IoT su AWS: il motore delle regole. <\/p>\n\n\n\n

Case study: Smart cities<\/h2>\n\n\n\n

I servizi correlati al mondo IoT su AWS sono in continua espansione. In questo articolo analizzeremo per\u00f2 le componenti principali, agendo direttamente da console.<\/p>\n\n\n\n

Vedremo infatti come configurare un dispositivo simulando l\u2019invio di alcuni dati da esso, per poi innescare azioni specifiche basate su di essi. Come trattato nell\u2019articolo precedente, questi messaggi vengono invati e ricevuti attraverso protocollo MQTT<\/strong> tramite un meccanismo di publisher\/subscriber. Su AWS \u00e8 supportato anche il protocollo HTTP\/HTTPS, ma in contesti IoT di un certo tipo \u00e8 preferibile il protocollo MQTT. Non entreremo nel merito di questa scelta dato che non \u00e8 lo scopo di questo articolo e in parte \u00e8 stato trattato nel precedente.<\/p>\n\n\n\n

Per dare contesto alla parte pratica, immaginiamo di realizzare un\u2019applicazione IoT per un progetto di Smart Cities. Parliamo quindi di uno scenario urbano in cui sono presenti dispositivi di vario tipo, in grado di mandare continuamente (e non, in base alla connettivit\u00e0) i loro dati su cloud ed eseguire delle azioni specifiche se valutate opportumanente.<\/p>\n\n\n\n

Things setup<\/h2>\n\n\n\n

Iniziamo il deep-dive <\/em>creando degli oggetti (Things) <\/em>su IoT Core. Per entrare nel merito dello use case, immaginiamo di dover configurare dei sensori installati su lampioni, impianti di irrigazione o semafori per la regolazione intelligente del traffico.
Entrando nella sezione AWS IoT<\/em> sulla console, sotto la voce di men\u00f9 Manage, <\/em>sar\u00e0 possibile creare degli oggetti – Things, appunto – configurandone alcune propriet\u00e0, come la loro associazione a un gruppo, ad una categoria o ad una tipologia di billing. Inoltre, \u00e8 possibile assegnare dei tag specifici (attributi) che potranno essere usati nell\u2019intero ecosistema AWS IoT. Nel nostro caso, abbiamo assegnato come attributo il nome della citt\u00e0 di appartenenza dell\u2019oggetto:<\/p>\n\n\n\n

<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Nella fase di creazione degli oggetti sar\u00e0 necessario scaricare i certificati associati ad essi. I certificati verranno utilizzati dal dispositivo stesso per poter inoltrare messaggi sui topic MQTT. In questo articolo non entreremo nel dettaglio delle varie modalit\u00e0 con cui \u00e8 possibile scaricare i certificati sul dispositivo, per ora ci limitiamo a considerare il caso di dispositivi gi\u00e0 presenti sul campo e dotati di certificati. <\/p>\n\n\n\n

[Spoiler: questa parte verr\u00e0 descritta nel dettaglio nel prossimo articolo della nostra serie dedicato al Device management!]<\/em><\/p>\n\n\n\n

Ad ogni modo, consigliamo di salvare i certificati su un bucket S3 privato, in modo che possano essere disponibili per ogni evenienza. Per completezza, i certificati associati ad un dispositivo possono essere pi\u00f9 di uno ed \u00e8 possibile recuperarli, se necessario.<\/p>\n\n\n\n

Device shadow<\/h2>\n\n\n\n

In fase di configurazione dei nostri dispositivi abbiamo scelto di utilizzare il Classic Shadow<\/strong>.<\/em><\/p>\n\n\n\n

Ma cos\u2019\u00e8 lo shadow di un device? Lo shadow \u00e8 la rappresentazione virtuale del dispositivo, fruibile da altre applicazione, indipendentemente dal loro stato di connessione. Lo stesso device, le web application e numerosi altri servizi possono creare, aggiornare, cancellare i shadows usando vari canali, tra cui i topic MQTT. Gli shadows sono salvati sul cloud di AWS e quindi sempre disponibili.<\/p>\n\n\n\n

Di default, sono disponibili alcuni topic MQTT tramite qui \u00e8 possibile gestire lo shadow:<\/p>\n\n\n\n

<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Per la nostra applicazione IoT possiamo ovviamente creare ulteriori topic MQTT, ma questi non potranno gestire lo shadow del device.<\/p>\n\n\n\n

I dati del dispositivo sono rappresentati nello shadow sottoforma di documento in formato JSON conentente appunto lo stato del device, diviso nelle seguenti parti:<\/p>\n\n\n\n