Arduino Forum

International => Italiano => Megatopic => Topic started by: SukkoPera on Nov 06, 2016, 04:09 pm

Title: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 06, 2016, 04:09 pm
È finalmente giunto il momento di annunciare all'intero pianeta la disponibilità di Webbino (https://github.com/SukkoPera/Webbino). Si tratta di un server web per Arduino, che avevo scritto originariamente per il mio progetto SmartStrip (http://forum.arduino.cc/index.php?topic=120345.0), e che ho successivamente separato e reso indipendente, visto che può avere un utilizzo molto più generico.

Le sue funzionaità principali sono le seguenti:

La libreria è corredata da una serie di brevi esempi che mostrano come utilizzare le sue funzionalità. Ad esempio, LedControl mostra la facilità con cui è possibile comandare un led (o un relé) da web.

La libreria è attualmente in fase di beta, e sarà presto rilasciata come stabile. Nel frattempo eventuali test, suggerimenti e richieste sono i benvenuti :). Anche le critiche sono benvenute, purché costruttive. Per tutto ciò, e per qualsiasi domanda potete usare questo thread.

Di seguito qualche progetto che già usa Webbino:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 06, 2016, 04:24 pm
Grande sukko! Serviva sto topic :D Comunque sui link che hai messo ti consiglio di mettere QUESTO (http://forum.arduino.cc/index.php?topic=413560.0) che almeno è il progetto completo che lo utilizza ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 06, 2016, 05:20 pm
Sistemato!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 08, 2016, 03:16 pm
Rispolvero questo topic perché forse pablos e altri non l'hanno visto. Dovevano porre tanti bei quesiti, di cui onestamente sono curioso. :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: pablos71 on Nov 08, 2016, 05:30 pm
Si l'ho visto ora grazie.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 12:48 am
Ed ecco la gradita sorpresa di oggi:

(https://dl.dropboxusercontent.com/u/3074194/webbino_lm.png)


Ora provare Webbino è ancora più semplice, non avete più scuse :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 02:31 am
Grande Sukko :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 11:11 am
Grazie @As_Needed! Ne approfitto per raccomandarti, appena puoi, di portare il tuo sketch alla versione 0.9.0 di Webbino. L'API ora dovrebbe rimanere stabile e alcune cose dovrebbero risultare più semplici. Inoltre i futuri sviluppi (file binari? ;)) saranno aggiunti a questa.

A breve cancellerò i branch.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 12:33 pm
Hai ragione Sukko e ora di aggiornare anche il mio sketch ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 01:59 pm
Cosa? Non pensavo era diventato così semplice :D

Code: [Select]
EasyReplacementTag (tagMacAddr, NET_MAC, evaluate_mac_addr);
EasyReplacementTag (tagIPAddress, NET_IP, evaluate_ip);
EasyReplacementTag (tagNetmask, NET_MASK, evaluate_netmask);
EasyReplacementTag (tagGateway, NET_GW, evaluate_gw);
EasyReplacementTag (tagNetConfSrc, NET_CONF_SRC, evaluate_ip_src);
EasyReplacementTag (tagWebbinoVer, WEBBINO_VER, evaluate_webbino_version);
EasyReplacementTag (tagUptime, UPTIME, evaluate_uptime);
EasyReplacementTag (tagFreeRAM, FREERAM, evaluate_free_ram);


Un bel lavoro :) Praticamente guardando quello che è tra le parentesi, in mezzo ci va il nome del TAG sulla pagina della SD, poi alla terza posizione il nome della PString e all'inizio quello che prima era

static const var_substitution

Giusto? ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 02:28 pm
Direi di sì, occhio solo che la stringa del tag va senza virgolette.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 02:32 pm
occhio solo che la stringa del tag va senza virgolette.
Sì. Poi per i file binari questo significa che potrò mettere la mia favicon :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 05:40 pm
Non so se vale la pena postare qui, però ho un problema. Praticamente ho aggiornato tutto il mio codice con la nuova libreria, ovviamente con IDE 1.6.12 compilato e tutto e nessun errore ovviamente. Poi dopo quando cerco di accedere all'IP impostato da me non visualizzo niente, come mai?

Queste le definizioni

Code: [Select]
//SD ED ETHETNET SHIELD///////////////
#define SD_SS 4
WebServer webserver;
#include <WebbinoInterfaces/WIZ5x00.h>
NetworkInterfaceWIZ5x00 netint;
//EthernetServer server(80);

// Configurazione Network
#define IP_ADDRESS 192,168,1,51 //l'ip usato dalla scheda ethernet
//#define DNS_ADDRESS 208,67,222,222
#define GW_ADDRESS 192,168,1,1 //l'ip del vostro modem
#define NETMASK  255,255,255,0 //la netmask della vostra rete


E nel setup

Code: [Select]
Serial.println (F("Using Webbino " WEBBINO_VERSION));

  IPAddress ip (IP_ADDRESS);
  //IPAddress dns (DNS_ADDRESS);
  IPAddress gw (GW_ADDRESS);
  IPAddress mask (NETMASK);

    Serial.println (F("Configuring static IP address"));
  byte mac[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
  bool ok = netint.begin (mac, ip, dns, gw, mask);


  if (!ok) {
    Serial.println (F("Failed to configure static IP address"));
    while (42)
      ;
  } else {
    Serial.println (F("Static IP configuration done:"));
    Serial.print (F("- IP: "));
    Serial.println (netint.getIP ());
    Serial.print (F("- Netmask: "));
    Serial.println (netint.getNetmask ());
    Serial.print (F("- Default Gateway: "));
    Serial.println (netint.getGateway ());

    Serial.print (F("Initializing SD card..."));
    if (!webserver.begin (netint, NULL, tags, SD_SS)) {
      Serial.println (F(" failed"));
      while (42)
        ;
    }
    Serial.println (F(" done"));
  }


Sicuramente sbaglio qualcosa nel setup. Poi con la seriale mi scrive che tutto è stato configurato, sia ip che scheda SD, insomma tutto "done".
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 05:42 pm
Beh, questo thread serve proprio per queste cose, hai fatto benissimo a postare qui. Cosa ti scrive nel monitor seriale? Hai provato ad abilitare il debug?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 05:52 pm
Capito ;) Comunque no ancora non ho provato, comunque esce esattamente questo sulla seriale:

Code: [Select]
Using Webbino 0.9.0
Configuring static IP address
Static IP configuration done:
- IP: 192.168.1.51
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Initializing SD card... done
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 05:53 pm
Uhm ok, apparentemente sembra tutto a posto allora. Prova a pingarlo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: droidprova on Nov 10, 2016, 05:54 pm
Ed ecco la gradita sorpresa di oggi:

(https://dl.dropboxusercontent.com/u/3074194/webbino_lm.png)


Ora provare Webbino è ancora più semplice, non avete più scuse :).
Grande Sukko!

Grazie 1000 per il tuo lavoro condiviso
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 05:55 pm
Uhm ok, apparentemente sembra tutto a posto allora. Prova a pingarlo.
Già, infatti ho pingato sulla cmd e risponde... strano

Non è che sul config devo mettere porta 80 qui ?

#define SERVER_PORT 8000
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 06:08 pm
Ah erm, credo proprio di sì, ho lasciato quel default? Prova a contattarlo sulla porta 8000 allora!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 06:13 pm
Ah erm, credo proprio di sì, ho lasciato quel default? Prova a contattarlo sulla porta 8000 allora!
Contattandolo alla porta 8000 funziona tutto correttamente, svelato il mistero :) :) Comunque sì, era di default 8000

Cambia qualcosa di pratico da porta 80 a 8000?


Comunque oltre a essere più semplice e più efficiente a come posso notare ho risparmiato pure circa 4/5kb di memoria flash ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 10, 2016, 09:08 pm
Accidenti, primo test primo bug! Correggo ASAP. Se vuoi avere il privilegio di aprire il primo issue o fare la prima pull request... ;)

Non cambia niente, se non che se la porta è 80 puoi evitare di specificarla nell'URL. Avevo messo 8000 perché sulla DigiX la porta 80 è occupata dall'interfaccia di configurazione e non può essere usata. Cosa geniale :smiley-confuse:. Però non volevo renderlo il default, era solo un cambiamento temporaneo!

Il risparmio di flash è dovuto alla nuova Link-Time Optimization aggiunta alla toolchain nelle ultime versioni. È davvero notevole, se conti che non ho cambiato niente!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 10, 2016, 09:42 pm
Può capitare :) Comunque penso di lasciare porta 8000 perché accedo veramente poche volte in locale (al massimo se devo farlo basta mettere :8000, non è che è complicato :D ), sempre in remoto e quindi la porta interna è impostata per l'ip 192.168.1.51 dal modem nel port mapping e quindi non devo inserirla io ogni volta che accedo. ;)
Comunque sempre buono il risparmio di flash, meglio così!
Riguardo all'issue o pullrequest... anche io sono un niubbo totale di GitHub :D Ma per un issue non ci vuole niente. ;) Te lo apro volendo, ma se hai già risolto non c'è motivo.


Che poi nella config avevi scritto così, si vede benissimo che ti sei dimenticato poi di ricambiarla

* NOTE: Port 80 can not be used with DigiFi
 * NOTE: Currently changing this will have no effect with most cards, FIXME
 */
#define SERVER_PORT 8000


P.S. Comunque già che c'ero l'ho aperto un piccolo issue ;)

P.P.S. Nei link dei progetti che usano webbino, nel mio ho aggiornato il codice in allegato con anche un riferimento a questo topic per webbino ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 13, 2016, 11:54 am
Buongiorno a tutti,
Era tanto che volevo scrivere questo messaggio ma per problemi di tempo, non sono riuscito a scrivere. Dopo avere configurato tutto il webserver webbino e lavorato abbastanza bene sempre in locale. Era arrivato il momento di aprire le porte del router e vedere i dati da remoto.

Qui cominciano i problemi:

inizialmente ero convinto che i problemi derivassero dalla mia linea ADSL. Premetto che tutto il mio sistema arduino è alimentato da fotovoltaico offgrid e si collega al router principale tramite wifi (un access point da esterno prima con un antenna da 5dbi e da ieri con in antenna da 16dbi da quale esce un cavetto ethernet che collego ad arduino) visto che mi viene impossibile passare un cavo Ethernet da casa fino a dopo ho installato arduino.

Bene, pensavo fosse un problema di comunicazione ma non lo è. In quanto verificando il Ping tra il router principale ed arduino è di circa 54ms. Mentre per aprire il web server da remoto ci sta davvero tanto. Si parla di circa 8 secondi per caricare tutta la pagina (sono pochi kb) ed avvolte nemmeno riesce a caricarsi del tutto perché la pagina va in timeout e si chiude.

A questo punto ho dato un occhiata al web server del amico as_needed ed ho notato che anche la sua pagina è davvero lenta a caricare (credo tu l abbia direttamente collegata al router con un cavo Ethernet, guardando le foto foto del progetto o no?)

A questo punto chiedo cosa può essere perché è ingestibile una caricamento pagina così. 
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: pablos71 on Nov 13, 2016, 12:07 pm
Hai provato con un altro sketch tipo webserver presente nell'ide, praticamente pagina non ce ne, però c'è tutta una serie di negoziazioni e messaggi tra server e client che non vedi, ma fa perdere tempo.
In teoria ci dovrebbe stare 4 secondi a te, comunque troppo. Se è così è un problema di rete tuo, verifica, dovrebbe essere praticamente immediato.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 13, 2016, 12:38 pm
Grazie Pablos, mi hai dato un ottimo consiglio. Proverò quanto prima. Sai cosa mi ha fatto pensare che probabilmente non è dovuto al collegamento Wi-Fi il problema? Che quando sono con un pc connesso all access point riesco a navigare molto
Bene, naviga perfettamente come se fossi collegato direttamente al router principale
Che si trova a casa. Un altro indirizzo è stato pure che se con il computer di casa (piano terra) digito indirizzo arduino (terrazza) questo si carica lentamente, non come se fosse da remoto ma quasi. Mentre se digito l indirizzo del acces point (che si trova sempre in terrazza) riesco ad entrare nella configurazione perfettamente. Ciò mi fa pensare che il dati non si perdono nel collegamento wireless perché non riuscirei neppure a collegarmi al acces point. Quindi dovrebbe essere Bell ultimo tratto il problema (access point - arduino) molto probabilmente sul web server Arduino probabilmente perch  se provate ad andare sul web server di as_need vedrete che il caricamento per pochi kb di pagina è davvero lento
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 13, 2016, 01:17 pm
Io l'ho collegata con un power line al modem tramite cavi ethernet. La mia è lenta per un "problema" che dovrei risolvere con un standalone che per adesso non posso integrare. Praticamente ho un ciclo for che fa perdere del tempo per gestire delle interferenze derivate dall'anemometro senza far sballare i suoi dati. In ogni caso è tipo una decina di kb la mia pagina, poi ci devi contare che le risorse HW di Arduino sono veramente basse... Comunque non conosco il tuo caso, non posso sapere se sono tanti 8 secondi oppure no. Nel mio caso, non sono molti per via di quel problema che ho citato, ma comunque mi bastano, perché non ho bisogno di tanta velocità, se l'avessi è meglio ovvio, però almeno per ora mi accontento.
C'è anche una cosa che mi aveva consigliato pablos per velocizzare il loop che consiste nel non usare la seriale (se hai finito di fare le tue prove) e commentare un if nel main.cpp

P.S. Se ad esempio provassi a inibire la lettura dell'anemometro (l'ho già fatto una volta per vedere) la pagina si caricherebbe in qualche secondo ;) Almeno la mia sia chiaro
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 13, 2016, 01:32 pm
Ci sono due cose di cui tenere conto, per quanto riguarda la lentezza di caricamento:

La prima è interna a Webbino: la pagina viene inviata al "driver" della scheda di rete (la libreria che la gestisce, insomma) un byte alla volta. Ora, se il driver non fa buffering (e credo che nessuno lo faccia), ogni byte viene inviato al client in un pacchetto separato, cosa che causa un overhead enorme, visto che per trasmettere un byte ne viaggeranno almeno un centinaio sulla rete, tra header IP, TCP e ACK di risposta.

Questo è noto ma, per mia esperienza, sulle connessioni cablate non crea un grosso problema, le pagina si caricano comunque in maniera accettabile. Sulle connessioni wireless però è un problema più pesante, vista la maggiore latenza, lentezza e perdita di pacchetti. Per questo nei driver wifi Webbino implementa un buffer, in modo da mitigare il problema.

Ovviamente se il tuo Arduino è collegato via Ethernet ma poi in mezzo c'è un ponte radio, il buffering andrebbe fatto, ma Webbino non può essere a conoscenza di questo. Potrei forse spostare il buffering più ad alto livello e mettere una direttiva di configurazione per forzarne l'utilizzo, che ne pensate? Non dite "abilitalo sempre" perché la RAM è preziosa ;).

Altro problema è la sostituzione dei tag, che viene effettuata "in diretta" mentre la pagina viene inviata al client. Se la funzione che gestisce il tag impiega 5 secondi, ovviamente l'invio della pagina è sospeso per 5 secondi. Lì sta a voi scrivere uno sketch "furbo" che sostituisca i tag il più rapidamente possibile. Ad esempio, io non farei mai leggere i sensori in diretta, li leggerei per conto mio in background ogni tanto (1 minuto, 5 minuti) e salverei i risultati in una variabile, in modo da poter ritornare subito questa variabile al momento della sostituzione del tag.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 13, 2016, 03:00 pm
sei stato chiarissimo sukkopera, cosa mi consigli di fare a questo punto? da dove mi conviene partire?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 13, 2016, 03:40 pm
Chiara la spiegazione Sukko. Dipende sempre da quanta RAM uno già spreca ;) Io per esempio ne utilizzo il 33% del Mega. Come ho detto va lento a caricarsi per quel ciclo for, mentre invece per quanto riguarda il caricamento completo della pagina penso sia dovuto al buffer ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 13, 2016, 04:40 pm
Beh, sulla Mega la RAM non manca ed effettivamente potrebbe avere senso avere il buffer, ma Webbino vuole anche poter girare su una Uno con un ENC28J60, dove la RAM è praticamente satura.

Credo che farò come ho detto sopra, così salviamo capra e cavoli.

Per l'anemometro, fai come ho detto: non leggerlo al momento della richiesta della pagina, ma fallo a intervalli regolari e restituisci l'ultimo dato letto.

Idem per @tototer: che sensori hai?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 13, 2016, 05:09 pm
Il problema più grosso è proprio il fatto che è l'anemometro a causare questo problema, perché se leggo troppo poco spesso, anche ogni minuto, rischio di perdermi molte raffiche di vento e quindi molti dati non veritieri... per questo volevo implementare l'uso di uno standalone dedicato solo ai sensori (quindi non solo l'anemometro) e poi tutti i dati che arrivano magari a un Arduino, vengono gestiti senza dover far niente perché ci pensa lo standalone, avrebbe solo il compito di leggerli e quindi si alleggerirebbe di molto il lavoro... Purtroppo per adesso non posso implementarlo, ma quando ne farò un'altra di stazione meteo, cercherò di farla la più perfetta possibile.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 13, 2016, 05:37 pm
Come funziona l'anemometro? Non puoi leggerlo via interrupt come descritto qui: http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-wind-speed (http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-wind-speed)?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 13, 2016, 05:44 pm
Come funziona l'anemometro? Non puoi leggerlo via interrupt come descritto qui: http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-wind-speed (http://cactus.io/hookups/weather/anemometer/davis/hookup-arduino-to-davis-anemometer-wind-speed)?
Magari avevo preso quello :) Costa tipo 160 euro. Quello là è molto più semplice anche se più costoso è usa un semplice contatto reed per la velocità del vento e un potenziometro per la direzione. Il mio manda dei bit da decodificare e quindi c'è più da lavorare...

https://www.john.geek.nz/2011/07/la-crosse-tx20-anemometer-communication-protocol/ (https://www.john.geek.nz/2011/07/la-crosse-tx20-anemometer-communication-protocol/)

https://www.john.geek.nz/2011/07/disassembling-a-la-crosse-tx20-wind-anemometer/ (https://www.john.geek.nz/2011/07/disassembling-a-la-crosse-tx20-wind-anemometer/)

http://fabrizio.zellini.org/decoding-la-crosse-tx20-anemometer-with-arduino (http://fabrizio.zellini.org/decoding-la-crosse-tx20-anemometer-with-arduino)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 13, 2016, 06:12 pm
Secondo me puoi fare due cose:

1. Usare un ATtiny, o alla peggio una Uno (ne hai già una, giusto?) per fare un convertitore da questo coso a i2c/SPI/seriale (quel che ti torna più comodo). Continui a leggere l'anemometro, smazzi i dati come devi (che ne so, fare la media o altro) e quando ricevi richiesta fornisci i dati aggiornati.

2. Fare più o meno come dici tu, ma prendendo invece un Raspberry Pi per gestire la parte web. Anche qua puoi usare i2c/SPI/seriale per leggere i dati dall'Arduino che gestisce i sensori.

Però qua siamo OT, se vuoi sviluppare questa idea apri un nuovo thread :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 13, 2016, 07:02 pm
Eh già, io ero proprio indeciso da queste due idee :) ma ero più propenso per la seconda :D per via che con rasp magari potrei mettere anche una bella webcam! Devo approfondire il mondo raspberry però.
Come dici qui non è il caso di continuare, semmai lo farò in un bel nuovo topic ;)
La prima soluzione comunque è quella che potrei fare temporaneamente anche a breve, perché ho un Arduino uno e potrei gestire questo anemometro a parte..
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 13, 2016, 09:16 pm
Allora come sensori ho:

1 sensore temperatura
2 sensore correre (1 tarato per corrente AC ed uno per corrente DC)
1 sensore voltaggio
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 13, 2016, 10:00 pm
Così non posso dire granché... Bisogna capire quanto è lenta la loro lettura. Comunque nel tuo caso sicuramente incide molto il ponte radio. Inizia a riallinearti alla versione master di Webbino che puoi installare dal Library Manager, nel frattempo vedrò di fare quanto detto prima per il buffering. Dovrebbe aiutare.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 13, 2016, 10:26 pm
, nel frattempo vedrò di fare quanto detto prima per il buffering. Dovrebbe aiutare.
;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Nov 14, 2016, 08:31 am
Magari avevo preso quello :) Costa tipo 160 euro. Quello là è molto più semplice anche se più costoso è usa un semplice contatto reed per la velocità del vento e un potenziometro per la direzione. Il mio manda dei bit da decodificare e quindi c'è più da lavorare...
Quelli più economici sono proprio quelli a reed. Quelli più costosi invece hanno una circuiteria interna con tanto di MCU per gestire il tutto.
Il tuo, di cui ti lamenti, sembra appartenere proprio a questa categoria.
In ogni caso se ti interessano le raffiche e quindi il monitoraggio continuo devi implementare un qualcosa che si occupi solo di quello. In effetti un'altra MCU sarebbe la soluzione più economica.
In alternativa, visto che usi un dispositivo wifi client, potrebbe essere quello ad ospitare il web server.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 09:18 am
Buondì Sukko ...
... eccomi di nuovo qui a fare un po' di prove. Leggo :

Quote
Compatibile con molte interfacce di rete:
      • ...
      • WINC1500 (Wi-Fi): WiFi Shield 101, MKR1000
... ma tu hai provato a compilare, anche se non ce l'hai, per Arduino MKR1000 ? Perché a me, con l'IDE 1.6.12, tira furi veramente parecchi, ovvi, errori !!!

Credo tu abbia trascurato il fatto che stiamo parlando di una scheda NON basata su MCU AVR, ma su ARM ... per cui tutto l'uso di PROGMEM ... va a farsi friggere ... ::)

Ho idea che ti conviene togliere la MKR1000 dalla descrizione, almeno finché non sistemi la cosa ... ;)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 09:27 am
.... ah, altra cosa ... ora che si fa tutto da "Library Manager" (ottima idea :)) devo dire che è veramente scomodo (... specie pensando a principianti), dover andare a modificare il file "webbino_config.h" nella cartella delle librerie. Non solo, se ho un programma per una certa scheda di rete ed uno per un altra, ogni volta devo compilare l'uno, modificare la libreria, compilare l'altro, e così via  :smiley-confuse:

Mi sembra molto più corretto che questo file venga si dato all'utente, magari in una cartella separata dalla "src" così di sicuro, se non lo prende, NON lo trovi e vai in errore, che se lo copia nella cartella del suo programma in modo che sia "locale" per ciascun programma e che la configurazione di un'applicazione con una scheda di rete NON coinvolga quella di un'altra con un'altra scheda di rete ;)

Che ne pensi ?

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Nov 14, 2016, 09:33 am
Io faccio sempre così se vado a modificare una qualsiasi libreria, la metto nella cartella dello sketch.
Certo, con alcune librerie, tipo la ethernet, è un po' scocciante, ti trascini dietro parecchi files.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 09:36 am
Io faccio sempre così se vado a modificare una qualsiasi libreria, la metto nella cartella dello sketch.
Certo, con alcune librerie, tipo la ethernet, è un po' scocciante, ti trascini dietro parecchi files.
Ma qui NON serve tutta la libreria ...
... basta il file di configurazione personalizzato per ogni singolo programma che faccio ;)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 14, 2016, 09:58 am
Quelli più economici sono proprio quelli a reed. Quelli più costosi invece hanno una circuiteria interna con tanto di MCU per gestire il tutto.
Il tuo, di cui ti lamenti, sembra appartenere proprio a questa categoria.

Si ma quello con il reed paghi la marca e la struttura dell anemometro che è fatta meglio ;) Se il mio costa 40 euro e quello 160 (anche se è fatto così semplice) non ci si può fare niente. In ogni caso la lettura di un reed è sempre più semplice. Mi fermo qua perché non voglio andare OT ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 10:01 am
... ma tu hai provato a compilare, anche se non ce l'hai, per Arduino MKR1000 ? Perché a me, con l'IDE 1.6.12, tira furi veramente parecchi, ovvi, errori !!!

Credo tu abbia trascurato il fatto che stiamo parlando di una scheda NON basata su MCU AVR, ma su ARM ... per cui tutto l'uso di PROGMEM ... va a farsi friggere ... ::)
Erm, veramente sì, ho provato, è l'unica cosa che potevo fare, non avendo la scheda. Credo di averlo anche scritto nel post in cui presentavo la novità. In effetti il supporto PROGMEM non dovrebbe essere attivo con la MKR, essendo così condizionato:
Code: [Select]
#if defined (ARDUINO_ARCH_AVR) || defined (ESP8266)
#define ENABLE_FLASH_STRINGS
#endif


Potresti provare ad ABILITARLO, rimuovendo l'#ifdef? Se ci sono dei buoni header di compatibilità potrebbe sistemarsi da solo.

Comunque questo mi fa venire in mente che dopo il supporto MKR1000 ho aggiunto quello ESP, magari ho distrutto qualcosa con questo lavoro.

Per quanto riguarda l'altra idea, sì, in effetti può avere senso, ma sei sicuro che funzioni? Se la libreria viene compilata a parte non credo che si vada a prendere il config dallo sketch.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 10:25 am
Potresti provare ad ABILITARLO, rimuovendo l'#ifdef? Se ci sono dei buoni header di compatibilità potrebbe sistemarsi da solo.
Provo e ti faccio sapere ...

Per quanto riguarda l'altra idea, sì, in effetti può avere senso, ma sei sicuro che funzioni? Se la libreria viene compilata a parte non credo che si vada a prendere il config dallo sketch.
... occhio, è OVVIO che l'utente debba fare in testa al programma: #include "webbino_config.h" (nota i " " al posto del < >, quindi  files locali) che deve trovarsi nella cartella del suo programma e dovrebbe creare le varie #define PRIMA dell'inclusione della libreria.
Così credo dovrebbe funzionare (da verificare) ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 11:12 am
Nulla Sukko, come la metti la metti, io ottengo sempre :

Code: [Select]
n file included from /Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/HTTPRequestParser.h:24:0,
                 from /Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebClient.h:24,
                 from /Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/NetworkInterface.h:25,
                 from /Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:24,
                 from /Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/Webbino.h:21,
                 from /var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/arduino_modified_sketch_554611/LedControl.ino:20:
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/webbino_debug.h:48:2: warning: #warning Flash strings disabled [-Wcpp]
 #warning Flash strings disabled
  ^
In file included from /Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/Arduino.h:36:0,
                 from /var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T/arduino_build_509135/sketch/LedControl.ino.cpp:1:
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h: In member function 'const char* Page::getName() const':
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/avr/pgmspace.h:106:49: error: 'const void*' is not a pointer-to-object type
 #define pgm_read_ptr(addr) (*(const void *)(addr))
                                                 ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:51:35: note: in expansion of macro 'pgm_read_ptr'
   return reinterpret_cast<PGM_P> (pgm_read_ptr (&(this -> name)));
                                   ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h: In member function 'void (* Page::getFunction() const)(HTTPRequestParser&)':
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/avr/pgmspace.h:106:49: error: 'const void*' is not a pointer-to-object type
 #define pgm_read_ptr(addr) (*(const void *)(addr))
                                                 ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:55:42: note: in expansion of macro 'pgm_read_ptr'
   return reinterpret_cast<PageFunction> (pgm_read_ptr (&(this -> function)));
                                          ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h: In member function 'const char* Page::getContent() const':
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/avr/pgmspace.h:106:49: error: 'const void*' is not a pointer-to-object type
 #define pgm_read_ptr(addr) (*(const void *)(addr))
                                                 ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:59:35: note: in expansion of macro 'pgm_read_ptr'
   return reinterpret_cast<PGM_P> (pgm_read_ptr (&(this -> content)));
                                   ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h: In member function 'const char* ReplacementTag::getName() const':
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/avr/pgmspace.h:106:49: error: 'const void*' is not a pointer-to-object type
 #define pgm_read_ptr(addr) (*(const void *)(addr))
                                                 ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:117:35: note: in expansion of macro 'pgm_read_ptr'
   return reinterpret_cast<PGM_P> (pgm_read_ptr (&(this -> name)));
                                   ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h: In member function 'PString& (* ReplacementTag::getFunction() const)(void*)':
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/avr/pgmspace.h:106:49: error: 'const void*' is not a pointer-to-object type
 #define pgm_read_ptr(addr) (*(const void *)(addr))
                                                 ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:121:43: note: in expansion of macro 'pgm_read_ptr'
   return reinterpret_cast<TagEvaluateFn> (pgm_read_ptr (&(this -> function)));
                                           ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h: In member function 'void* ReplacementTag::getData() const':
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/packages/arduino/hardware/samd/1.6.8/cores/arduino/avr/pgmspace.h:106:49: error: 'const void*' is not a pointer-to-object type
 #define pgm_read_ptr(addr) (*(const void *)(addr))
                                                 ^
/Applications/Arduino/Arduino 1.6.12 Portable.app/Contents/Java/portable/sketchbook/libraries/Webbino/src/WebbinoCore/WebServer.h:125:56: note: in expansion of macro 'pgm_read_ptr'
   return reinterpret_cast<void *> (const_cast<void *> (pgm_read_ptr (&(this -> data))));

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 14, 2016, 11:31 am
Buongiorno Sukkopera, nello specifico sono:

1 NTC 10k 1% (temperatura)
2 ACS712 20A (corrente)
1 H120 (voltaggio)

Cosa devo fare? Aspetto l introduzione del buffer da parte tua?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 11:47 am
@gpb01: se però dice Flash strings disabled non le hai mica abilitate :). Se lasci il #define togliendo l'#if dovrebbe abilitarle. Appena riesco ci guardo comunque.

@tototer: ok, mi sa che devi aspettare ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 11:50 am
@gpb01: se però dice Flash strings disabled non le hai mica abilitate :). Se lasci il #define togliendo l'#if dovrebbe abilitarle. Appena riesco ci guardo comunque.
Come detto ... ho fatto ENTRAMBE le prove.
Quella è la prova disabilitate ... se le abilito ... mi sembra che la lista sia ancora più lunga :D :D :D

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 12:09 pm
Ah ok, ora ho capito. Ci guardo ASAP.

Puoi provare il wifi shield vecchio?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 01:14 pm
Puoi provare il wifi shield vecchio?
Lo cerco (... ne avevo uno e da qualche parte deve stare :D) e vedo di provarlo ;)

Guglielmo

Edit: Dubbio ::) ... ma parli di WiFi shield vecchio .. cioè quelo con AT32UC3 o quello nuovo WiFi Shield 101 ?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 02:53 pm
Il 101 usa lo stesso chip della MKR, quindi direi che al momento non funziona. Il vecchio invece dovrebbe andare.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 02:55 pm
Aspetta, il 101 è uno shield che monti dove ti pare, anche su una UNO e quindio potrebbe andare, ma non lo posseggo e non posso provare ...
... il vecchio invece usa la vecchia libreria WiFi.h e non so se lo hai implementato.

Mi sa che ... te stai a incarta' co' tutte 'ste schede :D :D :D

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 03:07 pm
Sìììì, è implementato! Guarda i #define:

Code: [Select]
/* Network device selection: please enable *only one* of the following,
 * corresponding to the network device you will be using
 */
#define WEBBINO_USE_WIZ5100
//~ #define WEBBINO_USE_WIZ5500
//~ #define WEBBINO_USE_ENC28J60
//~ #define WEBBINO_USE_ESP8266
//~ #define WEBBINO_USE_ESP8266_STANDALONE
//~ #define WEBBINO_USE_WIFI                             <-----
//~ #define WEBBINO_USE_WIFI101
//~ #define WEBBINO_USE_DIGIFI


Il 101 è uno shield, ok, ma usa lo stesso chip wifi della MKR, tanto che la libreria di interfaccia è la stessa (WiFi101.h). Il vecchio usa un'altra libreria (WiFi.h).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 14, 2016, 03:53 pm
Sìììì, è implementato! Guarda i #define:
Ohibò ... m'era totalmente sfuggito ... faccio sicuramente la prova :D :D :D

Il 101 è uno shield, ok, ma usa lo stesso chip wifi della MKR, tanto che la libreria di interfaccia è la stessa (WiFi101.h). Il vecchio usa un'altra libreria (WiFi.h).
Si, ma il problema con la MKR1000 mica deriva dal WiFi, deriva dal fatto che usi progmem su una MCU ARM. Lo shield invece lo monti sulla MCU che vuoi ... sulla UNO hai un AVR e non ci sono problemi di progmem.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 03:56 pm
Ah sì, in effetti mi sa checchairaggione :D.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 14, 2016, 05:41 pm
Grazie mille sukkopera! Rimango in attesa, ma quanto tempo occorre? Così per farmi un idea. E poi immagino che dovrò cancellare la vecchia libreria e caricare tutto nuovo vero? E ricompilare con la nuova libreria
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 14, 2016, 06:19 pm
Come già detto prima, io ti consiglio intanto di aggiornare alla 0.9.0 che trovi sul Library Manager. Non risolve il tuo problema, ma intanto dovrai fare delle modifiche da cui non potrai sottrarti (niente di troppo complesso in ogni caso).

Quando avrò implementato il buffering (spero entro prossima settimana), non dovrai cambiare più niente se sarai già allineato alla 0.9.0.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 17, 2016, 12:40 pm
Grazie Mille Sukkopera,
allora faccio questo passaggio sicuramente prima di tutto.
ma dimmi una cosa, nel caso quindi dovessi collegare l'arcuino con uno shield wifi il problema (lentezza incredibile caricamento pagina da remoto o da rete locale dopo il ponte wifi) non si presenterebbe?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 17, 2016, 01:30 pm
Veramente ho detto che il problema è proprio dovuto al wifi...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 21, 2016, 12:11 am
@gpb01: Sei mica riucito a testare i due shield wifi? Io nel frattempo ho committato sul master il fix per la MKR1000. Se riesci a provare anche quella... ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 21, 2016, 11:43 am
io nel frattempo ho committato sul master il fix per la MKR1000. Se riesci a provare anche quella... ;)
1. messo #define WEBBINO_USE_WIFI101
2. compilato per MKR1000, compilazione OK
3. lanciato esempio LedControl (dopo aver cambiato il numero del pin del led in LED_BUILTIN, così funziona su tutte le schede).
4. Sul monitor seriale nessun segno di vita ...
4.1 ... se si vuole che la seriale funzioni bene tocca aggiungere:
Code: [Select]
while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
 }

5. ricompilato e sul monitor seriale ricevuto:
Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP

... e null altro :( ... si blocca li così.

Appena posso provo con la vecchia WiFi (che è l'uinca che ho).

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 21, 2016, 11:57 am
3. Non posso mettere LED_BUILTIN di default perché su una Uno con Ethernet Shield il pin 13 non è ovviamente utilizzabile :(.

4. Buono a sapersi, non ci avevo pensato, lo aggiungerò in tutti gli esempi.

5. Moooolto strano, visto che fin lì dovrebbe praticamente essere codice "standard". Domanda idiota: hai messo il tuo SSID/password, sì?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 21, 2016, 12:07 pm
Le credenziali le ho messe solo qui :

Code: [Select]
#elif defined (WEBBINO_USE_WIFI) || defined (WEBBINO_USE_WIFI101) || \
  defined (WEBBINO_USE_ESP8266_STANDALONE)
#include <WebbinoInterfaces/AllWiFi.h>

// Wi-Fi parameters
#define WIFI_SSID        "ssid"
#define WIFI_PASSWORD    "password"

NetworkInterfaceWiFi netint;


Debbo dirti che averle in più punti confonde le idee ed uno si deve andare a leggere le #ifdef ... mettile SEMPRE definite in testa, tanto dove ti servono così ce l'hai, dove non ti servono le ignori !

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 21, 2016, 12:19 pm
... anzi, come già ti avevo suggerito di far diventare il file di configurazione un file "locale", mettici dentro anche queste due voci e tutto è in un solo punto e per ogni singolo programma.

Guglielmo

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 21, 2016, 12:35 pm
Ma infatti è giusto metterle solo lì :).

Sì, appena ho tempo lavorerò per quella cosa del file di configurazione.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 21, 2016, 01:34 pm
Ho appena provato con una UNO ed il vecchio WiFi shield (quello basato su AT32UC3) decommentando:

#define WEBBINO_USE_WIFI

 e ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1

... provo ad accedere dal browser all'indirizzo 192.168.1.172 e ... la richiesta rimane li appesa senza che appaia nulla :(

Guglielmo

P.S.: Sicuro che non debbo decomenntare altro ? La porta ho visto che l'hai rimessa a 80 quindi ... ::)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 21, 2016, 01:39 pm
Ho attivato il debug e chiamato di nuovo la pagina ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
0. ST_ON_CHK
1. ST_OFF_CHK
2. WEBBINO_VER
New client
Client disconnected
New client
Client disconnected
New client
Client disconnected
New client
Client disconnected
New client
Client disconnected

... e così via all'infinito

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Nov 21, 2016, 01:39 pm
Il ping funziona?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 21, 2016, 01:41 pm
Il ping funziona?
Si, si, funziona ... è un problema nascosto altrove ... considera che NON credo che Sukkopera abbia mai potuto provare la parte NON Ethernet ... ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 21, 2016, 01:52 pm
L'ho provata solo su ESP. Fammi pensare... :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 21, 2016, 03:46 pm
Comunque poi sukko, dacci un sukko fischio quando proverai anche quella cosa del buffer velocizzato :D
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 21, 2016, 10:49 pm
Boh, ho guardato in lungo e in largo e non riesco a capire dove potrebbe essere il problema. In fondo il codice non è così diverso dall'esempio WebServer. Puoi provare magari l'esempio SimpleServer?

EDIT: Scusa @gpb01, ma da quel che leggo qua (https://www.arduino.cc/en/Main/ArduinoWiFiShield), anche il Wifi Shield usa SPI, quindi non puoi tenere il led sul pin 13!

EDIT2: E da qua (https://www.arduino.cc/en/Reference/WiFi101), leggo che anche il 101! Non è che anche sulla MKR crea casino?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 01:04 am
Sul nuovo branch buffer (https://github.com/SukkoPera/Webbino/tree/buffer) ho implementato il buffering come descritto qualche post fa. Per ora l'ho potuto testare solo su ESP. Se @As_Needed e @tototer volessero provarlo sull'Ethernet Shield... Tenete presente che è MOLTO beta :D.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 01:14 am
Domani (ovvero oggi) lo testo :D Per adesso vado a dormire :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 05:50 am
EDIT: Scusa @gpb01, ma da quel che leggo qua (https://www.arduino.cc/en/Main/ArduinoWiFiShield), anche il Wifi Shield usa SPI, quindi non puoi tenere il led sul pin 13!
Mea culpa ... è vero, per fare la prova velocemente ho usato il pin 13 ... rifaccio la prova con un altro pin e riporto !

EDIT2: E da qua (https://www.arduino.cc/en/Reference/WiFi101), leggo che anche il 101! Non è che anche sulla MKR crea casino?
Però la MKR1000 ha il LED su un altro piedino ...

Quote
Onboard LED
On MKR1000 the onboard LED is connected to D6 and not D13 as on the other boards. Blink example needs to be changed to work properly.
... non credo c'entri nulla quindi.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 06:42 am
Mea culpa ... è vero, per fare la prova velocemente ho usato il pin 13 ... rifaccio la prova con un altro pin e riporto !
Messo il LED sul pin 7 e rifatta la prova ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
0. ST_ON_CHK
1. ST_OFF_CHK
2. WEBBINO_VER
New client
Client disconnected
New client
Client disconnected
New client
Client disconnected
New client
Client disconnected
New client
Client disconnected

... non cambia nulla :(

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 06:54 am
Provato anche l'esempio SimpleServer ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
New client
Request for "/"
Redirecting to /index.html
Client disconnected
New client
Request for "/favicon.ico"
Client disconnected
New client
Request for "/"
Redirecting to /index.html
Client disconnected
New client

... la prima volta che vado sulla pagina, NON appare nulla, ma la sessione si chiude, se ricarico la pagina ... resta appeso.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 08:02 am
M'è venuto pure il dubbio che ci fosse qualche problema sull'hardware, ma ... ho caricato il classico esempio WiFiWebServer e ...

Code: [Select]
Attempting to connect to SSID: xxxxxxxxxxx
SSID: xxxxxxxxxx
IP Address: 192.168.1.172
signal strength (RSSI):-37 dBm
new client
GET /index.html HTTP/1.1
Host: 192.168.1.172
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it,en-US;q=0.8,en;q=0.6

client disonnected

... funziona regolarmente  :smiley-confuse:

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 08:44 am
Erm, non puoi usare nemmeno il 7:

Digital pin 7 is used as a handshake pin between the WiFi shield and the Arduino, and should not be used.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 09:06 am
Digital pin 7 is used as a handshake pin between the WiFi shield and the Arduino, and should not be used.
Azz ... si vede che è una vita che quella scheda è chiusa nel cassetto e non la uso ... provo con il 5 e riferisco :D

Guglielmo

P.S.: Però NON funzionava nenache il SimpleServer ...  :smiley-confuse:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 09:11 am
Si fa un passetto più avanti, ma ... sul browser NULLA ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
0. ST_ON_CHK
1. ST_OFF_CHK
2. WEBBINO_VER
New client
Request for "/index.html"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.0"
Processing replacement tag: "ST_ON_CHK"
Replacement is: ""
Processing replacement tag: "ST_OFF_CHK"
Replacement is: "checked"
Client disconnected
New client
Client disconnected

... anzi, tu scrivi Client disconnected, ma il browser indica che sta ancora aspettando una risposta !

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 09:13 am
Giuro che non capisco :(.

La richiesta arriva, viene estratto l'url, recuperata la pagina corrispondente, inviata coi tag sostituiti ma non pare arrivare!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 09:14 am
... e, tolto del tutto il LED e caricato l'esempio "SimpleServer" ... stessa cosa ... il browser resta in attesa, mentre tu dici "Client disconnected" :

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
New client
Request for "/index.html"
Client disconnected
New client

Guglielmo

P.S.: Le prove le sto facendo con Chrome e con gli esempi classici della WiFi non ci sono problemi.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 09:23 am
Boh, puoi provare ad aggiungere un delay() qua:
Code: [Select]

void WebClientWifi::sendReply () {
flushBuffer ();

        delay (10);                        <-- QUA

internalClient.stop ();
DPRINTLN (F("Client disconnected"));
}


Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Nov 22, 2016, 10:46 am
Forse ci vorrebbe uno spione di pacchetti. Per Linux (e quindi credo funzioni su OSX) conosco solo kismet.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 11:54 am
Boh, puoi provare ad aggiungere un delay() qua:
Il risultato NON cambia ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
New client
Request for "/index.html"
Client disconnected
New client
Request for "/index.html"
Client disconnected
New client
Request for "/index.html"
Client disconnected
New client
Request for "/index.html"
Client disconnected

... mi sa che è venuto il momento che almeno uno shield WiFi te lo compri :D :D :D

Nota che tu scrivi sul monitor seriale "Client Disconnected", ma il browser non ha chiuso affatto la sessione e sta li ad aspettare di ricevere qualche cosa ...
... c'è qualche cosa che non va nella parte del codice che si occupa della "trasmissione" verso il WiFi ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 01:35 pm
Non so se ti dica nulla ...
... ho decomennato queste tre righe di degug che ho trovato:

Code: [Select]
void WebClientWifi::flushBuffer () {
if (avail > 0) {
DPRINT (F("Flushing "));
DPRINT (avail);
DPRINTLN (F(" bytes to client"));

// The cast is needed on ESP8266 standalone, byt shouldn't hurt anywhere
internalClient.write ((const uint8_t *) buf, avail);
avail = 0;
}


Ho compilato il SimpleServer e lanciato, come al solito sul browser NON appare nulla, ma monitor seriale porta ti qualche info in più ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
New client
Request for "/index.html"
Flushing 256 bytes to client
Flushing 238 bytes to client
Client disconnected
New client
Request for "/index.html"
Flushing 256 bytes to client
Flushing 238 bytes to client
Client disconnected
New client
Request for "/index.html"
Flushing 256 bytes to client
Flushing 238 bytes to client
Client disconnected
New client
Request for "/index.html"
Flushing 256 bytes to client
Flushing 238 bytes to client
Client disconnected

Nota che io NON ho ricaricato la pagina, ma tu continui a ciclare tra "Client disconnected" e "New client" fino a quando il browser si incavola e chiude lui la sessione ...

Ti dice nulla ?

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 02:17 pm
Ancora non ho provato niente, ho compilato e basta e dà questo warning. Qualcosa di preoccupante? (mi riferisco al branch buffer) ;)

Code: [Select]
In file included from D:\Arduino\libraries\Webbinobuffer\src\WebbinoCore\WebServer.cpp:22:0:

D:\Arduino\libraries\Webbinobuffer\src\WebbinoCore\Content.h:76:7: warning: extra qualification 'SDContent::' on member 'getNextByte' [-fpermissive]

  char SDContent::getNextByte () override {

       ^



Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 02:18 pm
No, tranquillo. Poi lo sistemo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 02:19 pm
;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 02:40 pm
Allora, per adesso, non vedo nessun problema, si carica almeno il triplo più velocemente! Ovviamente appena il sito risponde avviene il caricamento veloce, se c'è qualcosa che non rallenta il loop comunque, è un caricamento quasi istantaneo ;) Nel mio caso come già detto in precedenza sarebbe da isolare l'anemometro, facendolo gestire da un'altra MCU e non dalla stessa che si occupa del sito.
Comunque per ora, un bel lavoro sukko questa beta :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 02:43 pm
Io oggi sono a casa con la febbre e ne sto approfittando per testare su ENC28J60 e va alla grande anche lì!

Volevo testare anche la DigiFi ma la Seriale USB-CDC mi sta facendo impazzire >:(.

EDIT: Fixati warning.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 02:54 pm
Si, ma sul WiFi hai dei problemi nel rispondere alla HTTP GET ...
... ho messo in trace Wireshark e, mentre la HTTP GET parte corettamente, da te NON mi sembra arrivino risposte corrette.

Ti allego il file di cattura così, se ti scarichi Wireshark lo puoi importare ed esaminare.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 02:58 pm
In effetti arrivano boiate. Vedo di capire, per quanto continui a sembrarmi tutto OK a livello di codice :smiley-confuse:.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 03:06 pm
Se ti può servire ti mando il file di cattura dell'esempio standard di Arduino WiFiWebServer che interrogato spedisce indietro il valore delle porte analogiche ... guarda la differenza ... ;)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 03:28 pm
Scusa @gpb01, poi ti prometto che non ti rompo più le scatole, puoi provare a rendere il metodo flushBuffer() così:
Code: [Select]
void WebClientWifi::flushBuffer () {
if (avail > 0) {
DPRINT (F("Flushing "));
DPRINT (avail);
DPRINTLN (F(" bytes to client"));

#ifndef WEBBINO_NDEBUG
size_t written =
#endif
internalClient.write ((const uint8_t *) buf, avail);
DPRINT (F("Actually flushed: "));
DPRINT (written);
DPRINTLN (F(" bytes"));
avail = 0;
}
}


? Almeno vediamo se i byte vengono scritti o meno, perché se li passo alla write() e questa non li invia, non saprei che farci.

Con ESP standalone:
Code: [Select]
New client
Request for "/index.html?state=on"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.0"
Flushing 256 bytes to client
Actually flushed: 256 bytes
Flushing 256 bytes to client
Actually flushed: 256 bytes
Processing replacement tag: "ST_ON_CHK"
Replacement is: "checked"
Processing replacement tag: "ST_OFF_CHK"
Replacement is: ""
Flushing 197 bytes to client
Actually flushed: 197 bytes
Client disconnected


Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 03:35 pm
... ecco il risultato ... c'è evidentemente un problema ...

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
New client
Request for "/index.html"
Flushing 256 bytes to client
Actually flushed: 0 bytes
Flushing 238 bytes to client
Actually flushed: 0 bytes
Client disconnected
New client
Request for "/index.html"
Flushing 256 bytes to client
Actually flushed: 0 bytes
Flushing 238 bytes to client
Actually flushed: 0 bytes
Client disconnected
New client
Request for "/index.html"
Flushing 256 bytes to client
Actually flushed: 0 bytes
Flushing 238 bytes to client
Actually flushed: 0 bytes
Client disconnected
New client
Request for "/index.html"
Flushing 256 bytes to client
Actually flushed: 0 bytes
Flushing 238 bytes to client
Actually flushed: 0 bytes
Client disconnected

Guglielmo

P.S. Occhio che hai lasciato una riga a metà nel codice (se non si è in debug) "size_t written ="
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 03:39 pm
... scusa, io QUI (https://www.arduino.cc/en/Reference/WiFiServerWrite) vedo che la sintassi della WiFi.write() richiede solo un parametro, il carattere da trasmettere ... dove hai trovato due parametri (puntatore e size) ?

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 03:43 pm
C'è un overload:

Code: [Select]
  virtual size_t write(uint8_t);
  virtual size_t write(const uint8_t *buf, size_t size);


E peraltro quella a singolo parametro richiama l'altra:
Code: [Select]
size_t WiFiClient::write(uint8_t b) {
 return write(&b, 1);
}


Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 03:46 pm
C'è un overload ...
Aha ... ok, non ero andato a guardare dentro la libreria ... come al solito il reference e carente ...  :smiley-confuse:

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 03:48 pm
Scusa ... ma written chi lo aggiorna ? ? ?

Non dovrebbe essere:  written = internalClient.write ((const uint8_t *) buf, avail); ?

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 03:48 pm
Infatti è così, a dispetto della strana sintassi con quell'#ifdef in mezzo :D.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 03:52 pm
Infatti è così, a dispetto della strana sintassi con quell'#ifdef in mezzo :D.
:o :o :o ... come diavolo fa a funzionare ? ? ?

E' un #ifndef WEBBINO_NDEBUG ed io HO definito WEBBINO_NDEBUG !

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 03:56 pm
Per attivare il debug devi avere WEBBINO_NDEBUG NON definito :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 04:06 pm
Per attivare il debug devi avere WEBBINO_NDEBUG NON definito :).
GIUSTO !!! :D :D :D

Ora c'è da capire perché NON fa la write() ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 04:44 pm
Vedo che è cambiato anche la webbino version per il buffer velocizzato. Comunque almeno sulla MEGA, non vedo consumo in più di RAM :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 04:47 pm
Erm, questo è impossibile. Ci sono 64 byte dedicati al client, per cui almeno 64 byte in più di RAM li deve usare.

Comunque, visto che sulla Mega hai RAM da vendere, puoi anche aumentare il nuovo settaggio CLIENT_BUFSIZE nel config, portalo a 512 o magari addirittura a 1024.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 04:52 pm
Erm, questo è impossibile. Ci sono 64 byte dedicati al client, per cui almeno 64 byte in più di RAM li deve usare.

Comunque, visto che sulla Mega hai RAM da vendere, puoi anche aumentare il nuovo settaggio CLIENT_BUFSIZE nel config, portalo a 512 o magari addirittura a 1024.
Sì intendevo proprio questo, che sulla MEGA 64byte non li noti nemmeno.
Guarda esattamente è così la differenza, è di più ovvio, però sulla MEGA non cambia nemmeno un punto percentuale:

RAM PRIMA
2.707 byte

RAM DOPO
2.785 byte

FLASH PRIMA
63.386 byte

FLASH DOPO
63.552 byte


Riguardo al client che vantaggio porta di metterlo a 512?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 04:53 pm
@gpb01: Riesci a decommentare

Code: [Select]
//#define _DEBUG_

in libraries/WiFi/src/utility/server_drv.cpp, ed eventualmente anche in spi_drv.cpp, nella speranza che ci dia qualche informazione utile?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 04:54 pm
Riguardo al client che vantaggio porta di metterlo a 512?
Meno pacchetti inviati, meno overhead, maggiore velocità. Quanta RAM libera hai?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 05:00 pm
Meno pacchetti inviati, meno overhead, maggiore velocità. Quanta RAM libera hai?
Guarda pure il commento sopra così vedi la reale differenza tra prima e dopo buffer velocizzato. ;)

Comunque ecco adesso cosa ho:

Lo sketch usa 63.552 byte (25%) dello spazio disponibile per i programmi. Il massimo è 253.952 byte.
Le variabili globali usano 2.785 byte (33%) di memoria dinamica, lasciando altri 5.407 byte liberi per le variabili locali. Il massimo è 8.192 byte.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 05:02 pm
Prova a portarlo a 1024 allora!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 05:07 pm
La flash adesso è aumentata solo di 6 byte ma la RAM :)

Le variabili globali usano 3.745 byte (45%) di memoria dinamica, lasciando altri 4.447 byte liberi per le variabili locali. Il massimo è 8.192 byte.


Quasi un 1kb in più! La avevo a 64 di default

Se metto 512 invece è così la RAM

3.233 byte (39%)

CHe ne pensi?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 05:08 pm
@gpb01: Riesci a decommentare ....
Fatto, NON esce nulla di diverso, mi sembra solo più lento ... non so cosa faccia quella #define ...

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 05:09 pm
Beh, il buffer è appunto una sezione di RAM riservata a contenere i dati che devono essere inviati al client, e quel #define è la sua dimensione.

Ma che problema c'è? Con tutta la RAM che hai a disposizione è un peccato non usarla!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 05:10 pm
Ok, allora provo con 1024 ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 05:21 pm
Fatto, NON esce nulla di diverso, mi sembra solo più lento ... non so cosa faccia quella #define ...
Se non escono altri messaggi, direi niente di utile.
OK, ci rinuncio. Segno il supporto come EXPERIMENTAL e amen.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 05:37 pm
OK, ci rinuncio. Segno il supporto come EXPERIMENTAL e amen.
Non scherzavo ... ti serve un qualche cosa che usa il WiFi ...
... magari, senza comprare un inutile shield, prenditi una MKR1000 e fai le prove con quella ... tanto, se non vado errato, le chiamate WiFi sono più o meno quelle ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 05:41 pm
Ma le chiamate sono le stesse anche su ESP standalone e su Uno+ESP tramite WifiEsp, e lì funzionano alla perfezione.

Inoltre, a parte il join all'AP, l'API è la stessa dell'Ethernet Shield, e anche lì funziona.

Una MKR, comunque, prima o poi la prendo.

Grazie dell'aiuto, in ogni caso.

PS: Ho fatto merge del branch buffer sul master. @tototer, è il tuo momento! :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 22, 2016, 05:50 pm
PS: Ho fatto merge del branch buffer sul master. @tototer, è il tuo momento! :)
Hai fatto bene, intanto è veramente poca la differenza di consumo e molti i miglioramenti! :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 22, 2016, 09:09 pm
Scusa Sukko, non so se ho scritto una cosa sensata ma ho aggiunto :

Code: [Select]
void WebClientWifi::flushBuffer () {
if (avail > 0) {
DPRINT (F("Flushing "));
DPRINT (avail);
DPRINTLN (F(" bytes to client"));

DPRINT (F("Network Status: "));     // <<<<<<<<<<<<<<
DPRINTLN(internalClient.status());  // <<<<<<<<<<<<<<


#ifndef WEBBINO_NDEBUG
size_t written =
#endif
....

... se è giusto scrivere internalClient.status(), che, tra l'altro, NON mi da alcun errore in compilazione, allora il problema è che il valore ritornato da quella chiamata è 4 == "WL_CONNECT_FAILED: assigned when the connection fails for all the attempts" ... ::)

Ti dice qualche cosa ?

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 22, 2016, 09:52 pm
No, credo che il valore di ritorno di status() vada interpretato secondo questo enum:
Code: [Select]
enum wl_tcp_state {
  CLOSED      = 0,
  LISTEN      = 1,
  SYN_SENT    = 2,
  SYN_RCVD    = 3,
  ESTABLISHED = 4,
  FIN_WAIT_1  = 5,
  FIN_WAIT_2  = 6,
  CLOSE_WAIT  = 7,
  CLOSING     = 8,
  LAST_ACK    = 9,
  TIME_WAIT   = 10
};


Quindi 4 è ESTABLISHED, che è esattamente quel che dovrebbe essere :smiley-fat:.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 23, 2016, 06:32 am
No, credo che il valore di ritorno di status() vada interpretato secondo questo enum:
Ok, ne avevo visto un'altro nei sorgenti della WiFi ... in wl_definitions.h, l'enum wl_status_t ...

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 23, 2016, 02:59 pm
ciao sukko, ho appena letto dell'introduzione del buffer. non vedo l'ora di provare il tutto. mi spieghi come allinearmi alla nuova versione? materialmente cosa devo fare sull'ide? e il mio sketch, cosa tocco? grazie mille a presto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 23, 2016, 03:38 pm
Sukko ho fatto una prova sempre con SimpleServer e ... non ci capisco nulla ... comunque ...
...se cambio il codice così:

Code: [Select]

for(int idx=0; idx<avail; idx++) internalClient.write(buf[idx]);

... ci mette una vita, avanza a scatti di pezzetti di stringa, ma la pagina appare e riesce pure a completarla :o

Code: [Select]
Webbino 0.9.0
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
New client
Request for "/index.html"
Flushing 256 bytes to client
Network Status: 4
Byte to flush: 256
Flushing 238 bytes to client
Network Status: 4
Byte to flush: 238
Client disconnected
New client

La cosa non ha molto senso e comunque la velocità è inaccettabile (30 secondi per fare la paginetta) ... però almeno qualche cosa appare !

A te dice nulla questa cosa ?

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 23, 2016, 04:54 pm
ciao sukko, ho appena letto dell'introduzione del buffer. non vedo l'ora di provare il tutto. mi spieghi come allinearmi alla nuova versione? materialmente cosa devo fare sull'ide? e il mio sketch, cosa tocco? grazie mille a presto
Non devi toccare niente, devi solo cambiare la vecchia libreria con quella nuova ;) Ovviamente riguarda il webbino config se è tutto come hai impostato.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 23, 2016, 09:01 pm
Non devi toccare niente, devi solo cambiare la vecchia libreria con quella nuova ;) Ovviamente riguarda il webbino config se è tutto come hai impostato.
grazie mille caro As_Needed,
tu hai aggiornato? trovato miglioramenti in velocità di caricamento?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 23, 2016, 09:07 pm
grazie mille caro As_Needed,
tu hai aggiornato? trovato miglioramenti in velocità di caricamento?
Se leggi qualche post indietro dico qualcosa ;) Comunque sì, è il triplo più veloce nel caricamento della pagina! Ovviamente questo appena la pagina risponde, però netta differenza in meglio.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 23, 2016, 09:24 pm
Confermo quando detto da @As_Needed su come upgradare: semplicemente aggiorna la libreria, se escono errori di compilazione vedi se riesci a risolvere guardando gli esempi aggiornati, oppure chiedi qua.

Per quanto riguarda i miglioramenti, l'introduzione del buffer elimina il primo problema di cui parlo al post #26. Il secondo sta a chi scrive lo sketch ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 23, 2016, 09:27 pm
Per quanto riguarda i miglioramenti, l'introduzione del buffer elimina il primo problema di cui parlo al post #26. Il secondo sta a chi scrive lo sketch ;).
già
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 23, 2016, 09:42 pm
Sukko .. hai letto il mio post #126 ? :)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 24, 2016, 01:13 am
Sì, ma non ho avuto tempo di "assimilarlo" oggi. Scoperta interessante, ci ragionerò domani!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 24, 2016, 03:16 pm
Buongiorno a tutti, ho appena finitoo di installare la nuova libreria del webbino, una curiosità se vado nella pagina della stazione meteo di as_need  in basso mi spunta version WEBBINO_VERSION "0.9.1git-buffer" mentre nella mia versione mi spunta soltanto WEBBINO_VERSION "0.9.1git"

sei stato tu as_need a cambiare? o mi sono scaricato un vecchio aggiornamento?

comunque come velocità siamo identici a prima. mi va lentissimo da remoto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 24, 2016, 03:19 pm
Sono stato io quando ho integrato il branch buffer nel master, stai usando l'ultima versione, non ti preoccupare.

Se è lentissimo, a questo punto non dipende da motivi intrinsici a Webbino. Prova comunque ad aumentare la dimensione del buffer se hai RAM a disposizione. Hai dei delay()? Puoi postare lo sketch?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 24, 2016, 03:26 pm
ecco tutto il mio sketch in allegato sukko!

non so più cosa provare :( nel frattempo che ti scrivo qst messaggio, sto provando ad aumentare il buffer da 64 a 256 vediamo che succede...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 24, 2016, 03:34 pm
scusa ero saltato. è possibile attribuire il problema ai valori di utilizzo alti?

mettendo 256 neppure funziona (arrivando all'91 % di memoria dinamica utilizzata)

ora ho messo 128 e mi da questi lavori.

Lo sketch usa 27.086 byte (83%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 1.752 byte (85%) di memoria dinamica, lasciando altri 296 byte liberi per le variabili locali. Il massimo è 2.048 byte.
Poca memoria disponibile, potrebbero presentarsi problemi di stabilità


prima dell'aggiornamento eravamo entrambi i valori a circa 70
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 24, 2016, 04:07 pm
Beh, il buffer devi dimensionarlo tu in rapporto alla RAM libera che hai. L'IDE è piuttosto conservativo ed emette quell'avviso quando la RAM occupata supera il 70-75%, ma in effetti è bene non eccedere questa soglia. Se con 128 funziona a malapena, magari metti 96. Fai un po' di tentativi insomma.

In realtà, da una rapida occhiata allo sketch, non capisco dove usi tutta questa RAM. Quanto tiene l'esempio SubstitutionTags di Webbino senza modifiche?

Non vedo nemmeno cose che possono rallentare più di tanto il caricamento della pagina, a parte le 2000 analogRead() :D. Prova un attimo a togliere queste e a vedere se la situazione migliora.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 24, 2016, 05:19 pm
ciao ho appena provato a compilare il tuo esempio senza nessuna modifica e questo è il risultato:

ReplacementTags

Lo sketch usa 25.186 byte (78%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 1.776 byte (86%) di memoria dinamica, lasciando altri 272 byte liberi per le variabili locali. Il massimo è 2.048 byte.
Poca memoria disponibile, potrebbero presentarsi problemi di stabilità


a questo punto credo che ci sia qualcosa che non va o sbaglio?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 24, 2016, 05:26 pm
P.S. Sono io che sono arretrato  :smiley-mr-green:  Perché poi quando sukko ha fatto il merged io ero ancora con la versione con i branch, ma alla fine è uguale, solo che adesso è tutto incluso.
Comunque possibile che ti va ancora lento? A me come hai visto si carica velocissima la pagina, poi ci mette un po' a rispondere per colpa di quel maledetto ciclo for, ma quella è colpa mia ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Nov 24, 2016, 05:27 pm
A 64 quanto consuma ?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 24, 2016, 05:35 pm
Mi sembra un po' esagerato, usi lo shield Ethernet ufficiale? Al momento non ho niente sotto mano e non posso fare test comunque.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: tototer on Nov 24, 2016, 05:50 pm
Ho uno shield comprato su internet, credo sia uno di concorrenza. Comunque non penso sia questo il problema perché quando compilo, compilo sul mio computer senza collegarlo ad arduino.... può essere qualche libreria? Ricordo di avere scaricato pstring o qualcosa di genere all inizio che serviva a webbino o ricordo male?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 25, 2016, 08:23 pm
Sukko ...
... ho scaricato ed installato la 0.9.1git e la situazione è decisamente migliorata (ho lasciato il buffer di default a 64 bytes).

Solo che hai ancora un problema ... quando si accavallano delle richieste ...

Il browser, specie la prima volta, ti chiede la pagina e il favicon ... tu invii la pagina, fai il disconnect, arriva un New client e ... resti li appeso.

Se si aspettano i timeout e il Client disconnect ... bene o male il tutto funziona ...

Guglielmo

P.S.: Sto usando Google Chrome su macOS e la scheda WiFi
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 25, 2016, 08:32 pm
Update ...
... LedControl funziona correttamente e non sbaglia un colpo !

Code: [Select]

Webbino 0.9.1git
Trying to get an IP address through DHCP
FW Version: 1.1.0
Connecting to AP: xxxxxxxxx
Joined AP, local IP address: 192.168.1.172
DHCP configuration done:
- IP: 192.168.1.172
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Pages available in flash memory:
0. /index.html
Tags available:
0. ST_ON_CHK
1. ST_OFF_CHK
2. WEBBINO_VER
New client
Request for "/index.html"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: ""
Processing replacement tag: "ST_OFF_CHK"
Replacement is: "checked"
Client disconnected
New client
Request for "/index.html?state=on"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: "checked"
Processing replacement tag: "ST_OFF_CHK"
Replacement is: ""
Client disconnected
New client
Request for "/index.html?state=off"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: ""
Processing replacement tag: "ST_OFF_CHK"
Replacement is: "checked"
Client disconnected
New client
Request for "/index.html?state=on"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: "checked"
Processing replacement tag: "ST_OFF_CHK"
Replacement is: ""
Client disconnected
New client
Request for "/index.html?state=off"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: ""
Processing replacement tag: "ST_OFF_CHK"
Replacement is: "checked"
Client disconnected
New client
Request for "/index.html?state=on"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: "checked"
Processing replacement tag: "ST_OFF_CHK"
Replacement is: ""
Client disconnected
New client
Request for "/index.html?state=off"
Processing replacement tag: "WEBBINO_VER"
Replacement is: "0.9.1git"
Processing replacement tag: "ST_ON_CHK"
Replacement is: ""
Processing replacement tag: "ST_OFF_CHK"
Replacement is: "checked"
Client disconnected

... quindi riguarda l'esempio SimpleServer e cosa può creare il problema ... ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 25, 2016, 10:51 pm
Grazie per aver preso a cuore la cosa, gpb, ma tigggiuro che fatico a comprendere quel che sta succedendo :o.

Innanzitutto, con l'upgrade a 0.9.1git non doveva cambiare assolutamente niente, perché il backend per il Wifi era l'unico che aveva GIÀ il buffering, come si può notare dalla tua osservazione riguardo al fatto che passavo alla write() un array + lunghezza invece che un solo carattere.

Le modifiche della 0.9.1git consistono nell'avere spostato il buffer ad un livello più alto (nella classe Webclient), in modo che funzioni per tutti i backend, ma il codice è esattamente quello che prima era in AllWiFi.h, con praticamente zero modifiche, per cui di fatto con le schede Wifi non mi aspettavo cambiasse niente!

Inoltre, SimpleServer non fa assolutamente niente che non faccia anche LedControl, dato che è l'esempio più basilare, che non usa nessuna funzione "particolare", su cui si basano tutti gli altri, aggiungendo una feature o l'altra.

Ti giuro, mi sento perso :smiley-confuse:.

L'unica cosa che volevo suggerirti era di provare con diverse dimensioni del buffer: 8, 16, 32, 128... Magari quel chip wireless è un po' schizzinoso su come gli vanno passati i dati?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Nov 26, 2016, 07:25 am
.... L'unica cosa che volevo suggerirti era di provare con diverse dimensioni del buffer: 8, 16, 32, 128... Magari quel chip wireless è un po' schizzinoso su come gli vanno passati i dati?
Oggi non ci sono ... ma appena rientro contavo di fare tali prove ...

Indubbiamnete ... NON ci si capisce un ... tubo ... ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vespucci on Dec 12, 2016, 09:51 pm
Ciao Sukkopera,
mi è arrivato l'esp8266 01, è sto provando la tua lib.V 0.9.0 con una UNO con il file di esempio SimpleServer, ma durante la compilazione mi richiede la lib. "PString.h", ecco il log:

Code: [Select]

In file included from /Users/Dimix/Documents/Arduino/libraries/Webbino/src/Webbino.h:21:0,
                 from /var/folders/wc/gc_4vxx97z12_rs9brm_qklm0000gn/T/arduino_modified_sketch_119112/SimpleServer.ino:20:
/Users/Dimix/Documents/Arduino/libraries/Webbino/src/WebbinoCore/WebServer.h:28:21: fatal error: PString.h: No such file or directory
 #include <PString.h>
                     ^
compilation terminated.
Uso la libreria Webbino alla versione 0.9.0 nella cartella: /Users/Dimix/Documents/Arduino/libraries/Webbino
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.


La lib. in questione non la hai inclusa , o per qualche motivo questo errore lo da solo a me perché dovevo scaricarla e fare l'Include della lib.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 12, 2016, 11:34 pm
Giusto, puoi scaricarla qui: http://arduiniana.org/libraries/pstring/
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vespucci on Dec 13, 2016, 01:39 am
OK grazie.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vespucci on Dec 18, 2016, 08:56 pm
Ciao Sukkopera,
sto incontrando qualche problema a far funzionare l'esp8266 modello 01, ho meglio a utilizzare lui con la tua lib, mi spiego:
Sto utilizzando una UNO orig. con un conv. dei liv 5v 3.3v collegato all'ESP con lo schema in allegato.
Caricato Simpleserver dal serial monitor, tenta di chiedere un IP e dopo 5 tentavi timeout mi visualizza che non può inizializzare l'ESP.
Io pensando che avessi sbagliato qualcosa ho ricontrollato i coll. e per prova ho scritto un semplice sketch per utilizzare i comandi AT standard per vedere se l'ESP rispondeva ,lo sketch in allegato.

Utilizzando il mio sketch ho visto che la versione ESP è la seguente:
AT versioo:0.21.0.0
SDK version:0.9.5
lo ho settato in Wi-Fi mode 3 e data il comando AT+CWJAP per connettermi alla mia rete e ho visto che si connette.
Sicuramente c'è qualcosa che dimentico di controllare ma se hai qualche idea e 2 dritte da consigliarmi...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 18, 2016, 09:11 pm
Vedo che in quello sketch usi una SoftwareSerial sui pin 8 e 9: hai corretto di conseguenza gli esempi di Webbino, che mi pare usino 6 e 7 di default?

Controlla anche la velocità, Webbino va a 9600 di default, e comunque a 115200 la SoftwareSerial non è affidabile.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vespucci on Dec 18, 2016, 09:50 pm
Si ho corretto anche l'esempio ma ho provato anche con i pin configurati di default.
Sai la cosa strana ora che me lo hai detto sulla velocità della seriale sul mio ESP, e che con lo sketch che ho fatto per provarlo , risponde sulla SoftwareSerial solo se setto la comunicazione con lui a 115200.... e lascio la seriale a 9600, ok ogni tanto spara nelle risposte ai comandi AT  dei caratteri strani ma esegue i comandi.
Vuoi vedere che mi hanno spedito un ESP con firmware datato, perché leggendo il megatopic sull'ESP i primi modelli avevano qualche problema nel Firmware proprio nella seriale e che comunicavano solo a 115200.
Ruzzo un altro pò e vedo che scopro...
Ho comunque grazie !
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 18, 2016, 11:34 pm
Sì, ti consiglio di abbassare la velocità del tuo ESP a 9600 e di aggiornarne magari il firmware. Per tutto ciò basta un adattatore seriale.

Hai comunque provato l'esempio cambiando anche la velocità?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Dec 19, 2016, 08:29 am
@Vespucci,
alcuni moduli vanno a 9600, altri a 115200, dipende dal firmware AT, ma la velocità si può cambiare con gli opportuni comandi AT. Mai sentito parlare di problemi particolari con la seriale ma potrebbe essere. E' la velocità di default che è cambiata ma non inficia il funzionamento a velocità diverse.

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 19, 2016, 11:00 am
Vero che dipende dal firmware ma, come dice @Vespucci, 9600 era il default nelle versioni più vecchie del firmware AT, mentre ad un certo punto è diventata 115200. Purtroppo, come dicevo sopra, la SoftwareSerial non è affidabile a questa velocità, per cui, a meno di non avere una Mega o una Leonardo, il mio consiglio è di abbassare la velocità del modulo a 9600, cosa comunque più che adeguata per la maggior parte delle necessità Arduinistiche.

Questo si può fare con un banale comando AT, ma ATTENZIONE: molte procedure riportano il comando AT+IPR=9600 che però ha il piccolo effetto collaterale di RENDERE INUTILIZZABILE IL MODULO, a meno di non riflasharci il firmware (e questo bug è lì da almeno un anno senza che abbiano fatto alcunché >:(). Fortunatamente esiste un comando alternativo, che è quello che dovete usare:

Code: [Select]
AT+UART_DEF=9600,8,1,0,0
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Dec 19, 2016, 12:14 pm
Ecco, si, quel bug me lo ricordo e mi pare proprio che l'hai segnalato tu.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vespucci on Dec 20, 2016, 11:03 am
Ok risolto aggiornando il firmware dell'esp ora va .
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Dec 28, 2016, 03:10 pm
A proposito del grande webbino e del grande sukko :D Qualcuno ha provato webbino con la 1.8.0? Dovrei farlo tra non molto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 28, 2016, 03:40 pm
Non mi pare sia cambiato niente della toolchain rispetto alle versioni più vecchie, per cui non dovrebbero esserci problemi.

L'ho installato e ho compilato qualche sketch (ma non Webbino), e non ho rilevato niente di particolare.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Dec 28, 2016, 06:44 pm
Capito ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jan 10, 2017, 10:04 am
Testato Webbino con 1.8.0, funziona tutto regolarmente da 3 giorni e mezzo :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Jan 10, 2017, 10:16 am
Io proprio oggi volevo provare webbino con la 1.8.1 :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jan 10, 2017, 10:38 am
Funzionerà!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Jan 11, 2017, 06:52 pm
Per ora tutto bene Sukko :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Feb 21, 2017, 06:53 pm
Prima volta che mi si è bloccato il sito, dopo mesi e mesi e mesi ... Strano
Sukko qualche idea? Mi si blocca solo esclusivamente il sito, il codice continua ad andare, il display segna i dati tranquillamente e aggiorna tutto, solo la parte relativa al sito non visualizza più la pagina e sono costretto a riavviare. (Cosa assolutamente da risolvere) l'ip pinga normalmente nella cmd e nel modem è tutto attivo. Consigli su cosa posso modificare nella webbino config? Utilizzo una String solo per quanto riguarda la gestione dei dati salvati su microSD ogni 5 minuti. Se vuoi dare un'occhiata al codice, vedi sul mio topic in firma che lo trovi lì
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 21, 2017, 10:09 pm
Ma si è bloccato una volta o ora si blocca ripetutamente? Prova a formattare/sostituire la SD in quest'ultimo caso.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Feb 21, 2017, 11:21 pm
No , proprio non rispondeva più l'ip
Adesso ho riavviato ed è tutto tornato alla normalità, però non capisco perché questo blocco che non potevo più accedere
Mi dava pagina non disponibile nel broswer
Devo trovare il responsabile :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Feb 24, 2017, 11:47 am
Comunque Sukko, se si è bloccato una volta, teoricamente per te cosa potrebbe essere? Un problema del mio codice, o qualcosa di Webbino?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 24, 2017, 12:05 pm
Come posso risponderti? Potrebbero esserci almeno 100000 cause. Se si è bloccato una volta in 6 mesi non ci farei davvero troppo caso. Potrebbe essere il classico "sbalzo di tensione", un bug della libreria Ethernet, uno della libreria SD, uno di Webbino, uno della libreria di qualche sensore, uno del tuo codice, un problemino hardware, un blocco moribondo della SD, una farfalla che batte le ali in Polinesia, o chissà cos'altro!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Feb 24, 2017, 12:08 pm
:D :D Eh si, anche io la penso così, infatti specificavo teoricamente. Comunque non si è bloccato dopo 6 mesi, ma dopo un mese e mezzo, anche perché dopo l'ultima modifica che ho fatto, comunque l'avevo riavviato.
Mah non so cosa possa essere veramente  :smiley-sleep:

Considera poi che si era bloccato solo esclusivamente il sito internet. Il codice continuava tranquillamente a salvare e aggiornare i dati anche su microSD
Solo che non riuscivo più ad accedere al sito.
Ho pingato l'ip ed era apposto. sia da remoto che da locale non riuscivo più ad accedere
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 24, 2017, 12:20 pm
Ma altre volte è rimasto in piedi più di un mese e mezzo, no?

È strano che si blocchi solo il sito, però. Perché se i dati venivano salvati regolarmente vuol dire che Arduino era in piedi, e se rispondeva ai ping vuol dire che anche la scheda Ethernet era in piedi, per cui non saprei cosa potesse non funzionare correttamente. Forse avevi raggiunto il massimo di connessioni contemporanee (4, mi pare)?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Feb 24, 2017, 12:34 pm
Sì altre volte sì ;)
Comunque infatti è per questo che mi pare strano. Perché tutto funzionava regolarmente. Io ho aspettato almeno un'ora prima di riavviare, ma ormai si era impallato. Forse è probabile che sia proprio di aver raggiunto il limite della scheda, che come sappiamo non è di certo molto ampio.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: alessanddrob on Feb 24, 2017, 03:35 pm
Voglio provare questo webbino .... mi avete curiosità ,cosa mi serve , un arduino , una sd , cosa uso per la connessione ? Wi-Fi,ETH,esp8266 , non vorrei spendere un botto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 24, 2017, 03:46 pm
La NodeMCU che hai basta e avanza ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: alessanddrob on Feb 24, 2017, 04:36 pm
Ma funziona anche senza sd?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 24, 2017, 04:49 pm
Le sue funzionaità principali sono le seguenti:
  • [...]
  • Possibilità di salvare le pagine HTML nella flash interna o su una SD.
  • [...]

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Mar 08, 2017, 01:56 pm
A distanza di poco, stavolta lo ha rifatto e sono stato costretto a riavviare... stesso identico problema. Tutto funzionante tranne il sito dove era impossibile accedere. Inoltre l'ip pingava regolarmente
Le cose sono due, o c'è qualche problema sconosciuto da qualche parte, oppure ultimamente stanno accendendo al mio sito un po' troppe persone contemporaneamente e fanno bloccare il sito dato le scarse potenzialità della scheda ethernet....  :smiley-confuse:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: brunello22 on Mar 10, 2017, 05:08 pm
Quote
oppure ultimamente stanno accendendo al mio sito un po' troppe persone
Stai diventando popolare........
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Mar 10, 2017, 05:33 pm
Stai diventando popolare........
Ne bastano 4 contemporaneamente per mettere in difficoltà la scheda ethernet :D
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 10, 2017, 05:51 pm
Ribadisco il consiglio già dato: prova a cambiare SD.

Ma ribadisco anche che la cosa migliore da fare è comprare un bel Raspberry Pi :D. Già con un 2 vai bene, se costa significativamente meno del 3.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Mar 12, 2017, 12:08 am
Vedo di rimediare una SD e vediamo ;)
Comunque hai ragione sul Raspberri Pi :D Guarda ho già molte cose in testa riguardo a un prossimo progetto, purtroppo per adesso non posso lavorarci  :smiley-confuse:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 11, 2017, 10:57 pm
News, @As_Needed?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Apr 24, 2017, 01:30 pm
Salve, ecco quindi che mi ritrovo qui, con Webbino!
Utile nel mio caso, però non riesco a farlo partire, ho già elaborato uno sketch non utilizzando Webbino.. un pasticcio totale!

Come credo ricordi, ho un wemos d1 r2 (esp-12) collegato direttamente al serial1 di arduino mega.
Volevo iniziare con l'esempio base LedControl, però già da problemi, sul monitor seriale si ferma su
"Webbino 0.9.0
Trying to get an IP address through DHCP"

Non ho modificato nulla, tutto base, però credo che la velocità posso impostarla a 115200 sia per il mega che per il Serial1, dato che il mega se non ricordo male è possibile (lo utilizzavo pure con i comandi at per WiFiEsp)

Cos'altro devo editare per far partire la versione "base" del LedControl? Grazie :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 24, 2017, 07:41 pm
Devi prima di tutto abilitare WEBBINO_USE_ESP8266 in webbino_config.h. Poi nell'esempio eliminare l'istanzazione della SoftwareSerial e sostituire swSerial con Serial1 ovunque.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Apr 24, 2017, 10:03 pm
Devi prima di tutto abilitare WEBBINO_USE_ESP8266 in webbino_config.h. Poi nell'esempio eliminare l'istanzazione della SoftwareSerial e sostituire swSerial con Serial1 ovunque.
Ora va tutto bene, come aggiungo eventualmente altri comandi per led? provo a modificare l'index.html ma non cambia nulla
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 24, 2017, 10:10 pm
L'index va rigenerato se lo modifichi. C'è uno script Python per farlo, vedi in tools se riesci a usarlo. Devo trovare il tempo di scrivere una guida su come farlo. Dannate giornate di sole 24 ore.

Nel frattempo @As_Needed deve essere rimasto ucciso nell'esplosione del suo Mega dominato da Webbino da ormai troppo tempo :D.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Apr 24, 2017, 10:32 pm
L'index va rigenerato se lo modifichi. C'è uno script Python per farlo, vedi in tools se riesci a usarlo. Devo trovare il tempo di scrivere una guida su come farlo. Dannate giornate di sole 24 ore.

Nel frattempo @As_Needed deve essere rimasto ucciso nell'esplosione del suo Mega dominato da Webbino da ormai troppo tempo :D.
Quindi l'unico modo per andare avanti e creare una pagina totalmente personalizzata in base alle mie esigenze è quello di rigenerare l'index.html?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 24, 2017, 10:52 pm
Solo se vuoi incorporare le pagine nel codice, nella flash insomma. Se puoi usare una SD puoi mettere le pagine lì, vedi l'esempio SDonly.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: As_Needed on Apr 28, 2017, 03:46 pm
Scusa sukko :D
Ho avuto molto da fare e mi connetto veramente poco ultimamente! :D
Comunque ho cambiato microSD ma il problema a volte si ripresenta, il mistero si infittisce X D
il punto che non posso lavorarci perché mi trovo lontano in questo periodo :(
Tanto credo che il problema sia proprio nella scarsa capacità della scheda Ethernet
Magari troppi accedono in un momento e si impalla
Come ho detto, tutto funziona correttamente, solo il sito non risponde piu
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Apr 30, 2017, 06:32 pm
Solo se vuoi incorporare le pagine nel codice, nella flash insomma. Se puoi usare una SD puoi mettere le pagine lì, vedi l'esempio SDonly.
#define SD_SS 4
questo dovrebbe essere il pin CS del modulo no? MOSI/MISO dove vanno? ho una mega
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Apr 30, 2017, 06:59 pm
#define SD_SS 4
questo dovrebbe essere il pin CS del modulo no? MOSI/MISO dove vanno? ho una mega
Ma leggere il reference (https://www.arduino.cc/en/Main/arduinoBoardMega2560) della Mega ti fa fatica ? ? ?  :smiley-evil:

Quote
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). These pins support SPI communication using the SPI library. The SPI pins are also broken out on the ICSP header, which is physically compatible with the Arduino /Genuino Uno and the old Duemilanove and Diecimila Arduino boards.
Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Apr 30, 2017, 08:39 pm
Ma leggere il reference (https://www.arduino.cc/en/Main/arduinoBoardMega2560) della Mega ti fa fatica ? ? ?  :smiley-evil:
Guglielmo

Avevo già letto questi pin per la mega in giro, però dubitando ho provato e non va, devo adattare lo sketch magari, SDOnly è per schede con slot microsd nativa, per far si che aggiungo io il modulo devo dichiarare la #define SD_SS 53 solamente?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 02, 2017, 10:24 pm
Non esistono "schede con slot microsd nativa". Se intendi l'Ethernet Shield ufficiale (o cloni), lì l'SS dello slot è fisso a 4, se usi un adattatore SD diverso puoi usare qualunque pin libero come SS, e in SDOnly devi settare quello che effettivamente usi.

MOSI/MISO/SCK sono fissi e dipendenti dal tipo di scheda Arduino, come già evidenziato.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 03, 2017, 03:49 pm
Non esistono "schede con slot microsd nativa". Se intendi l'Ethernet Shield ufficiale (o cloni), lì l'SS dello slot è fisso a 4, se usi un adattatore SD diverso puoi usare qualunque pin libero come SS, e in SDOnly devi settare quello che effettivamente usi.

MOSI/MISO/SCK sono fissi e dipendenti dal tipo di scheda Arduino, come già evidenziato.
Ha ecco, ho scoperto che è la microSD che non funziona sempre, ogni tanto mi da done e spesso failed.. per questo credevo di sbagliare qualcosa sullo sketch, però adesso quando entro sulla pagina, mi da " No such page: "/index.html" ", e sull'SD ho messo il file htm presente negli esempi, serve un html o magari il percorso è errato? ho messo nella directory i due file, somedir e index.htm
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 03, 2017, 04:44 pm
Se usi la libreria SD di Arduino, non supporta i nomi file lunghi, e quindi la tua pagina indice si chiama index.htm, non .html. Regola di conseguenza REDIRECT_ROOT_PAGE in webbino_config.h.

In alternativa puoi usare SdFatLib, che supporta i nomi file lunghi.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 04, 2017, 04:01 pm
Se usi la libreria SD di Arduino, non supporta i nomi file lunghi, e quindi la tua pagina indice si chiama index.htm, non .html. Regola di conseguenza REDIRECT_ROOT_PAGE in webbino_config.h.

In alternativa puoi usare SdFatLib, che supporta i nomi file lunghi.
Utilizzo SdFat, però continua a darmi
"No such page: "/index.html""

Quando lascio solo l'index base presente nell'esempio però và.
Ho bisogno di fare una tabella con il nome, lo stato e il button per controllare vari led, quindi in varie righe della colonna
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 04, 2017, 04:10 pm
Spiegati meglio.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 04, 2017, 07:03 pm
Spiegati meglio.
Il mio obbiettivo è quello di avere una pagina dove c'è una tabella, varie righe e 3 colonne, prima colonna il nome ad esempio luce stanza, seconda colonna lo stato, terza colonna il pulsante di accensione o spegnimento.
Magari se c'è qualche esempio in giro mi verrà meglio, ma cosi non capisco molto su come partire
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 05, 2017, 10:09 am
Nell'HTML puoi fare quel che vuoi, normalmente Webbino si limita a prendere la pagina così com'è e a spedirla al client, senza metterci becco, a meno che non usi qualche Replacement Tag, tipo #PIPPO#.

Dai un'occhiata all'esempio LedControl, ti fa vedere come realizzare pulsanti Web che "fanno qualcosa" su Arduino.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 07, 2017, 04:40 pm
Nell'HTML puoi fare quel che vuoi, normalmente Webbino si limita a prendere la pagina così com'è e a spedirla al client, senza metterci becco, a meno che non usi qualche Replacement Tag, tipo #PIPPO#.

Dai un'occhiata all'esempio LedControl, ti fa vedere come realizzare pulsanti Web che "fanno qualcosa" su Arduino.
No such page: "/index.html"

dove sbaglio?

index.html dentro la microSD
Code: [Select]

<html>
<body>
<h2>Websbino #WEBBINO_VER#</h2>
<h3><a href="https://github.com/SukkoPera/Webbino">https://github.com/SukkoPera/Webbino</a></h3>
<h3>Copyright (C) 2012-2016 By <a href="mailto:software@sukkology.net">SukkoPera</a></h3>
<h5>MAC Address: #NET_MAC#</h5>
<h5>IP Address: #NET_IP#</h5>
<h5>Netmask: #NET_MASK#</h5>
<h5>Default Gateway: #NET_GW#</h5>
<h5>Network Configuration Source: #NET_CONF_SRC#</h5>
<br/>
<h5>System Uptime: #UPTIME#</h5>
<h5>Free RAM: #FREERAM# bytes</h5>
<h4>This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; <a href="http://www.gnu.org/licenses/gpl-3.0.html">click here</a> for details.</h4>
<hr/>
<h2>Led Control</h2>
<form method="get">
<input type="radio" name="state" value="on" #ST_ON_CHK#/>ONh<br />
<input type="radio" name="state" value="off" #ST_OFF_CHK#/>OFF<br />
<br />
<input type="submit" value="Set" />
</form>
</body>
</html>


sketch..
Code: [Select]

https://pastebin.com/iQijceUB
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 07, 2017, 05:08 pm
Sei sicuro di avere abilitato #define WEBBINO_ENABLE_SDFAT in webbino_config.h?

NB: WEBBINO_ENABLE_SDFAT, non WEBBINO_ENABLE_SD.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 07, 2017, 05:21 pm
Sei sicuro di avere abilitato #define WEBBINO_ENABLE_SDFAT in webbino_config.h?

NB: WEBBINO_ENABLE_SDFAT, non WEBBINO_ENABLE_SD.
Certo certo, se mi dice done sulla preparazione dell'sd è tutto ok no? non è che ci sono problemi con l'sd?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 07, 2017, 05:27 pm
Non lo so... Stai usando questa SdFatLib? https://github.com/greiman/SdFat (https://github.com/greiman/SdFat)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 07, 2017, 09:37 pm
Non lo so... Stai usando questa SdFatLib? https://github.com/greiman/SdFat (https://github.com/greiman/SdFat)
Sisi certo, sto utilizzando quella lib
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 07, 2017, 10:38 pm
Prova uno dei suoi esempi che listano i file e vedi cosa esce. La SD è formattata in FAT32, sì?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 07, 2017, 10:41 pm
Prova uno dei suoi esempi che listano i file e vedi cosa esce. La SD è formattata in FAT32, sì?
Sisi è fat32, mi partiva con l'esempio base sdonly.. ma ora non va più D:
Provo subito con gli esempi sdfatlib, in ogni caso provo domani a cambiare sd, ora purtroppo ho solo questa, possibile guasto modulo sd invece?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 07, 2017, 10:50 pm
Tutto è possibile, ma un modulo SD alla fine non è praticamente niente, solo un traslatore di livello e poco altro. Difficile si rompa.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 07, 2017, 10:57 pm
Tutto è possibile, ma un modulo SD alla fine non è praticamente niente, solo un traslatore di livello e poco altro. Difficile si rompa.
Con l'esempio SdFormatter non riesco a formattare l'sd, ecco i passaggi e l'errore

Code: [Select]

Enter 'Y' to continue: Y

Options are:
E - erase the card and skip formatting.
F - erase and then format the card. (recommended)
Q - quick format the card without erase.

Enter option: F
Card Size: 1 MB, (MB = 1,000,000 bytes)

Erasing
error: erase failed
SD error: 62,0


La card size non è la grandezza dell'sd? (che ovviamente non combacia)
L'errore che rilascia, dove controllo a cosa equivale?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 07, 2017, 10:58 pm
Mi spiace ma non ne ho proprio idea, uso quella libreria ma non la conosco in maniera così intima ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 07, 2017, 11:02 pm
Mi spiace ma non ne ho proprio idea, uso quella libreria ma non la conosco in maniera così intima ;).
Ti ringrazio Sukko, domani provo con una nuova sd e vediamo come va, ho un progetto da finire entro la maturità, ma se c'è un problema dietro l'altro non ci arriverò mai, ho già messo su l'intero plastico, manca solo lo sketch!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 08, 2017, 02:49 pm
Mi spiace ma non ne ho proprio idea, uso quella libreria ma non la conosco in maniera così intima ;).
Ho riprovato adesso cosi tanto per ad avviare la pagina e funziona, non ho toccato nulla da ieri... non capisco cosa gli prende!

Come risolvo quando la pagina viene caricata male? esempio..

Code: [Select]

C A$$reqs: #T_ C#

<(5> P Ad$res3: #ET_IP#
Netmask: 255.255.255.0

Default Gateway: 192.168.1.0

Network Configuration Source: DHCP


System Uptime: 00:00:25

Free RAM: 5875 bytes

strani simboli non voluti
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 08, 2017, 06:42 pm
Mai successo :o. Secondo me la tua SD sta tirando le cuoia... :smiley-confuse:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 15, 2017, 02:42 pm
Mai successo :o. Secondo me la tua SD sta tirando le cuoia... :smiley-confuse:
è possibile che il codice sia sbagliato? che ogni tanto carica, ogni tanto mezza pagina, ogni tanto i caratteri strani?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 16, 2017, 09:55 pm
Ripeto: a me non è mai successo, nemmeno durante lo sviluppo. Hai provato a cambiare SD?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 18, 2017, 10:07 pm
Ripeto: a me non è mai successo, nemmeno durante lo sviluppo. Hai provato a cambiare SD?
Confermo che è la microSD a fare brutti scherzi
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 25, 2017, 08:09 pm
Buona sera, ho un problema con il mio sketch, seguendo l'esempio "SDOnly" e apportando le giuste modifiche (secondo me) ho provato a comandare un led, quindi aggiungendo alcune parti di "LedControl" ma il led non risponde ai comandi, resta attivo mentre sulla pagina è su OFF il set, dove è possibile che sbaglio?

Code: [Select]


/***************************************************************************
 *   This file is part of Webbino.                                         *
 *                                                                         *
 *   Copyright (C) 2012-2016 by SukkoPera                                  *
 *                                                                         *
 *   Webbino is free software: you can redistribute it and/or modify       *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation, either version 3 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   Webbino is distributed in the hope that it will be useful,            *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with Webbino. If not, see <http://www.gnu.org/licenses/>.       *
 ***************************************************************************/

#include <Webbino.h>

/* SS pin for the SD card reader. Pin 4 is used for the reader included
 * on most WIZ5100-based Ethernet shields
 */
#define SD_SS 53

// Instantiate the WebServer
WebServer webserver;

  
// Instantiate the network interface defined in the Webbino headers
#if defined (WEBBINO_USE_ENC28J60)
  #include <WebbinoInterfaces/ENC28J60.h>
  NetworkInterfaceENC28J60 netint;
#elif defined (WEBBINO_USE_WIZ5100) || defined (WEBBINO_USE_WIZ5500)
  #include <WebbinoInterfaces/WIZ5x00.h>
  NetworkInterfaceWIZ5x00 netint;
#elif defined (WEBBINO_USE_ESP8266)
  #include <WebbinoInterfaces/AllWiFi.h>

  #include <SoftwareSerial.h>
  SoftwareSerial swSerial (7, 8);

  // Wi-Fi parameters
  #define WIFI_SSID        "ssid"
  #define WIFI_PASSWORD    "password"

  NetworkInterfaceWiFi netint;
#elif defined (WEBBINO_USE_WIFI) || defined (WEBBINO_USE_WIFI101) || \
    defined (WEBBINO_USE_ESP8266_STANDALONE)
  #include <WebbinoInterfaces/AllWiFi.h>

  // Wi-Fi parameters
  #define WIFI_SSID        "ssid"
  #define WIFI_PASSWORD    "password"

  NetworkInterfaceWiFi netint;
#elif defined (WEBBINO_USE_DIGIFI)
  #include <WebServer_DigiFi.h>
  NetworkInterfaceDigiFi netint;
#endif


// Pin to control, make sure this makes sense (i.e.: Use D0 on NodeMCU)!
const byte ledPin = 7;

// Pin state (True -> ON)
boolean ledState = false;


void ledToggle (HTTPRequestParser& request) {
  char *param;

  param = request.get_parameter (F("state"));
  if (strlen (param) > 0) {
    if (strcmp_P (param, PSTR ("on")) == 0) {
      ledState = true;
      digitalWrite (ledPin, HIGH);
    } else {
      ledState = false;
      digitalWrite (ledPin, LOW);
    }
  }
}

/******************************************************************************
 * DEFINITION OF TAGS                                                         *
 ******************************************************************************/

#define REP_BUFFER_LEN 32
char replaceBuffer[REP_BUFFER_LEN];
PString subBuffer (replaceBuffer, REP_BUFFER_LEN);

PString& evaluate_ip (void *data __attribute__ ((unused))) {
   subBuffer.print (netint.getIP ());

  return subBuffer;
}

PString& evaluate_netmask (void *data __attribute__ ((unused))) {
  subBuffer.print (netint.getNetmask ());

  return subBuffer;
}

PString& evaluate_gw (void *data __attribute__ ((unused))) {
  subBuffer.print (netint.getGateway ());

  return subBuffer;
}

PString& evaluate_mac_addr (void *data __attribute__ ((unused))) {
  const byte *buf = netint.getMAC ();

  for (byte i = 0; i < 6; i++) {
    if (buf[i] < 16)
      subBuffer.print ('0');
    subBuffer.print (buf[i], HEX);

    if (i < 5)
      subBuffer.print (':');
  }

  return subBuffer;
}

PString& evaluate_ip_src (void *data __attribute__ ((unused))) {
  if (netint.usingDHCP ())
    subBuffer.print (F("DHCP"));
  else
    subBuffer.print (F("MANUAL"));

  return subBuffer;
}

PString& evaluate_webbino_version (void *data __attribute__ ((unused))) {
  subBuffer.print (WEBBINO_VERSION);

  return subBuffer;
}

PString& evaluate_uptime (void *data __attribute__ ((unused))) {
  unsigned long uptime = millis () / 1000;
  byte d, h, m, s;

  d = uptime / 86400;
  uptime %= 86400;
  h = uptime / 3600;
  uptime %= 3600;
  m = uptime / 60;
  uptime %= 60;
  s = uptime;

  if (d > 0) {
    subBuffer.print (d);
    subBuffer.print (d == 1 ? F(" day, ") : F(" days, "));
  }

  if (h < 10)
    subBuffer.print ('0');
  subBuffer.print (h);
  subBuffer.print (':');
  if (m < 10)
    subBuffer.print ('0');
  subBuffer.print (m);
  subBuffer.print (':');
  if (s < 10)
    subBuffer.print ('0');
  subBuffer.print (s);

  return subBuffer;
}

PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
  // This only works on AVRs
#if defined (ARDUINO_ARCH_AVR)
  extern int __heap_start, *__brkval;
  int v;

  subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));
#else
  subBuffer.print (F("N/A"));
#endif

  return subBuffer;
}

PString& evaluate_onoff_checked (void *data) {
  boolean st = reinterpret_cast<int> (data);
  if (ledState == st) {
    subBuffer.print ("checked");
  }

  return subBuffer;
}

EasyReplacementTag (tagMacAddr, NET_MAC, evaluate_mac_addr);
EasyReplacementTag (tagIPAddress, NET_IP, evaluate_ip);
EasyReplacementTag (tagNetmask, NET_MASK, evaluate_netmask);
EasyReplacementTag (tagGateway, NET_GW, evaluate_gw);
EasyReplacementTag (tagNetConfSrc, NET_CONF_SRC, evaluate_ip_src);
EasyReplacementTag (tagWebbinoVer, WEBBINO_VER, evaluate_webbino_version);
EasyReplacementTag (tagUptime, UPTIME, evaluate_uptime);
EasyReplacementTag (tagFreeRAM, FREERAM, evaluate_free_ram);
EasyReplacementTag (tagStateOnChecked, ST_ON_CHK, evaluate_onoff_checked, true);
EasyReplacementTag (tagStateOffChecked, ST_OFF_CHK, evaluate_onoff_checked, false);

EasyReplacementTagArray tags[] PROGMEM = {
  &tagMacAddr,
  &tagIPAddress,
  &tagNetmask,
  &tagGateway,
  &tagNetConfSrc,
  &tagWebbinoVer,
  &tagUptime,
  &tagFreeRAM,
  &tagStateOnChecked,
  &tagStateOffChecked,
  NULL
};


/******************************************************************************
 * MAIN STUFF                                                                 *
 ******************************************************************************/

// Avoid some bug reports :)
#if !defined (WEBBINO_ENABLE_SD) && !defined (WEBBINO_ENABLE_SDFAT)
#error Please enable WEBBINO_ENABLE_SD or WEBBINO_ENABLE_SDFAT in webbino_config.h
#endif

void setup () {
  Serial.begin (115200);
  Serial.println (F("Using Webbino " WEBBINO_VERSION));

  Serial.println (F("Trying to get an IP address through DHCP"));
#if defined (WEBBINO_USE_ENC28J60) || defined (WEBBINO_USE_WIZ5100) || defined (WEBBINO_USE_WIZ5500)
  byte mac[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
  bool ok = netint.begin (mac);
#elif defined (WEBBINO_USE_ESP8266)
  Serial1.begin (115200);
  bool ok = netint.begin (Serial1, WIFI_SSID, WIFI_PASSWORD);
#elif defined (WEBBINO_USE_WIFI) || defined (WEBBINO_USE_WIFI101) || \
    defined (WEBBINO_USE_ESP8266_STANDALONE)
  bool ok = netint.begin (WIFI_SSID, WIFI_PASSWORD);
#endif

  if (!ok) {
    Serial.println (F("Failed to get configuration from DHCP"));
    while (42)
      ;
  } else {
    Serial.println (F("DHCP configuration done:"));
    Serial.print (F("- IP: "));
    Serial.println (netint.getIP ());
    Serial.print (F("- Netmask: "));
    Serial.println (netint.getNetmask ());
    Serial.print (F("- Default Gateway: "));
    Serial.println (netint.getGateway ());

    Serial.print (F("Initializing SD card..."));
    if (!webserver.begin (netint, NULL, tags, SD_SS)) {
      Serial.println (F(" failed"));
      while (42)
        ;
    }
    Serial.println (F(" done"));
  }


  // Prepare pin
  pinMode (ledPin, OUTPUT);
  
}

void loop () {
  webserver.loop ();
}

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 26, 2017, 10:59 am
Erm no, purtroppo quella cosa al momento non si può fare con le pagine in SD, ma solo con quelle in flash. La chiave di tutto è la funzione ledToggle(), che deve in qualche modo essere associata alla pagina e, se noti, nel tuo sketch non è richiamata da nessuna parte.

Penserò ad una soluzione.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 26, 2017, 05:14 pm
Erm no, purtroppo quella cosa al momento non si può fare con le pagine in SD, ma solo con quelle in flash. La chiave di tutto è la funzione ledToggle(), che deve in qualche modo essere associata alla pagina e, se noti, nel tuo sketch non è richiamata da nessuna parte.

Penserò ad una soluzione.

Ti ringrazio per la tua risposta, devo poter gestire da pagina vari pin per portarli semplicemente da HIGH a LOW e viceversa, semplice con una tabella nella pagina sistemata cosi; Name | State | Set.
Con le varie righe per i vari pin, che soluzione si adatta meglio al mio caso?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 26, 2017, 06:24 pm
Quante pagine hai? Una sola? Sei al limite della flash? Devi per forza metterla su SD o si può embeddare nel codice, insomma?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 26, 2017, 09:35 pm
Quante pagine hai? Una sola? Sei al limite della flash? Devi per forza metterla su SD o si può embeddare nel codice, insomma?
In teoria posso gestire tutto da una singola pagina, devo poter comandare 8 led, un cancello automatico (con un semplice pulsante per aprire il cancello, pulsante irrigazione, quindi sempre come i led un semplice pulsante con l'aggiunta di un timer per esempio di 5m(magari un set per modificare il tempo di funzionamento), set della temperatura con avvio di una ventola superata una certa soglia di temperatura, poi devo aggiungere pure altro codice che non deve comparire nella pagina, ad esempio il crepuscolare e l'anti furto, che quest'ultimo viene gestito indipendentemente dalla pagina con un display, usando modulo rfid e sensore pir.

Sembra un pò confusionaria una sola pagina impostata cosi, però credo sia la scelta più veloce da realizzare, consigli? :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 26, 2017, 09:42 pm
In realtà puoi avere anche più pagine, ma devono essere molto semplici, altrimenti saturi subito la flash, visto che mi pare che debba fare anche un sacco di altre cose.

Se le pagine non occupano più di tanto spazio, ti consiglio di usare lo script Python per convertirle in .h e includerle direttamente nello sketch.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 27, 2017, 10:55 am
In realtà puoi avere anche più pagine, ma devono essere molto semplici, altrimenti saturi subito la flash, visto che mi pare che debba fare anche un sacco di altre cose.

Se le pagine non occupano più di tanto spazio, ti consiglio di usare lo script Python per convertirle in .h e includerle direttamente nello sketch.
Le pagine devono essere molto semplici, un menù a tendina nella prima, una tabella nella seconda per l'illuminazione e magari un'ultima con cancello e irrigazione.
Mi pare che non c'è ancora una guida per come utilizzare lo script su windows, sono un pò in difficoltà
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 29, 2017, 02:25 pm
Ho provato da windows con python27 ad eseguire il file html2h.py, però mi da questo problema..

(http://i.imgur.com/8pnlyPb.png)

consigli?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 29, 2017, 02:41 pm
Non è un "problema" in senso stretto, nel senso che se leggi la prima riga ti dice che devi passargli come parametro il nome della cartella che sarà la root del tuo webserver. Quella dove tieni le pagine HTML, insomma.

Poi devi redirigere l'output sul file .h che vuoi creare, insomma, qualcosa tipo:

Code: [Select]
python.exe html2h.py c:\qualche\cartella > html.h


Forse ti aspettavi un'interfaccia grafica, ma è un semplice tool a linea di comando. Per il momento, almeno :).

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 29, 2017, 08:22 pm
Eseguo il codice direttamente da programma python
https://youtu.be/hocovjD06cc (https://youtu.be/hocovjD06cc)

(non capisco perchè durante la ripresa mi spunta il mouse più alto da dove dovrebbe essere, però si capisce)

il codice
Code: [Select]
python.exe html2h.py c:\qualche\cartella > html.h
dove devo scriverlo?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 29, 2017, 09:22 pm
Accidenti... Uso Python da più di 10 anni e non avevo mai saputo dell'esistenza di questo IDLE, orripilante editor minimale incluso nella distribuzione standard di Python  :smiley-sweat:.


Ti consiglio comunque di lasciarlo perdere, è talmente basilare che non permette nemmeno di passare parametri allo script che lancia. Apri un prompt dei comandi (ignoro come si chiami oggi su Windows), e lancia il comando da lì. Il problema è che devi avere python.exe nel path, sai come mettercelo?


Mi sa che è ora di sviluppare una mini-interfaccia grafica...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 29, 2017, 09:36 pm
Accidenti... Uso Python da più di 10 anni e non avevo mai saputo dell'esistenza di questo IDLE, orripilante editor minimale incluso nella distribuzione standard di Python  :smiley-sweat:.


Ti consiglio comunque di lasciarlo perdere, è talmente basilare che non permette nemmeno di passare parametri allo script che lancia. Apri un prompt dei comandi (ignoro come si chiami oggi su Windows), e lancia il comando da lì. Il problema è che devi avere python.exe nel path, sai come mettercelo?


Mi sa che è ora di sviluppare una mini-interfaccia grafica...
sono riuscito a creare html.h, frà oggi e domani farò i primi test, grazie per avermi dato le giuste mansioni!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 29, 2017, 09:45 pm
Ah, ottimo :D.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 30, 2017, 12:49 am
Devo lavorarci ancora un po', ma...

(https://www.dropbox.com/s/2shomcva8c4sqx4/html2h_gui.png?dl=0&raw=1)


:D
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 30, 2017, 11:06 am
Devo lavorarci ancora un po', ma...

(https://www.dropbox.com/s/2shomcva8c4sqx4/html2h_gui.png?dl=0&raw=1)


:D
Ottimo, molto comodo!


Edit:
Piccolo errore durante la compilazione, la prima riga del file compilato dovrebbe essere
"const char index_html_name[] PROGMEM = "/index.html";"

mentre dopo la compilazione la trasforma così:
"const char index_html_name[] PROGMEM = "\index.html";"

Nulla di grave!

Passo ai problemi riscontrati sul creare la pagina
Ho aggiunto su webbino_config.h queste due righe..
Code: [Select]

#define LUCE_CUCINA_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><a #ST_OFF_CHK#/><button>SPEGNI</button></a></td>"
#define LUCE_CUCINA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><a #ST_ON_CHK#/><button>ACCENDI</button></a></td>"


invece nello sketch ho aggiunto questo (ogni parte al posto giusto)
Code: [Select]

Esempio LedControl
...codice...

PString& eveluate_stato_luce_cucina (void *data __attribute__ ((unused))) {
  if (ledState) {
    pBuffer.print (LUCE_CUCINA_ON);
  }
  else {
    pBuffer.print (LUCE_CUCINA_OFF);
  }
 
  return pBuffer;
}

...codice...

EasyReplacementTag (tagStateLuceCucina, STATO_LUCE_CUCINA, eveluate_stato_luce_cucina);

...codice...

  &tagStateLuceCucina,


nell'index.html
Code: [Select]

<table border="1" width="20%" align="center">
<tr align="center">
<td>Luce Cucina</td>
#STATO_LUCE_CUCINA#
</tr>
</table>


in teoria volevo creare una tabella con una sola riga per iniziare a fare i primi test, con questa struttura..

(https://s11.postimg.org/xkadmfd77/chrome_2017-05-30_16-10-01.png)

ovviamente quando il pin è HIGH la casella dello stato diventa verde e il "button" diventa uno "SPEGNI"

però ho già trovato le prime complicazioni, con il codice che ho scritto la pagina viene visualizzata cosi..

Pin HIGH
(https://s11.postimg.org/564y2jpn7/chrome_2017-05-30_16-09-00.png)

Pin LOW
(https://s11.postimg.org/svudr8o0j/chrome_2017-05-30_16-08-53.png)

Premetto che ho voluto lasciare il vecchio codice per piccoli spunti, quindi ho continuato sotto.. la prima colonna c'è, la seconda (dello stato) c'è solo il colore e la terza manca del tutto.. Dove sbaglio?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 30, 2017, 11:44 pm
Premesso che non sono esattamente un guru dell'HTML...

<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><a #ST_OFF_CHK#/><button>SPEGNI</button></a></td>

le colonne sono quelle racchiuse tra <td> e </td>, per cui ce ne sono effettivamente solo due.

Che c'entra ST_OFF_CHK?


Ma soprattutto... <button> :o. Non si mettono mica così i pulsanti in HTML... Guarda meglio il sorgente della mia pagina per il LedControl :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on May 31, 2017, 08:02 pm
Premesso che non sono esattamente un guru dell'HTML...

<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><a #ST_OFF_CHK#/><button>SPEGNI</button></a></td>

le colonne sono quelle racchiuse tra <td> e </td>, per cui ce ne sono effettivamente solo due.

Che c'entra ST_OFF_CHK?


Ma soprattutto... <button> :o. Non si mettono mica così i pulsanti in HTML... Guarda meglio il sorgente della mia pagina per il LedControl :).
le due colonne sono li, l'altra è solo dove c'è scritto il nome ed è direttamente nell'index.html, così
Code: [Select]

<table border="1" width="20%" align="center">
 <tr align="center">
 <td>Luce Cucina</td>
 #STATO_LUCE_CUCINA#
 </tr>
</table>

quindi la prima colonna è invariabile ed è in questo caso "Luce Cucina", mentre dopo per le altre due colonne variabili ho messo un tag, dove il tag deve farmi vedere in base allo stato del pin, diverse azioni, specificando se il pin è HIGH deve spuntarmi questo
Code: [Select]

<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><a #ST_OFF_CHK#/><button>SPEGNI</button></a></td>"


mentre se è LOW parte questo codice

Code: [Select]

<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><a #ST_ON_CHK#/><button>ACCENDI</button></a></td>


Conclusione che dovrebbero spuntarmi 3 colonne, però ne spuntano solo 2, una corretta (la prima) una con solo il colore dello stato, nessuna scritta e nessuna terza colonna

Che c'entra ST_OFF_CHK? non è il tag che permette in questo caso di passare a LOW il pin?

riguardo al <button> cambierò e metterò <input type="submit" value="Set" />

Credo che un esempio con 2 righe e 3 colonne mi aiuterebbe molto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 01, 2017, 09:58 am
Il consiglio è di guardare dal browser il sorgente della pagina generata. In questo modo vedi subito cosa c'è di sbagliato.

Per il resto, no ST_OFF_CHK è un tag qualunque. Quello che fa sì che si possa davvero controllare il pin è questo:
Code: [Select]
const Page page01 PROGMEM = {index_html_name, index_html, ledToggle};
In particolare l'ultimo parametro, che dice a Webbino di chiamare la funzione ledToggle() prima di inviare la pagina al browser. Se poi guardi la funzione (https://github.com/SukkoPera/Webbino/blob/master/examples/LedControl/LedControl.ino#L72), vedrai che questa prende il parametro state dall'URL e si comporta di conseguenza.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 01, 2017, 11:36 am
Il consiglio è di guardare dal browser il sorgente della pagina generata. In questo modo vedi subito cosa c'è di sbagliato.

Per il resto, no ST_OFF_CHK è un tag qualunque. Quello che fa sì che si possa davvero controllare il pin è questo:
Code: [Select]
const Page page01 PROGMEM = {index_html_name, index_html, ledToggle};
In particolare l'ultimo parametro, che dice a Webbino di chiamare la funzione ledToggle() prima di inviare la pagina al browser. Se poi guardi la funzione (https://github.com/SukkoPera/Webbino/blob/master/examples/LedControl/LedControl.ino#L72), vedrai che questa prende il parametro state dall'URL e si comporta di conseguenza.
Ottimo, ma se voglio comandare un'altro pin? non mi fa aggiungere un'altra funzione (ledToggle2)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 01, 2017, 11:42 am
Non serve un'altra funzione, puoi gestire tutto in una sola, gestendo diversi parametri nell'URL.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 01, 2017, 11:52 am
Non serve un'altra funzione, puoi gestire tutto in una sola, gestendo diversi parametri nell'URL.
Edit.. Ho scoperto che il #define in webbino_config.h ha un limite di 33 lettere, quindi esegue il codice solo fino alla 33° lettera, infatti non mostra la 3° colonna D:


#define LUCE_CUCINA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\"> spenta </font> </td> <td> <input type=\"submit\" name=\"state\" value=\"SPEGNI\" #ST_OFF_CHK#/> </td>"


Come posso risolvere easy?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 01, 2017, 02:54 pm
Aumentando quel valore, ovviamente ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 01, 2017, 03:10 pm
Aumentando quel valore, ovviamente ;).
Trovato, grazie :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 01, 2017, 03:17 pm
Hai ragione, quel #define non serve più a niente, lo elimino subito (https://github.com/SukkoPera/Webbino/commit/e37fc896380cebe7b0d92006a528bd24da3e4b24).

Quello che devi modificare è nel tuo sketch:

Code: [Select]
#define REP_BUFFER_LEN 32
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 01, 2017, 03:44 pm
Ho due pezzi di codice uguali, uno lo avvia l'altro no..


Code: [Select]

#define LUCE_CUCINA_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"state\" value=\"SPEGNI\" #ST_OFF_CHK#/></form></td>"
#define LUCE_CUCINA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"state\" value=\"ACCENDI\" #ST_ON_CHK#/></form></td>"



Quando premo Accendi non passa a HIGH, mentre quando premo Spegni passa tranquillamente a LOW


Risolto u.u
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 03, 2017, 02:04 pm
Come procedo se voglio aggiungere un pulsante fisico nell'impianto oltre il pulsante web?
Ho provato con uno switch case aggiungendo una nuova funzione in loop, però non sto avendo risultati

Lo sketch attuale: Pastebin (https://pastebin.com/PyX84dFF)

In Webbino_config.h:
Code: [Select]

#define LUCE_CUCINA_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s1\" value=\"SPEGNI\" /></form></td>"
#define LUCE_CUCINA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s1\" value=\"ACCENDI\" /></form></td>"


Html: Pastebin (https://pastebin.com/1u7j0JnB)

Un'idea?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 05, 2017, 07:48 pm
Per favore sono a -16gg dall'esame v.v
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 05, 2017, 11:06 pm
Abbi pazienza, ma sono stato via qualche giorno. Qual è il problema preciso?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 05, 2017, 11:11 pm
Abbi pazienza, ma sono stato via qualche giorno. Qual è il problema preciso?
Nessun problema, spero solo che il tempo mi basti per portare a termine la mia opera, magari poi pubblicarla qui nel forum per condividere la mia esperienza.

Devo poter gestire L'HIGH E il LOW anche da pulsante fisico e non solo virtuale come una normale accezione di un led, solo che in questo caso devo integrare il pulsante allo sketch che c'è già, cioè il controllo del led tramite web, sopra ho allegato l'attuale sketch con la prova che ho fatto di testa mia per l'HIGH e il LOW del led con sito e pulsante fisico nell'impianto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 05, 2017, 11:17 pm
Non c'è nessun problema a fare una cosa del genere, è solo lo sketch che mi sembra un po' contorto. Prova a rifare la parte di lettura del pulsante seguendo gli esempi di Arduino Button, StateChangeDetection e Debounce.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 05, 2017, 11:51 pm
Non c'è nessun problema a fare una cosa del genere, è solo lo sketch che mi sembra un po' contorto. Prova a rifare la parte di lettura del pulsante seguendo gli esempi di Arduino Button, StateChangeDetection e Debounce.
Di una banalità assoluta, eppure ero perennemente bloccato
Piccola domanda per altre parti dello sketch, quando gestisco il cancello automatico dell'abitazione, una volta premuto un qualsiasi pulsante della pagina web (per accendere per esempio un led) il motore si blocca circa mezzo secondo/un secondo, credo che sia per il tempo d'attesa di trasmissione dati (?) c'è modo per rimuovere questa piccola pecca?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 05, 2017, 11:54 pm
Dipende da come gestisci il cancello, ma senza sketch è difficile dire di più. Se vuoi postarlo apri però un altro thread, non è una cosa strettamente attinente a Webbino, secondo me.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 14, 2017, 12:10 pm
Dipende da come gestisci il cancello, ma senza sketch è difficile dire di più. Se vuoi postarlo apri però un altro thread, non è una cosa strettamente attinente a Webbino, secondo me.
Buon giorno, ho fatto varie prove, il problema sta in questa parte del codice.. i tag..

Code: [Select]

/******************************************************************************
 * DEFINITION OF TAGS                                                         *
 ******************************************************************************/

#define REP_BUFFER_LEN 184
char replaceBuffer[REP_BUFFER_LEN];
PString pBuffer (replaceBuffer, REP_BUFFER_LEN);

PString& eveluate_stato_luce_cucina (void *data __attribute__ ((unused))) {
  if (SLuceCucina) {
    pBuffer.print (LUCE_CUCINA_ON);
  }
  else {
    pBuffer.print (LUCE_CUCINA_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_stanza (void *data __attribute__ ((unused))) {
  if (SLuceStanza) {
    pBuffer.print (LUCE_STANZA_ON);
  }
  else {
    pBuffer.print (LUCE_STANZA_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_stanzetta (void *data __attribute__ ((unused))) {
  if (SLuceStanzetta) {
    pBuffer.print (LUCE_STANZETTA_ON);
  }
  else {
    pBuffer.print (LUCE_STANZETTA_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_bagno (void *data __attribute__ ((unused))) {
  if (SLuceBagno) {
    pBuffer.print (LUCE_BAGNO_ON);
  }
  else {
    pBuffer.print (LUCE_BAGNO_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_salotto (void *data __attribute__ ((unused))) {
  if (SLuceSalotto) {
    pBuffer.print (LUCE_SALOTTO_ON);
  }
  else {
    pBuffer.print (LUCE_SALOTTO_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_corridoio (void *data __attribute__ ((unused))) {
  if (SLuceCorridoio) {
    pBuffer.print (LUCE_CORRIDOIO_ON);
  }
  else {
    pBuffer.print (LUCE_CORRIDOIO_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_ingresso (void *data __attribute__ ((unused))) {
  if (SLuceIngresso) {
    pBuffer.print (LUCE_INGRESSO_ON);
  }
  else {
    pBuffer.print (LUCE_INGRESSO_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_garage (void *data __attribute__ ((unused))) {
  if (SLuceGarage) {
    pBuffer.print (LUCE_GARAGE_ON);
  }
  else {
    pBuffer.print (LUCE_GARAGE_OFF);
  }
  
  return pBuffer;
}

PString& eveluate_stato_luce_generale (void *data __attribute__ ((unused))) {
    pBuffer.print (LUCE_GENERALE);

  return pBuffer;
}

PString& evaluate_checked_Canc (void *data __attribute__ ((unused))) {
    pBuffer.print (PULSANTE_CANCELLO);

  return pBuffer;
}

PString& evaluate_webbino_version (void *data __attribute__ ((unused))) {
  pBuffer.print (WEBBINO_VERSION);

  return pBuffer;
}

EasyReplacementTag (tagStateLuceCucina, STATO_LUCE_CUCINA, eveluate_stato_luce_cucina);
EasyReplacementTag (tagStateLuceStanza, STATO_LUCE_STANZA, eveluate_stato_luce_stanza);
EasyReplacementTag (tagStateLuceStanzetta, STATO_LUCE_STANZETTA, eveluate_stato_luce_stanzetta);
EasyReplacementTag (tagStateLuceBagno, STATO_LUCE_BAGNO, eveluate_stato_luce_bagno);
EasyReplacementTag (tagStateLuceSalotto, STATO_LUCE_SALOTTO, eveluate_stato_luce_salotto);
EasyReplacementTag (tagStateLuceCorridoio, STATO_LUCE_CORRIDOIO, eveluate_stato_luce_corridoio);
EasyReplacementTag (tagStateLuceIngresso, STATO_LUCE_INGRESSO, eveluate_stato_luce_ingresso);
EasyReplacementTag (tagStateLuceGarage, STATO_LUCE_GARAGE, eveluate_stato_luce_garage);
EasyReplacementTag (tagStateLuceGenerale, STATO_LUCE_GENERALE, eveluate_stato_luce_generale);
EasyReplacementTag (tagCancello, STATO_PULSANTE_CANCELLO, evaluate_checked_Canc);
EasyReplacementTag (tagWebbinoVer, WEBBINO_VER, evaluate_webbino_version);

EasyReplacementTagArray tags[] PROGMEM = {
  &tagStateLuceCucina,
  &tagStateLuceStanza,
  &tagStateLuceStanzetta,
  &tagStateLuceBagno,
  &tagStateLuceSalotto,
  &tagStateLuceCorridoio,
  &tagStateLuceIngresso,
  &tagStateLuceGarage,
  &tagStateLuceGenerale,
  &tagCancello,
  &tagWebbinoVer,
  NULL
};


Webbino_config.h

Code: [Select]


#define LUCE_CUCINA_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s1\" value=\"SPEGNI\" /></form></td>"
#define LUCE_CUCINA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s1\" value=\"ACCENDI\" /></form></td>"
#define LUCE_STANZA_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s2\" value=\"SPEGNI\" /></form></td>"
#define LUCE_STANZA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s2\" value=\"ACCENDI\" /></form></td>"
#define LUCE_STANZETTA_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s3\" value=\"SPEGNI\" /></form></td>"
#define LUCE_STANZETTA_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s3\" value=\"ACCENDI\" /></form></td>"
#define LUCE_BAGNO_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s4\" value=\"SPEGNI\" /></form></td>"
#define LUCE_BAGNO_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s4\" value=\"ACCENDI\" /></form></td>"
#define LUCE_SALOTTO_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s5\" value=\"SPEGNI\" /></form></td>"
#define LUCE_SALOTTO_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s5\" value=\"ACCENDI\" /></form></td>"
#define LUCE_CORRIDOIO_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s6\" value=\"SPEGNI\" /></form></td>"
#define LUCE_CORRIDOIO_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s6\" value=\"ACCENDI\" /></form></td>"
#define LUCE_INGRESSO_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s7\" value=\"SPEGNI\" /></form></td>"
#define LUCE_INGRESSO_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s7\" value=\"ACCENDI\" /></form></td>"
#define LUCE_GARAGE_ON "<td bgcolor=\"#00FF00\"><font color=\"#000000\">accesa</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s8\" value=\"SPEGNI\" /></form></td>"
#define LUCE_GARAGE_OFF "<td bgcolor=\"#FF0000\"><font color=\"#FFFFFF\">spenta</font></td><td><form method=\"get\"><input type=\"submit\" name=\"s8\" value=\"ACCENDI\" /></form></td>"
#define LUCE_GENERALE "<td><form method=\"get\"><input type=\"submit\" name=\"gen\" value=\"ACCENDI\" /></form></td><td><form method=\"get\"><input type=\"submit\" name=\"gen\" value=\"SPEGNI\" /></form></td>"
#define PULSANTE_CANCELLO "<form method=\"get\"><input type=\"submit\" name=\"cancello\" value=\"APRI CANCELLO\" /></form>"



Forse è stato scritto tutto male, ma quando elimino tutti i tag e lascio solo il tag della cucina riduco la memoria dinamica dal 60% al 32%!

Consigli?

il risultato è questo..
Youtube (https://www.youtube.com/watch?v=cYSLsMc1bRk)
Youtube (https://www.youtube.com/watch?v=Nx9d5fuoZBs)

Ho aggiunto un secondo video dove a fianco della pagina di controllo c'è pure il monitor seriale con i relativi log, questo bug si presenta anche solo con un solo tag (il tag della luce cucina)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 14, 2017, 03:24 pm
Sicuramente si potrebbe riscrivere "meglio", ad esempio usando un tag per il colore, visto che tutto il resto è identico, in molte delle stringhe sopra, però in realtà, se il tuo sketch è completo, usare il 60% di RAM non causa alcun problema. Sulla Mega questo vuol dire che ci sono ancora più di 1.6 kB liberi, che normalmente bastano e avanzano.

Comunque, una cosa che puoi fare velocemente e che dovrebbe farti risparmiare parecchia RAM è usare la macro F() in tutte quelle #define, tipo:
Code: [Select]
#define PULSANTE_CANCELLO F("<form method=\"get\"><input type=\"submit\" name=\"cancello\" value=\"APRI CANCELLO\" /></form>")


Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Salvatore765 on Jun 14, 2017, 03:30 pm
Sicuramente si potrebbe riscrivere "meglio", ad esempio usando un tag per il colore, visto che tutto il resto è identico, in molte delle stringhe sopra, però in realtà, se il tuo sketch è completo, usare il 60% di RAM non causa alcun problema. Sulla Mega questo vuol dire che ci sono ancora più di 1.6 kB liberi, che normalmente bastano e avanzano.

Comunque, una cosa che puoi fare velocemente e che dovrebbe farti risparmiare parecchia RAM è usare la macro F() in tutte quelle #define, tipo:
Code: [Select]
#define PULSANTE_CANCELLO F("<form method=\"get\"><input type=\"submit\" name=\"cancello\" value=\"APRI CANCELLO\" /></form>")



Se non è problema di ram, cosa causa quel problema di "finto" pulsante per accendere/spegnere le luci?


PS. ho risparmiato circa il 31% di memoria! wow.. 29% raggiunti

Ho rimosso la parte dell'illuminazione generale e del pulsante cancello, dato che non sono variabili posso metterli direttamente nell'html, mentre per i colori dello stato e i pulsanti delle illuminazioni non posso metterle in html, ma mandarle direttamente in html in base alla situazione, quindi riduco il REP_BUFFER_LEN  da 184 a 132, elimino tutto il codice in eccesso, continua a fare i brutti scherzi D:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: PaoloP on Jul 19, 2017, 10:42 am
 :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: paolosanna on Aug 27, 2017, 04:25 pm
.... Bellissimo lavoro sukkopera .... non ho letto tutto il post .... ma mi pare di aver capito che potrei usarlo anche io al posto di <EtherCard.h>???

io devo leggere dei valori dalla eeprom .. visualizzarli ed eventualmente modificarli ...

....
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Aug 28, 2017, 11:06 am
Puoi sicuramente farlo :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: brunello22 on Nov 06, 2017, 02:15 pm
 (http://"http://forum.arduino.cc/index.php?topic=433776.msg2989545#msg2989545")
Quote
Webbino - Server web "dinamico" per Arduino (http://"http://forum.arduino.cc/index.php?topic=433776.msg2989545#msg2989545")

Nov 06, 2016, 04:09 pm (http://"http://forum.arduino.cc/index.php?topic=433776.msg2989545#msg2989545") Last Edit: Nov 07, 2016, 03:00 pm by SukkoPera
Auguri..............
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Nov 06, 2017, 04:02 pm
Grazie ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: MrToldo on Dec 23, 2017, 08:17 pm
Grazie ;).
Ciao SukkoPera, intanto complimenti per la libreria webbino; ti volevo chiedere una cosa, sto cercando di usare al posto di index.html un altra pagina html contenente i tag però non riesco; ho provato a sostituirla nella cartella webroot ma mi continua a dire "no such file index.html" anche se la rinomino con un altro nome, in più sono andato anche nel file webbino config per cambiarla ma non ci sono riuscito; ha qualche suggerimento?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 23, 2017, 08:40 pm
Intendi dire che la tua pagina principale non si chiama index.html? In tal caso devi cambiare il nome in webbino_config.h, cerca REDIRECT_ROOT_PAGE. Però il nome index.html è piuttosto standard, sei sicuro di volere fare questo?

Nota che se stai usando le pagine su SD, il nome index.html richiede i nomi file lunghi, che la libreria SD non supporta, devi usare la SdFat, oppure chiamarla index.htm (senza L), questo è l'unico caso in cui personalmente cambierei l'impostazione di cui sopra.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: MrToldo on Dec 24, 2017, 01:34 pm
Intendi dire che la tua pagina principale non si chiama index.html? In tal caso devi cambiare il nome in webbino_config.h, cerca REDIRECT_ROOT_PAGE. Però il nome index.html è piuttosto standard, sei sicuro di volere fare questo?

Nota che se stai usando le pagine su SD, il nome index.html richiede i nomi file lunghi, che la libreria SD non supporta, devi usare la SdFat, oppure chiamarla index.htm (senza L), questo è l'unico caso in cui personalmente cambierei l'impostazione di cui sopra.
praticamente voglio sostituire la pagina d'esempio index.html con un altra impaginata meglio e con altri tag; ho provato però a inserirla nella SD ed a eseguire l' esempio SDonly ma non funziona, nel senso quando inserisco l' SD mi assegna un IP fasullo (255.255.255.255), nel momento in cui la tolgo e rifaccio partire il codice mi assegna l' IP corretto 192.168.1.2 ma logicamente SD failed

P.S. utilizzo un arduino mega 2560 e un ethernet shield con chip WIZ5100 e modulo SD;ho abilitato WEBBINO_ENABLE_SD e WEBBINO_ENABLE_SDFAT (per quest ultima bisogna scaricare la libreria?)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: MrToldo on Dec 29, 2017, 11:07 am
Dopo vari tentativi sono riuscito a creare un pagina html personalizzata ma ora vorrei salvare tutti i dati su un database (esempio utilizzando xampp sempre in locale), inoltre invece di utilizzare un pagina html vorrei crearne una php da salvare sulla SD ed interfacciarmi direttamente con xampp installato su un altro PC nella rete locale, cosa ne pensate è fattibile?

Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 29, 2017, 03:38 pm
PHP ha bisogno di un interprete, che di certo non gira su Arduino. Se proprio vuoi fare questo devi munirti di un Raspberry Pi o simile, su cui potrai installare Apache, PHP, MySQL/MariaDB e tutto quel che vorrai.

Da Arduino puoi al massimo interfacciarti con una pagina PHP residente altrove per salvare dati su un DB, o recuperarli.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: MrToldo on Dec 29, 2017, 05:13 pm
PHP ha bisogno di un interprete, che di certo non gira su Arduino. Se proprio vuoi fare questo devi munirti di un Raspberry Pi o simile, su cui potrai installare Apache, PHP, MySQL/MariaDB e tutto quel che vorrai.

Da Arduino puoi al massimo interfacciarti con una pagina PHP residente altrove per salvare dati su un DB, o recuperarli.
io infatti ad esempio ho un pagina php salvata in C://xampp/htdocs/test e facendola partire con localhost/test/prova.php si collega al DB e memorizza i dati, il problema è far passare i dati da Arduino alla pagina php; ho provato a creare una pagina html e tramite comando a href ho cercato di far passare le variabili al file php salvato nella cartella "test" del PC (prima chiaramente l'ho resa condivisa da everyone) ma non ha funzionato...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Dec 29, 2017, 08:16 pm
Dovrebbe funzionare, ma questo non c'entra niente con Webbino, eventualmente apri un altro post nella sezione Software.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: bialabs on Jan 30, 2018, 04:44 am
ciao, è possibile settarlo in modalità "standalone"? vorrei che lui faccia da server, mi crei una rete wifi e mi possa connettere il lan da un cellulare per visualizzare i file contenuti su sd. grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jan 30, 2018, 08:27 am
Ufficialmente no, questa possibilità non è prevista perché non tutte le interfacce di rete la supportano.

Tuttavia ci puoi arrivare con poche semplici modifiche. Appena ho tempo ci do un'occhiata.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: andreapensa on Mar 01, 2018, 04:39 pm
Ciao SukkoPera e complimenti per l'ottimo lavoro, sto provando la tua libreria in alternativa a webduino ma non riesco a trovare nulla sull' autenticazione http, è implementata?
Hai previsto qualche altro sistema di controllo degli accessi?
Grazie.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Mar 01, 2018, 04:44 pm
>andreapensa: ... NON avendolo tu ancora fatto, essendo questo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (http://forum.arduino.cc/index.php?topic=113640.0) (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO (http://forum.arduino.cc/index.php?topic=149082.0) ... Grazie.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 01, 2018, 06:24 pm
Non trovi niente perché effettivamente non c'è nulla di simile implementato.

Da un lato mi piacerebbe farlo, più che altro per sfizio, dall'altro sono restìo, perché sono fermamente convinto che un webserver su un Arduino sia un accrocchio a priori, che non vada esposto su Internet per alcun motivo, e un meccanismo di autenticazione invoglierebbe la gente a fare ciò.

Meglio mettere in piedi una VPN sicura con un semplice Raspberry Pi e accedere all'Arduino sulla rete locale tramite questa.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 27, 2018, 11:47 pm
Salve, sto usando anch'io Webbino per creare una semplice pagina che mi mostri la temperatura usando la sostituzione del tag. Sto usando il sensore dht11. Ho modificato l'esempio OnlySD e riesco correttamente a visualizzare la mia pagina e a cambiare il contenuto del tag con un valore che imposto.
Non riesco però ad avere il valore della temperatura letto dal sensore...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 28, 2018, 12:57 am
Se non posti lo sketch...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 28, 2018, 08:49 am
Se non posti lo sketch...
Eccolo


Code: [Select]


/***************************************************************************
    This file is part of Webbino.
*                                                                         *
    Copyright (C) 2012-2016 by SukkoPera
*                                                                         *
    Webbino is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
*                                                                         *
    Webbino is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
*                                                                         *
    You should have received a copy of the GNU General Public License
    along with Webbino. If not, see <http://www.gnu.org/licenses/>.
***************************************************************************/

#include <Webbino.h>

#include "DHT.h"
#define DHTPIN 2     // what digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11



/* SS pin for the SD card reader. Pin 4 is used for the reader included
  on most WIZ5100-based Ethernet shields
*/
#define SD_SS 4

// Instantiate the WebServer
WebServer webserver;

// Instantiate the network interface defined in the Webbino headers
#if defined (WEBBINO_USE_ENC28J60)
#include <WebbinoInterfaces/ENC28J60.h>
NetworkInterfaceENC28J60 netint;
#elif defined (WEBBINO_USE_WIZ5100) || defined (WEBBINO_USE_WIZ5500)
#include <WebbinoInterfaces/WIZ5x00.h>
NetworkInterfaceWIZ5x00 netint;
#elif defined (WEBBINO_USE_ESP8266)
#include <WebbinoInterfaces/AllWiFi.h>

#include <SoftwareSerial.h>
SoftwareSerial swSerial (6, 7);

// Wi-Fi parameters
#define WIFI_SSID        "ssid"
#define WIFI_PASSWORD    "password"

NetworkInterfaceWiFi netint;
#elif defined (WEBBINO_USE_WIFI) || defined (WEBBINO_USE_WIFI101) || \
 defined (WEBBINO_USE_ESP8266_STANDALONE)
#include <WebbinoInterfaces/AllWiFi.h>

// Wi-Fi parameters
#define WIFI_SSID        "ssid"
#define WIFI_PASSWORD    "password"

NetworkInterfaceWiFi netint;
#elif defined (WEBBINO_USE_DIGIFI)
#include <WebbinoInterfaces/DigiFi.h>
NetworkInterfaceDigiFi netint;
#endif




/******************************************************************************
  DEFINITION OF TAGS
******************************************************************************/

#define REP_BUFFER_LEN 32
char replaceBuffer[REP_BUFFER_LEN];
PString subBuffer (replaceBuffer, REP_BUFFER_LEN);

PString& evaluate_ip (void *data __attribute__ ((unused))) {
 subBuffer.print (netint.getIP ());

 return subBuffer;
}

PString& evaluate_netmask (void *data __attribute__ ((unused))) {
 subBuffer.print (netint.getNetmask ());

 return subBuffer;
}

PString& evaluate_gw (void *data __attribute__ ((unused))) {
 subBuffer.print (netint.getGateway ());

 return subBuffer;
}

PString& evaluate_mac_addr (void *data __attribute__ ((unused))) {
 const byte *buf = netint.getMAC ();

 for (byte i = 0; i < 6; i++) {
   if (buf[i] < 16)
     subBuffer.print ('0');
   subBuffer.print (buf[i], HEX);

   if (i < 5)
     subBuffer.print (':');
 }

 return subBuffer;
}

PString& evaluate_ip_src (void *data __attribute__ ((unused))) {
 if (netint.usingDHCP ())
   subBuffer.print (F("DHCP"));
 else
   subBuffer.print (F("MANUAL"));

 return subBuffer;
}

PString& evaluate_webbino_version (void *data __attribute__ ((unused))) {
 subBuffer.print (WEBBINO_VERSION);

 return subBuffer;
}

PString& evaluate_uptime (void *data __attribute__ ((unused))) {
 unsigned long uptime = millis () / 1000;
 byte d, h, m, s;

 d = uptime / 86400;
 uptime %= 86400;
 h = uptime / 3600;
 uptime %= 3600;
 m = uptime / 60;
 uptime %= 60;
 s = uptime;

 if (d > 0) {
   subBuffer.print (d);
   subBuffer.print (d == 1 ? F(" day, ") : F(" days, "));
 }

 if (h < 10)
   subBuffer.print ('0');
 subBuffer.print (h);
 subBuffer.print (':');
 if (m < 10)
   subBuffer.print ('0');
 subBuffer.print (m);
 subBuffer.print (':');
 if (s < 10)
   subBuffer.print ('0');
 subBuffer.print (s);

 return subBuffer;
}



PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
 // This only works on AVRs
#if defined (ARDUINO_ARCH_AVR)
 extern int __heap_start, *__brkval;
 int v;

 subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));
#else
 subBuffer.print (F("N/A"));
#endif

 return subBuffer;
}
EasyReplacementTag (tagMacAddr, NET_MAC, evaluate_mac_addr);
EasyReplacementTag (tagIPAddress, NET_IP, evaluate_ip);
EasyReplacementTag (tagNetmask, NET_MASK, evaluate_netmask);
EasyReplacementTag (tagGateway, NET_GW, evaluate_gw);
EasyReplacementTag (tagNetConfSrc, NET_CONF_SRC, evaluate_ip_src);
EasyReplacementTag (tagWebbinoVer, WEBBINO_VER, evaluate_webbino_version);
EasyReplacementTag (tagUptime, UPTIME, evaluate_uptime);
EasyReplacementTag (tagFreeRAM, FREERAM, evaluate_free_ram);
EasyReplacementTag (tagTemp, TEMP, evaluate_temp);

EasyReplacementTagArray tags[] PROGMEM = {
 &tagMacAddr,
 &tagIPAddress,
 &tagNetmask,
 &tagGateway,
 &tagNetConfSrc,
 &tagWebbinoVer,
 &tagUptime,
 &tagFreeRAM,
 &tagTemp,
 NULL
};


/******************************************************************************
  MAIN STUFF
******************************************************************************/

// Avoid some bug reports :)
#if !defined (WEBBINO_ENABLE_SD) && !defined (WEBBINO_ENABLE_SDFAT)
#error Please enable WEBBINO_ENABLE_SD or WEBBINO_ENABLE_SDFAT in webbino_config.h
#endif

DHT dht(DHTPIN, DHTTYPE);

void setup () {
 dht.begin();
 Serial.begin (9600);
 
 while (!Serial)
   ;

 Serial.println (F("Using Webbino " WEBBINO_VERSION));

 Serial.println (F("Trying to get an IP address through DHCP"));
#if defined (WEBBINO_USE_ENC28J60) || defined (WEBBINO_USE_WIZ5100) || defined (WEBBINO_USE_WIZ5500)
 byte mac[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
 bool ok = netint.begin (mac);
#elif defined (WEBBINO_USE_ESP8266)
 swSerial.begin (9600);
 bool ok = netint.begin (swSerial, WIFI_SSID, WIFI_PASSWORD);
#elif defined (WEBBINO_USE_WIFI) || defined (WEBBINO_USE_WIFI101) || \
 defined (WEBBINO_USE_ESP8266_STANDALONE)
 bool ok = netint.begin (WIFI_SSID, WIFI_PASSWORD);
#endif

 if (!ok) {
   Serial.println (F("Failed to get configuration from DHCP"));
   while (42)
     ;
 } else {
   Serial.println (F("DHCP configuration done:"));
   Serial.print (F("- IP: "));
   Serial.println (netint.getIP ());
   Serial.print (F("- Netmask: "));
   Serial.println (netint.getNetmask ());
   Serial.print (F("- Default Gateway: "));
   Serial.println (netint.getGateway ());

   Serial.print (F("Initializing SD card..."));
   if (!webserver.begin (netint, NULL, tags, SD_SS)) {
     Serial.println (F(" failed"));
     while (42)
       ;
   }
   Serial.println (F(" done"));
 }
}

void loop () {
 webserver.loop ();

}


float temp = dht.readTemperature();

static const char subDatoStr[] PROGMEM = "TEMP";
static const ReplacementTag subTempVarSub PROGMEM = {subDatoStr, evaluate_temp, NULL};

static const ReplacementTag * const substitutions[] PROGMEM = {
 &subTempVarSub
};
#define REP_BUFFER_LEN 32
//static char replaceBuffer[REP_BUFFER_LEN];
//PString subBuffer (replaceBuffer, REP_BUFFER_LEN);

static PString& evaluate_temp (void *data) {
 subBuffer.print (temp);
 return subBuffer;
}


Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: nid69ita on Mar 28, 2018, 09:11 am
Hai messo 
float temp = dht.readTemperature();
nel posto sbagliato. Messo li è fuori da qualsiasi funzione, quindi è globale e le globali vengono inizializzate come prima cosa, quindi ancora prima del codice della setup() perciò dht.begin() non è ancora avvenuto.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 28, 2018, 12:43 pm
Confermo, devi farlo come prima cosa in evaluate_temp().
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 28, 2018, 01:30 pm
Quindi, scusate, di preciso dove dovrei metterlo?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 28, 2018, 03:05 pm
Non saprei essere più chiaro di quel che ho appena detto...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 28, 2018, 05:41 pm
Non saprei essere più chiaro di quel che ho appena detto...
Ho provato a fare come hai detto, ma non funziona.
Potresti mettermi la parte del codice, giusto per capire se sbaglio io oppure non va. Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 28, 2018, 07:45 pm
Se è questa è evaluate_temp():
Code: [Select]
static PString& evaluate_temp (void *data) {
 subBuffer.print (temp);
 return subBuffer;
}


Farlo come prima cosa vuol dire:
Code: [Select]
static PString& evaluate_temp (void *data) {
 float temp = dht.readTemperature();
 subBuffer.print (temp);
 return subBuffer;
}


Nota anche che quello static è superfluo, puoi toglierlo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 28, 2018, 09:58 pm
Se è questa è evaluate_temp():
Code: [Select]
static PString& evaluate_temp (void *data) {
 subBuffer.print (temp);
 return subBuffer;
}


Farlo come prima cosa vuol dire:
Code: [Select]
static PString& evaluate_temp (void *data) {
 float temp = dht.readTemperature();
 subBuffer.print (temp);
 return subBuffer;
}


Nota anche che quello static è superfluo, puoi toglierlo.
Avevo già provato così, ci riprovato anche di nuovo ora ma non funziona
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 28, 2018, 10:48 pm
Ma nella pagina HTML hai messo %TEMP% da qualche parte?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 28, 2018, 10:58 pm
Ma nella pagina HTML hai messo %TEMP% da qualche parte?
Sì, nella pagina c'è il tag #TEMP#, ma se metto la variabile temp in evaluate_temp() non funziona più neanche il server. All'inizio mi da caratteri strani sulla pagina web e poi va subito offline.
Infatti se sostituisco a temp=DHT.readTemperature()
un numero qualsiasi e quindi, per esempio, int temp = 5; il tag viene sostituito correttamente
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 28, 2018, 11:25 pm
Boh, a parte che tutto questo è inutile:
Code: [Select]
float temp = dht.readTemperature();

static const char subDatoStr[] PROGMEM = "TEMP";
static const ReplacementTag subTempVarSub PROGMEM = {subDatoStr, evaluate_temp, NULL};

static const ReplacementTag * const substitutions[] PROGMEM = {
 &subTempVarSub
};
#define REP_BUFFER_LEN 32
//static char replaceBuffer[REP_BUFFER_LEN];
//PString subBuffer (replaceBuffer, REP_BUFFER_LEN);


Così su due piedi non vedo motivi per cui non dovrebbe funzionare.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 28, 2018, 11:31 pm
Boh, a parte che tutto questo è inutile:
Code: [Select]
float temp = dht.readTemperature();

static const char subDatoStr[] PROGMEM = "TEMP";
static const ReplacementTag subTempVarSub PROGMEM = {subDatoStr, evaluate_temp, NULL};

static const ReplacementTag * const substitutions[] PROGMEM = {
 &subTempVarSub
};
#define REP_BUFFER_LEN 32
//static char replaceBuffer[REP_BUFFER_LEN];
//PString subBuffer (replaceBuffer, REP_BUFFER_LEN);


Così su due piedi non vedo motivi per cui non dovrebbe funzionare.
Sì, mi sono accorto che era inutile, infatti l'avevo già tolto ahah.
Però non riesco a capire perché non funziona.
La temperatura, con lo sketch di test del sensore riesco a leggerla e anche l'esempio WebServer della Shield Ethernet con il sensore funziona...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Cosmo99 on Mar 31, 2018, 09:44 pm
Ho risolto usando questa libreria:
https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib
e con questo codice:
Code: [Select]

#include <dht.h>

dht DHT;
void setup() {
  pinMode(A0, INPUT);
  Serial.begin(9600);
}

void loop() {
DHT.read11(A0);
float a = DHT.temperature;
Serial.println(a);
}



Ora funziona tutto per bene anche sulla pagina Web

Ho solo una domanda, come faccio a rendere la pagina dinamica e leggere il valore in tempo reale anche se cambia senza dover ricaricare la pagina?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 04, 2018, 10:45 pm
Metti nella sezione head qualcosa tipo:

Code: [Select]
<meta http-equiv="refresh" content="5" >
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vikingo on Apr 09, 2018, 11:40 am
Buongiorno,
sto provando a caricare alcuni sketch presenti negli esempi di Webbino, ma mi da sempre lo stesso errore, qualunque sketch provi ad usare.

L' ultima parte dell' errore è questo:



Uso la libreria Webbino-master alla versione 0.9.0 nella cartella: C:\Users\xxxx\Documents\Arduino\libraries\Webbino-master
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.

come potrei risolvere?

sto usando Ide 1.8.5 ed una scheda mega 2560

Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Apr 09, 2018, 11:48 am
Cortesemente, apri le preferenze del IDE e metti il segno di spunta alle opzioni relative al dettaglio (verbose) della compilazione e, già che ci sei, anche dell'upload. L'errore sarà più dettagliato e forse ci possiamo capire qualche cosa.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vikingo on Apr 09, 2018, 12:02 pm
Arduino:1.8.5 (Windows 7), Scheda:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Matteo\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2341_0X0042 -ide-version=10805 -build-path C:\Users\Matteo\AppData\Local\Temp\arduino_build_700503 -warnings=all -build-cache C:\Users\Matteo\AppData\Local\Temp\arduino_cache_381750 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\examples\FixedIPAddress\FixedIPAddress.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Matteo\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2341_0X0042 -ide-version=10805 -build-path C:\Users\Matteo\AppData\Local\Temp\arduino_build_700503 -warnings=all -build-cache C:\Users\Matteo\AppData\Local\Temp\arduino_cache_381750 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\examples\FixedIPAddress\FixedIPAddress.ino
Using board 'mega' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\Matteo\AppData\Local\Temp\arduino_build_700503\sketch\FixedIPAddress.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\src" "C:\Users\Matteo\AppData\Local\Temp\arduino_build_700503\sketch\FixedIPAddress.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\src" "C:\Users\Matteo\AppData\Local\Temp\arduino_build_700503\sketch\FixedIPAddress.ino.cpp" -o "C:\Users\Matteo\AppData\Local\Temp\arduino_build_700503\preproc\ctags_target_for_gcc_minus_e.cpp"
In file included from C:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\src/Webbino.h:21:0,

                 from C:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\examples\FixedIPAddress\FixedIPAddress.ino:20:

C:\Users\Matteo\Documents\Arduino\libraries\Webbino-master\src/WebbinoCore/WebServer.h:28:21: fatal error: PString.h: No such file or directory

 #include <PString.h>

                     ^

compilation terminated.

Uso la libreria Webbino-master alla versione 0.9.0 nella cartella: C:\Users\Matteo\Documents\Arduino\libraries\Webbino-master
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 09, 2018, 12:13 pm
Beh, ora dovrebbe essere chiaro che devi installare anche la libreria PString (http://arduiniana.org/libraries/pstring/) ;).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: Vikingo on Apr 09, 2018, 12:22 pm
Grazie mille....
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gigetto1982 on Sep 19, 2018, 06:04 pm
Ciao a tutti vorrei sapere se questa libreria funziona anche con fishino uno essendo che ha già il wi fi e scheda micro sd. Se si cosa devo impostare per farla funzionare.?


Grazie mille e buona serata.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Sep 19, 2018, 06:08 pm
Com'è al momento no, perché la Fishino usa una libreria sua per dialogare con la scheda wireless montata a bordo.

Farla funzionare sarebbe probabilmente banale, ma mi servirebbe almeno una scheda per farlo, e al momento non ho intenzione di comprarne una. Se qualcuno vuole collaborare...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Sep 21, 2018, 09:54 am
Farla funzionare sarebbe probabilmente banale, ma mi servirebbe almeno una scheda per farlo
... immagino dovrebbe bastare creare una ulteriore coppia .h/.cpp nella carella "WebbinoInterfaces" con le varie funzioni richieste dall'interfaccia o, ancora più semplicemente, modificare la coppia AllWiFi.h/AllWiFi.cpp per inserire la gestione della Fishino ;)

Magari, guardando come sono fatte quelle esistenti, non dovrebbe essere neanche troppo difficile ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Sep 21, 2018, 10:59 am
Confermo, ma non potendolo poi testare eviterei. Già il supporto ad alcune schede è mezzo improvvisato :D.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: CrazyHorse80 on Sep 26, 2018, 10:52 pm
Se posso aiutare, ho una Fishino MEGA R2 e potrei testare il tuo sketch oppure anche provare a modificarlo io per farlo funzionare (anche se non garantisco tempistica ed esito in questo caso :D).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Sep 27, 2018, 09:42 am
Io invece chiedo se su ESP8266 è possibile salvare le pagine usando SPIFFS, cioè la flash interna come fosse una SD (più o meno!)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Sep 27, 2018, 10:10 am
@CrazyHorse: Se vuoi procedere da solo OK, eventualmente ti posso "seguire da lontano".

@zoomx: Al momento no, ma questa è una buona idea, di ESP ne ho in abbondanza e quindi credo di poterlo aggiungere facilmente.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Sep 27, 2018, 01:16 pm
@zoomx: Credo sia fatto, stasera lo testo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Sep 27, 2018, 03:01 pm
 :o
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: CrazyHorse80 on Sep 27, 2018, 06:27 pm
@CrazyHorse: Se vuoi procedere da solo OK, eventualmente ti posso "seguire da lontano".
OK, questo week end provo a buttar giù qualcosa.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 03, 2018, 08:30 am
OK, ci ho messo un po' a collaudarlo, ma il supporto per SPIFFS era OK come l'avevo aggiunto al volo :D.
Code: [Select]
Pages available in SPIFFS:
0. /spiffs.html
New client
Request for "/spiffs.html"
Sending page from SPIFFS file /spiffs.html
Client disconnected


Ora vedo di pusharlo su github e poi te lo faccio provare.

EDIT: OK, pushato su di un branch: https://github.com/SukkoPera/Webbino/tree/esp8266_spiffs_support (https://github.com/SukkoPera/Webbino/tree/esp8266_spiffs_support). @zoomx, se lo testi e mi dici come va, ti ringrazio.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Oct 03, 2018, 08:59 am
Grande!
Io devo solo risolvere il problema della mancata connessione di tutti gli ESP8266 da quando ho cambiato gateway. C'è qualche problema con il Tim Hub ma solo per gli ESP8266, tutti gli altri dispositivi non hanno avuto problemi. Non riescono proprio ad entrare nella rete WiFi.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 03, 2018, 08:29 pm
In un picco di ispirazione, ho anche aggiunto una funzionalità che farà piacere a molti, in particolare a @As_Needed, ovvero il supporto per file binari arbitrari, quindi immagini e tutto quel che si vuole.

Al momento è sperimentale, testato solo su ESP32, ma dovrebbe funzionare ovunque. Si trova su questo branch (https://github.com/SukkoPera/Webbino/tree/binary_support). Ho aggiunto un logo Arduino nell'esempio SimpleServer, quindi si può provare al volo.

Per questo servirebbe davvero un sacco di testing & feedback! ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Oct 03, 2018, 09:15 pm
Riepilogo
scarico dal branch corretto
Cambio webbino_config.h
carico l'esempio SDOnly.ino ed eventualmente lo modifico per evitare errori visto che era previsto per l'SD
Creo la cartella Data e dentro metto un html e qualche file

Carico tutto e provo spero domani di trovare il tempo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 03, 2018, 09:22 pm
Sì, puoi farlo con SimpleServer, così non devi cambiare niente :).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Oct 04, 2018, 09:36 am
Ok funziona!
Ho cambiato una sola riga in webbino_config.h per abilitare l'ESP8266 standalone
Ho caricato l'esempio così com'era ma ho aggiunto la cartella Data con alcuni file all'interno
Ho caricato sketch e cartellaData.


Ho notato che se la pagina HTML vuole caricare un'immagine che è nella spiffs non la carica.
La pagina è questa
Code: [Select]
<html>

<head>
<title> Page 2 </title>
</head>

<body bgcolor="white" text="blue">

<h2> second page - smaller heading e.g. h2 </h2>

This is my second web page with a few more HTML tags.
Let's start with a tag for a horizontal line = <hr>

<img src="hoglogo2.gif">
Razorback Hog Logo
taken from
http://www.ibdhost.com/help/html/
</body>

</html>


e nella spiffs ovviamente c'è il file hoglogo2.gif
La pagina la carica ma l'immagine non c'è


Dove ho errato?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 04, 2018, 09:48 am
Intanto grazie per la prova.

In effetti non ho provato file binari su SD/SPIFFS. Dovrebbero funzionare (per com'era fatto Webbino, il grosso casino era supportare i file binari da flash), ma devo verificare. Ora sarò via fino a martedì, ma poi vedo.

Puoi abilitare il debug dal config e postarlo qua intanto?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Oct 04, 2018, 12:02 pm
Veramente quello che deve ringraziare sono io: Grazie!


Ecco il debug
Code: [Select]
Pages available in flash memory:
0. /index.html
Tags available:
Pages available in SPIFFS:
0. /hoglogo2.gif
1. /index.html
2. /page2.html
New client
Request for "/page2.html"
Sending page from SPIFFS file /page2.html
Client disconnected
New client
Request for "/hoglogo2.gif"
Sending page from SPIFFS file /hoglogo2.gif
Client disconnected
New client
Request for "/favicon.ico"
Client disconnected


Non c'è fretta, erano mesi che te lo volevo chiedere ma poi mi era passato di mente, me lo son ricordato leggendo questo thread.

Un'ultima cosa, questo nel config
Code: [Select]
#ifdef WEBBINO_USE_ESP8266_STANDALONE
#define WEBBINO_ENABLE_SPIFFS
#endif

esclude il caso di ESP8266 standalone che usano la SD, ad esempio il Wemos mini con lo shield DS1307 ha anche lo slot per la microsd.
Meglio lasciarlo decidere all'utente.


Edit:
dimenticavo, ho testato il caricamento di Page2.html sul browser e la gif viene mostrata correttamente, è di 1470 byte.

Una volta che funziona tutto riscrivo meglio l'html e magari lo si aggiunge come esempio.

Edit2: se clicco in modo da caricare la sola immagine ottengo
GIF89ad
Ho quindi provato con wget, il file che arriva è di 7 bytes, cioè la stringa GIF89ad senza altri caratteri.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 04, 2018, 02:15 pm
Ecco il debug
Code: [Select]
Pages available in flash memory:
0. /index.html
Tags available:
Pages available in SPIFFS:
0. /hoglogo2.gif
1. /index.html
2. /page2.html
New client
Request for "/page2.html"
Sending page from SPIFFS file /page2.html
Client disconnected
New client
Request for "/hoglogo2.gif"
Sending page from SPIFFS file /hoglogo2.gif
Client disconnected
New client
Request for "/favicon.ico"
Client disconnected

Uhm, quindi il file viene trovato e inviato... Forse viene inviato male? Puoi provare a disabilitare i tag?


Un'ultima cosa, questo nel config
Code: [Select]
#ifdef WEBBINO_USE_ESP8266_STANDALONE
#define WEBBINO_ENABLE_SPIFFS
#endif

esclude il caso di ESP8266 standalone che usano la SD, ad esempio il Wemos mini con lo shield DS1307 ha anche lo slot per la microsd.
Meglio lasciarlo decidere all'utente.
Non ti seguo, che c'entra che ci sia la SD o meno? Spiegati meglio :). Al momento ogni file richiesto viene ricercato in tutti i posti disponibili, nell'ordine SD, SPIFFS, Flash (solo in quelli attivati, ovviamente). Il file config, in ogni caso, può essere modificato liberamente dall'utente, quel che c'è di default è solo indicativo.


dimenticavo, ho testato il caricamento di Page2.html sul browser e la gif viene mostrata correttamente, è di 1470 byte.

Una volta che funziona tutto riscrivo meglio l'html e magari lo si aggiunge come esempio.

Edit2: se clicco in modo da caricare la sola immagine ottengo
GIF89ad
Ho quindi provato con wget, il file che arriva è di 7 bytes, cioè la stringa GIF89ad senza altri caratteri.
Uhm... Quindi funziona da browser ma non con wget? Moooolto strano, ma effettivamente io ho provato solo con Chrome e Firefox su PC e Safari e Chrome su iPhone.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Oct 04, 2018, 02:29 pm
Riguardo al gif, sembra che del file vengono inviati solo 7 bytes, sia al browser che con wget. Il settimo carattere è uno zero, la mia impressione è che sia stato preso per una stringa.
La possibilità è anche che sia stato preso per una stringa dal browser e da wget, ciò significa che va comunicato qualcosa prima di trasmettere il file.
Il browser è Chrome ma ho provato anche con Firefox.

L'altra questione
Se c'è questo define
WEBBINO_USE_ESP8266_STANDALONE
viene automaticamente aggiunto questo
WEBBINO_ENABLE_SPIFFS

ma se io ho un ESP8266 e uso la SD (non è un caso comune) mi ritrovo che invece webbino pensa che uso spiffs, o sbaglio?

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 04, 2018, 02:53 pm
Aspetta, ma stai usando il branch binary_support o spiffs_support? Mi pare il secondo, che però contiene solo il supporto ai file su SPIFFS, il supporto ai binari l'ho aggiunto nel primo (che in verità segue il secondo).

Dico questo perché per supportare i binari bisogna esattamente "dire al browser" di che file si tratta, come giustamente suggerisci. Questo si fa tramite i MIME Types e l'header Content-Type, cosa che dovrebbe produrre alcune righe di debug che non vedo nel tuo log! Verifica quale branch stai usando!


Se c'è questo define
WEBBINO_USE_ESP8266_STANDALONE
viene automaticamente aggiunto questo
WEBBINO_ENABLE_SPIFFS

ma se io ho un ESP8266 e uso la SD (non è un caso comune) mi ritrovo che invece webbino pensa che uso spiffs, o sbaglio?
WEBBINO_USE_ESP8266_STANDALONE va abilitato manualmente se usi ESP8266 da solo. In questo caso ha senso abilitare automaticamente il supporto a SPIFFS, non vedo grosse ragioni per non farlo. Se hai una SD allora dovrai abilitare anche WEBBINO_ENABLE_SD (o WEBBINO_ENABLE_SDFAT). Nulla ti vieta di disabilitare SPIFFS in quel caso, ma dovrebbero funzionare anche contemporaneamente. Il file viene cercato prima nella SD, poi in SPIFFS e infine in flash, come dicevo, e il primo trovato viene inviato.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Oct 04, 2018, 04:01 pm
spiffs_support e si spiega tutto! Avevo capito che era tutto in quel branch, poco male, funziona tutto basta integrarlo. Avendo tempo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 04, 2018, 04:13 pm
Ottimo!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: CrazyHorse80 on Oct 07, 2018, 01:14 pm
@CrazyHorse: Se vuoi procedere da solo OK, eventualmente ti posso "seguire da lontano".
Da quello che ho potuto vedere io, per supportare Fishino basterebbe modificare il file AllWiFi.h aggiungendo questo in fondo alla riga 26:
Code: [Select]
|| defined (WEBBINO_USE_FISHINO)
Ed inserendo questo alla riga 53:
Code: [Select]

#elif defined (WEBBINO_USE_FISHINO)

#include <Fishino.h>

typedef FishinoClient InternalClient;
typedef FishinoServer InternalServer;



Nel file webbino_config.h, invece, alla riga 35 andrebbe aggiunto questo (e decommentato se serve):
Code: [Select]
//~ #define WEBBINO_USE_FISHINO

Purtroppo non posso testarlo perchè la mia Fishino fa le bizze...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: CrazyHorse80 on Oct 07, 2018, 01:36 pm
Provando a compilare l'esempio LedControl, ottengo questo errore:
Code: [Select]
Sto compilando lo sketch...
"C:\\arduino-1.8.7\\portable\\packages\\fishino\\tools\\avr-gcc\\4.9.2-atmel3.5.4-fishino2/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10807 -DARDUINO_AVR_MEGA2560 -D_FISHINO_MEGA_R2_ -DFISHINO_WIFI -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.7\\portable\\packages\\fishino\\hardware\\avr\\7.5.1\\cores\\arduino" "-IC:\\arduino-1.8.7\\portable\\packages\\fishino\\hardware\\avr\\7.5.1\\variants\\fishino_mega_r2" "-IC:\\arduino-1.8.7\\portable\\sketchbook\\libraries\\Webbino\\src" "-IC:\\arduino-1.8.7\\portable\\sketchbook\\libraries\\PString" "-IC:\\arduino-1.8.7\\portable\\sketchbook\\libraries\\Fishino\\src" "-IC:\\arduino-1.8.7\\portable\\sketchbook\\libraries\\FishinoFlash\\src" "-IC:\\arduino-1.8.7\\portable\\packages\\fishino\\hardware\\avr\\7.5.1\\libraries\\SPI\\src" "-IC:\\arduino-1.8.7\\portable\\sketchbook\\libraries\\FishinoDebug\\src" "-IC:\\arduino-1.8.7\\portable\\sketchbook\\libraries\\FishinoPrintf\\src" "C:\\Users\\Utente\\AppData\\Local\\Temp\\arduino_build_69845\\sketch\\LedControl.ino.cpp" -o "C:\\Users\\Utente\\AppData\\Local\\Temp\\arduino_build_69845\\sketch\\LedControl.ino.cpp.o"
In file included from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/WebbinoCore/WebServer.h:28:0,

                 from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/Webbino.h:21,

                 from C:\Users\Utente\AppData\Local\Temp\arduino_modified_sketch_182804\LedControl.ino:20:

C:\arduino-1.8.7\portable\sketchbook\libraries\PString/PString.h:57:30: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

   inline const size_t length()

                              ^

C:\arduino-1.8.7\portable\sketchbook\libraries\PString/PString.h:61:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

   inline const size_t capacity()

                                ^

In file included from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/WebbinoCore/HTTPRequestParser.h:24:0,

                 from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/WebbinoCore/WebClient.h:25,

                 from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/WebbinoCore/NetworkInterface.h:25,

                 from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/WebbinoCore/WebServer.h:24,

                 from C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/Webbino.h:21,

                 from C:\Users\Utente\AppData\Local\Temp\arduino_modified_sketch_182804\LedControl.ino:20:

C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/webbino_debug.h:44:21: error: expected identifier before 'const'

 #define FlashString const __FlashStringHelper *

                     ^

C:\arduino-1.8.7\portable\sketchbook\libraries\FishinoFlash\src/FishinoFlash.h:154:7: note: in expansion of macro 'FlashString'

 class FlashString

       ^

C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino\src/webbino_debug.h:44:47: error: expected initializer before '*' token

 #define FlashString const __FlashStringHelper *

                                               ^

C:\arduino-1.8.7\portable\sketchbook\libraries\FishinoFlash\src/FishinoFlash.h:154:7: note: in expansion of macro 'FlashString'

 class FlashString

       ^

Uso la libreria Webbino alla versione 0.9.0 nella cartella: C:\arduino-1.8.7\portable\sketchbook\libraries\Webbino
Uso la libreria PString nella cartella: C:\arduino-1.8.7\portable\sketchbook\libraries\PString (legacy)
Uso la libreria Fishino alla versione 7.5.1 nella cartella: C:\arduino-1.8.7\portable\sketchbook\libraries\Fishino
Uso la libreria FishinoFlash alla versione 7.5.0 nella cartella: C:\arduino-1.8.7\portable\sketchbook\libraries\FishinoFlash
Uso la libreria SPI alla versione 1.0 nella cartella: C:\arduino-1.8.7\portable\packages\fishino\hardware\avr\7.5.1\libraries\SPI
Uso la libreria FishinoDebug alla versione 7.2.0 nella cartella: C:\arduino-1.8.7\portable\sketchbook\libraries\FishinoDebug
Uso la libreria FishinoPrintf alla versione 7.2.0 nella cartella: C:\arduino-1.8.7\portable\sketchbook\libraries\FishinoPrintf
exit status 1
Errore durante la compilazione per la scheda Fishino MEGA REV2.

Se non ho interpretato ma, è relativo al file webbino_debug.h...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 09, 2018, 11:46 am
@CrazyHorse80: Mi sa che l'hai fatta un po' troppo semplice... :smiley-roll-sweat:


Comunque, ci ho provato: scarica questo branch (https://github.com/SukkoPera/Webbino/tree/fishino_support) e prova l'esempio SimpleServer. Solo questo, gli altri vanno ancora sistemati.


Fammi sapere.

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: CrazyHorse80 on Oct 09, 2018, 02:00 pm
Purtroppo ho già impacchettato la fishino per rientrare in RMA... Mi sai dire che cosa altro hai cambiato? Non sono certamente un esperto, tutt'altro, ma vorrei capire cosa ho sbagliato oppure non ho visto. Grazie!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 09, 2018, 02:04 pm
Ah ecco  :(. Beh, rimane lì, se qualcuno con una Fishino vorrà provarlo, mi faccia sapere.


Quel che ho dovuto cambiare è lungo da spiegare, ma in generale bisogna scrivere un modulo per la Fishino, che usa la sua API, subordinato a quel #define. Puoi vedere le modifiche qua: https://github.com/SukkoPera/Webbino/compare/binary_support...fishino_support (https://github.com/SukkoPera/Webbino/compare/binary_support...fishino_support).

Un ulteriore casino è stato il dover rinominare la classe FlashString, perché ce n'è una con lo stesso nome tra le librerie di Fishino. Bisogna usare i namespace, dannazione!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: CrazyHorse80 on Oct 09, 2018, 02:07 pm
Grazie! Comunque non ero io che avevo chiesto la modifica, io mi ero offerto di provare a farla... :D
Stasera provo a vedere come hai fatto.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Oct 09, 2018, 02:12 pm
Ah cavolo, ricordavo male!

@gigetto1982: Puoi testare tu, cortesemente?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: io534 on Jan 02, 2019, 03:44 pm
Buongiorno sono nuovo del forum. Sto provando ad utilizzare la libreria Webbino ( uso l'ultima versione disponibile e la versione del software di Arduino è la 1.8.7 per windows) con un ethernet shield v1(chip WIZ5100) montato su un Arduino mega. Lasciando vuoto lo slot per la micro sd l'esempio SimpleServer funziona perfettamente ma, inserendo una micro sd non funziona più ( a volte carica la pagina senza l'immagine, a volte non la carica, a volte ripete il testo della pagina riempiendo tutto lo schermo). Utilizzando l'esempio sd only nel seriale mi da tutto okay ma quando provo a caricare la pagina o non si carica o continua a scrivere   R   all'infinito. Ho provato a cambiare scheda micro sd e anche librerie (ho provato sia con la libreria sd sia con la libreria sdFat), ho anche testato la micro sd con gli esempi della libreria sd e ha funzionato sia in lettura sia in scrittura. Io dovrei riuscire a caricare un file in formato txt dalla micro sd, se qualcuno riesce potreste aiutarmi? Grazie in anticipo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gieffe on Feb 18, 2019, 08:57 am
Buongiorno,

mi riallaccio a questo thread per sapere se esiste un libro, una rivista di settore, o un sito, dove viene spiegato bene come potersi collegare ad un web server per inviare dati e creare una pagina dove poterli visualizzare. Insomma, ho bisogno di capire come funzionano tutte le procedure, a partire da zero, per meglio approcciarmi a questo tipo di argomento.
L'idea è quella di implementare una piccola stazione meteo (temperatura ed umidità per adesso), ma non solo, ad esempio poter visualizzare la temperatura di un ambiente e, all'occorenza, impostare la temperatura di set di un termostato per far partire un relè che comanda una caldaia.
Ringrazio anticipatamente chi vorrà darmi un suggerimento.

Fabrizio
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Feb 18, 2019, 09:13 am
>io534: essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (http://forum.arduino.cc/index.php?topic=113640.0) (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO (http://forum.arduino.cc/index.php?topic=149082.0) ... Grazie. :)

Guglielmo

P.S.: Ti ricordo che, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 18, 2019, 11:21 am
@io534: Scusa, mi ero perso il tuo messaggio. Che versione stai usando?

@gieffe: Difficile trovare un howto che spiega tutto quello che vuoi tu, ci sono un'infinità di "cose" dietro le quinte, andrebbero studiate e capite ad una ad una. In linea di massima, per farla semplice è il webserver che si collega ai sensori, li legge periodicamente (o al momento dell'apertura della pagina, ma sarà lento a rispondere) e rende disponibili i dati via web, così è piuttosto facile quando hai qualcosa come Webbino. Il buon As_Needed ha fatto proprio questo (http://meteoflaminia.zapto.org:4600/index.htm), svariati post addietro.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gieffe on Feb 18, 2019, 12:05 pm
@gieffe: Difficile trovare un howto che spiega tutto quello che vuoi tu, ci sono un'infinità di "cose" dietro le quinte, andrebbero studiate e capite ad una ad una. In linea di massima, per farla semplice è il webserver che si collega ai sensori, li legge periodicamente (o al momento dell'apertura della pagina, ma sarà lento a rispondere) e rende disponibili i dati via web, così è piuttosto facile quando hai qualcosa come Webbino. Il buon As_Needed ha fatto proprio questo (http://meteoflaminia.zapto.org:4600/index.htm), svariati post addietro.
Grazie della risposta.
Quello che ha fatto As_Needed è eccellente, ho visitato il suo sito qualche giorno fa ed proprio quello che interessa fare a me, similarmente.
La ricerca di una dispensa, o che altro, riguardo ai web server, e la loro gestione di dati, ecc., sarebbe opportuna per avere meglio chiaro i passi da fare, visto che le cose a cui metter mano, come dici tu, sono parecchie. Logico che magari tutti gli argomenti che mi interessano non possono essere trattati in un unico testo, ma se intanto esiste qualcosa per chiarire alcuni concetti non sarebbe male.
Saluti,
Fabrizio
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 18, 2019, 12:37 pm
Ma a te interessa mantenere uno storico dei dati? Perché in caso negativo, non esiste nessuna "gestione di dati", basta avere il valore attuale.

Se invece lo vuoi fare, a mio avviso Arduino inizia a stare un po' stretto. Sarebbe bene iniziare a tirare in ballo almeno un Rasberry Pi, su cui mettere database e interfaccia web, usando Arduino solo per interfacciarsi con i sensori. Questo è quello che faccio nel mio progetto Sensoria, ancora molto acerbo.

Un server web che gira su Arduino è da pensare come un metodo rapido per visualizzare qualche dato al volo con un'interfaccia estremamente semplice, nulla di più. Un microcontrollore non è pensato per questi scopi, e forse è pure già troppo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gieffe on Feb 18, 2019, 08:27 pm
Forse mi sono spiegato male.
Devo connettere Aurduino, con i trasduttori e/o attuatori ad esso collegati, ad un server web remoto. Sul server realizzare una pagina web con parametri fisici da visualizzare, sia valore attuale che storico per realizare grafici e statistiche. Da Internet poter visualizzare la pagina.
Ho un po' di nozioni, quà e là, pensavo di potermi approfondire con qualche testo per avere una visione più precisa di tutta l'architettura.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Feb 19, 2019, 09:32 am
Purtroppo, per quello che vuoi fare, ci sono innumerevoli modi. Basta vedere le API dei sistemi cloud che sono tutte diverse fra loro.
Probabilmente puoi ispirarti ai form in html, quando premi invio viene creata una stringa formattata che poi viene interpretata dal server. Nel tuo caso devi crearti la stringa  e poi inviarla alla stessa maniera e sul server avere lo stesso codice.
Questo se vuoi usare un sistema client server basato su web.

Ad esempio potresti usare un server Thingspeak (dovrebbe essere ancora open source) su un PC o anche un RaspberryPi e su Arduino/ESP8266 usare le librerie appositie. 

Un altro sistema che sta avendo molta diffusione è MQTT che però a me non sembra sia orientato a costruire storici ma posso sbagliarmi, non l'ho mai usato.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Feb 19, 2019, 10:18 am
Erm, temo però che siamo un po' OT qui... :smiley-confuse:
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: dlcflv on Mar 24, 2019, 10:36 pm
Scusatemi, prima di cimentarmi a provare Webbino,  vorrei porre una questione, in particolare all'autore di Webbino e a gpb01, che mi pare l'unico che abbia provato l'MKR1000 (anche se i suoi post sull'argomento risalgono a oltre due anni fa).
Io ho fatto un datalogger su MKR1000 che legge alcuni sensori a cadenza regolare, scrive i dati con timestamp su SD card, creando un file al giorno, e rende disponibili i file ad un web client. Il tempo lo prende da un NTP server e non uso l'RTC della scheda (che non è molto preciso). Inoltre mostra alcuni dati su display LCD
Ho usato le librerie WiFi1010, WiFiUpd, TimeLib, SPI, SD, LiquiCristal, OneWire e DallasTemperature.
Dopo aver speso molto tempo a far girare tutto come volevo, quando ho lasciato girare lo sketch definitivo a lungo, ho scoperto che la MKR1000, dopo un certo tempo non fisso e non predeterminabile (ma mai più di due o tre giorni) perde la connessione wifi senza apparente motivo.
Ho cercato in rete e ho visto che il problema è noto, ma non ho trovato soluzioni. In due forum dove il problema sembra afrontato più appofonditamente:
https://forum.arduino.cc/index.php?topic=376619.0
http://forum.arduino.cc/index.php?topic=401107.0
le persone interessate sembra che alla fine abbiano abbandonato l'MKR1000.
Prima di cimentarmi con Webbino vorrei sapere se qualcuno ha fatto prove con l'MKR1000 e ne ha eventualmnete verificato l'affidabilità.
Grazie.

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: dlcflv on Mar 24, 2019, 10:47 pm
Forse è il caso che aggiunga che ho fatto tutti gli aggiornamenti possibili, inclusi firmware e librerie.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Mar 25, 2019, 06:22 am
Ho un'applicazione con MKR1000 che trasmette delle informazioni acquisite circa ogni 20 minuti ad un server via HTTPS ... nell'applicazione ho anche implementato un meccanismo che effettua un ping ad un serve quasi sempre funzionante (Google :D) ogni 5 minuti ... se 3 ping di seguito non vanno a buon fine entro in un ciclo chiuso ed il watchdog, preventivamente attivato, non ricevendo più il normale segnale di funzionamento, effettua il reset della scheda facendo ripartire il tutto.

Poiché al riavvio viene anche inviato sempre un messaggio al server HTTPS, so con esattezza il numero di riavvii e, posso dirti che ho avuto giorni in cui la cosa avveniva 2 volte e ho anche avuto settimane intere in cui non avveniva mai ... quindi mi sembra che SI, ci sia un problema probabilmente nelle librerie della MKR1000, ma a me si presenta in modo casuale e non così frequentemente come sembra capiti a te ... probabilmente per il minor uso della rete che ne faccio.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: dlcflv on Mar 25, 2019, 09:58 am
Grazie gpb01 della sollecita risposta (alle 5:22 di questa mattina!! sei molto mattiniero, oppure non sei nel mio stesso fuso orario).
In pratica confermi che l'MKR1000 ha dei problemi con il wifi! Io non posso resettare troppo spesso, perchè controlla degli attuattori che si prevede lavorino a regime. Il reset prevede una procedura di ricalibrazione che non è nè breve nè inocua, se fatta inopinatamente. Inoltre i miei sensori leggono e agiscono sugli attuatori con frequenza (~ ogni secondo, anche se il logging avviene ~ ogni 10 secondi).
In pratica confermi il mio sospetto che l'MKR1000 è inutilizabile per i miei scopi. E quindi pure lo shield WiFi101.
Peccato, ho speso soldi e tempo invano. Penso che migrerò al ESP8266, come hanno fatto altri nei vari forum.
Comunque, grazie della preziosa consulenza.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Mar 25, 2019, 10:07 am
Grazie gpb01 della sollecita risposta (alle 5:22 di questa mattina!! sei molto mattiniero, oppure non sei nel mio stesso fuso orario).
... sono mattiniero :D , l'orario è quello dato dal server e visualizzato secondo le impostazioni del profilo di cisacuno.

In pratica confermi che l'MKR1000 ha dei problemi con il wifi!
... mah, io riporto quello che ho potuto riscontrare con una semplice applicazione che fa solo delle HTTPS GET e dei ping;  i problemi non credo siano nella scheda o nell'hardware, i problemi, se ci sono, sono nelle librerie e quindi software. ::)

Penso che migrerò al ESP8266, come hanno fatto altri nei vari forum.
... ormai io mi orienterei sul più potente e capace ESP32, tanto a livello di costo siamo oramai li ;)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 25, 2019, 10:27 am
Questa è un'ottima idea, in quanto Webbino è testato in maniera abbastanza approfondita su ESP8266. Un po' meno su ESP32, ma comunque di più che su MKR1000, il cui supporto è puramente sperimentale (io non ce l'ho, per cui non l'ho mai testato di persona).
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: zoomx on Mar 25, 2019, 10:50 am
Ho parecchi ESP8266 che funzionano da qualche anno e un ESP32.
Concordo con Guglielmo, meglio l'ESP32 anche perché ci sono alcune schede che usano una telecamera che hanno già lo slot per microSD (ne ho presa una che deve ancora arrivare). Altrimenti c'è la Wemos mini, lo shield SD e lo shield per lo schermino OLED (molto piccolo!).

L'ESP32 ha più risosrse per le connesioni cifrate e inoltre mi si connette senza problemi al Tim Hub, mentre tutti gli ESP8266 non ne vogliono sapere, ma hanno problemi solo con il Tim Hub.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Mar 29, 2019, 02:21 pm
Ciao,
ho scaricato webbino dal link nel primo messaggio, carico la libreria, tutto ok, ma non mi compila, cosa sbaglio?
Uso arduino 1.8.9, mi da errore come se la libreria non fosse presente nella cartella...
Grazie, saluti
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Mar 29, 2019, 02:50 pm
Naturalmente hai corretto il file webbino_config.h per la tua configurazione hardware vero ? ;)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Mar 29, 2019, 07:19 pm
Emh... no, ora verifico.
Grazie

Ho verificato, da quel file si sceglie il tipo di scheda ethernet, ed è quella giusta, sto utilizzando la 5100, ma la compilazione non avviene comunque.
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 29, 2019, 07:32 pm
Che errore hai?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Mar 29, 2019, 07:37 pm
Che errore hai?
Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), Scheda:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Users\nn\Documents\Arduino\libraries\Webbino-master\src/Webbino.h:21:0,

                 from C:\Users\nn\Documents\Arduino\libraries\Webbino-master\examples\LedControl\LedControl.ino:20:

C:\Users\nn\Documents\Arduino\libraries\Webbino-master\src/WebbinoCore/WebServer.h:29:21: fatal error: PString.h: No such file or directory

compilation terminated.

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.

Questo è l'errore che mi restituisce...

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Mar 29, 2019, 07:57 pm
Devi installare anche la libreria PString (http://arduiniana.org/libraries/pstring/) !

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Mar 29, 2019, 08:03 pm
Devi installare anche la libreria PString (http://arduiniana.org/libraries/pstring/) !

Guglielmo
Grazie, problema risolto, adesso compila ;)
grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Mar 29, 2019, 08:28 pm
Grazie, problema risolto, adesso compila ;)
grazie
Ma forse sono solo all'inizio dei problemi :D sto cercando nei vari messaggi, ma non trovo...
Scusatemi, ma i parametri internet: ip, mask, etc dove vanno inseriti? Io sto usando l'esempio LedControl, vedo delle impostazioni wifi nel codice, ma non ethernet, mi sono confuso?
Grazie per la pazienza
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Mar 30, 2019, 12:25 am
Se non vuoi usare DHCP, dovrebbe esserci un esempio FixedIPAddress che ti fa vedere come assegnare IP statico.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Mar 30, 2019, 09:55 pm
Se non vuoi usare DHCP, dovrebbe esserci un esempio FixedIPAddress che ti fa vedere come assegnare IP statico.
Grazie, farò delle prove...
Ciao
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 01, 2019, 08:55 pm
Rieccomi,
sto riscontrando parecchi problemi, non riesco a capire, spiego quà, forse a qualcuno è già successo, parto da capo, sto utilizzando arduino mega, una shield W5100 mini, come questa:

https://www.ebay.it/itm/SHIELD-MINI-W5100-modulo-ETHERNET-per-ARDUINO-ART-CV05/262454631406?hash=item3d1b83dbee:g:ltYAAOSwHsRYE0KC

Ho collegato i pin miso, mosi, sck, reset, oltre a gnd e +5V, (dubbio, il pin ss va collegato?) e riscontro difficoltà a programmare arduino se il modulo è collegato, se lo scollego, tutto si programma normalmente, naturalmente provato a dare alimentazione esterna, pensando la usb non ce la facesse, ma fa uguale; comunque sia anche programmando senza modulo, se apro la seriale ho comunque errori sulla connessione, sia dinamica che statica.
Ipotizzo problema al modulo? O sbaglio qualcosa?

Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 01, 2019, 09:11 pm
SS va collegato, e prova a non collegare il RESET.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 01, 2019, 09:14 pm
Ok, visto ora i miei appunti, l'ss ci vuole, ma da dove si seleziona il pin nello sketch?
Provo a togliere il reset ;)
Grazie

edito:
ok per la programmazione senza pin del reset, l'SS l'ho collegato al pin 53 del mega, penso che tu l'abbia impostato da libreria, nel caso non fosse il 53, come lo cambio? Oppure, che pin hai utilizzato?
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 01, 2019, 10:20 pm
Uhm, temo di non averlo previsto :smiley-sweat:.


In realtà è deciso dalla libreria Ethernet, prova 10 o 53, ora verifico.

EDIT: Confermo 10!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 02, 2019, 01:42 pm
Ciao,
si, va bene col 10, grazie, scusa le noie, ora funzioa tutto correttamente  ;)
ciao
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 03, 2019, 06:07 pm
Rieccomi ancora,
scusate la semplice domanda, ma nella SD, cosa ci va? La pagina del sito, ok, ma in che formato è? Ce n'è qualcuna da provare per vedere se tutto funziona? Da dove posso scaricare il file?
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 03, 2019, 07:32 pm
Puoi metterci quel che ti pare. Normali file HTML, immagini gif, png e jpg (mi pare), ecc...

EDIT: Qui (https://github.com/SukkoPera/Webbino/blob/master/src/WebbinoCore/MimeTypes.h#L51), con un po' di fantasia, vedi i tipi di file supporati. Quelli non compresi vengono inviati come configurato qui (https://github.com/SukkoPera/Webbino/blob/master/src/webbino_config.h#L65).

Ogni esempio ha una cartella webroot con qualche semplice roba di esempio.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 04, 2019, 08:00 pm
Grazie Sukko, ho trovato il file... Ora ho un'altro problema: carico il tuo esempio SDOnly, arduino mega, shield ethernet, viene vista, in seriale vedo i dati DHCP etc.
Se inserisco la shield SD, in seriale mi da come risposta che non è possibile configurare  DHCP, in pratica non viene vista la shield ethernet, come se andassero in conflitto, l'ethernet è collegata al pin 10 e infatti funziona, e la SD al pin 4.
Ho provato miei vecchi sketck con solo la shield SD e tutto funziona, quindi escludo problemi alla shield...
Ci sto impazzendo

Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 04, 2019, 08:53 pm
Prova il metodo di cui abbiamo discusso vivacemente qua sul forum tempo fa:

pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);

Aggiungi queste righe come prima cosa nel setup().
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 04, 2019, 08:58 pm
Prova il metodo di cui abbiamo discusso vivacemente qua sul forum tempo fa:

pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);

Aggiungi queste righe come prima cosa nel setup().
Provato, fa uguale...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 04, 2019, 11:21 pm
Ma se monti lo shield SD, un qualunque esempio della libreria Ethernet funziona?
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 05, 2019, 08:46 am
Ma se monti lo shield SD, un qualunque esempio della libreria Ethernet funziona?
No, pare non funzioni proprio la shield, sto indagando a livello hardware.
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 05, 2019, 09:03 pm
Ho fatto alcuni test, sembra che le 2 shield non siano compatibili, a qualcuno è capitato? Sia che carico uno sketch per SD, se sta la sola shield SD, funziona, se collego anche la shield ethernet, non va più; e uguale il contrario, se carico uno sketch ethernet, se è da sola la shield ethernet, funziona, se collego anche la shield SD, non funziona più.
Naturalmente in entrambe le prove ho portato alto il pin SS della shield non utilizzata.
Magari ci sono interfacce non compatibili fra di loro? O pensate sia un problema software?
devo cercare altre shield?
Grazie mille, scusate la rottura di scatole :D
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Apr 05, 2019, 09:28 pm
Guarda, ormai non mi meraviglio più di nulla ...
... abbiamo già dimostrato in QUESTA (https://forum.arduino.cc/index.php?topic=595836.0) discussione che la "USB Host Shield di Arduino" è "bacata" e NON funziona con altre schede che usano il bus SPI, quindi ... non mi stupisce se hai trovato un'altra scheda progettata con i piedi come quella ... ::)

Bisognerebbe avere gli schemi esatti e fare le opportune verifiche ... 

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 05, 2019, 09:37 pm
Guarda, ormai non mi meraviglio più di nulla ...
... abbiamo già dimostrato in QUESTA (https://forum.arduino.cc/index.php?topic=595836.0) discussione che la "USB Host Shield di Arduino" è "bacata" e NON funziona con altre schede che usano il bus SPI, quindi ... non mi stupisce se hai trovato un'altra scheda progettata con i piedi come quella ... ::)

Bisognerebbe avere gli schemi esatti e fare le opportune verifiche ...

Guglielmo
Ah, andiamo bene, allora è possibile un problema di shield... Uff, proverò a comprare altro ;)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Apr 05, 2019, 10:26 pm
Ah, andiamo bene, allora è possibile un problema di shield... Uff, proverò a comprare altro ;)
... si ma cerca di comprare qualche cosa di "documentato" !!!

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 06, 2019, 12:22 pm
Ciao,
Guglielmo vedo di seguire il tuo consiglio ;)
Una domanda a Sukko, per ora se carico la pagina nel codice, usando una mega, la memoria mi dovrebbe bastare, ma ho letto che ci vuole un programma per convertire la pagina html nelle stringhe da inserire nello sketch? Ce la posso fare? Puoi indicarmi qualcosa?
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Apr 06, 2019, 12:32 pm
... se guardi bene dentro la cartella di webbino, trovi una cartella tools dove trovi l'apposito programmino python (html2h.py) da usare per convertire pagine html nei files .h che cerca la libreria :)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 06, 2019, 01:18 pm
... se guardi bene dentro la cartella di webbino, trovi una cartella tools dove trovi l'apposito programmino python (html2h.py) da usare per convertire pagine html nei files .h che cerca la libreria :)

Guglielmo
Grazie, non avevo visto :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 19, 2019, 12:24 pm
Rieccomi,
ho comprato la shield ufficiale, con lan e sd insieme, ora funziona tutto, riesco a vedere correttamente la pagina...
Una domanda, sicuro banale per voi, ma per accedere alla pagina dall'esterno bisogna appoggiarsi ad un server con ip fisso? Non ci sono altri metodi?
Grazie :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 19, 2019, 12:58 pm
O ip fisso o metti su un server VPN e ti colleghi a questo, risultanto di fatto all'interno della tua rete anche quando sei fuori.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 19, 2019, 02:05 pm
Il VPN è un servizio online che fornisce un ip fisso registrandosi giusto? Quindi si accede tramite hostname...
E' l'unico modo? Anche se imposto da arduino l'ip fisso e non dinamico, è uguale, bisogna sempre appoggiarsi a un servizio online?
grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 19, 2019, 02:48 pm
Immagino ci siano servizi VPN online, ma personalmente non li conosco. Io uso OpenVPN su un NAS Synology o su un Rasberry Pi, gestisco la cosa da solo, insomma. Quel che uso di online è un servizio IP dinamico che mi permette di raggiungere sempre il mio IP che cambia con lo stesso hostname (ma presto gestirò da solo pure questo).

Già che siamo in tema ricordo che, come già detto in passato, un webserver su Arduino è un mezzo aborto concettuale, io sconsiglio vivamente di esporlo su Internet, la soluzione tramite VPN è l'unica accettabile per me.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 19, 2019, 07:57 pm
Immagino ci siano servizi VPN online, ma personalmente non li conosco. Io uso OpenVPN su un NAS Synology o su un Rasberry Pi, gestisco la cosa da solo, insomma. Quel che uso di online è un servizio IP dinamico che mi permette di raggiungere sempre il mio IP che cambia con lo stesso hostname (ma presto gestirò da solo pure questo).

Già che siamo in tema ricordo che, come già detto in passato, un webserver su Arduino è un mezzo aborto concettuale, io sconsiglio vivamente di esporlo su Internet, la soluzione tramite VPN è l'unica accettabile per me.

Ciao,
premetto che non so nulla di queste cose di rete, anni fa avevo collegato arduino in rete per vedere lo stato antifurto da fuori, e ci entravo tramite un servizio di ip dinamico come dici tu.
Detto questo, non capisco perchè utilizzi un servizio VPN (gestito da te) se comunque ti devi appoggiare a qualcuno online che ci rende il nostro IP raggiungibile (per caso è per sicurezza? per gestire password etc?)
Sconsigli sempre per motivi di sicurezza? Quindi utilizzando un vpn si risolve la sicurezza?
Se non possiamo parlarne sul forum ci sentiamo in privato?
Comunque devo registrarmi su un servizio che mi indirizzi sempre? Per ora non ho alternative mi pare...
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 21, 2019, 09:07 pm
Il tuo IP pubblico è raggiungibile comunque. C'è un sacco di gente che non ha di meglio da fare che scansionare intere classi di IP alla ricerca di porte aperte e servizi vulnerabili. Il fatto che il tuo IP diventi raggiungibile tramite ziopippo.antani.net non cambia niente. Chi proverà ad accedervi lo farà perché lo troverà scansionando l'intero range di IP Wind, ad esempio, non certo perché "azzeccherà" l'hostname che gli fai puntare.

Ora, se tu esponi un server HTTP basato su Arduino su quell'indirizzo, capisci che mandarlo in palla è questione di un attimo (bastano 5 connessioni contemporanee...), ma soprattutto se non metti nemmeno una password (cosa comunque difficile da fare BENE su Arduino) a proteggere il tuo antifurto, chiunque lo potrà disattivare.

Usare una VPN è molto più sicuro, perché diventa l'UNICO servizio esposto su Internet, e la cui affidabilità è comprovata. Inoltre, con OpenVPN ad esempio serve una chiave di 2048 byte (o anche più) per collegarsi, oltre che - volendo - nome utente e password, quindi capisci che di fatto ci potrai entrare solo tu, e a quel punto potrai collegarti all'Arduino come se fossi direttamente in LAN con lui. Inoltre tutte le comunicazioni sono cifrate in maniera più che sicura.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 21, 2019, 09:31 pm
Il tuo IP pubblico è raggiungibile comunque. C'è un sacco di gente che non ha di meglio da fare che scansionare intere classi di IP alla ricerca di porte aperte e servizi vulnerabili. Il fatto che il tuo IP diventi raggiungibile tramite ziopippo.antani.net non cambia niente. Chi proverà ad accedervi lo farà perché lo troverà scansionando l'intero range di IP Wind, ad esempio (151.0.0.0/8 o qualcosa di simile), non certo perché "azzeccherà" l'hostname che gli fai puntare.

Ora, se tu esponi un server HTTP basato su Arduino su quell'indirizzo, capisci che mandarlo in palla è questione di un attimo (bastano 5 connessioni contemporanee...), ma soprattutto se non metti nemmeno una password (cosa comunque difficile da fare BENE su Arduino) a proteggere il tuo antifurto, chiunque lo potrà disattivare.

Usare una VPN è molto più sicuro, perché diventa l'UNICO servizio esposto su Internet, e la cui affidabilità è comprovata. Inoltre, con OpenSSL ad esempio serve una chiave di 2048 byte (o anche più) per collegarsi, oltre che - volendo - nome utente e password, quindi capisci che di fatto ci potrai entrare solo tu, e a quel punto potrai collegarti all'Arduino come se fossi direttamente in LAN con lui. Inoltre tutte le comunicazioni sono cifrate in maniera più che sicura.

Grazie, sei stato chiaro, non conoscevo queste cose, sorry, pensavo di poter fare una password nel codice di arduino, ma mi hai già risposto... vedrò di utilizzare un servizio VPN, non credo di essere in grado di farmelo come hai fatto tu, almeno per ora...
Nel frattempo vedo se riesco almeno a fare il codice per leggere dei dati e per comandare qualcosa :)
Grazie ancora
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 21, 2019, 09:36 pm
Una password puoi anche metterla, ma il primo che la trova e prova a farne bruteforcing, in meno di un secondo ti impalla lo shield. Quindi se ogni volta che vuoi accederci lo trovi down, diventa poco utile.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 25, 2019, 01:25 pm
Una password puoi anche metterla, ma il primo che la trova e prova a farne bruteforcing, in meno di un secondo ti impalla lo shield. Quindi se ogni volta che vuoi accederci lo trovi down, diventa poco utile.
Grazie, non lo sapevo, non sono a conoscenza di questo ramo, vedo cosa posso fare ;)
Grazie infinite per gli aiuti :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 25, 2019, 09:28 pm
Ciao Sukko,
leggendo al post 9, dove si spiega questa istruzione:
Code: [Select]

EasyReplacementTag (tagFreeRAM, FREERAM, evaluate_free_ram);

ti chiedo chiarimenti, come già detto, tra parentesi, il parametro centrale è quello che si trova fra virgolette nella pagina html, e quindi sarà come mi serve, tipo MIO_VALORE...

Il terzo parametro è utilizzato nella PString, e serve alla libreria webbino giusto? Posso scrivere sempre quello che voglio? Tipo evaluate_mio_valore? Evaluate deve essere così per forza? O posso scrivere anche mio_valore?

Infine il primo parametro che è denominato tag, a cosa serve? Devo fare tagMioValore? Non lo vedo da altre parti nel codice, è utilizzato solo dalla libreria?

Scusa le domande magari banali, ma per me è un tantito complicato :)

Grazie

PS Aggiungo una domanda, ho provato l'esempio SDOnly, i valori non vengono visualizzati nella pagina, c'è da impostare qualcosa in particolare?

Grazie di nuovo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 26, 2019, 12:35 am
Il primo parametro è come vuoi, basta che lo riporti uguale sotto nella lista dei tag.

Il secondo è la stringa che quando viene trovata nell'html scatena una chiamata di funzione.

Il terzo è il nome della funzione da chiamare, i cui parametri li puoi vedere nei vari esempi.

Ce ne può essere un eventuale quarto che è un parametro da passare alla funzione, in modo da riciclare la stessa per più stringhe.

Cosa succede nell'SDOnly? Non ho capito.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 26, 2019, 08:45 am
Il primo parametro è come vuoi, basta che lo riporti uguale sotto nella lista dei tag.

Il secondo è la stringa che quando viene trovata nell'html scatena una chiamata di funzione.

Il terzo è il nome della funzione da chiamare, i cui parametri li puoi vedere nei vari esempi.

Ce ne può essere un eventuale quarto che è un parametro da passare alla funzione, in modo da riciclare la stessa per più stringhe.

Cosa succede nell'SDOnly? Non ho capito.
Ok, provo a sostituire i parametri con i miei e vedo di non avere errori...

Nell'esempio SDOnly, i parametri nell'html non prendono il valore, la pagina si apre, ma appare il 2° parametro, senza il valore che dovrebbe esserci.

Ciao
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 26, 2019, 09:05 am
Uhm, strano.  Verifica che i tag siano abilitati nel config.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 26, 2019, 01:16 pm
I tag sono abilitati...
Allego codice, config
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Apr 26, 2019, 06:24 pm
Mooooolto strano. In questi giorni sono fuori, quando torno vedo.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Apr 26, 2019, 08:24 pm
Mooooolto strano. In questi giorni sono fuori, quando torno vedo.
Certamente, quando vuoi, buona vacanza :D
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on May 07, 2019, 09:25 am
Ciao Sukko,
sei mica riuscito a darmi un'occhiata al codice?
Grazie :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 07, 2019, 10:02 am
No, nel weekend mi hanno consegnato i mobili nuovi per il mio "lab", quindi al momento è tutto sbaraccato, ci vorrà un po' per rimettere a posto e tornare in funzione :( .
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on May 07, 2019, 02:00 pm
No, nel weekend mi hanno consegnato i mobili nuovi per il mio "lab", quindi al momento è tutto sbaraccato, ci vorrà un po' per rimettere a posto e tornare in funzione :( .
Capisco, avrai un bel po' da fare allora... Buon lavoro, io vedo cosa riesco a fare da solo.
Grazie :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on May 08, 2019, 10:42 am
Thread "promosso" alla sezione Megatopic. :)

Buona continuazione.

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 08, 2019, 11:03 am
Wow, che onore! :smiley-kiss: Grazie!
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on May 10, 2019, 01:22 pm
Ciao Sukko,
ho trovato cosa non funzionava nell'esempio SDOnly, manca questa stringa nel setup, dopo l'inizializzazione della SD; che ho trovato in altri esempi:

Code: [Select]

webserver.addStorage (sdStorage);


ora tutto funziona ;)

Altra domanda, vorrei usare dei pulsanti come nell'esempio LedControl, ma ho notato che in quel caso avevi inserito la pagina html nel codice, si può fare lo stesso con la pagina in SD?

Grazie, un saluto
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on May 10, 2019, 02:51 pm
Erm, a me sembra che ci sia (https://github.com/SukkoPera/Webbino/blob/master/examples/SDOnly/SDOnly.ino#L248).

L'altra cosa che dici al momento non è possibile. E' tracciata da questa issue (https://github.com/SukkoPera/Webbino/issues/6), non è particolarmente difficile da fare, devo solo trovare un buon modo per dichiarare qualche funzione vada chiamata per quale pagina. Se hai idee...
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on May 10, 2019, 07:56 pm
Erm, a me sembra che ci sia (https://github.com/SukkoPera/Webbino/blob/master/examples/SDOnly/SDOnly.ino#L248).

L'altra cosa che dici al momento non è possibile. E' tracciata da questa issue (https://github.com/SukkoPera/Webbino/issues/6), non è particolarmente difficile da fare, devo solo trovare un buon modo per dichiarare qualche funzione vada chiamata per quale pagina. Se hai idee...
Hai ragione, la stringa c'è, eppure più di una volta ho caricato lo sketch di esempio e non funzionava, me e sono accorto provando SDWhitFlash... Chissà cosa ho combinato... Scusa il disguido.

Chiedi a me se posso aiutarti :) già fare questo per me è troppo, non sono proprio in grado, in questo ramo mi accontento di copiare qualche programma fatto da altri, non ho le conoscente per fare da solo... Proverò ad integrare altri sketch, sperando non vadano in conflitto con webbino :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 07, 2019, 08:13 am
Ciao,
in questi giorni non ho potuto lavorare a questo progetto, vedo di riprendere ora... Ho deciso di usare 2 arduino per fare quello che voglio, uno col progr SDOnly, per ricevere i dati da remoto; e l'altro con LedControl per comandare qualcosa da remoto. Mi sono bloccato col programmino in Python per convertire la pagina in codice da inserire nello sketch, ho scaricato Python, e ho cercato di aprire il file che si trova nella cartella degli esempi (html2h), ma si apre una finestra dos e si richiude... La versione è Python 2.7, forse ne serve un'altra? Scusate, ma non ho mai usato Python.
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 07, 2019, 10:06 am
2.7 va bene, devi lanciarlo da linea di comando e passargli il nome della cartella con i file da mettere sul server.

Stavo lavorando a una versione con interfaccia grafica ma mi ero rotto le scatole :D. Vedo se riesco a riprenderla in mano.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 07, 2019, 11:02 pm
2.7 va bene, devi lanciarlo da linea di comando e passargli il nome della cartella con i file da mettere sul server.

Stavo lavorando a una versione con interfaccia grafica ma mi ero rotto le scatole :D. Vedo se riesco a riprenderla in mano.
Vabbè, grafica o meno, cambia poco, è solo che le cose nuove vanno sempre imparate... Ho provato a fare da riga di comando, ma ovviamente non mi funziona, ho messo questa stringa: C:\Users\nn\Desktop\html2h
Il file è sul desktop, ma mi dice comando errato, se hai voglia, mi daresti la sintassi del comando da inserire in python?
Grazie infinite
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 10, 2019, 11:44 am
Semplicemente:

Code: [Select]
python html2h.py webroot > html.h

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 11, 2019, 03:55 pm
Semplicemente:

Code: [Select]
python html2h.py webroot > html.h


Ciao, mi tocca rinunciare, mi dice sintassi errata....
Ma tu eri andato avanti a provare a inserire led control insieme a sdonly? Come avevi suggerito quà: https://github.com/SukkoPera/Webbino/issues/6
La cosa funziona? Posso provare? Se ci capisco :D
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 11, 2019, 04:58 pm
Se scrivi python e basta cosa succede? Forse non l'hai inserito nel path?

Mi dicono che ancora non funziona con quella modifica, ma non ho ancora avuto tempo di verificare.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 12, 2019, 12:57 pm
Ciao,
se scrivo solo python ho questa risposta:
Code: [Select]

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined


nella cartella di python ci sono 2 modi di aprire il programma:

Python 3.7
IDLE python

ma con entrambi il problema è il solito...
Grazie
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 12, 2019, 01:00 pm
Ma questo lo stai già scrivendo dentro a Python, allora! Devi scriverlo da un normale prompt dei comandi!

E nota che 3.7 probabilmente NON va bene, meglio il 2.7.
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 12, 2019, 01:09 pm
Ho reinstallato python 2.7, aperto il prompt dei comandi di windows, la risposta è questa:

Code: [Select]

C:\Users\nn>python
"python" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.

C:\Users\nn>python html2h.py webroot > html.h
"python" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Jun 12, 2019, 01:41 pm
... magari ti dovrai posizionare nella cartella di python dove si trova l'eseguibile (se il percorso non è stato aggiunto alla PATH) ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 12, 2019, 01:51 pm
Perdonatemi, sono cose che non so... Posizionandomi nella cartella di python, il comando python ora fornisce delle informazioni...
Se faccio il comando: python html2h.py webroot > html.h
ricevo errore, immagino che devo inserire la pagina web da convertire da qualche parte, ma dove?
Anche il file html2h va messo in qualche cartella?
Scusatemi :)
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: gpb01 on Jun 12, 2019, 02:12 pm
devi dare tutti i percorsi completi ... dove si trova html2h.py, dove si trova webroot, dove vuoi che venga creato html.h, altrimenti lui cerca tutto e salva nella cartella dove ti trovi ::)

Guglielmo
Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: SukkoPera on Jun 12, 2019, 02:40 pm
La cosa più semplice è che copi la webroot nella cartella di python, lo lanci da lì e poi sposti l'html.h nella cartella dello sketch.

In alternativa, qua (http://orbitals.com/programs/pyexe.html) c'è un interprete python contenuto in un singolo eseguibile, che puoi copiare insieme all'html2h.py (a questo punto usa py al posto di python nel comando).

Title: Re: Webbino - Server web "dinamico" per Arduino
Post by: thedrifter on Jun 13, 2019, 12:09 pm
Grazie, lo so, sono duro, ma stavolta ci sono arrivato :D
Ho capito come funziona, purtroppo è una vita che non si usa la riga di comando, almeno io :) e certe cose si dimenticano.
Grazie a tutti :)