Blocco funzione per gestione servizio REST

» Home » Article » Blocco funzione per gestione servizio REST
  1. Home
  2. Knowledge Base
  3. Controllori SlimLine
  4. Applicazioni
  5. Blocco funzione per gestione servizio REST

REpresentational State Transfer (REST) è un tipo di architettura software per sistemi distribuiti come il World Wide Web, l’utilizzo dell’architettura REST è su HTTP, con una struttura degli URL ben definita e metodi HTTP specifici per il recupero di informazioni (GET) e altri per la modifica (POST). Anche il REST fà parte dei protocolli per l’IoT e permette scambio dati tra sistemi distribuiti e server nel cloud, l’utilizzo del protocollo HTTP e la comunicazione senza stato richiedono un limitato uso di risorse sia lato client (Nel nostro caso i ns sistemi programmabili) che lato server.

Come si vede dalla foto i vari client scambiano dati con il server tramite protocollo HTTP, l’invio dati dal client al server avviene con metodo POST, ad ogni invio il client riceve i dati in risposta dal server. In questa architettura è il client ad iniziare la connessione HTTP verso il server (Che deve avere un IP pubblico), quindi permette lo scambio dati anche con client connessi su reti NATttate e con IP dinamici. Naturalmente essendo il client ad iniziare la connessione il server per inviare i dati al client deve attendere che si connetta. Per i sistemi programmabili con LogicLab è disponibile la nuova libreria eLLabRESTSvcLib (Vedi forum) che contiene.

RESTWSvcClient, un FB gestisce il protocollo REST scambiando dati con il server. Per permettere la verifica da parte del server della funzionalità dei client e l’invio di dati verso il client è gestito l’invio di un messaggio di heartbeat a tempo definibile.

RESTSendFct, un FB che collegandosi a quello precedente  invia record dati al server. Essendo il REST basato su HTTP i dati sono di tipo stringa. Ogni invio viene etichettato con il timestamp, e nel caso non sia possibile inoltrarlo al server per mancanza di connessione, viene memorizzato in un file FIFO su disco. Al ripristino della connessione tutti i record dati presenti nel FIFO sono inviati al server che grazie al timestamp li può ordinare.

Per dimostrare la facilità di funzionamento del servizio REST abbiamo realizzato il programma RESTSvcMng che permette di collegare il sistema SlimLine ad un server nel cloud postato su Altervista. Per verificare la connessione al server ed il corretto funzionamento del FB consiglio di utilizzare lo spionaggio.

E’ possibile scaricare il progetto che contiene il programma da trasferire sul proprio sistema SlimLine o Netsyst ed i due scripts php da trasferire su di un server nella propria rete o nel cloud. Lo script RESTSvc.php riceve in POST i dati dal sistema, controlla se sono presenti i campi MID, UID, MV, RP, calcola il tempo di poll e controlla la correttezza del messaggio verificando il MID. Se è un messaggio di heartbeat non vi sono altri dati, se è un messaggio dati nel campo Data è presente la lunghezza, il timestamp e la stringa dati. I dati codificati in JSON sono decodificati e trasferiti nell’oggetto $Vars, in modo da essere gestiti semplicemete riferendoci al loro nome, esempio $Vars->{“DInp”}.

Ptp135, script php, dati su file INI (Pagina web)
Il dimostrativo contiene gli scripts php eseguiti sul server che gestiscono il protocollo REST, è possibile utilizzarli per creare un proprio servizio cloud. Il dimostrativo gestisce il  il salvataggio dei dati su files di testo di tipo ini.

Ptp144, script php, dati su database (Pagina web)
Il dimostrativo contiene gli scripts php eseguiti sul server che gestiscono il protocollo REST, è possibile utilizzarli per creare un proprio servizio cloud. Il dimostrativo utilizzando la libreria ezSQL gestisce il  il salvataggio dei dati in un database MySQL.

Per permettere eseguire i tests del FB sul proprio dispositivo è possibile appoggiarsi ad un servizio nel cloud postato su Altervista dove sono in esecuzione entrambi gli scripts php. Il servizio pubblica una pagina di consultazione che permette di visualizzare gli ingressi e gestire le uscite del proprio sistema. Caricato il dimostrativo sul sistema SlimLine accedendo al portale, digitando l’UniqueID del sistema (Visibile dalla sua pagina web) è possibile visualizzare i dati ricevuti con lo stato degli I/O digitali del modulo CPU. Attivando/disattivando gli ingressi sul sistema si avrà la loro variazione di stato in visualizzazione ed attivando le uscite dalla pagina web si avrà la variazione delle uscite sul sistema. Definendo UID=3407887 è visualizzato lo stato di un sistema Netsytst in funzione presso la nostra sede. Le due uscite logiche sono fisicamente connesse ai due ingressi  logici, così attivando l’uscita si attiverà il rispettivo ingresso. 

Con il REST e l’MQTT i nostri prodotti sono entrati nel mondo dell’IoT. A scopo dimostrativo abbiamo realizzato un servizio web che monitorizza i consumi del nostro datacenter memorizzando in un database i dati ricevuti via REST da un nostro sistema Netsyst connesso ad un  misuratore di energia.

Ti è stato utile questo articolo ?