Visualizzazione risultati 1 fino 10 di 10

Discussione: Servizio alternativo a ThingSpeak

  1. #1
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

    Predefinito Servizio alternativo a ThingSpeak

    Buonasera,
    Volevo sapere se Altervista oltre ad aver dato la possibilità di avere l'hosting e creare siti web e accesso al database(anche per studiarci sopra) avesse in programma anche una sezione cloud per ricevere dati da sensori attaccati a dispositivi con poca ram e cpu piccole come (Arduino, Pic mcu,RaspBerry, ecc) che usano la tecnologia web ThingSpeak basata sul cloud. In modo tale da permettere a chi studia o lavora sulla programmazione di allargare il raggio di apprendimento sulle applicazioni tecnologiche del momento.
    https://thingspeak.com/pages/learn_more
    Attendo una Vs risposta.
    Grazie.
    Leonardo Moretti.
    Ultima modifica di leonardomoretti : 20-08-2020 alle ore 21.40.36

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Potresti inviare delle richieste POST con i dati ad una tua pagina PHP, quindi farci quel che vuoi, come salvare su db o mostrarle sul sito.

    Ciao!

  3. #3
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

    Predefinito

    Buongiorno ,
    Ho già creato, sempre con il Vs aiuto una pagina php che accetta dati sulla barra dell'indirizzo della pagina stessa , es:
    Http://....altervista.org?data:dato1,dato2,....
    Internamente separa i campi e li scrive nel db.
    Forse intendevi questo per <inviare delle richieste post coi dati alla pagina php>?
    Altrimenti se c'è un modo più evoluto che assomiglia di più a quello ThingSpeak sono interessato a crearlo. Avete una pagina pop precompilati per fare questo? Mi potete aiutare a creare questa cosa?
    Grazie per il Vs sostegno.
    Leonardo Moretti.

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Citazione Originalmente inviato da leonardomoretti Visualizza messaggio
    Http://....altervista.org?data:dato1,dato2,....
    Internamente separa i campi e li scrive nel db.
    Questo utilizza i dati GET, che sono appunto nell'URL della pagina.
    C'è un altro modo per inviare i dati, tramite POST: invece di inserire i dati nell'URL, vengono inseriti nell'header della richiesta. Ho trovato un esempio di ThingSpeak
    che invia i dati POST qui.

    Lato PHP, invece di leggerli da $_GET[] li puoi leggere da $_POST[], il resto non cambia granché. Ovviamente devi pensare anche a malintenzionati che potrebbero scrivere loro valori strani al fine di effettuare attacchi sql injection.

    Ciao!

  5. #5
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

    Predefinito

    Buongiorno,
    Leggendo anche altri forum stranieri sono riuscito a creare anche una pagina post ed aggiornare i dati spedendo questi tramite un'altra pagina con un form in cui si caricano dei valori e dopo il clic sul pulsante richiama la pagina post(ricevente) è gli passa i valori del form.
    Fin qui ì la cosa è abbastanza semplice.
    Seconda battuta, ho provato , invece di usare il form, a creare una pagina con un codice Ajax che all'interno conteneva gia dei valori (in formato json) da passare alla stessa pagina post (ricevente) scrivendo nel db questi ultimi. Ed anche qui tutto bene! funzionava tutto. Però la faccenda si complica quando devo inviare, tramite un modulino Wi-Fi questi dati usando solo i comandi AT. Leggendo l'evoluzione delle regole php in merito a questo sembrerebbe che da php5 l'invio esterno dei dati get e post da questi sensori o moduli Wi-Fi AT sia stato deprecato. Il che è diventato tutto un po' più complicato aggirare l'ostacolo. Ci sono delle soluzioni dedicate ad esempio moduli ESP8266 (compatibili con arduino) proprio per evitare alle persone di impazzire ed usare librerie dedicate. Ma io sono pratico con il PIC 18Fxxxx quindi devo perseguire quella strada. Una cosa ho notato, che entrambi i sistemi usano l'invio dei dati tramite l'impacchettamento dati Json, ciò sta a significare che sul web server deve per forza esserci una pagina php in ascolto che ha al suo interno un codice Ajax che a sua volta passerà i dati via post ad un'altra pagina php che li scriverà poi su un DB.
    Mi date una mano a creare,su questa strada, un qualche cosa che funziona veramente come desidererei io se potete? Potrebbe essere di aiuto a molte persone che nel web trovano soltanto info frammentate !
    Riassumendo il percorso è il seguente:
    Pic-MCU---datiJson--->Pagina Ajax in ascolto(lato web server) ---- invio dati post---->pagina post ricevente e scrittura su db(lato web server).

  6. #6
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Citazione Originalmente inviato da leonardomoretti Visualizza messaggio
    che entrambi i sistemi usano l'invio dei dati tramite l'impacchettamento dati Json, ciò sta a significare che sul web server deve per forza esserci una pagina php in ascolto che ha al suo interno un codice Ajax che a sua volta passerà i dati via post ad un'altra pagina php che li scriverà poi su un DB.
    No.

    Json è un formato di codifica che puoi bellamente ignorare all'inizio, anzi, come prima prova ti consiglio proprio di evitare di utilizzarlo.

    Dal micro (che sia un pic o altro) devi generare una richiesta POST ; è simile ad una richiesta GET ma in più nel body ci sono i parametri con i vari dati, nella forma dato1=valore1&dato2=valore2 etc etc.

    Questa verrà inviata ad una pagina PHP, che preleverà i dati tramite $_POST. Ajax non centra nulla perché si tratta di javascript: ajax serve essenzialmente per inviare dati da javascript a PHP senza ricaricare la pagina; se nel tuo micro non hai implementato un webserver ma invii solamente richieste, ajax non serve a nulla (più che altro non puoi usarlo, visto che si tratta di javascript che viene eseguito nel browser dell'utente).

    La primissima prova che ti consiglierei di fare è:
    Codice PHP:
    <?php
    if(isset($_POST['dato1']))
    {
    echo
    'Il server ha letto '.$_POST['dato1'];
    }
    else
    {
    echo
    'Il server non ha letto valori';
    }
    Inviando una richiesta GET, dovrai leggere la seconda echo (lato micro). Inviando invece una richiesta POST con:
    Codice:
    dato1=24
    dovrai leggere la prima echo con il valore passato.

    Ciao!
    Ultima modifica di alemoppo : 23-11-2020 alle ore 22.05.43

  7. #7
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

    Predefinito

    Ciao io veramente ho già fatto entrambe le pagine get e post che scrivono sul db. La get l'ho testata passando sull'url i valori. Mentre la pagina post l'ho testata con un form che richiama la pagina post passando i valori. Tutto funziona! Quindi sono un pezzetto più avanti della prova che mi hai detto tu.
    Lo scoglio che non riesco a superare è il lato comandi AT se vogliamo mettere un attimo da parte il lato MCU (bisogna prima essere sicuri dei comandi at da usare nel codice c della mcu). Io ho acquistato un modulino Wi-Fi ESP-01 collegato via seriale col pc e sto usando l' emulatore terminale per inviare i comandi AT sul modulino.
    1) mi collego al modem
    2) mi collego al sito web personale
    3) in questa fase poi mi perdo perché non sono sicuro, il modulo mi risponde con un segno di maggiore >. È qui che mi incarto perché non riesco a trovare la sintassi giusta da inviare al web server !
    Se vuoi ti mando qualche comando nello specifico ! Sento che ho la soluzione sulla punta della lingua ma non riesco a metterla in pratica !

  8. #8
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Che comando invii? Cosa vorresti fare? Hai impostato la velocità ed i vari parametri correttamente?

    Ciao!

  9. #9
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

    Predefinito

    Ciao, questi sono i comandi AT verificati da inviare al modulino Wi-Fi esp01 (dentro le parentesi riporto la risposta del modulino ai comandi):

    ATE0
    (Ok)
    AT+CWMODE=3
    (Ok)
    AT+CIPMUX=0
    (Ok)
    AT+CIPMODE=0
    (Ok)
    AT+CWJAP="TIM-23075431"," <Password Router> "
    (Ok connected)

    AT+CIPSTART="TCP","leonardomoretti.altervista.org" ,80
    (Ok)
    AT+CIPSEND=87
    (>)

    GET /post-data.php?api_key=tPmAT5Ab3j7F9&value1=device01&val ue2=32&value3=64&value4=1100
    (Sent)
    (closed)

    Nb: il comando AT+CIPSEND=87 rappresenta il numero di caratteri o byte della parola dopo il comando GET compreso gli spazi (il numero di byte deve essere preciso altrimenti il comando successivo arriva troncato).
    L'intoppo è proprio sul comando GET che non produce alcuna aggiunta dati sul db. Ma la pagina post-data.php se testata a parte funziona correttamente. Bisogna essere veloci in fase di invio dei dati perché la connessione al sito internet si chiude velocemente.

  10. #10
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Tralasciando il discorso della sintassi per il codice esterno a PHP (Arduino etc).
    devi creare test1=val1&test2=val2 (che sia metodo GET o POST) nel caso del metodo GET dopo il punto interrogativo (per il web server) va aggiunto il testo http://example.com/index.php?test1=val1&test2=val2 altrimenti al body della richiesta POST sempre nella forma test1=val1&test2=val2.
    Qui discussione Arduino anche se non proprio il tuo modello ma pur sempre Arduino. (Leggi anche pagina 2 la soluzione).
    Ultima modifica di darbula : 19-12-2020 alle ore 19.00.57

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •