Gestione scorte magazzino

Business Central, monitorare la giacenza del magazzino con Azure IoT ed Arduino

Parliamo di uno studio di fattibilità per gestire le scorte di magazzino utilizzando “Internet delle Cose” il cui acronimo è IoT (Internet of Things).

Lo scopo dello studio di fattibilità, fatto per un cliente, è stato quello di inviare i dati provenienti da un dispositivo connesso ad internet a Business Central per capire quando le scorte di magazzino raggiungono il livello per il riordino automatico. Possiamo dire che in alcuni settori merceologici possiamo arrivare ad avere un inventario di magazzino in real-time h24.

IoT (Internet of Things) sta cambiando il modo di lavorare e lo farà sempre di più appena la rete 5G in Italia sarà completata.

La richiesta del cliente è stata “Quando il peso di quei contenitori scende sotto 150 Kg, Business Central deve inviare una richiesta di approvvigionamento al magazzino esterno”.

La domanda che ci siamo fatti è stata “Come possiamo a fare in  modo che quei contenitori inviino un segnale a Business Central?”

La risposta è stata “Arduino”.
Arduino è una piattaforma hardware a basso costo, opensource e di progettazione Italiana.

Ok, ma poi ci siamo chiesti “Ma il segnale letto con Arduino, come lo inviamo a Business Central?”

La risposta è stata “Azure IoT Central”, perchè semplice da configurare e molto più facile da utilizzare rispetto a “Azure IoT HUB”.

Gli step dello studio di fattibilità

Gli steps del nostro studio di fattibilità sono stati:

  • Creare un’applicazione utilizzando Azure IoT Central
  • Creare un device template
  • Creare un simulatore di device, permettendo di simulare la lettura dei dati e fare il test del software
  • Connettere Arduino
  • Creare una Azure Logic Application
  • Connettere Azure IoT a Business Central
  • Creare un worlflow in Business Central

Creare un’applicazione utilizzando Azure IoT Central

Il primo passaggio è stato quello di impostare una Azure IoT Central App

  • Dal link “apps.azureiotcentral.com” si crea una custom app. e gli assegnamo un nome, policy application e scegliamo di  associare alla nostra App un URL.

Tempo 30 secondi la nostra prima Azure IoT App è pubblicata.

Creare un Device Template

Cosa è un Device Template? E’ una tipologia generica di device.
Generalmente un progetto IoT all’interno di un ambiente produttivo ha più device dello stesso tipo.
Un Device Template ci permette di creare uno schema di configurazione per tipologia di device, così che possiamo impostare simultaneamente più devices dello stesso tipo: pese, termometri, pressostati, ecc.
Azure IoT Central ci permette, dalla dashboard, di creare un Device Template:

  • Assegnargli un nome
  • Selezionare il tipo di lettura che verrà letta
  • Impostare i vari parametri
  • Impostare una regola sulla tipologia di lettura scelta.

Creare un simulatore di device, permettendo di simulare la lettura dei dati e fare il test del software

Azure IoT Central ci permette di creare un device virtuale, utile, per simulare la lettura del dato, nel nostro caso il peso del contenitore; questo simulatore ci da la possibilità di testare tutta la parte software sia Azure che Business Central.

Connettere Arduino

Azure IoT Central ha un elenco di devices, selezionando dalla lista Real potremo inserire l’ID del device ed il nome.

I componenti hardware usati in laboratorio sono:

  • Arduino uno con scheda wi-fi
  • Un sensore di peso
  • Batteria da 9v
  • Basetta breadboard e cavetteria
  • Contenitore di plastica

Scaricato le librerie software del sensore di peso programmiamo l’Arduino connettendolo al pc tramite cavo USB. Aduino fornisce un tool di sviluppo opensource scaricabile dal sito ufficiale.

Creare una Azure Logic Application

Adesso che abbiamo montato il nostro Arduino, con il suo sensore di peso e programmato, dobbiamo far si che il peso letto dal sensore venga inviato a Business Central.

Accedendo ad Azure Portal selezioniamo Logic Apps e creiamo la nostra logic app assegnandogli un nome.
All’interno della nostra logic app selezionamo IoT Central connector e poi When a rule is fired che ci permette di scegliere:

  • L’Applicazione creata precedentemente
  • La Regola creata precedentemente.

Adesso, dobbiamo agire sulla regola, perché la lettura del peso viene fatta continuamente dal nostro Arduino attivando la nostra regola tutte le volte che il peso risulta nella soglia. Noi, invece, vogliamo che la regola si attivi una sola volta.

Per far si che la regola si attivi una sola volta configuriamo in IoT Central una proprietà, che abbiamo chiamato Refill.

Modifichiamo la nostra regola ed associamola alla nostra applicazione in IoT Central facendo si che venga applicata solo quando la nostra propietà Refill sia valorizzata a NO.

Connettere Azure IoT a Business Central

Per poter far si, che il dato letto dal nostro Arduino possa essere inviato a Business Central occorre, che la comunicazione sia autorizzata attraverso OAuth, un protocollo di rete aperto e standard, progettato specificamente per lavorare con l’Hypertext Transfer Protocol (HTTP), altrimenti non è possibile chiamare un API in Business Central tenant.

Le credenziali di autenticazione verranno memorizzata in Azure Key Vault.

Fatto questo drovremo:

  • Registrare Business Central come una App in Azure portal
  • Generare il Token
  • Crare una Azure Logis App Workflow per ottenere un Business Central Access Token

Registrare Business Central come una App in Azure portal

Dobbiamo registrare Business Central come una App in Azure Portal utilizzando la funzionalità App Registrations per abilitare la richiesta del Token in OAuth.

Dovremo impostare i parametri: Name, Redirect URI, Client Secrets ed API Permission (Dynamics 365 Business Central user_impersonation).

Generare il Token

Dobbiamo ottenere un token manualmente usando Postman, un software scaricabile gratuitamente da internet.

Useremo Postman per simulare una chiamata GET al nostro tenant
https://api.businesscentral.dynamics.com/v1.0 HYPERLINK “https://api.businesscentral.dynamics.com/v1.0%3Ctenant”< HYPERLINK “https://api.businesscentral.dynamics.com/v1.0%3Ctenant”tenant domain>/api/v1.0
nel tab Autorization andremo ad impostare come tipo di autenticazione OAuth 2.0 e Request Headers.

A questo punto possiamo ottenere un Token impostando i parametri: Token Name, Grant Type, Callback URL, Auth URL, Access Token URL, Client ID, Client Secret, Scope, State (va lasciato vuoto), Client Autentication.

Il Token ottenuto lo recuperiamo dalla proprietà refresh_token e lo utilizziamo per fare un test  con Postman; se tutto va bene otteniamo la liste delle API utilizzabili in Business Central.

Creare una Azure Logis App Workflow per ottenere un Business Central Access Token

In Azure Portal scegliamo Logic Apps e creiamo una nuova App, scegliendo un blank template.

In questa sezione di Azure Portal impostiamo la logica necessaria per gestire creare, rigenerare, cancellare e memorizzare la chiave di autenticazione del Token, all’interno di Azure Key Vault.

Iniziamo con l’impostare una Request selezionando la scelta When a HTTP request is received, che ci permette di recuperare la chiave di autenticazione del Token, memorizzato precedentemente in Azure Vault.

Utilizzando l’indirizzo https://vault.azure.net visualizziamo a video un Json contenente i parametri, tramite una chiamata GET.

Ottenuta la chiave di autenticazione possiamo recuperare il Token con una chiamata POST all’URI

https://login.microsoftonline.com/ HYPERLINK “https://login.microsoftonline.com/%3Ctenant”< HYPERLINK “https://login.microsoftonline.com/%3Ctenant”tenant domain>/oauth2/token e passandogli i parametri necessari nel body della chiamata.

Ottenuto il Token lo dobbiamo sostituire a quello esistente in Azure Key Vault e questo lo facciamo creando due azioni: Delete e Put.

Il nuovo Token verrà restituito con una nuova azione Response.

Il nostro workflow è praticamente finito, non ci rimane che abilitare il parametro Identity in Azure Key Vault impostando i permessi: Role, Assign access to, Select solo alla nostra Logic App.

Connettere Azure IoT a Business Central

Possiamo chiamare la nostra API. Il nostro workflow è finito e la procedura può recuperare un Token necessario per accedere a Business Central.

Nella nostra Logic APP, creata precedentemente, dobbiamo impostare una nuova azione del tipo Choose a Logic Apps Workflow. Questa nuova azione ci permette di chiamare il nostro workflow per recuperare il Token necessario all’autenticazione in Business Central.

Aggiungiamo una nuova azione, di tipo HTTP, per chiamare la nostra API impostando i seguenti parametri: Method, URI, Headers, Body, Authentication e Value.

Creare un worlflow in Business Central

La API che chiamiamo attraverso Azure Logic App crea un record in una tabella denominata Az. IoT Central Measurement.

Creiamo un nuovo workflow con il compito di creare un ordine di tutte le volte che viene ricevuta una lettura da Azure IoT Central.

Nella risposta del WorkFlow abbiamo aggiunto altre informazioni come l’ID del Device che ha generato la lettura, il codice articolo ed il codice fornitore.

Considerazioni

Inevitabile dire che IoT è un mondo non solo affascinante, ma è sicuramente una via tracciata per tutte le aziende, specialmente di produzione e logistica.

Possiamo utilizzare IoT anche per tracciare i pacchi e all’interno di un magazzino ed in fase di pick-up, un esempio di questo tipo di attività è Amazon con i suoi magazzini automatici.

Business Central è il massimo per sfruttare questa tecnologia essendo completamente integrato in Azure.

Azure fornisce tutte le funzionalità per gestire devices, dispositivi che oggi costano pochissimi euro dandoci la possibilità di trasformare le piccole e media aziende in Aziende 4.0.

Le aziende dovranno fin da subito cambiare i loro attuale ERP scegliendo Microsoft Business Central in cluod Azure integrando la catena produttive e la logistica utilizzando IoT lnternet of things.

 

Dynamics 365 Developer

 

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *