Vai al contenuto

Rilasciato nuovo FB HTTPClient

Home Forum Programmazione IEC 61131 (LogicLab) Rilasciato nuovo FB HTTPClient

Taggato: 

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

    Il FB HTTPGetPage si è evoluto ora è diventato un vero client HTTP quindi ne abbiamo cambiato il nome in HTTPClient (Estratto manuale). E’ stata aggiunta la possibilità di inviare parametri sia in GET che in POST e di ricevere in risposta pagine di qualsiasi lunghezza, in caso di pagine molto grandi i dati di pagina ricevuti possono essere trasferiti anche su file.

    Allego al topic un programma di esempio (Download) con il nuovo FB, nell’esempio viene eseguita la richiesta di una pagina sul sito Altervista, il programma passa in GET o POST i parametri Dividend e Divisor ad uno script PHP che esegue la divisione tra i valori passati. E’ possibile testare il funzionamento dello script direttamente da qui. Se lo script è attivo viene ritornata una pagina con: The result is: 50.

    E’ ovvio che si può testare lo script modificando i valori nell’indirizzo del browser ottenendo risultati diversi. Lo scopo del FB è proprio questo appoggiarsi da programma SlimLine su di un servizio web nel cloud per fare eseguire operazioni.

    #48327
    Marcello
    Partecipante

    Stò usando con successo la FB HTTPClient e ora che ci sto prendendo gusto, vorrei poter usare questa FB per configurare via HTTP dei dispositivi connessi alla rete, in particolare cambiare l’indirizzo IP, settare dei parametri ecc… Ho richiesto ad un nostro fornitore i comandi per cambiare l’indirizzo IP di alcune sonde (KMTronic) e mi hanno inviato questa serie di comandi (compreso quello di reboot).

    Cambio IP:

    POST /net_config.htm HTTP/1.1
    Host: 192.168.1.199
    Connection: keep-alive
    Content-Length: 57
    Cache-Control: max-age=0
    Authorization: Basic YWRtaW46YWRtaW4=
    Origin: http://192.168.1.199
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Referer: http://192.168.1.198/net_config.htm
    Accept-Encoding: gzip, deflate
    Accept-Language: en-US,en;q=0.9,bg;q=0.8
    ip=192.168.1.190&gw=192.168.1.1&sub=255.255.255.0&htpt=80

    Reboot:

    GET /reboot.cgi HTTP/1.1\r\nAuthorization: Basic YWRtaW46YWRtaW4=\r\nAccept: */*\r\n\r\n

    Ho configurato l’FB in questo modo:

    Cambio IP:

    Method: 1
    HostAddress: 192.168.1.199
    HostName:192.168.1.198
    HostPort:80
    Page:net_config.htm HTTP/1.1
    Request: ip=192.168.1.190&gw=192.168.1.1&sub=255.255.255.0&htpt=80
    DBSize:57

    Reboot:

    Method:0
    HostAddress: 192.168.1.199
    HostName:192.168.1.198
    HostPort:80
    Page: reboot.cgi HTTP/1.1\r
    Request: nAuthorization: Basic YWRtaW46YWRtaW4=\r\nAccept: */*\r\n\r\n
    DBSize:61

    Ho “tradotto” bene?

    #48330
    Sergio Bertana
    Amministratore del forum

    Vedo un po di idee confuse…

    La richiesta di set parametri è una richiesta in POST, quindi Method: 1 è corretto, ma HostAddress e HostName devono essere l’indirizzo IP del server non possono essere diversi… al limite HostName potrebbe essere il nome dell’host nel caso di server multidominio.

    In Page devi mettere solo la pagina HTPP/1.1 lo mette in automatico il FB.

    In Request hai messo correttamente i dati richiesti, ma DBSize mettilo molto più grande (Metterei 1000).

    Vedo nell’esempio che è citato il campo Authorization: Basic YWRtaW46YWRtaW4=, questo a naso mi sembra un campo da passare in header alla richiesta per abilitare il comando di set parametri. Quindi passa al parametro Header:=ADR(Authorization: Basic YWRtaW46YWRtaW4=).

    Il resto sembra essere Ok, ma ti consiglio di provare il comando con programmi come Insomnia o Postman, e quando il comando funziona spia con Wireshark cosa passa così da poterlo confrontare con quello che genera l’FB HTTPClient.

    Più semplice è il comando di reboot, un semplice comando GET

    Method:0
    HostAddress: 192.168.1.199
    HostName:192.168.1.199
    HostPort:80
    Page: reboot.cgi
    Request: Authorization: Basic YWRtaW46YWRtaW4=

    #48336
    Marcello
    Partecipante

    Sulla FB non vedo il parametro Header, la mia HTTPClient l’ho presa dalla libreria eLLabNetworkLib_B210.plclib.

    #48338
    Sergio Bertana
    Amministratore del forum

    Ho pubblicato la nuova versione di libreria puoi scaricarla dalla sezione download.

    #50230
    Rubox
    Partecipante

    Buongiorno, ho scaricato la libreria eLLabNetworkLib_B300 dalla sezione download. Importo il FB HTTPClient_v1 in LogicLab e se compilo il tutto mi risulta un errore eLLabNetworkLib_B300.plclib (938) error C002 : LD => Invalid token.

    Se cancello il FB dal progetto, compila senza errori. Dove sbaglio?

    #50234
    Sergio Bertana
    Amministratore del forum

    Sembra che hai definito una qualche variabile con il nome “LD” o qualcosa di simile, per capire dovresti inviare alla nostra mail di supporto il tuo progetto Logiclab così possiamo verificare direttamente per capire l’errore.

    #50258
    Rubox
    Partecipante

    Buonasera, il mio problema è che è sufficiente che definisco un nuovo progetto vuoto, importo il FB HTTPClient, creo un programma minimale definendo una variabile “a” e assegnandole un valore arbitrario (quindi un’unica riga di programma del tipo a:=0; ) e compilando in LogicLab mi esce fuori quell’errore, anche senza definire una variabile di tipo HTTPClient.

    Se nello stesso progetto importo gli altri FB della libreria non c’è nessun errore, se importo HTTPClient mi da l’errore. E non so come risolvere, o dove sbaglio.

    #50265
    Sergio Bertana
    Amministratore del forum

    Il tuo problema nasce dal fatto che non hai messo la spunta sul rispetto delle maiuscole/minuscole nel progetto, di default LogicLab lo lascia non attivo, occorre mettere manualmente la spunta. Troverai una  indicazione come questa in molti post del forum.

    Nel progetto conviene sempre attivare il tick Case sensivity, nel menù Project-> Options (Screenshot). In questo modo si controlla il case delle lettere nei nomi di variabili e funzioni evitando di dare nomi a variabili che possono essere in contrasto con nomi già predefiniti.

    Poi se vuoi un esempio completo di utilizzo puoi fare riferimento alla knowledge relativa.

    #50297
    Rubox
    Partecipante

    Buongiorno, grazie per la risoluzione del mio errore: c’ho sbattuto la testa per due giorni senza che mi venisse in mente che il rispetto maiuscole/minuscole potesse causare quell’errore.

    Adesso mi compila senza problemi e la cosa più importante è che funziona.

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