Vai al contenuto

Una libreria per la gestione del servizio REST

Home Forum Programmazione IEC 61131 (LogicLab) Una libreria per la gestione del servizio REST

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Autore
    Post
  • #36043
    Sergio Bertana
    Amministratore del forum

    Dopo mesi di test in collaborazione con nostri clienti che hanno funto da betatester finalmente rilasciamo la nuova libreria eLLabRESTSvcLib (Estratto manuale) per la gestione del servizio REST. Il REpresentational State Transfer (REST) è un tipo di architettura software per sistemi basati su Internet, la comunicazione tra il client ed il server avviene in HTTP quindi il server REST può essere facilmente ospitato in una server farm.

    Proprio per dimostrare la facilità di funzionamento abbiamo realizzato un programma dimostrativo PTP135A000 con il quale è possibile collegare uno o più sistemi SlimLine ad un server nel cloud, che noi abbiamo postato su Altervista. Il dimostrativo per chi ha esperienza di web contiene anche gli script php e javascript installati sul server. In questo modo è possibile creare un proprio servizio cloud da utilizzare anche per applicazioni commerciali.

    Il dimostrativo è funzionante e permette di visualizzare gli ingressi e gestire le uscite del proprio sistema via Internet tramite il server cloud. Caricato il dimostrativo sul sistema SlimLine basterà accedere al portale sul server Altervista, consultando la pagina del servizio REST e digitando l’UniqueID del sistema (Download programmi sorgente).

    #39681
    Sergio Bertana
    Amministratore del forum

    Vacanze, tempo di REST (Purtroppo non inteso nel senso di riposarsi)…

    Continuo con i dimostrativi del servizio REST sui nostri sistemi LogicLab con il PTP143A000 che invia al server cloud una serie di dati (modificabili a piacere da programma). I dati ricevuti dal server sono come nell’esempio precedente memorizzati in un file ini ed accedendo alla pagina di visualizzazione definendo in GET alla chiamata l’UniqueID (UID) del proprio sistema verranno visualizzati nella pagina (Screenshot).

    Come si vede dallo screenshot i dati sono elencati con la dicitura e nell’ordine in cui sono inviati dal programma sullo SlimLine. Ecco un estratto del programma.

    CASE (ParID) OF
      1: i:=SysVarsnprintf(ADR(RESTSBf), SIZEOF(RESTSBf), ‘Firmware version=%s’, STRING_TYPE, ADR(SysFVersion));
      2: i:=SysVarsnprintf(ADR(RESTSBf), SIZEOF(RESTSBf), ‘Serial Nr=%d’, UDINT_TYPE, ADR(SysSerialNr));
      3: i:=SysVarsnprintf(ADR(RESTSBf), SIZEOF(RESTSBf), ‘SysPLCUpTime=%d (S)’, UDINT_TYPE, ADR(SysPLCUpTime));
      4: i:=SysVarsnprintf(ADR(RESTSBf), SIZEOF(RESTSBf), ‘SysTBackExTm=%d (uS)’, UDINT_TYPE, ADR(SysTBackExTm));
    END_CASE;

    Il tasto Cancella file INI permette di cancellare il file ini e forzare il sistema SlimLine a reinizializzare l’invio dei dati (Download programma sorgente e scripts php).

    #39735
    Sergio Bertana
    Amministratore del forum

    Nei due post precedenti ho per semplicità salvato i dati in arrivo dal servizio REST in un file ini sul server nel cloud, ma naturalmente è molto più efficente utilizzare un database.

    Quindi ho realizzato un nuovo programma dimostrativo il PTP144A000 che invia come  gli altri al server cloud una serie di dati (modificabili a piacere da programma), ma i dati ora sono memorizzato in un database MySQL. accedendo alla pagina di visualizzazione definendo in GET alla chiamata l’UniqueID (UID) del proprio sistema verranno visualizzati nella pagina (Screenshot).

    Il dimostrativo oltre al programma da caricare sullo SlimLine contiene anche i sorgenti script PHP da trasferire sul server cloud. Per la gestione del database ho utilizzato la libreria ezSQL che semplifica notevolmente il lavoro (Download programma sorgente e scripts php).

    #39797
    Sergio Bertana
    Amministratore del forum

    Rimando a questo topic per la disponbilità del bocco funzione MQTTClient, l’MQTT (Message Queuing Telemetry Transport) di IBM è lo standard di riferimento per la comunicazione per l’Internet delle Cose. Quindi una valida alternativa al servizio REST.

    #39845
    Marco
    Partecipante

    Ho qualche serio problema con il client Rest.. Ho copiato il codice che avete fornito e sembra che bene o male funzioni, ma fa qualcosa di strano. Nel senso che, se attivo SpyData sembra che giri tutto correttamente, appena lo chiudo va tutto a ramengo, iniza a dare errori il client rest.

    Supponendo che fosse solo una mia impressione ho provato altre 4-5 volte a fare il tentativo e ogni volta che ricollego Toolly e attivo spydata si riprende, appena lo spegno smette di funzionare. Dopo di che ho fatto la prova a disabilitare SpyOn, e in questo caso mi da la prima volta “ok” poi continua a dare errori.

    Puntando sul vs. server non sembra dare problemi, sul mio invece non ho capito come mai da questo tipo di problemi; Il fatto che attivando/disattivando SpyData mi dia questi problemi mi fa sospettare che sia qualcosa relativo al tempo di ciclo, quindi andando in osservazione o simile rallento qualcosa e non si ‘perde dei pezzi’ per cui non va in errore. Essendo però chiuso il blocchetto funzione non posso vedere nemmeno all’interno che errori da e da cosa possa essere causato..

    Appena accedo con spydata vedo l’ultimo errore che compare dopo un po: LastError:100557050

    Dopo aver scritto il post, prima di dare conferma ho ri-verificato la mia teoria, ed effettivamente si è ripetuto, un altra volta, allo stesso modo. Posso mostrartelo via teamviewer se ritieni.. forse si capisce meglio ?

    #39846
    Sergio Bertana
    Amministratore del forum

    Si quello che citi è un problema che ci hanno già segnalato, alcuni server HTTP terminato l’invio dati chiudono immediatamente la connessione e questo genera un errore nella FB di gestione.

    Il problema è già stato risolto nella nuova libreria eLLabRESTSvcLib_A300, che ti allego per il download.

    #39848
    Marco
    Partecipante

    E’ come passare dalla notte al giorno, ora funziona decisamente meglio, riesco a reggere un pacchetto ogni mezzo secondo in maniera continuativa senza alcun tipo di errore. Chiaramente non si può progettare un sistema per questi ritmi in produzione, è folle, ma almeno se c’è un picco temporaneo riesce a svuotare la coda rapidamente.

    #39998
    Sergio Bertana
    Amministratore del forum

    Rimando alla lettura di questa nota tecnica per una spiegazione dettagliata delle funzionalità del protocollo REST.

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Devi essere connesso per rispondere a questo topic.