Arduino Forum

International => Italiano => Software => Topic started by: tototer on Oct 13, 2016, 07:54 pm

Title: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 13, 2016, 07:54 pm
Buonasera a tutti,
da giorni sto lavorando al mio primo progetto con arduino. ho un piccolo impiantino fotovoltaico off grid. composto da un pannello da 100w, una batteria, un regolatore di carica ed un inverter. l'idea era quella di poter controllare i parametri della produzione e dei consumi e di permettermi di accendere o spegnere inverter e l'illuminazione a 12volt. per fare questo ho acquistato diversi sensori tra cui quello di voltaggio (per controllare la tensione della batteria) due sensori di corrente (per controllare la corrente prodotta e consumata) e due relè per spegnere ed accendere le luci e l'inverter.
Premetto che non ho mai programmato ed ho fatto tutto da autodidatta, sono arrivato ad un punto in cui riesco a leggere tutti i valori perfettamente tramite porta seriale. Quindi ieri ho fatto una pagina carica in html, e ho pensato di mandare i valori che leggo tramite serial monitor a questa pagina in modo da poter vedere i dati e comandare il mio arduino uno ovunque mi trovi.

come hardware ho:

Arduino uno
Scheda ethernet w5100

qualche anima pia mi aiuta a fare comunicare la pagina html con il mio arduino.

posto a seguire le immagini sia dei valori che ho con serial monitor.
sia la pagina html come l'ho preparata.

grazie a tutti
Title: Re: Come inviare i dati da ARCUINO ad una pagina HTML
Post by: gpb01 on Oct 13, 2016, 07:58 pm
Buona sera,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (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 attenzione il su citato REGOLAMENTO (http://forum.arduino.cc/index.php?topic=149082.0) ... Grazie. :)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 13, 2016, 08:28 pm
appena fatto i saluti, grazie mille
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 13, 2016, 08:46 pm
Scaricati QUESTO (https://github.com/SukkoPera/Sukkino) insieme di librerie e prova a guardare gli esempi e la documentazione di "Webbino", un modulo per fare pagine web su Arduino integrate con i dati acquisiti.

E' scritto da un assiduo utente del forum (SukkoPera) che può darti tutto l'aiuto ;)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 13, 2016, 09:19 pm
La grande Webbino e io ne sono un utilizzatore :D
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 14, 2016, 01:40 pm
Ragazzi nessun aiuto?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 14, 2016, 01:48 pm
Ti consiglio di dare un'occhiata a questo (http://forum.arduino.cc/index.php?topic=384859.150) post, il 159.

Poi comunque dovresti avere una micro SD da inserire nella ethernet shield e su quella micro SD deve esserci questa pagina HTML che vuoi usare ;) Il nome di questo file deve essere al massimo 7+3 caratteri, ovvero ad esempio, index.htm
Dove vuoi inserire dei determinati valori, devi metterci dei tag, che so tipo : #DATA# scritto in maiuscolo e poi dopo nel codice andrai a definire quel #DATA#
Ma per prima cosa devi avere una micro SD con una pagina HTML come la vuoi tu. La puoi scrivere anche nel Note di windows e puoi prendere anche quella hai attualmente ;) Vai sulla tua pagina attuale nel broswer e poi con F12 e 'copy outer html' puoi copiare il tuo codice e inserirlo in Note e avrai la copia della tua pagina attuale.

Un esempio di pagine HTML da poter usare te lo metto in allegato. Ovviamente non centra niente con il tuo argomento, è giusto per farti vedere cosa intendo per TAG. Su quell'allegato che ti metto è usato il $ per i TAG e non il #
Se userai parecchi colori sulle tue pagine ti consiglio di usare il dollaro e dovrai cambiare la definizione del TAG sul file 'webbino_config.h' e 'webbino_common.h' (sono file che trovi all'interno della libreria di Webbino)

So che magari ti sembrerà tanta roba ma è più facile a dirsi che a farsi ;)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 17, 2016, 03:56 pm
Grazie mille, quello che mi sfugge è il seguente passaggio:

nel mio sketch caricato su arduino tramite seriale ottengo a video il valore della temperatura nel seguente modo:

Code: [Select]


Serial.print("\t TEMPERATURA INTERNA: ");
Serial.print(temperature,2);



ho caricato su sd un file index.htm

con la parola #temperatura#

come dico alla pagina html di prendere il valore da
Code: [Select]
Serial.print(temperature,2); ?

e sopratutto come dico al arduino di aprire il file html contenuto in sd?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 17, 2016, 04:41 pm
È tutto spiegato nel post 159 linkato da @As_Needed (http://forum.arduino.cc/index.php?topic=384859.msg2768454#msg2768454). Dai un'occhiata lì e poi ci risentiamo.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 05:04 pm
Spero che nel file non c'è scritto SOLO esclusivamente #temperatura# che comunque al massimo DEVE essere:

#TEMPERATURA#

:)

Prima cosa devi configurare webbino per quello che vuoi fare tu:

1) Vai in webbino_config.h e vedrai che ci sarà una riga che ha queste diciture, che devono diventare così:

Code: [Select]
#define WEBBINO_USE_WIZ5100
//~ #define WEBBINO_USE_ENC28J60
//~ #define WEBBINO_USE_ESP8266



(Questo perché tu usi la ethernet shield con WIZ5100)

Poi usando l'SD, devi scommentare sempre in quel file, questa riga, così:

Code: [Select]
#define WEBBINO_ENABLE_SD

E commentare così questa:

Code: [Select]
//~ #define WEBBINO_ENABLE_SDFAT


Stessa cosa in webbino_common.h




Prima di incominciare a visualizzare qualcosa, ti consiglio di guardare gli esempi :) (Lo so che dà gusto vedere i risultati :D )

Per prima cosa carica un esempio così e vedi se ti vede quella pagina che dici di aver creato, per ora lascia perdere i TAGS :

Code: [Select]
#include <Webbino.h>
#include <avr/pgmspace.h>

#define SD_SS 4
WebServer webserver;

#include <WebServer_WIZ5100.h>
NetworkInterfaceWIZ5100 netint;
EthernetServer server(80);

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

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

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

  return subBuffer;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

static PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
  extern int __heap_start, *__brkval;
  int v;

  subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));

  return subBuffer;
}



// Max length of these is MAX_TAG_LEN (24)
static const char subMacAddrStr[] PROGMEM = "NET_MAC";
static const char subIPAddressStr[] PROGMEM = "NET_IP";
static const char subNetmaskStr[] PROGMEM = "NET_MASK";
static const char subGatewayStr[] PROGMEM = "NET_GW";
static const char subNetConfSrcStr[] PROGMEM = "NET_CONF_SRC";
static const char subWebbinoVerStr[] PROGMEM = "WEBBINO_VER";
static const char subUptimeStr[] PROGMEM = "UPTIME";
static const char subFreeRAMStr[] PROGMEM = "FREERAM";

static const var_substitution subMacAddrVarSub PROGMEM = {subMacAddrStr, evaluate_mac_addr, NULL};
static const var_substitution subIPAddressVarSub PROGMEM = {subIPAddressStr, evaluate_ip, NULL};
static const var_substitution subNetmaskVarSub PROGMEM = {subNetmaskStr, evaluate_netmask, NULL};
static const var_substitution subGatewayVarSub PROGMEM = {subGatewayStr, evaluate_gw, NULL};
static const var_substitution subNetConfSrcVarSub PROGMEM = {subNetConfSrcStr, evaluate_ip_src, NULL};
static const var_substitution subWebbinoVerVarSub PROGMEM = {subWebbinoVerStr, evaluate_webbino_version, NULL};
static const var_substitution subUptimeVarSub PROGMEM = {subUptimeStr, evaluate_uptime, NULL};
static const var_substitution subFreeRAMVarSub PROGMEM = {subFreeRAMStr, evaluate_free_ram, NULL};

static const var_substitution * const substitutions[] PROGMEM = {
  &subMacAddrVarSub,
  &subIPAddressVarSub,
  &subNetmaskVarSub,
  &subGatewayVarSub,
  &subNetConfSrcVarSub,
  &subWebbinoVerVarSub,
  &subUptimeVarSub,
  &subFreeRAMVarSub,
  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 (9600);
  Serial.println (F("Using Webbino " WEBBINO_VERSION));

  byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
  };
  byte ip[] = {
    192, 168, 1, 51//l'ip usato dalla scheda ethernet              //////////////////////////////////////////////////////////////////////
  };                                                               //////////////////////////////////////////////////////////////////////
  byte gw[] = {                                                    //////////////////////////////////////////////////////////////////////
    192, 168, 1, 1//il vostro ip del modem o router                //GW E MASK SONO VISIBILI NELLE IMPOSTAZIONI DI RETE DEL VOSTRO PC////
  };                                                               //////////////////////////////////////////////////////////////////////
  byte mask[] = {                                                  //////////////////////////////////////////////////////////////////////
    255, 255, 255, 0//la net mask                                  //////////////////////////////////////////////////////////////////////
  };                                                               //////////////////////////////////////////////////////////////////////
  //netint.begin (mac);
  netint.begin (mac, ip, gw, mask);

  Serial.print (F("Initializing SD card..."));
  if (!webserver.enableSD (SD_SS)) {
    Serial.println (F(" failed"));
    while (42)
      ;
  }
  Serial.println (F(" done"));

  Serial.println (F("Trying to get an IP address through DHCP"));
  if (!webserver.begin (netint, NULL, substitutions)) {
    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 ());
  }
}

void loop() {
  webserver.loop ();

}


In questo esempio che ti ho creato, nel setup c'è scritto dove devi inserire IP etc della tua configurazione.


P.S. Ho visto adesso la risposta di Sukko e ovviamente ha ragione, come ti avevo linkato sta tutto lì ;) Io comunque ti ho consigliato di fare questa prova prima dei TAG almeno ti fai la base del tuo codice. (Ah comunque Sukko, il link non si clicca, almeno a me.)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 17, 2016, 05:05 pm
Fixato, tnx ;).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 05:09 pm
Fixato, tnx ;).
Complimenti per il Faraday Member (l'ho visto adesso) :D
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 17, 2016, 05:33 pm
Ah grazie! Non so nemmeno quando lo sono diventato :D.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 06:52 pm
Ah grazie! Non so nemmeno quando lo sono diventato :D.
Ahahah
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 17, 2016, 07:31 pm
non riesco a trovare da nessuna parte il file:

webbino_config.h

come mai?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 07:44 pm
.h è l'estensione del file, il file si chiama webbino_config e webbino_common
Si trovano entrambi nella directory della libreria webbino
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 17, 2016, 07:48 pm
come si può vedere da foto, non ho webbino_config.h
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 07:53 pm
Forse Sukko ha omesso quel file negli ultimi aggiornamenti, ma la cosa importante che hai il common, modifica quello.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 17, 2016, 08:18 pm
sono andato su webbino_common.h


e sono riuscito a fare il primo passaggio che mi dicevi:

Code: [Select]
#define WEBBINO_USE_WIZ5100
//~ #define WEBBINO_USE_ENC28J60
//~ #define WEBBINO_USE_ESP8266



ma non trovo #define WEBBINO_ENABLE_SD
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 17, 2016, 09:05 pm
Hai scaricato il master o il branch di Webbino? Quello giusto è il branch!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 17, 2016, 09:06 pm
Un altro caso disperato
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 17, 2016, 09:11 pm
Un altro caso disperato
grazie per la tua ironia, che senso dell'umorismo!

comunque si ho scaricato il master, dove lo trovo il branch?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 09:18 pm
Un altro caso disperato
Comunque pablos ti devi ricredere su una cosa, ovviamente non è molto visitato come sito, però con webbino funziona ininterrottamente senza blocchi da tre mesi per ora :) (E come dicevi tu, ci possono entrare cani e porci :D )

Tototer, dovrebbe essere QUESTA (https://github.com/SukkoPera/Sukkino/tree/sd_support) la versione giusta. ;)
Elimina quella che hai attualmente di libreria, installa questa sopra e rifai i passaggi. ;)
La webbino_config la trovi dentro src
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 17, 2016, 09:37 pm
Confermo, prima o poi farò anche il merge sul master :(. 3 mesi??? Wow :D.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 09:44 pm
3 mesi??? Wow :D.
Già e non accenna a calare di prestazioni :) Più che soddisfatto della libreria, non è stata inutile come diceva pablos, almeno per il mio scopo. Che poi comunque ha retto a un sito visibile da chiunque e che manda dati anche una rete meteo nazionale e europea e non è poco!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 17, 2016, 10:26 pm
Ma non ho mai detto che non funziona, anche perchè non la conosco quella lib, il fatto che la ethernet si schiantava spesso e volentieri risale a 4-5 anni fa dove il software non era curato. Qualunque cosa chiedessi al forum riguardo la ethernet nessuno ti sapeva dare risposte chiare e decisive poichè in pochissimi la usavano e quasi nessuno la conosceva a fondo.
La proverò la webbino giusto per curiosità, ma so già che non soddisfa (per ora) le mie richieste avanzate, senza nulla togliere ad essa :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 17, 2016, 11:08 pm
Ma non ho mai detto che non funziona, anche perchè non la conosco quella lib, il fatto che la ethernet si schiantava spesso e volentieri risale a 4-5 anni fa dove il software non era curato. Qualunque cosa chiedessi al forum riguardo la ethernet nessuno ti sapeva dare risposte chiare e decisive poichè in pochissimi la usavano e quasi nessuno la conosceva a fondo.
La proverò la webbino giusto per curiosità, ma so già che non soddisfa (per ora) le mie richieste avanzate, senza nulla togliere ad essa :)

Avevi detto che era inutile per il mio scopo e che perdevo tempo :) Spero che funzionerà per i tuoi scopi :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 01:12 am
Giusto per curiosità, @pablos, quali sono le tue richieste avanzate?

Webbino non vuole essere la panacea di tutti i mali, è una semplice libreria che ho scritto innanzitutto perché serviva a me, poi mi sono reso conto che in fondo copriva una funzionalità generica di cui molti necessitano, che quindi poteva tornare utile ad altri, e l'ho pubblicata. Sono sempre più convinto di questo, ma mi rendo anche conto che a causa del pesante utilizzo di PROGMEM (inevitabile) il suo utilizzo è più complesso di quel che mi piacerebbe fosse. Ho in mente qualche macro per semplificare un po', ma chissà... Il motivo per cui non c'è ancora una 1.0 è proprio questo: non sono ancora pienamente soddisfatto della sua API.

Credo però che Webbino abbia i suoi pregi: funziona con 4 diverse schede di rete (oltre che su ESP nativo), gestisce pagine in flash e/o su SD (con due librerie diverse!), supporta le richieste GET permettendo il facile parsing dei parametri, ha la possibilità di far chiamare una funzione all'apertura di un certo indirizzo, e altro ancora.

Che poi qualcuno lo usi o meno, a me non viene in tasca niente. Mi fa piacere ma finisce lì. Dovreste essere contenti voi perché è comunque un punto di partenza al quale potete aggiungere quel che serve a voi, o che potete comunque modificare a piacere senza dover partire da zero, perché è pure open source. Se invece preferite partire da capo ogni volta reinventando la ruota sull'esempio Webserver, liberi di farlo. Ripeto, a me non viene in tasca niente in ogni caso.

Lasciami dire, però, che invece di criticare a scatola chiusa, potresti provarlo e aiutarmi a migliorarlo, hai tutto il codice a disposizione, cosa vuoi di più?

In ogni caso, Webbino o non Webbino, il problema qua è che voler fare un server web pubblico su Arduino è una mezza follia fin dall'inizio, le risorse sono estremamente ristrette e miracoli non se ne possono fare. Essere in piedi da 3 mesi è fantastico proprio per questo!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 18, 2016, 01:21 am
Carissimo As_Needed, ho fatto tutti i passaggi che mi hai detto di fare fin ora.
adesso mi spieghi come precedere?
penso che dovrei dire al mio sketch di prendere il valore temperature e tradurlo nel tag #temperatura# che è presente in una pagina nelle stesse modalità di quella che mi hai postato tu, della tua stazione meteo.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 01:23 am
Hai letto quel famoso post #159, @tototer?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 18, 2016, 01:31 am
si, ma mi viene difficile comprendere questo passaggio della definizione della funzione, potresti farmi un esempio pratico partendo dal mio valore temperature? ti ringrazio tanto, se capisco un passaggio poi diventa meccanico farlo per tutti
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 01:52 am
Beh oddio, devi fare praticamente tutto uguale, solo che nell'esempio dove stampo la data, tu devi stampare la temperatura. Mi sembra immediato.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 18, 2016, 02:14 am
Ovvio che fare un server con Arduino è pur sempre una follia! Però webbino risolve molti problemi anche avendo un HW così ristretto, è per questo per me è stata una piacevole scoperta :)



Tototer, ora è notte sono da cellulare, domani vedo cosa posso aggiungere a quello che ha detto Sukko :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 06:44 am
In ogni caso, Webbino o non Webbino, il problema qua è che voler fare un server web pubblico su Arduino è una mezza follia fin dall'inizio, le risorse sono estremamente ristrette ...
Vero, però viene spesso dimenticato Arduino MEGA 2560, volendo anche nella comodissima versione con le dimensioni di una UNO prodotto da SeeedStudio (https://www.seeedstudio.com/Seeeduino-Mega-p-717.html) (... che ha anche il vantaggio di lavorare sia a 5V che a 3.3V) ... e li, come risorse, siamo certamente messi molto meglio ;)

Che poi è sicuramente meglio farlo con una Raspberry ... beh ... non ci piove :D

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 09:56 am
Ci sono più RAM e flash, vero, ma il clock è sempre quello e, soprattutto, l'Ethernet shield è sempre quello, che non è certo fatto per accettare centinaia di connessioni contemporanee. Mi pare sia limitato a 4. Se poi usi uno shield ENC28J60 forse le cose sono pure peggio :smiley-confuse:. Insomma, a mio parere rimane qualcosa il cui accesso deve essere estremamente controllato, indipendentemente dal software che ci gira, proprio per i limiti hardware.

Ci sono piattaforme più adatte ad ospitare un webserver. Il Raspi ne è un esempio, ma anche già la Yùn, e ce ne sono anche di più economiche, tipo l'Onion Omega (https://onion.io/), per cui esiste anche una espansione Arduino, tra l'altro.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 10:20 am
Ci sono più RAM e flash, vero, ma il clock è sempre quello e, soprattutto, l'Ethernet shield è sempre quello ...
Beh, anche li qualche cosa si può fare ...
... le nuove Ethernet Shield (Arduino.org, SeeedStudio, ecc.) montano il W5500 che è decisamente superiore, come prestazioni, al vecchio W5100.

Per divertirmi ho giusto messo una Ethernet con il W5500 su una MEGA e devo provare a caricarci Webbino ...
... ti faccio sapere, anche perché, se tutto va bene, ci sarebbe una piccola modifica da fare per ragioni di compatibilità (... ma prima fammi fare un po' di prove).

Comunque NON dimantichiamo che stiamo parlado di webserver "giocattolo", per piccole applicazioni private, dove il numero di connessioni non è poi così importante, ovviamente ... nulla a che vedere con hosting e macchine dedicate ;)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 10:22 am
Comunque NON dimantichiamo che stiamo parlado di webserver "giocattolo", per piccole applicazioni private, dove il numero di connessioni non è poi così importante, ovviamente ... nulla a che vedere con hosting e macchine dedicate ;)
Ecco, è proprio questo il messaggio che sto cercando di comunicare :).

Aspetto una pull request per il supporto W5500 :D.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: nid69ita on Oct 18, 2016, 10:24 am
Vero, però viene spesso dimenticato Arduino MEGA 2560, volendo anche nella comodissima versione con le dimensioni di una UNO prodotto da SeeedStudio (https://www.seeedstudio.com/Seeeduino-Mega-p-717.html) (... che ha anche il vantaggio di lavorare sia a 5V che a 3.3V) ... e li, come risorse, siamo certamente messi molto meglio ;)
Guglielmo
Se posso segnalo anche Itead come produttore di una Mega 2560 in formato piccolo:  LINK (https://www.itead.cc/development-platform/arduino/arduino-compatible-mainboard/iteaduino-mega-2560.html)

l'Ethernet shield è sempre quello, che non è certo fatto per accettare centinaia di connessioni contemporanee. Mi pare sia limitato a 4. Se poi usi uno shield ENC28J60 forse le cose sono pure peggio
Togli pure il forse. La ENC richiede al sw di fare una parte del lavoro che la W5xxx fa in hw
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 10:53 am
Aspetto una pull request per il supporto W5500 :D.
Molto semplice ...

... seguendo lo standard del IDE 1.7.11 di Arduino.org, per la libreria vecchia per il W5100 occorre fare "#include <Ethernet.h>" mentre per la nuova W5500 si deve fare "#include <Ethernet2.h>". TUTTO il resto rimane uguale, inclusi tutti i metodi.

Devi quindi semplicemente aggiungere una "#define WEBBINO_USE_WIZ5500" e modificare i codici di conseguenza per includere la <Ethernet2.h> al posto della <Ethernet.h>

Ti allego la libreria Ethernet2 ... così la puoi inserire tra le librerie dell'IDE ... ;)

Guglielmo

P.S.: Tutto questo naturalmente se NON sei andato ad usare cose interne della libreria Ethernet e ti sei limitato ai metodi esposti, altrimenti tocca cambiare anche qualche nome ;)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 10:54 am
Ah ottimo, grazie!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 10:56 am
Ah ottimo, grazie!
... ho modificato il post con una piccola annotazione finale ... verifica ;)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 18, 2016, 01:02 pm
Visto che me lo chiedi

-webserver con file ini di impostazione remota di tutti i parametri
-16 Accessi con password MD5 a 128bit dal Master all'utente xx con livelli di operatività
-Controllo dei 4 socket separatamente del w5100 dando spazio al micro di fare le sue cose
-Controllo del MAC remoto che si collega per aumentare le restrizioni
-Controllo dell'IP remoto che si connette per aumentare le restrizioni
-Controllo del sistema OP, del tipo di macchina che si connette per spedire la corretta formattazione e adattare le pagine
-Controllo delle connessioni multiple enable/disable e impostazione del num minimo e massimo
-Uso dei cookies per facilitare e velocizzare le operazioni
-Upload delle pagine via web su SD
-Modifica delle pagine e file vari da remoto
-Download delle pagine e file vari su SD
-Controllo dei codici HTTP vari dal 200 400 301 ecc ecc
-Distinzione automatica di richieste GET POST HEAD e altre
-Possibilità di attivare sulla stessa lib il protocollo websoket, che fornisce un real time e porta via pochissime risorse al micro

altre cosette che non mi vengono in mente





Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 18, 2016, 01:49 pm
Carissimo As_Needed, ho fatto tutti i passaggi che mi hai detto di fare fin ora.
adesso mi spieghi come precedere?
penso che dovrei dire al mio sketch di prendere il valore temperature e tradurlo nel tag #temperatura# che è presente in una pagina nelle stesse modalità di quella che mi hai postato tu, della tua stazione meteo.
Per prima cosa, ti ripropongo un codice che ti ho fatto nella prima pagina di questo topic, per provare a vedere se vedi la pagina, senza TAG per ora ;) Giusto per visualizzarla sul tuo ip!

Nel setup guarda BENE, in un punto bisogna specificare le tue impostazioni di rete, l'ip del tuo sito, subnet e l'ip del tuo Modem (di solito è quello che c'è già)
Praticamente carica solo questo codice nel tuo Arduino per ora (tenendo conto della parte in grassetto sopra prima di caricare), scheda micro SD inserita nell'ethernet shield con la tua pagina htm.

Code: [Select]
#include <Webbino.h>
#include <avr/pgmspace.h>

#define SD_SS 4
WebServer webserver;

#include <WebServer_WIZ5100.h>
NetworkInterfaceWIZ5100 netint;
EthernetServer server(80);

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

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

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

  return subBuffer;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

static PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
  extern int __heap_start, *__brkval;
  int v;

  subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));

  return subBuffer;
}



// Max length of these is MAX_TAG_LEN (24)
static const char subMacAddrStr[] PROGMEM = "NET_MAC";
static const char subIPAddressStr[] PROGMEM = "NET_IP";
static const char subNetmaskStr[] PROGMEM = "NET_MASK";
static const char subGatewayStr[] PROGMEM = "NET_GW";
static const char subNetConfSrcStr[] PROGMEM = "NET_CONF_SRC";
static const char subWebbinoVerStr[] PROGMEM = "WEBBINO_VER";
static const char subUptimeStr[] PROGMEM = "UPTIME";
static const char subFreeRAMStr[] PROGMEM = "FREERAM";

static const var_substitution subMacAddrVarSub PROGMEM = {subMacAddrStr, evaluate_mac_addr, NULL};
static const var_substitution subIPAddressVarSub PROGMEM = {subIPAddressStr, evaluate_ip, NULL};
static const var_substitution subNetmaskVarSub PROGMEM = {subNetmaskStr, evaluate_netmask, NULL};
static const var_substitution subGatewayVarSub PROGMEM = {subGatewayStr, evaluate_gw, NULL};
static const var_substitution subNetConfSrcVarSub PROGMEM = {subNetConfSrcStr, evaluate_ip_src, NULL};
static const var_substitution subWebbinoVerVarSub PROGMEM = {subWebbinoVerStr, evaluate_webbino_version, NULL};
static const var_substitution subUptimeVarSub PROGMEM = {subUptimeStr, evaluate_uptime, NULL};
static const var_substitution subFreeRAMVarSub PROGMEM = {subFreeRAMStr, evaluate_free_ram, NULL};

static const var_substitution * const substitutions[] PROGMEM = {
  &subMacAddrVarSub,
  &subIPAddressVarSub,
  &subNetmaskVarSub,
  &subGatewayVarSub,
  &subNetConfSrcVarSub,
  &subWebbinoVerVarSub,
  &subUptimeVarSub,
  &subFreeRAMVarSub,
  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 (9600);
  Serial.println (F("Using Webbino " WEBBINO_VERSION));

  byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
  };
  byte ip[] = {
    192, 168, 1, 51//l'ip usato dalla scheda ethernet              //////////////////////////////////////////////////////////////////////
  };                                                               //////////////////////////////////////////////////////////////////////
  byte gw[] = {                                                    //////////////////////////////////////////////////////////////////////
    192, 168, 1, 1//il vostro ip del modem o router                //GW E MASK SONO VISIBILI NELLE IMPOSTAZIONI DI RETE DEL VOSTRO PC////
  };                                                               //////////////////////////////////////////////////////////////////////
  byte mask[] = {                                                  //////////////////////////////////////////////////////////////////////
    255, 255, 255, 0//la net mask                                  //////////////////////////////////////////////////////////////////////
  };                                                               //////////////////////////////////////////////////////////////////////
  //netint.begin (mac);
  netint.begin (mac, ip, gw, mask);

  Serial.print (F("Initializing SD card..."));
  if (!webserver.enableSD (SD_SS)) {
    Serial.println (F(" failed"));
    while (42)
      ;
  }
  Serial.println (F(" done"));

  Serial.println (F("Trying to get an IP address through DHCP"));
  if (!webserver.begin (netint, NULL, substitutions)) {
    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 ());
  }
}

void loop() {
  webserver.loop ();

}




N.B. Prima di caricare lo sketch con le opportune modifiche, siccome la tua pagina iniziale si chiama a come ho capito, 'index.htm' ti consiglio di andare di nuovo nel file webbino_config e cambiare questa riga:

#define REDIRECT_ROOT_PAGE "index.html"

così:

#define REDIRECT_ROOT_PAGE "index.htm"

Una volta caricato in modo corretto il codice, prova ad accedere al tuo ip del sito ;)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 18, 2016, 01:54 pm
Riguardo al discorso che avete fatto, mi trovo d'accordo e aggiungo che usando varie schede migliori, con ad esempio la W5500, si può migliorare ancora di più il server, però si tratterà sempre di cose amatoriali, ma comunque molto efficaci per il loro scopo!
Risponderà Sukko, ma quello che chiede pablos, forse non è adatto proprio ad Arduino...

P.S. Io uso Arduino Mega e ethernet W5100 con webbino e dura da tre mesi senza blocchi.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 02:27 pm
Per i possessori di Ethernet Shield basate su W5500 come quella ufficiale di Arduino.org o quella di SeeedStudio ...
... prendete l'ultima versione dell'IDE 1.6.12, nella cartella /libraries aggiungete la libreria Ethernet2 che trovate allegata (... NON dovete togliere la Ethernet che va lasciata al suo posto).

A questo punto, TUTTA DA VERIFICARE, in allegato anche la libreria Webbino modificata per gestire la W5500. Ho aggiunto, nel file "webbino_config.h" la riga "#define WEBBINO_USE_WIZ5500" ... la logica rimane la stessa, si deve decommentare SOLO la riga relativa alla scheda che si possiede.

Ho aggiornato anche tutti gli esempi ... un paio li ho provati e girano tranquillamente ... ;)

Però ripeto ... È TUTTA DA VERIFICARE ... e magari poi SukkoPera la includerà direttamente nella distribuzione ;)

Fatemi sapere se vi funziona :)

Guglielmo

P.S.: I miei complimenti a SukkoPera per la modularità e la facilità di manutenzione di questa sua libreria :)
P.P.S.: NON ho aggiornato la versione in library.properties ... lo farà SukkoPera quando deciderà di rilasciarla ufficialmente. Nel sorgente la versione è aggiornata a 20161018.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 18, 2016, 02:56 pm
Purtroppo le lib create e parte modificate non le ho più....  Il mio WIN 7 è stato aggiornato nella notte in automatico a WIN 10 che ho rifiutato per 6 mesi...  La mia cartella Windows. Old è stata sovrascitta dal vecchio WIN 7 perdendo praticamente tutto...  La pigrizia di non fare i backup  :smiley-confuse: quindi potrei ricostruire tutto...  Ma due anni di nottate di nuovo mi girano i Ball
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 03:29 pm
Grazie di tutto il lavoro @gpb01, ma a questo punto se mi facevi una pull request direttamente su GitHub era più comodo :D. L'integrazione dovrà aspettare un po' però, visto che l'SSD del mio MacBook ha pensato bene di abbandonarmi, ovviamente poco dopo la scadenza della garanzia >:(. E pensare che compravo solo hardware Apple, nonostante sia un Linuxista, perché mi sembrava di maggiore qualità... :-X

In ogni caso integrerò "ciecamente", non avendo un Ethernet Shield 2 con cui testare, al momento.

@pablos: almeno alcune delle cose che proponi sarebbero sicuramente utili, tuttavia mi sembrano troppo specializzate e particolari per quello che in fondo non potrà mai essere un webserver "heavy duty" per le già citate limitazioni hardware. Se hai davvero tutte quelle necessità, a mio avviso non ha senso usare un Arduino: un Raspi con Apache/lighttpd ed ssh/sftp avrebbe più senso. Alcune delle cose che citi sarebbe poi più appropriato farle ad altri livelli (ad esempio il filtraggio MAC/IP dal router/firewall) e altre non mi sembrano di pertinenza di un server (Download?). Della fattibilità di alcune poi dubito perché richiedono un accesso "profondo" alla scheda Ethernet, che non so se l'attuale libreria permette. Comunque rinnovo l'invito: i sorgenti sono lì, sentiti libero di modificarli e aggiungere qualcuna di queste cose ;).

Non ho però capito il tuo ultimo post? Di quali librerie parli?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 03:48 pm
... a questo punto se mi facevi una pull request direttamente su GitHub era più comodo ...
Ammetto la mia somma ignoranza nell'uso di GitHub ...  :smiley-lol:

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 03:53 pm
Azz, ma allora sei umano :o.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 18, 2016, 03:56 pm
Azz, ma allora sei umano :o.
ahahah
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 03:58 pm
ma allora sei umano
NO, ma non uso GitHub ... ;D

Guglielmo   (http://i.huffpost.com/gen/2823254/images/o-ALIENO-facebook.jpg)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 18, 2016, 04:34 pm
NO, ma non uso GitHub ... ;D

Guglielmo   (http://i.huffpost.com/gen/2823254/images/o-ALIENO-facebook.jpg)
:D :D :D

Ah, per Tototer, che se no si ingarbuglia con tutti questi messaggi: il messaggio riferito a te è nella  pagina precedente, la 3 post #43
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 18, 2016, 04:36 pm
Quote
Non ho però capito il tuo ultimo post? Di quali librerie parli?
il mio lavoro, comprendevano una 30ina di lib dell'ide modificate e allegerite + una webserver

Quote
Alcune delle cose che citi sarebbe poi più appropriato farle ad altri livelli (ad esempio il filtraggio MAC/IP dal router/firewall)
su questo ti posso aiutare se vuoi e le puoi implementare nella tua, si tratta di usare la w5100.h o 5500.h che gestisce 8 soket invece di 4, facendosi restituire dei parametri scritti sulla sua ram, praticamente sono uguali.

Quote
Se hai davvero tutte quelle necessità, a mio avviso non ha senso usare un Arduino: un Raspi con Apache/lighttpd ed ssh/sftp avrebbe più senso.
Si vero, ma montato su una piattaforma semplice e alla portata di tutti che non compromettesse comunque quel piccolo micro spremuto.

Tu prendi ad esempio: arduino con un webserver in linea che fa il polling di 10 pin, ora premi un pulsante in 10 ms per 10 volte di seguito e dimmi su web quante volte leggi la pressione del tasto. Te lo dico subito 4, 6 premute le perdi con le lib fornite dall'IDE. Io ne leggevo 64 in 10ms con soli 8 byte e senza negoziazioni tra client e server.

Il progetto nasce dalle ripetute richieste del forum e da esperienze in campo, con oggetti comprati e installati molto costosi e più lenti di arduino con IN e OUT fissi non programmabili a piacere, con software forzato dato dalla casa non modificabile, programmazione dei parametri limitati a poche righe, ecco perchè l'esigenza di una cosa semplice intuitiva fatta col semplice mouse e tastiera senza intervenire sullo sketch.
Inserire una password nel web server anche se non possiamo avere un https è molto richiesto, in ogni caso tutto sta nel far fare al browser la maggior parte del lavoro pesante.

NO, ma non uso GitHub ... ;D
Nemmeno io uso  GitHub non saprei nemmeno da dove cominciare :), probabilmente perchè non mi interessa, c'era Lesto di questo forum che era molto bravo, abbiamo lavorato insieme diverse nottate su alcuni sketch online tramite doc condivisi con google drive e il suo GitHub.

Anche se non ho condiviso il pacchetto intero, nei miei 5000 post c'è tutto, non fornisco il pacchetto intero e mai lo farò perchè non mi piacciono i copia e incolla.


Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 18, 2016, 05:35 pm
Tu prendi ad esempio: arduino con un webserver in linea che fa il polling di 10 pin, ora premi un pulsante in 10 ms per 10 volte di seguito e dimmi su web quante volte leggi la pressione del tasto. Te lo dico subito 4, 6 premute le perdi con le lib fornite dall'IDE. Io ne leggevo 64 in 10ms con soli 8 byte e senza negoziazioni tra client e server.
Beh, a parte che dubito che i miei occhi siano così rapidi da vedere 10 update di una pagina web in 10 ms, ci credo, ma questa non è una feature che reputo di interesse generale, sembra più una necessità tua specifica. Webbino è pensato per facilitare la creazione di pagine semi-statiche con qualche dato che varia lentamente. Non prevede alcun meccanismo di refresh di una parte di una pagina, se vuoi aggiornare i dati devi refreshare la pagina intera.

Inserire una password nel web server anche se non possiamo avere un https è molto richiesto, in ogni caso tutto sta nel far fare al browser la maggior parte del lavoro pesante.
Questa invece è una cosa che si potrebbe implementare, anche se ho paura che possa generare un senso di falsa sicurezza. Mi spiego: il mio caso d'uso ideale è che un eventuale webserver che gira su Arduino rimane chiuso all'interno di una rete privata a mio utilizzo esclusivo; quando serve ci entro in VPN e mi ci collego. Mi piacerebbe che tutti lo usassero così, ma come già fa @As_Needed, alcuni potrebbero volerlo tenere esposto su Internet, e avere la possibilità di settare una password potrebbe spingere molti a farlo davvero, cosa che non sono sicuro di volere, perché è sbagliata in partenza, visto che ovviamente un webserver che può gestire un massimo di 4 connessioni si DoSsa in un attimo. Non so, sono combattuto, ci penserò.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: 5a2v0 on Oct 18, 2016, 10:37 pm
Se posso aggiungere un'idea per la Ethernet2 (visto che ormai in questa discussione si parla di questo) :)

Per i miei interessi ho modificato la lib Etherneth per aggiungere la possibilità di dichiarare la porta tcp da utilizzare anziché a inizio sketch (che poi non si può più cambiare) in fase del void setup (così da poter usare variabili come porta tcp e permettere all'utente di cambiare via software la porta scelta senza cambiare lo sketch)

Premetto che quando ho tentato la modifica, il tutto è riuscito grazie a Sukkopera, ho fatto diverso tempo fa la pull request sul github di arduino che poi è stata spostata nel ramo della libreria ethernet.

Ancora non è stata convalidata ma vorrei precisare che è retrocompatibile e che offre solo una alternativa in più senza nulla togliere a quanto esistente.

Suggerisco integrazione della modifica anche nella Ethernet2... che ne pensate?



LINK su github (https://github.com/arduino-libraries/Ethernet/pull/39)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 18, 2016, 11:56 pm
La Ethernet2 è una libreria ufficiale sviluppata da Arduino.org ed inclusa nel loro IDE visto che loro commercializzano la nuova Ethernet Shield basata su W5500.

Se vuoi far fare una modifica, è a loro che lo devi chiedere, NON a me, che mi sono limitato dal prenderla dal loro IDE 1.7.11 

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 10:27 am
dopo avere fatto tutti i passaggi come da voi indicati

quando provo a compilare il seguente sketch

Code: [Select]
#include <Webbino.h>
#include <avr/pgmspace.h>

#define SD_SS 4
WebServer webserver;

#include <WebServer_WIZ5100.h>
NetworkInterfaceWIZ5100 netint;
EthernetServer server(80);

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

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

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

  return subBuffer;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

static PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
  extern int __heap_start, *__brkval;
  int v;

  subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));

  return subBuffer;
}



// Max length of these is MAX_TAG_LEN (24)
static const char subMacAddrStr[] PROGMEM = "NET_MAC";
static const char subIPAddressStr[] PROGMEM = "NET_IP";
static const char subNetmaskStr[] PROGMEM = "NET_MASK";
static const char subGatewayStr[] PROGMEM = "NET_GW";
static const char subNetConfSrcStr[] PROGMEM = "NET_CONF_SRC";
static const char subWebbinoVerStr[] PROGMEM = "WEBBINO_VER";
static const char subUptimeStr[] PROGMEM = "UPTIME";
static const char subFreeRAMStr[] PROGMEM = "FREERAM";

static const var_substitution subMacAddrVarSub PROGMEM = {subMacAddrStr, evaluate_mac_addr, NULL};
static const var_substitution subIPAddressVarSub PROGMEM = {subIPAddressStr, evaluate_ip, NULL};
static const var_substitution subNetmaskVarSub PROGMEM = {subNetmaskStr, evaluate_netmask, NULL};
static const var_substitution subGatewayVarSub PROGMEM = {subGatewayStr, evaluate_gw, NULL};
static const var_substitution subNetConfSrcVarSub PROGMEM = {subNetConfSrcStr, evaluate_ip_src, NULL};
static const var_substitution subWebbinoVerVarSub PROGMEM = {subWebbinoVerStr, evaluate_webbino_version, NULL};
static const var_substitution subUptimeVarSub PROGMEM = {subUptimeStr, evaluate_uptime, NULL};
static const var_substitution subFreeRAMVarSub PROGMEM = {subFreeRAMStr, evaluate_free_ram, NULL};

static const var_substitution * const substitutions[] PROGMEM = {
  &subMacAddrVarSub,
  &subIPAddressVarSub,
  &subNetmaskVarSub,
  &subGatewayVarSub,
  &subNetConfSrcVarSub,
  &subWebbinoVerVarSub,
  &subUptimeVarSub,
  &subFreeRAMVarSub,
  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 (9600);
  Serial.println (F("Using Webbino " WEBBINO_VERSION));

  byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
  };
  byte ip[] = {
    192, 168, 1, 51//l'ip usato dalla scheda ethernet              //////////////////////////////////////////////////////////////////////
  };                                                               //////////////////////////////////////////////////////////////////////
  byte gw[] = {                                                    //////////////////////////////////////////////////////////////////////
    192, 168, 1, 1//il vostro ip del modem o router                //GW E MASK SONO VISIBILI NELLE IMPOSTAZIONI DI RETE DEL VOSTRO PC////
  };                                                               //////////////////////////////////////////////////////////////////////
  byte mask[] = {                                                  //////////////////////////////////////////////////////////////////////
    255, 255, 255, 0//la net mask                                  //////////////////////////////////////////////////////////////////////
  };                                                               //////////////////////////////////////////////////////////////////////
  //netint.begin (mac);
  netint.begin (mac, ip, gw, mask);

  Serial.print (F("Initializing SD card..."));
  if (!webserver.enableSD (SD_SS)) {
    Serial.println (F(" failed"));
    while (42)
      ;
  }
  Serial.println (F(" done"));

  Serial.println (F("Trying to get an IP address through DHCP"));
  if (!webserver.begin (netint, NULL, substitutions)) {
    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 ());
  }
}

void loop() {
  webserver.loop ();

}


mi da l'errore che allego in questo post. come mai? dove è l'errore?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 10:39 am
Che versione di Arduino stai usando? Consiglio almeno 1.6.9, meglio l'ultima. Inoltre mi sa che hai mescolato il branch e il master, perché il file /Users/tototer/Documents/Arduino/libraries/Webbino_branch/src/WebServer_WIZ5100.h non deve esistere nel branch.

@5a2v0: Sai che sono un sostenitore della modifica che proponi, ma finché non viene integrata nella versione principale, non si può fare: non mi piace l'idea di far dipendere Webbino da una libreria modificata. Inoltre, al momento la possibilità di cambiare porta non è del tutto funzionante, per ragioni di portabilità verso le varie schede supportate :/.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 10:42 am
uso la 1.6.12
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 10:46 am
OK, va bene. Vedi però il commento che ho aggiuto nel post precedente riguardo ai sorgenti mescolati.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Oct 19, 2016, 11:03 am
Ammetto la mia somma ignoranza nell'uso di GitHub ...  :smiley-lol:
Guglielmo,
dopo la scoperta dei repository (GitHub e solo uno di questi e puoi creartene uno anche a casa) non torni più indietro.
Li uso sia come backup che per documentare i cambiamenti effettuati.
Per progetti collaborativi o anche semplicemente per codici che modifichi da macchine diverse è insuperabile.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 11:05 am
come procedo? ce qualcuno che mi aiuta a superare questo messaggio d'errore?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 11:09 am
Te l'ho detto, hai fatto casino con i sorgenti! Cancella la cartella Webbino e ripristinala dallo zip del branch. Magari tieni il vecchio webbino_config.h se l'hai modificato.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: 5a2v0 on Oct 19, 2016, 11:24 am
...
@5a2v0: Sai che sono un sostenitore della modifica che proponi, ma finché non viene integrata nella versione principale, non si può fare: non mi piace l'idea di far dipendere Webbino da una libreria modificata. Inoltre, al momento la possibilità di cambiare porta non è del tutto funzionante, per ragioni di portabilità verso le varie schede supportate :/.
Che intendi ?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 11:26 am
Te l'ho detto, hai fatto casino con i sorgenti! Cancella la cartella Webbino e ripristinala dallo zip del branch. Magari tieni il vecchio webbino_config.h se l'hai modificato.
ho rifatto tutto da capo ed adesso mi da questo errore:

Arduino:1.6.12 (Mac OS X), Scheda:"Arduino/Genuino Uno"

atem:120: error: 'var_substitution' does not name a type
 static const var_substitution subMacAddrVarSub PROGMEM = {subMacAddrStr, evaluate_mac_addr, NULL};
              ^
atem:121: error: 'var_substitution' does not name a type
 static const var_substitution subIPAddressVarSub PROGMEM = {subIPAddressStr, evaluate_ip, NULL};
              ^
atem:122: error: 'var_substitution' does not name a type
 static const var_substitution subNetmaskVarSub PROGMEM = {subNetmaskStr, evaluate_netmask, NULL};
              ^
atem:123: error: 'var_substitution' does not name a type
 static const var_substitution subGatewayVarSub PROGMEM = {subGatewayStr, evaluate_gw, NULL};
              ^
atem:124: error: 'var_substitution' does not name a type
 static const var_substitution subNetConfSrcVarSub PROGMEM = {subNetConfSrcStr, evaluate_ip_src, NULL};
              ^
atem:125: error: 'var_substitution' does not name a type
 static const var_substitution subWebbinoVerVarSub PROGMEM = {subWebbinoVerStr, evaluate_webbino_version, NULL};
              ^
atem:126: error: 'var_substitution' does not name a type
 static const var_substitution subUptimeVarSub PROGMEM = {subUptimeStr, evaluate_uptime, NULL};
              ^
atem:127: error: 'var_substitution' does not name a type
 static const var_substitution subFreeRAMVarSub PROGMEM = {subFreeRAMStr, evaluate_free_ram, NULL};
              ^
/Users/tototer/Desktop/atem/atem.ino: In function 'void setup()':
atem:158: error: no matching function for call to 'NetworkInterfaceWIZ5100::begin(byte [6], byte [4], byte [4], byte [4])'
   netint.begin (mac, ip, gw, mask);
                                  ^
/Users/tototer/Desktop/atem/atem.ino:158:34: note: candidates are:
In file included from /Users/tototer/Desktop/atem/atem.ino:7:0:
/Users/tototer/Documents/Arduino/libraries/Webbino/src/WIZ5100.h:60:10: note: boolean NetworkInterfaceWIZ5100::begin(byte*)
  boolean begin (byte *mac);
          ^
/Users/tototer/Documents/Arduino/libraries/Webbino/src/WIZ5100.h:60:10: note:   candidate expects 1 argument, 4 provided
/Users/tototer/Documents/Arduino/libraries/Webbino/src/WIZ5100.h:62:10: note: boolean NetworkInterfaceWIZ5100::begin(byte*, IPAddress, IPAddress, IPAddress, IPAddress)
  boolean begin (byte *mac, IPAddress ip, IPAddress dns, IPAddress gw, IPAddress mask);
          ^
/Users/tototer/Documents/Arduino/libraries/Webbino/src/WIZ5100.h:62:10: note:   candidate expects 5 arguments, 4 provided
atem:169: error: 'substitutions' was not declared in this scope
   if (!webserver.begin (netint, NULL, substitutions)) {
                                       ^
exit status 1
'var_substitution' does not name a type

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 11:42 am
@5a2v0: Che se ad esempio usi Webbino con un ENC28J60, la porta rimane sempre la 80. Non ho ancora ben capito se e come la libreria permetta di cambiarla :D.

@tototer: Che esempio stai cercando di compilare? Hai provato quelli inclusi nella libreria?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 11:42 am
Novità:

ho provato a compilare uno dei tuoi esempi nella cartella esempio e viene compilato.

mi dice questo:

Lo sketch usa 25.812 byte (80%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 1.670 byte (81%) di memoria dinamica, lasciando altri 378 byte liberi per le variabili locali. Il massimo è 2.048 byte.
Poca memoria disponibile, potrebbero presentarsi problemi di stabilità


poi entro nel serial monitor e mi dice:

Using Webbino 20160709
Initializing SD card... done
Trying to get an IP address through DHCP
DHCP configuration done:
- IP: 192.168.1.108
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1


ma quando provo ad accedere all'ip: 192.168.1.108

non mi trova nulla, neppure facendo una scansione sulla rete mi risulta assegnato l'ip 192.168.1.108

come mai?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 11:50 am
Beh, questo è strano, significherebbe che il tuo server DHCP gli ha assegnato un indirizzo irraggiungibile. Che IP ha il tuo PC? Lo prende in DHCP?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 11:51 am
risolto, dopo tutte le prove avevo il router in crash!

sono riuscito ad entrare sul webserver adesso faccio qualche prova con i tuoi esempi!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 12:40 pm
Qualcuno mi aiuto a fare un esempio con il sensore voltaggio?


questo è lo sketch che uso per leggere il valore dei volt della batteria tramite seriale:

Code: [Select]

/*
DC Voltmeter Using a Voltage Divider
Based on Code Created By
T.K.Hareendran
*/

int sensorevoltaggio = A5;
float vout = 0.0;
float voltaggiobatteria = 0.0;
float R1 = 30000.0; // 
float R2 = 7500.0; //
int value = 0;
void setup(){
   pinMode(sensorevoltaggio, INPUT);
   Serial.begin(9600);
   Serial.print("DC VOLTMETER");
}
void loop(){
   // read the value at analog input
   value = analogRead(sensorevoltaggio);
   vout = (value * 5) / 1024.0; // see text
   voltaggiobatteria = vout / (R2/(R1+R2));
   
Serial.print("INPUT V= ");
Serial.println(voltaggiobatteria,2);
delay(500);
}


questo invece è l'esempio che riporta sukkopera nella libreria webbino

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 <avr/pgmspace.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 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)
#include <WebbinoInterfaces/WIZ5100.h>
NetworkInterfaceWIZ5100 netint;
#elif defined (WEBBINO_USE_ESP8266)
#include <WebbinoInterfaces/ESP8266.h>

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

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

NetworkInterfaceESP8266 netint;
#endif


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

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

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

  return subBuffer;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

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

return subBuffer;
}

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

return subBuffer;
}

static 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;
}

static PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
extern int __heap_start, *__brkval;
int v;

subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));

return subBuffer;
}



// Max length of these is MAX_TAG_LEN (24)
static const char subMacAddrStr[] PROGMEM = "NET_MAC";
static const char subIPAddressStr[] PROGMEM = "NET_IP";
static const char subNetmaskStr[] PROGMEM = "NET_MASK";
static const char subGatewayStr[] PROGMEM = "NET_GW";
static const char subNetConfSrcStr[] PROGMEM = "NET_CONF_SRC";
static const char subWebbinoVerStr[] PROGMEM = "WEBBINO_VER";
static const char subUptimeStr[] PROGMEM = "UPTIME";
static const char subFreeRAMStr[] PROGMEM = "FREERAM";

static const ReplacementTag subMacAddrVarSub PROGMEM = {subMacAddrStr, evaluate_mac_addr, NULL};
static const ReplacementTag subIPAddressVarSub PROGMEM = {subIPAddressStr, evaluate_ip, NULL};
static const ReplacementTag subNetmaskVarSub PROGMEM = {subNetmaskStr, evaluate_netmask, NULL};
static const ReplacementTag subGatewayVarSub PROGMEM = {subGatewayStr, evaluate_gw, NULL};
static const ReplacementTag subNetConfSrcVarSub PROGMEM = {subNetConfSrcStr, evaluate_ip_src, NULL};
static const ReplacementTag subWebbinoVerVarSub PROGMEM = {subWebbinoVerStr, evaluate_webbino_version, NULL};
static const ReplacementTag subUptimeVarSub PROGMEM = {subUptimeStr, evaluate_uptime, NULL};
static const ReplacementTag subFreeRAMVarSub PROGMEM = {subFreeRAMStr, evaluate_free_ram, NULL};

static const ReplacementTag * const substitutions[] PROGMEM = {
&subMacAddrVarSub,
&subIPAddressVarSub,
&subNetmaskVarSub,
&subGatewayVarSub,
&subNetConfSrcVarSub,
&subWebbinoVerVarSub,
&subUptimeVarSub,
&subFreeRAMVarSub,
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 (9600);
Serial.println (F("Using Webbino " WEBBINO_VERSION));

Serial.print (F("Initializing SD card..."));
if (!webserver.enableSD (SD_SS)) {
Serial.println (F(" failed"));
while (42)
;
}
Serial.println (F(" done"));

Serial.println (F("Trying to get an IP address through DHCP"));
#if defined (WEBBINO_USE_ENC28J60) || defined (WEBBINO_USE_WIZ5100)
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);
#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 ());

webserver.begin (netint, NULL, substitutions);
}
}

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


allegata invece trovate la pagina web che ho messo su sd e che il webbino mi leggere correttamente sulla quale ho inserito i tag con il segno del dollaro.
mi aiutate a configurare questo benedetto valore di voltaggio in modo che lo veda sulla pagina .htm ???

ho più volte riletto e provato seguendo le guide del famoso post 159 che mi avete indirizzato ma non ci riesco.

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 12:56 pm
È una cosa davvero complicata:

Code: [Select]
static PString& evaluate_battery (void *data __attribute__ ((unused))) {
   // read the value at analog input
   value = analogRead(sensorevoltaggio);
   vout = (value * 5) / 1024.0; // see text
   voltaggiobatteria = vout / (R2/(R1+R2)); 
   subBuffer.print(voltaggiobatteria,2);

   return subBuffer;
}
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 01:13 pm
Se non hai cambiato il carattere che delimita i tag, di default è #, non $. Scusa, ma non vedi come sono fatti gli altri nell'HTML? Non fare cose a caso, per favore, cerca di CAPIRE quel che fai.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 19, 2016, 01:15 pm
Sì, se vuoi usare il TAG $ come ho fatto io, devi andare sempre nel file di config e cambiare # con $
C'è una riga nel file che deve diventare così...

#define TAG_CHAR '$'

Comunque scusa per l'esempio che ti ho fatto, ti dava errore perché era per la libreria vecchia di webbino!


@Sukko, comunque non si potrebbe assegnare un indirizzo fisso al posto di DHCP?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 01:25 pm
Boh, quello dipende da cosa vuole fare lui.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 19, 2016, 01:32 pm
@Sukko, comunque non si potrebbe assegnare un indirizzo fisso al posto di DHCP?
Tra gli esempi di Webbino ce ne è uno che fa vedere come dare IP, ed altri valori, fissi ...
... un po' di spirito d'iniziativa gente eh !!!  :smiley-twist:

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 19, 2016, 01:51 pm
Tra gli esempi di Webbino ce ne è uno che fa vedere come dare IP, ed altri valori, fissi ...
... un po' di spirito d'iniziativa gente eh !!!  :smiley-twist:

Guglielmo
Lo So :) Era una domanda riferita a Sukko che vedevo che parlava con Toroter di DHCP
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 04:28 pm
@Sukko, comunque non si potrebbe assegnare un indirizzo fisso al posto di DHCP?
faccio la stessa domanda anche io ed aggiungo che sono finalmente riuscito a configurare il webserver.

come faccio a questo punto ad integrare il comando di uno relay sempre pilotatile dalla stessa pagina dove vedo i valori?

grazie saluti
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 19, 2016, 04:31 pm
Come ha detto @gpb01, un po' di spirito di iniziativa! Se guardi tra gli esempi ne trovi uno che si chiama StaticIP e un altro LedControl.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Oct 19, 2016, 05:03 pm
@Sukko, comunque non si potrebbe assegnare un indirizzo fisso al posto di DHCP?
I Modem/router di solito  permettono di assegnare sempre lo stesso IP in base al MAC address.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 19, 2016, 06:05 pm
I Modem/router di solito  permettono di assegnare sempre lo stesso IP in base al MAC address.
Vero, potrebbe provare.

In alternativa negli esempi della libreria trova un metodo davvero semplice come già accennato da Sukko riferito a Guglielmo che a sua volta mi riprendeva a me  :smiley-mr-green:


@Toroter ma dopo l'hai visualizzato il TAG?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 19, 2016, 07:29 pm
Te l'ho messo io così ordinato male, sarebbe da riordinare sto codice... Ci sono cose che non usi sicuramente e cose che potrebbero essere scritte meglio

Code: [Select]
#define CURRENT_SENSOR A3  // Define Analog input pin that sensor is attached

 
float amplitude_current;      // Float amplitude current
float effective_value;       // Float effective current

int sensor_max;
int sensorevoltaggio = A5;
float vout = 0.0;
float voltaggiobatteria = 0.0;
float R1 = 30000.0; // 
float R2 = 7500.0; //
int value = 0;

#include <Webbino.h>
#include <avr/pgmspace.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 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)
  #include <WebbinoInterfaces/WIZ5100.h>
  NetworkInterfaceWIZ5100 netint;
#elif defined (WEBBINO_USE_ESP8266)
  #include <WebbinoInterfaces/ESP8266.h>

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

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

  NetworkInterfaceESP8266 netint;
#endif

void pins_init()
{
    pinMode(CURRENT_SENSOR, INPUT);
}

int getMaxValue()
{
    int sensorValue;    //value read from the sensor
    int sensorMax = 0;
    uint32_t start_time = millis();
    while((millis()-start_time) < 1000) //sample for 1000ms
    {
        sensorValue = analogRead(CURRENT_SENSOR);
        if (sensorValue > sensorMax)
        {
            /*record the maximum sensor value*/
           
            sensorMax = sensorValue;
        }
    }
    return sensorMax;
}
/******************************************************************************
 * DEFINITION OF TAGS                                                         *
 ******************************************************************************/

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

static PString& evaluate_battery (void *data __attribute__ ((unused))) {
   // read the value at analog input
   value = analogRead(sensorevoltaggio);
   vout = (value * 5) / 1024.0; // see text
   voltaggiobatteria = vout / (R2/(R1+R2));
   subBuffer.print(voltaggiobatteria,2);

   return subBuffer;
}

static PString& chiamalatu (void *data __attribute__ ((unused))) {
   sensor_max = getMaxValue();
 
   
   //the VCC on the Arduino interface of the sensor is 5v
   
    amplitude_current=(float)(sensor_max-512)/1024*5/185*1000000; // for 5A mode,you need to modify this with 20 A and 30A mode;
    effective_value=amplitude_current/1.414;
   
    //for minimum current=1/1024*5/185*1000000/1.414=18.7(mA)
    //Only sinusoidal alternating current
   

    //Only one number after the decimal point
   subBuffer.print(effective_value,2);

   return subBuffer;
}




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

  return subBuffer;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

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

  return subBuffer;
}

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

  return subBuffer;
}

static 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;
}

static PString& evaluate_free_ram (void *data __attribute__ ((unused))) {
  extern int __heap_start, *__brkval;
  int v;

  subBuffer.print ((int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval));

  return subBuffer;
}



// Max length of these is MAX_TAG_LEN (24)
static const char subMacAddrStr[] PROGMEM = "NET_MAC";
static const char subIPAddressStr[] PROGMEM = "NET_IP";
static const char subNetmaskStr[] PROGMEM = "NET_MASK";
static const char subGatewayStr[] PROGMEM = "NET_GW";
static const char subNetConfSrcStr[] PROGMEM = "NET_CONF_SRC";
static const char subWebbinoVerStr[] PROGMEM = "WEBBINO_VER";
static const char subUptimeStr[] PROGMEM = "UPTIME";
static const char subFreeRAMStr[] PROGMEM = "FREERAM";
static const char subVoltaggiotr[] PROGMEM = "TEN";

static const ReplacementTag subMacAddrVarSub PROGMEM = {subMacAddrStr, evaluate_mac_addr, NULL};
static const ReplacementTag subIPAddressVarSub PROGMEM = {subIPAddressStr, evaluate_ip, NULL};
static const ReplacementTag subNetmaskVarSub PROGMEM = {subNetmaskStr, evaluate_netmask, NULL};
static const ReplacementTag subGatewayVarSub PROGMEM = {subGatewayStr, evaluate_gw, NULL};
static const ReplacementTag subNetConfSrcVarSub PROGMEM = {subNetConfSrcStr, evaluate_ip_src, NULL};
static const ReplacementTag subWebbinoVerVarSub PROGMEM = {subWebbinoVerStr, evaluate_webbino_version, NULL};
static const ReplacementTag subUptimeVarSub PROGMEM = {subUptimeStr, evaluate_uptime, NULL};
static const ReplacementTag subFreeRAMVarSub PROGMEM = {subFreeRAMStr, evaluate_free_ram, NULL};
static const ReplacementTag subVoltaggioVarSub PROGMEM = {subVoltaggiotr, evaluate_battery, NULL};

static const ReplacementTag * const substitutions[] PROGMEM = {
  &subMacAddrVarSub,
  &subIPAddressVarSub,
  &subNetmaskVarSub,
  &subGatewayVarSub,
  &subNetConfSrcVarSub,
  &subWebbinoVerVarSub,
  &subUptimeVarSub,
  &subFreeRAMVarSub,
  &subVoltaggioVarSub,
  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 () {
  pinMode(sensorevoltaggio, INPUT);
  pins_init();
  Serial.begin (9600);
  Serial.println (F("Using Webbino " WEBBINO_VERSION));

  Serial.print (F("Initializing SD card..."));
  if (!webserver.enableSD (SD_SS)) {
    Serial.println (F(" failed"));
    while (42)
      ;
  }
  Serial.println (F(" done"));

  Serial.println (F("Trying to get an IP address through DHCP"));
#if defined (WEBBINO_USE_ENC28J60) || defined (WEBBINO_USE_WIZ5100)
  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);
#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 ());

    webserver.begin (netint, NULL, substitutions);
  }
}

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


N.B. QUESTO CODICE NON VA COPIATO E INCOLLATO: c'è da aggiustare la parte dei TAG, ho chiamato apposta la Pstring 'chiamalatu' :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 19, 2016, 09:22 pm
Grazie mille per lo schetch, appena ho un po' di tempo lo proverò . Volevo domandarvi un'altra cosa , come mai il web server è molto lento da remoto ? Quando lavoro in locale  è molto scattante . Sarà perché utilizzo delle immagini all'interno della pagina ? Grazie mille buona serata
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Oct 19, 2016, 10:59 pm
Perché hai una ADSL, in remoto usi la banda di upload che di solito è scarsina, se hai una 7M in upload hai 400k (se va bene). E le immagini non aiutano.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 20, 2016, 09:20 am
Buongiorno a tutti,
Ma in particolare a As_Needed a cui voglio chiedere una cosa nel frattempo che provo lo sketch che mi hai risistemato. Ho visto nel tuo web server che riesci a mettere a video il valore max e il valore minimo del sensore temperatura, durante la giornata, come fai? Grazie e saluti
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 11:06 am
tototer
Mi faresti vedere l'html? per favore? vorrei vedere come il client fa la richiesta al server e se carica tutta la pag a ogni richiesta.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 11:28 am
Scusa sukko il link è questo?
https://github.com/SukkoPera/Sukkino (https://github.com/SukkoPera/Sukkino)

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 11:30 am
Ja!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 11:45 am
Mi sta facendo impazzire
la lib WebServer_ESP8266.h cerca la WiFiEsp.h: che non c'è.
Che poi la ESP non mi serve  :( , ma non fa funzionare niente. IDE 1.6.12

ps: fatto, ho letto nelle note dove prenderla :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 12:24 pm
Ma è strano, non dovrebbe richiedere quella liberia se non attivi il supporto ESP!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 12:28 pm
Ma è strano, non dovrebbe richiedere quella liberia se non attivi il supporto ESP!
Difatti a me non l'ha richiesta ... ::)

>pablos: ... sicuro di non aver decommentato qualche riga di troppo ?

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 20, 2016, 12:30 pm
Buongiorno a tutti,
Ma in particolare a As_Needed a cui voglio chiedere una cosa nel frattempo che provo lo sketch che mi hai risistemato. Ho visto nel tuo web server che riesci a mettere a video il valore max e il valore minimo del sensore temperatura, durante la giornata, come fai? Grazie e saluti
Ricordati di riguardarlo quello sketch ;) Mancano alcune piccole parti per  i TAG

Riguardo a massime e minime di giornata è davvero semplice se hai un RTC ;) Anche perché penso ti serva il valore massimo e minimo di giornata.

Si risolve con un paio di if e qualche variabile.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 12:47 pm
No, non ho toccato nulla, ho preso tutto paro paro :)

Sinceramente per il momento non ho approfondito le lib, faccio un installazione da inesperto di arduino

prendo la webbino e la metto nelle lib dell'ide ... ok
carico l'esempio e compilo .... cominciano gli errori della esp che manca ecco il newbie va in panico :)
Non mi interessa, ma cerco la esp e la installo ..... e già qui si rende difficile la vita a un newbie
Ora compila

non metto sd ne html nulla, osservo per il momento come si comporta

Vado a leggere il serial monitor e aspetto .... inizia la ricerca dell' ESP con 20 secondi di TIMEOUT, per forza non c'è.
Mi dice che cerca un IP tramite DHCP .. perfetto non voglio un IP automatico perchè è un webserver non un webclient, vabbè aspetto ....
Ora mi dice che l' IP tramite DHCP è ok ...

Ma dovè sto IP che hai trovato? non è stampato, e non c'è un errore .... come la pingo la scheda ethernet per vedere se è pronta?

Non ho capito se mancano dei #define ....
Non ho capito come impostare un IP statico locale

Ripeto, non ho studiato le lib e i giri che fanno, non può farlo un newbie.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 01:06 pm
Ho capito: anche tu hai scaricato il master e non il branch sd_support! Quest'ultimo è evoluto molto rispetto al master, come dicevo qualche post fa devo decidermi a fare il merge.

Ranza tutto e riprova col branch, risolve tutto quel che hai lamentato finora ;).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 20, 2016, 01:09 pm
Ricordati di riguardarlo quello sketch ;) Mancano alcune piccole parti per  i TAG

Riguardo a massime e minime di giornata è davvero semplice se hai un RTC ;) Anche perché penso ti serva il valore massimo e minimo di giornata.

Si risolve con un paio di if e qualche variabile.
si mi servono proprio quei valori li max e minimo e lo vorrei estendere pure al voltaggio della batteria cosi da capire quando tocca il minimo di carica.

mi puoi spiegare questo passaggio con le if e le variabili? devo fare 2 nuove funzioni? una per carica max e una per carica minima?

comunque non vedo l'ora di trovare un po di tempo per andare a lavorare su arduino. ti aggiorno su tutto.

per pablos: quale pagina html? quella che ho messo online con il link vuoi vedere?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 20, 2016, 01:20 pm
Ecco un piccolo esempio:

Code: [Select]
if (tp < minTemp) {
    minTemp = tp;
  }
if (tp > maxTemp) {
    maxTemp = tp;
  }


tp è la tua temperatura attuale e minTemp e maxTemp, le due variabili da dichiarare nel tuo sketch dei valori massimi e minimi. Stessa cosa devi fare per tutti i valori che vuoi ;)
Il problema è che senza RTC ti troveresti davvero male a resettare i valori alla mezzanotte
In ogni caso sarebbe così:

Dichiari una variabile byte

byte salvaGiorno;

Nel setup metti dopo la sincronizzazione dell'RTC

Code: [Select]
salvaGiorno = day(); // day() è la dicitura dei giorni della libreria time


nel loop un semplice if così:

Code: [Select]
if (salvaGiorno != day()){
salvaGiorno = day();
minTemp = tp;
maxTemp = tp;
}


Semplice no?
;)





Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 01:45 pm
>pablos: ... mio post #45, QUI (http://forum.arduino.cc/index.php?topic=429298.msg2965730#msg2965730), trovi sia la webbino modificata per gestire W5500 che la libreria Ethernet2. Ti rimane da scaricare l'ultima versione della PString (è richiesta e la trovi QUI (http://arduiniana.org/libraries/pstring/)) e sei a posto. :)

Se vuoi usare le SD con i nomi lunghi (e non 8.3) devi anche scaricarti la SdFat dal link che trovi nei commenti di webbino_config.h ;)

Guglielmo

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Oct 20, 2016, 02:35 pm
Non va bene la SdFat che si scarica dal library manager?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 02:39 pm
Non va bene la SdFat che si scarica dal library manager?
Dove la vedi ? :o   Hai aggiunto tu un repository ... ::)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 02:41 pm
Se è quella di greiman sì, non ho presente quale ci sia nel LM e non ho ancora sistemato Il Mac :(.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Oct 20, 2016, 02:46 pm
Dove la vedi ? :o   Hai aggiunto tu un repository ... ::)
Ho sbagliato, senza alcun dubbio  :-[
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 02:54 pm
Se è quella di greiman sì, non ho presente quale ci sia nel LM e non ho ancora sistemato Il Mac :(.
Nel Library Manager NON né è presente alcuna. C'è la SD standard nell'IDE.

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 02:59 pm
Ok, capito.

Senti gpb, mi pare che qua siamo largamente off-topic. Forse è un po' precoce farlo, ma non sarebbe meglio splittare i post in un thread dedicato a Webbino?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 03:18 pm
Senti gpb, mi pare che qua siamo largamente off-topic. Forse è un po' precoce farlo, ma non sarebbe meglio splittare i post in un thread dedicato a Webbino?
Concordo ...
... dovrei capire QUALI post separare, perché sono un'po inframmezzati ed alcuni servono a questa discussione ... ::)

Qualche idea ?

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 03:24 pm
Dall'88 in poi direi quasi tutti, tranne quelli di As e toto. Prima di quelli almeno quelli di pablos e le mie risposte e quelle di As.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 04:06 pm
Uff ... la gestione di "split" e "merge" di questo forum è ... a dir poco "farragginosa" ... :o

Se faccio "Split", mi crea un nuovo thread, se faccio "Merge" mi lascia comunque una riga di riindirizzamento bloccata e non cancellabile ... non so, non vorrei riempire questa sezione di porcheria.

Vedo quello che riesco a fare ... ::)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 04:14 pm
Allora bisogna che vi mettete d'accordo
Post n°3 di gpb01 indica il link che ho scaricato

Post n°88 mio con succesiva conferma di sukko del link che ho scaricato
Poi esce un allegato che arriva non si sa da dove ....

Ca le nu burdell ... quindi resetto tutto ...
sono niubbo, cerco una libreria per fare un web server mi consigliate la webbino, ok ... accetto il consiglio,  mi date un link internet da dove scaricarla?
Si parla di W5100 ... poi w5500, una va l'altra no
Io ho una 5100, non voglio leggere 700 post e scaricare allegati :) .. come devo fare?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 04:18 pm
Nulla ... viene un casino ... o lo split uno lo fa subito o andare a pescare post uno qui ed uno li ... è un disastro.

Conviene lasciare qui tutto come è, Sukko, apri tu un nuovo thread dedicato a Webbino in cui spieghi cosa è, il link esatto dove scaricarlo, ecc. ecc. e ... la discussione la continuiamo di là ...

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 20, 2016, 04:21 pm
>pablos ...
... il link alla libreria è QUESTO (https://github.com/SukkoPera/Sukkino/tree/sd_support), ma NON supporta il W5500 dato che l'implemnetazione l'ho fatta io ed è al momento SOLO nell'allegato che ti ho indicato.

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 20, 2016, 04:26 pm
OK gpb, allora lo faccio appena il mio Mac è nuovamente agibile, sperando di rilasciare la 1.0.

@pablos: Il link era corretto, davo per scontato che poi selezionassi il branch giusto :D. Segui il link di gpb qua sopra e scarica lo zip (o, ancora meglio, clona il repository). Ti accorgerai subito che la libreria ha la struttura 1.5, se è così è quella giusta. Al momento non siamo ancora a una release stabile, per cui ci vuole un po' di "interpolazione" ;). Comunque se non ti serve il supporto Wiz5500 è finita lì.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 04:26 pm
E si, meglio fare una discussione solo per la Webbino .. saggia idea :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 20, 2016, 05:18 pm
Il povero Toroter se no si ingarbuglia non poco :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 20, 2016, 05:49 pm
Se vuole elimino i miei post, tanto alla fine non ho concluso niente  :)  :)  :) 
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Oct 21, 2016, 10:44 am
>pablos ...
... il link alla libreria è QUESTO (https://github.com/SukkoPera/Sukkino/tree/sd_support), ma NON supporta il W5500 dato che l'implemnetazione l'ho fatta io ed è al momento SOLO nell'allegato che ti ho indicato.

Guglielmo
ok fatto, funziona grazie
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 22, 2016, 11:32 am
Volevo chiedere un altro cosa, sono riuscito a inserire sullo sketch che avevo l'ip fixed partendo dall'esempio di sukkopera, adesso vorrei integrare la possibilità di comandare due relay, mi aiutate a configurare? ho visto l'esempio di sukkopera ma non riesco ad integrarlo sul mio sketch. inoltre lo vorrei fare funzionare dalla stessa pagina .htm su cui leggo i valori integrandolo sui pulsanti che vedete in immagina.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 22, 2016, 12:10 pm
Ascolta tototer, se vuoi fare tutte quelle cose, hai l'atteggiamento sbagliato. Non puoi arrenderti ad ogni difficoltà e chiedere a qualcun altro che faccia il lavoro al tuo posto. Devi capire come funziona Arduino, le basi della programmazione e del C. Non bastano 5 minuti per tutte queste cose, ma è tempo ben impiegato: una volta che hai capito i fondamenti, il resto viene da sé e l'autonomia che ne consegue ti porterà dove vorrai.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 22, 2016, 12:13 pm
Ascolta tototer, se vuoi fare tutte quelle cose, hai l'atteggiamento sbagliato. Non puoi arrenderti ad ogni difficoltà e chiedere a qualcun altro che faccia il lavoro al tuo posto. Devi capire come funziona Arduino, le basi della programmazione e del C. Non bastano 5 minuti per tutte queste cose, ma è tempo ben impiegato: una volta che hai capito i fondamenti, il resto viene da sé e l'autonomia che ne consegue ti porterà dove vorrai.
credo che siamo tutti sul forum per la stessa passione, ce chi è più indietro ce chi è più avanti. chiedere aiuto significa chiedere di imparare. cercare una mano da un maestro, da uno più esperto.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 22, 2016, 12:16 pm
Sì, ma chiedere aiuto non è "Qualcuno può farmi questa cosa?" "E quest'altra?" "E quest'altra ancora?". È "Ho fatto questo sketch ma non compila dando l'errore X, dove sbaglio?".
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 22, 2016, 12:51 pm
ok ci siamo, capisco quello che vuoi dire, ma considera che è pure un problema di mancanza di basi sulla programmazione. comunque sensore corrente continua ok.

mi dai una dritta per aggiungere al tuo web server il comando per 1 relay?

io ho uno sketch dove lo comando con /?on ed /?off ho provato ad integrarlo con il tuo web server ma vanno in contrasto perche richiamando la libreria ethernet.h è come se creasse un altro web server e se metto la stessa porta cioè 8000 fa in crash tutto
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 22, 2016, 01:10 pm
Guarda l'esempio LedControl, te l'avevo anche già suggerito.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 22, 2016, 03:44 pm
Sì è meglio se provi fino allo sfinimento e poi se non ci riesci proprio chiedi aiuto ;) All'inizio ti ho integrato quelle cose e ti ho dato una mano, ma anche questo è darti una mano, come hanno fatto anche altri qui. Si tratta solo di dichiarare al posto giusto una variabile, non devi mettere nella Pstring tutto il ciclo for. Ragiona su questa frase ;) Poi ci sono gli esempi di Sukko che sono molto ben spiegati ;)
Ciao!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 22, 2016, 04:17 pm
Studiati la funzione ledToggle().
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 22, 2016, 04:30 pm
sukko purtroppo non riesco a capire, sto cercando su google, puoi darmi una dritta?
ma riesco a comandare tramite indirizzo dal browser ?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 22, 2016, 04:33 pm
Non è che non riesci a capire, non vuoi capire.

Code: [Select]
void ledToggle (HTTPRequestParser& request) {
char *param;

param = request.get_parameter (F("state"));    <-- Prendi il parametro state dall'URL
if (strlen (param) > 0) {
if (strcmp_P (param, PSTR ("on")) == 0) {  <-- Se il parametro è on...
ledState = true;
digitalWrite (ledPin, HIGH);        <-- ... Accendi
} else {    <-- ... Altrimenti...
ledState = false;
digitalWrite (ledPin, LOW);   <-- ... Spegni
}
}
}
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 22, 2016, 04:55 pm
ho provato la qualunque, credo siano le basi che mi mancano, non la penso come te che non voglio capire! anzi sono qui proprio per questo

ho provato:

192.168.1.101/?stateon
192.168.1.101/?state=on
192.168.1.101/?on
192.168.1.101/?off
192.168.1.101/?stateled=on
192.168.1.101/?stateled=off

e tanti altri ma non mi pare
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 22, 2016, 05:11 pm
Quello non è capire, è andare a caso...

Code: [Select]
http://192.168.1.101/?state=on
Quello giusto è questo. Se non funziona non hai riportato tutto. Prova con lo sketch LedControl "pulito".
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 22, 2016, 05:11 pm
ho provato la qualunque, credo siano le basi che mi mancano
... ecco, dato che ti mancano proprio le BASI, allora ti fermi con lo sviluppo, che tanto vedo è praticamente un copia/incolla di quello che ti viene fatto dagli altri, e ti metti a STUDIARE ...

Puoi cominciare con  QUESTO (http://cabestano.altervista.org/alterpages/files/TizianaMarsella-ProgrammareArduino.pdf) , poi proseguire con QUESTO (http://bit.ly/PPcGUbSM) e infine non faresti male a comprati e sudiare anche QUESTO (https://www.amazon.it/Arduino-essenziale-linguaggio-librerie-elettronica/dp/8865374837) (... è tra i migliori in lingua italiana).

Vedrai che poi ti sarà tutto più chiaro!

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: elrospo on Oct 23, 2016, 11:40 pm
ho provato la qualunque, credo siano le basi che mi mancano, non la penso come te che non voglio capire! anzi sono qui proprio per questo

mah  non è detto che siano le basi di arduino che mancano  :smiley-sad:

penso che se vuoi trafficare con serverweb  e pagine html bisogna conoscere un po anche quella roba  :smiley-confuse:
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 24, 2016, 01:59 am
Tototer aggiornaci ;)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 24, 2016, 10:21 am
Tototer aggiornaci ;)
Buongiorno As_Needed, sono riuscito a comandare il rele nella seguente maniera:

indirizzoip/index.html/?state=on
indirizzoip/index.html/?state=off

funziona perferttamente ed ho modificato il codice per pilotare 2 relay (non ho ancora provato)

volevo chiedere invece una cosa nel file html.h è contenuta tutta la pagina per il comando del led
come faccio a modificare il contenuto di questo file?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 24, 2016, 10:33 am
volevo chiedere invece una cosa nel file html.h è contenuta tutta la pagina per il comando del led
come faccio a modificare il contenuto di questo file?
Un file .html è un normale file ASCII e quindi lo editi con un qualsiasi editor di TESTO (NON usare wordprocessor o cose che lavorano in RTF perché ti ci infilano dentro i caratteri di controllo).

Ovvio che devi masticare un po' di HTML e la sua sintassi.

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 24, 2016, 10:36 am
questo è il contenuto del file html.h

non è il solito contenuto di un file .htm :D

Code: [Select]
const char index_html_name[] PROGMEM = "/index.html";

const char index_html[] PROGMEM = {
0x3c,  0x68,  0x74,  0x6d,  0x6c,  0x3e,  0x3c,  0x62, 
0x6f,  0x64,  0x79,  0x3e,  0x3c,  0x68,  0x32,  0x3e, 
0x57,  0x65,  0x62,  0x62,  0x69,  0x6e,  0x6f,  0x20, 
0x23,  0x57,  0x45,  0x42,  0x42,  0x49,  0x4e,  0x4f, 
0x5f,  0x56,  0x45,  0x52,  0x23,  0x3c,  0x2f,  0x68, 
0x32,  0x3e,  0x3c,  0x68,  0x33,  0x3e,  0x3c,  0x61, 
0x20,  0x68,  0x72,  0x65,  0x66,  0x3d,  0x22,  0x68, 
0x74,  0x74,  0x70,  0x73,  0x3a,  0x2f,  0x2f,  0x67, 
0x69,  0x74,  0x68,  0x75,  0x62,  0x2e,  0x63,  0x6f, 
0x6d,  0x2f,  0x53,  0x75,  0x6b,  0x6b,  0x6f,  0x50, 
0x65,  0x72,  0x61,  0x2f,  0x53,  0x75,  0x6b,  0x6b, 
0x69,  0x6e,  0x6f,  0x22,  0x3e,  0x68,  0x74,  0x74, 
0x70,  0x73,  0x3a,  0x2f,  0x2f,  0x67,  0x69,  0x74, 
0x68,  0x75,  0x62,  0x2e,  0x63,  0x6f,  0x6d,  0x2f, 
0x53,  0x75,  0x6b,  0x6b,  0x6f,  0x50,  0x65,  0x72, 
0x61,  0x2f,  0x53,  0x75,  0x6b,  0x6b,  0x69,  0x6e, 
0x6f,  0x3c,  0x2f,  0x61,  0x3e,  0x3c,  0x2f,  0x68, 
0x33,  0x3e,  0x3c,  0x68,  0x33,  0x3e,  0x43,  0x6f, 
0x70,  0x79,  0x72,  0x69,  0x67,  0x68,  0x74,  0x20, 
0x28,  0x43,  0x29,  0x20,  0x32,  0x30,  0x31,  0x32, 
0x2d,  0x32,  0x30,  0x31,  0x36,  0x20,  0x42,  0x79, 
0x20,  0x3c,  0x61,  0x20,  0x68,  0x72,  0x65,  0x66, 
0x3d,  0x22,  0x6d,  0x61,  0x69,  0x6c,  0x74,  0x6f, 
0x3a,  0x73,  0x6f,  0x66,  0x74,  0x77,  0x61,  0x72, 
0x65,  0x40,  0x73,  0x75,  0x6b,  0x6b,  0x6f,  0x6c, 
0x6f,  0x67,  0x79,  0x2e,  0x6e,  0x65,  0x74,  0x22, 
0x3e,  0x53,  0x75,  0x6b,  0x6b,  0x6f,  0x50,  0x65, 
0x72,  0x61,  0x3c,  0x2f,  0x61,  0x3e,  0x3c,  0x2f, 
0x68,  0x33,  0x3e,  0x3c,  0x68,  0x34,  0x3e,  0x54, 
0x68,  0x69,  0x73,  0x20,  0x70,  0x72,  0x6f,  0x67, 
0x72,  0x61,  0x6d,  0x20,  0x63,  0x6f,  0x6d,  0x65, 
0x73,  0x20,  0x77,  0x69,  0x74,  0x68,  0x20,  0x41, 
0x42,  0x53,  0x4f,  0x4c,  0x55,  0x54,  0x45,  0x4c, 
0x59,  0x20,  0x4e,  0x4f,  0x20,  0x57,  0x41,  0x52, 
0x52,  0x41,  0x4e,  0x54,  0x59,  0x2e,  0x20,  0x54, 
0x68,  0x69,  0x73,  0x20,  0x69,  0x73,  0x20,  0x66, 
0x72,  0x65,  0x65,  0x20,  0x73,  0x6f,  0x66,  0x74, 
0x77,  0x61,  0x72,  0x65,  0x2c,  0x20,  0x61,  0x6e, 
0x64,  0x20,  0x79,  0x6f,  0x75,  0x20,  0x61,  0x72, 
0x65,  0x20,  0x77,  0x65,  0x6c,  0x63,  0x6f,  0x6d, 
0x65,  0x20,  0x74,  0x6f,  0x20,  0x72,  0x65,  0x64, 
0x69,  0x73,  0x74,  0x72,  0x69,  0x62,  0x75,  0x74, 
0x65,  0x20,  0x69,  0x74,  0x20,  0x75,  0x6e,  0x64, 
0x65,  0x72,  0x20,  0x63,  0x65,  0x72,  0x74,  0x61, 
0x69,  0x6e,  0x20,  0x63,  0x6f,  0x6e,  0x64,  0x69, 
0x74,  0x69,  0x6f,  0x6e,  0x73,  0x3b,  0x20,  0x3c, 
0x61,  0x20,  0x68,  0x72,  0x65,  0x66,  0x3d,  0x22, 
0x68,  0x74,  0x74,  0x70,  0x3a,  0x2f,  0x2f,  0x77, 
0x77,  0x77,  0x2e,  0x67,  0x6e,  0x75,  0x2e,  0x6f, 
0x72,  0x67,  0x2f,  0x6c,  0x69,  0x63,  0x65,  0x6e, 
0x73,  0x65,  0x73,  0x2f,  0x67,  0x70,  0x6c,  0x2d, 
0x33,  0x2e,  0x30,  0x2e,  0x68,  0x74,  0x6d,  0x6c, 
0x22,  0x3e,  0x63,  0x6c,  0x69,  0x63,  0x6b,  0x20, 
0x68,  0x65,  0x72,  0x65,  0x3c,  0x2f,  0x61,  0x3e, 
0x20,  0x66,  0x6f,  0x72,  0x20,  0x64,  0x65,  0x74, 
0x61,  0x69,  0x6c,  0x73,  0x2e,  0x3c,  0x2f,  0x68, 
0x34,  0x3e,  0x3c,  0x68,  0x72,  0x2f,  0x3e,  0x3c, 
0x68,  0x32,  0x3e,  0x4c,  0x65,  0x64,  0x20,  0x43, 
0x6f,  0x6e,  0x74,  0x72,  0x6f,  0x6c,  0x3c,  0x2f, 
0x68,  0x32,  0x3e,  0x3c,  0x66,  0x6f,  0x72,  0x6d, 
0x20,  0x6d,  0x65,  0x74,  0x68,  0x6f,  0x64,  0x3d, 
0x22,  0x67,  0x65,  0x74,  0x22,  0x3e,  0x3c,  0x69, 
0x6e,  0x70,  0x75,  0x74,  0x20,  0x74,  0x79,  0x70, 
0x65,  0x3d,  0x22,  0x72,  0x61,  0x64,  0x69,  0x6f, 
0x22,  0x20,  0x6e,  0x61,  0x6d,  0x65,  0x3d,  0x22, 
0x73,  0x74,  0x61,  0x74,  0x65,  0x22,  0x20,  0x76, 
0x61,  0x6c,  0x75,  0x65,  0x3d,  0x22,  0x6f,  0x6e, 
0x22,  0x20,  0x23,  0x53,  0x54,  0x5f,  0x4f,  0x4e, 
0x5f,  0x43,  0x48,  0x4b,  0x23,  0x2f,  0x3e,  0x4f, 
0x4e,  0x3c,  0x62,  0x72,  0x20,  0x2f,  0x3e,  0x3c, 
0x69,  0x6e,  0x70,  0x75,  0x74,  0x20,  0x74,  0x79, 
0x70,  0x65,  0x3d,  0x22,  0x72,  0x61,  0x64,  0x69, 
0x6f,  0x22,  0x20,  0x6e,  0x61,  0x6d,  0x65,  0x3d, 
0x22,  0x73,  0x74,  0x61,  0x74,  0x65,  0x22,  0x20, 
0x76,  0x61,  0x6c,  0x75,  0x65,  0x3d,  0x22,  0x6f, 
0x66,  0x66,  0x22,  0x20,  0x23,  0x53,  0x54,  0x5f, 
0x4f,  0x46,  0x46,  0x5f,  0x43,  0x48,  0x4b,  0x23, 
0x2f,  0x3e,  0x4f,  0x46,  0x46,  0x3c,  0x62,  0x72, 
0x20,  0x2f,  0x3e,  0x3c,  0x62,  0x72,  0x20,  0x2f, 
0x3e,  0x3c,  0x69,  0x6e,  0x70,  0x75,  0x74,  0x20, 
0x74,  0x79,  0x70,  0x65,  0x3d,  0x22,  0x73,  0x75, 
0x62,  0x6d,  0x69,  0x74,  0x22,  0x20,  0x76,  0x61, 
0x6c,  0x75,  0x65,  0x3d,  0x22,  0x53,  0x65,  0x74, 
0x22,  0x20,  0x2f,  0x3e,  0x3c,  0x2f,  0x66,  0x6f, 
0x72,  0x6d,  0x3e,  0x3c,  0x2f,  0x62,  0x6f,  0x64, 
0x79,  0x3e,  0x3c,  0x2f,  0x68,  0x74,  0x6d,  0x6c, 
0x3e,  0x00
};

// unsigned int index_html_len = 690;
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 24, 2016, 10:40 am
Quello viene usato solo se vuoi mettere le pagine nella flash (e viene generato con lo script Python che c'è in tools). Se le metti sulla SD sono file HTML normali (vedi esempio SDonly).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 24, 2016, 11:09 am
Esatto e se vuoi il file HTML come lo conosci tu, basta che adesso che hai provato questa pagina HTML su broswer, premi f12 sul browser e fai copy outer HTML
Poi lo incolli ad esempio sul note
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 24, 2016, 11:14 am
ok perfetto, ma per dire allo sketch di non leggere le pagine dalla flash dovrò intervenire da qualche parte o no?

credo che la riga sia questa

Code: [Select]
webserver.begin (netint, pages, substitutions); //PRIMA DI PAGES C'ERA scritto NULL

io voglio dire allo sketch di non leggere dalla flash ma leggere da un eventuale altra pagina che metterei sempre su sd
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 24, 2016, 12:20 pm
Ora non ricordo di preciso, anche perché è una cosa che voglio cambiare, ma se guardi la chiamata al begin() (e dintorni) nell'esempio SDonly vedrai che è diversa in qualche modo. Sicuramente ci vuole quel NULL. 
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 26, 2016, 09:50 pm
Vi annuncio che, con questo commit (https://github.com/SukkoPera/Sukkino/commit/156a7be89fd14f3733fc905723582d6e76bdc36e), ho aggiunto sul branch il supporto all'Ethernet Shield 2. Non l'ho testato perché non ho nessuna scheda, tutto quel che posso dire è che compila :D.

Ringraziate gpb!

Ora vedo di lavorare a una semplificazione per i tag.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 26, 2016, 09:53 pm
Non l'ho testato perché non ho nessuna scheda, tutto quel che posso dire è che compila :D.
... io posso dire che, oltre a compilare, a me gira pure (su W5500)  :smiley-mr-green:

Beh ... aggiungiamo grazie ad Arduino.org per la libreria Ethernet2 ;)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 26, 2016, 10:14 pm
Ottimo :). Avrei bisogno di un favore, visto che al momento non posso fare test: potresti cortesemente scaricare questo branch (https://github.com/SukkoPera/Sukkino/tree/easy_tags) e verificare se l'esempio LedControl funziona come deve?

Sono solo modifiche "sintattiche", ma dovrebbero rendere l'utilizzo dei tag moooolto più comodo.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 27, 2016, 08:55 am
Scusa Sukko ... ma ho visto che hai unificato le cose, ma non trovo la #include della libreria Ethernet2 ...

Code: [Select]
#if defined (WEBBINO_USE_WIZ5100) || defined (WEBBINO_USE_WIZ5500)

#include <Ethernet.h>
....

... sbaglio ? Per la W5500 è obbligatorio usare la Ethernet2 ... quindi mi aspettavo di trovare l'include ... ::)

Guglielmo

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 27, 2016, 09:02 am
Erm certo, sono un cretino :D. Stasera fixo!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 27, 2016, 11:47 pm
Fixato!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 28, 2016, 07:11 am
Continuo a non trovare la versione che usa la Ethernet2 ... ::)  Dove è ?

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: ExperimentUno on Oct 28, 2016, 07:42 am
Un topico un po dirottato :D
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 28, 2016, 08:00 am
Un topico un po dirottato :D
Se avessi letto tutti i post avresti capito anche "perchè" :smiley-evil:

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 28, 2016, 08:02 am
Continuo a non trovare la versione che usa la Ethernet2 ... ::)  Dove è ?
>SukkoPera: ... ho trovato QUESTO (https://github.com/SukkoPera/Sukkino/tree/sd_support) branch (sd_support) che mi sembra sia quello corretto :) ... confermi ?

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 28, 2016, 08:48 am
Sì, tutto lo sviluppo avviene lì al momento. Per te però avevo postato un altro link, per il branch easy_tags, prova questo.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 28, 2016, 09:51 am
Sì, tutto lo sviluppo avviene lì al momento. Per te però avevo postato un altro link, per il branch easy_tags, prova questo.
... in cui però NON hai fatto il fix per la W5500 e continui ad includere solo la Ethernet ... ho sbaglio ? ::)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 28, 2016, 10:29 am
Ma porc, devo avere mergeato il commit sbagliato. Vabbé, testa sd_support :). Se riesci a testare anche uno degli esempi con tag di easy_tags mi fai un favore, eventualmente con un'altra scheda. Se vuoi anche dare un'occhiata a questo branch e dirmi se la gestione dei tag così ti pare più semplice, sarebbe poi il massimo :).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Oct 28, 2016, 04:04 pm
La webbino è il futuro del collegamento sulla rete con Arduino :) :D
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 28, 2016, 04:25 pm
... Se riesci a testare anche uno degli esempi con tag di easy_tags mi fai un favore, eventualmente con un'altra scheda.
Ho applicato le poche righe :

Code: [Select]
#if defined (WEBBINO_USE_WIZ5100)
#include <Ethernet.h>
#elif defined (WEBBINO_USE_WIZ5500)
#include <Ethernet2.h>
#endif

alla versione easy_tag (... tanto mancava solo quello), montata la scheda con  Wiz5500, caricato l'esempio "LedControl" e ... funziona perfettamente  ;D

Guglielmo

P.S.: Comunque, a questo punto, è d'obbligo che tu la documenti come si deve ... con un bel manualetto che spiega tutte le varie funzionalità ;)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 29, 2016, 01:21 pm
Effettivamente al momento non è possibile associare una funzione in modo che venga invocata all'apertura di una pagina da SD, ma solo da flash.

Tu quante pagine HTML hai?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 29, 2016, 01:42 pm
io ho una sola pagina html che ho chiamato

index.htm

dove ho inserito tutti i tag dei sensori.

da li vorrei poter anche comandare i relay.

cosa mi consigli di fare?

che strada prendo?

potrei usare il tuo file html.h ma contiene la possibilità di comandare un solo relay.

ma sinceramente non mi piace dove andare su un altra pagina a fare il lavoro di comando relay, quando ho spazio a sufficienza nella stessa pagina dei sensori.

perche non proviamo ad implementare la cosa? io sono a tua completa disposizione.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 29, 2016, 01:46 pm
Se hai una pagina sola e non è troppo grossa, allora puoi metterla nella flash, così ti risparmi pure la SD. Nella pratica questo si riduce a convertire la tua pagina HTML nel file html.h. Hai mai usato Python? Hai un ambiente installato?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Oct 29, 2016, 01:52 pm
no non ho mai usato pyton e non ho un ambiente installato
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 29, 2016, 04:58 pm
OK, allora per ora te la converto io. Mandami la pagina HTML per mail all'indirizzo che trovi da qualche parte in Webbino (library.properties).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 30, 2016, 10:11 pm
UDITE UDITE! Sul branch sd_support (https://github.com/SukkoPera/Sukkino/tree/sd_support) ho aggiunto il supporto per la libreria WiFi101. Questo significa che lo shield wifi ufficiale e la MKR1000 dovrebbero ora essere supportate!

Tuttavia non ho né l'uno né l'altra... @gpb01, potresti cortesemente testare su MKR1000? :D

In ogni caso, ora mi metto a mergeare tutto, così poi apro un thread dedicato!

PS: Ho anche sistemato gli #include sul branch easy_tags, ma intanto sta per scomparire :D.

EDIT: Ho mergeato tutto sul master e dedicato l'intero repository a Webbino. Ora la vita dovrebbe essere un po' più semplice per tutti: https://github.com/SukkoPera/Webbino (https://github.com/SukkoPera/Webbino).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Oct 31, 2016, 08:35 am
... Tuttavia non ho né l'uno né l'altra... @gpb01, potresti cortesemente testare su MKR1000? :D
Bel lavoro !!!  ;D

Oggi sono fuori, ma vedo se domani riesco a fare qualche prova ... dato che ho sia MKR1000 che lo shield WiFi (https://www.arduino.cc/en/Main/ArduinoWiFiShield) ufficiale Arduino.cc con HDG204 ;)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Oct 31, 2016, 09:57 am
Aspetta, io parlavo del WiFi shield 101, quello che monta lo stesso chip della MKR1000. Comunque se hanno rispettato l'API, dovrebbe bastare cambiare l'#include per quello. Se provi e mi fai sapere, aggiungo supporto anche per quello ;).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: speedyant on Oct 31, 2016, 10:02 am
Interessante, adesso che ho una mkr1000 posso "divertirmi".

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Nov 01, 2016, 03:10 pm
>SukkoPera: ... dovresti modificare però il nome della parte che riguarda il WiFi ... difatti WiFi.h (https://github.com/arduino/Arduino/blob/master/libraries/WiFi/src/WiFi.h) e WiFi.cpp (https://github.com/arduino/Arduino/blob/master/libraries/WiFi/src/WiFi.cpp) sono i nomi standard della libreria Arduino per il WiFi (https://www.arduino.cc/en/Reference/WiFi) e NON mi sembra assolutamente il caso di usare gli stessi nomi con i casini che ne possono seguire !!!

Attendo la modifica prima di proseguire con i test ;)

Grazie :)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 01, 2016, 03:30 pm
È vero, ma non dovrebbe essere un problema in quanto il file va sempre incluso col path esteso:

#include <WebbinoInterfaces/WiFi.h>

Inoltre lo standard 1.5 specifica che gli #include vengono ricercati solo nei file immediatamente presenti nella cartella src delle librerie, non nelle ulteriori sottocartelle di questa.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Nov 01, 2016, 03:55 pm
Si, certo , però, permetti ... usare i nomi di una libreria std. Arduino ... non è proprio il massimo non ti sembra ? ::)

Inoltre, alla linea 20 di WiFi.cpp (https://github.com/SukkoPera/Webbino/blob/master/src/WebbinoInterfaces/WiFi.cpp) fai: #include "WiFi.h" ... che è anch'esso discutibile ...

Insomma, magari mettici un carattere davanti o dietro, un underscore, ecc. ma distingui le cose (... conosci gli utenti). NON è mai elegante e consigliato usare nomi già usati per altre cose ;)

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Nov 01, 2016, 06:04 pm
Guglielmo ha ragione, ogni volta si crea troppa confusione con le librerie omonime. Meglio evitare.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 01, 2016, 06:32 pm
Ma @gpb01 ha sicuramente ragione! Non è una cosa voluta, non ho mai usato la lib WiFi ufficiale e lì per lì non ho pensato a questo conflitto di nomi, appena posso fixo. Solo, analizzando un attimo la cosa credo che DOVREBBE comunque funzionare.

Se anzi, voleste provvedere voi alla modifica e inviare una Pull Request... :D
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Nov 01, 2016, 07:59 pm
Poi quel confitto tra la libreria del DS2331 e DS18B20 non l'hanno ancora risolto... Avevi aperto un issue sukko :)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Nov 02, 2016, 12:44 pm
Parliamo del DS3232 o del DS2331 che però mi sa che non esiste?
E di quale conflitto?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Nov 02, 2016, 02:03 pm
Parliamo del DS3232 o del DS2331 che però mi sa che non esiste?
E di quale conflitto?
QUESTO (https://github.com/JChristensen/DS3232RTC/issues/28)
Ma comunque se non usi il DS3231 per la temperatura non dovrebbero esserci problemi a usarlo insieme al Dallas
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: zoomx on Nov 02, 2016, 03:28 pm
Karma+
Non sapevo di questo banale problema e giusto giusto un giorno dovrei realizzare il datalogger Low Power descritto su Cave Pearl che usa proprio il DS3231 di cui volevo usare il anche sensore di temperatura.
Vuol dire che modificherò una delle due librerie che poi includerò insieme allo sketch in modo da evitare confusione.

Mi sa che quel define potrebbe essere presente tal quale in altre librerie.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Nov 03, 2016, 12:36 am
Grazie per il karma!
Comunque sì, quel define l'avevo trovato uguale anche da un'altra parte, peccato non mi ricordi dove...
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 03, 2016, 12:38 am
Senza cambiarli, basterebbe passarli a costanti C++, nel senso di membri della classe, invece che #define come sono ora. In quel modo avrebbero uno scope più ristretto (e direi nemmeno pubbico).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Nov 05, 2016, 02:07 pm
Buongiorno a tutti!

volevo chiedere un consiglio a tutti voi in particolare al creatore del webserver tanto discusso in questo post. ho completato il mio progetto e vorrei integrare la possibilità di accedere solo tramite password in quando oltre a vedere i valori dei sensori ho integrato pure la possibilità di comandare dei relay. ho visto diverse guide su come integrare html basic authentication ma non riesco ad integrarlo sul webbino. mi potete dare qualche dritta? mi rivolgo in particolare a sukkopera. grazie mille e saluti

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 05, 2016, 03:21 pm
Quindi hai risolto tutti i problemi? Sei riuscito a integrare relay e temperature?

La protezione con password al momento non è implementata. È una cosa che penso farò, ma non tanto a breve.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Nov 05, 2016, 03:47 pm
si sono riuscito a mettere tutto nella stessa pagina. cosi ho sia i valori che provengono dai vari sensori, sia comandare i relay con i relativi status se aperti o chiusi.

per quanto riguarda l'implementazione della password, da dove potrei iniziare a studiare la casa per cercare di implementarla io?
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Nov 05, 2016, 03:53 pm
Aspettiamo tutti il tuo topic sukko :D
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Nov 05, 2016, 03:54 pm
l'idea era di implementare un sistema tipo questo:

http://www.lucadentella.it/2013/08/26/enc28j60-e-arduino-15/ (http://www.lucadentella.it/2013/08/26/enc28j60-e-arduino-15/)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 05, 2016, 03:56 pm
@tototer: come hai fatto? Sei riuscito a ricreare html.h da solo?

Per la password sì, uno dei pochi meccanismi fattibile è quello, ma ci vuole del tempo per implementarlo, e ho altre cose da sistemare prima.

@As_Needed: A breve arriva, sto giusto fixando un paio di cose or ora (leggi support ESP8266 standalone, che dovrebbe fixare anche MKR1000, che ancora non so se funziona).
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Nov 05, 2016, 04:05 pm
... che dovrebbe fixare anche MKR1000, che ancora non so se funziona ...
... :smiley-confuse: ... purtroppo sono in giro e manco dall'ufficio per alcuni giorni ... quando rientro faccio le varie prove.

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 05, 2016, 04:07 pm
Sì, non ti preoccupare, intendevo solo dire che ci sono potenziali casini con la PROGMEM, che non ho idea se sia supportata o meno sulla MKR1000. Comunque ci sto lavorando.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 05, 2016, 06:27 pm
Allright, ho committato tutte le modifiche che avevo in lavorazione e aggiunto supporto per ESP8266 standalone e WiFi shield ufficiale, quest'ultimo non testato perché non ce l'ho.

Ho anche rinominato WiFi.h come suggerito.

Direi che ho completato tutte le modifiche per la prima release ufficiale. Se qualcuno vuole fare qualche test è ben accetto :). Troverete un po' di cose cambiate, ma in generale dovrebbe essere un po' più semplice e/o comodo.
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: tototer on Nov 06, 2016, 03:02 pm
@sukkopera si ho creato un file html.h partendo da una guida trovata da internet e sono riuscito con il tuo sistema. è online da 7 giorni arduino e va una meraviglia.

per l'implementazione della password visto che attualmente non puoi eseguirla.

volevo chiederti cosa ne pensavi che la fase di autenticazioni la sposto sulla sd card.

mi spiego meglio:

il webbino sa che deve aprire il file index.htm ed una volta aperto all'interno trovano c'è uno script che blocca. stavo pensando ad un login che usa un paio di file .php. ma il webserver che genera su arduino è capace di leggerli? o meglio se uno un javascript?

Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: pablos71 on Nov 06, 2016, 03:11 pm
Quote
Se qualcuno vuole fare qualche test è ben accetto
Io qualche test e aggiunta l'avrei fatta, anzi li ho fatti e avrei molte cose di cui discutere e se mi è concesso contestare :) :) ma non hai ancora creato un treadh dedicato esclusivamente alla  suddetta libreria, eventuali discussioni e chiarimenti da vedersi sempre all'interno di questo completo di link posti sul primo post.
Avrei delle cose da chiedere su questa lib, ma non posso farlo qui.
Prendi esempio da Leo che ogni volta che faceva una lib apriva un treadh dedicato esclusivamente a quello, le informazioni scritte qui, release, aggiornamenti vari non le troverà nessuno in futuro se lasciate qui.
Per ora è solo un burdell che viene comodo solo a tototer

PS: aprite sto benedetto NEW TOPIC!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: gpb01 on Nov 06, 2016, 03:53 pm
Vero Pablos ...
... qui si era rimasti solo perche non avevo potuto splittare il thread, ma, come già detto, sarebbe bene che SukkoPera aprisse proprio un thread dedicato a Webbino ... che inoltre, se riscuote successo, spostiamo poi in Megatopic.

Guglielmo
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 06, 2016, 03:53 pm
@tototer: per curiosità, mi spiegheresti esattamente cosa hai fatto per generare html.h?

Per l'autenticazione, se Arduino potesse leggere file PHP direi che Webbino non avrebbe ragione di esistere :). Javascript può funzionare, in quanto è eseguito sul browser, ma non sono sicuro che si possa riuscire a mettere in piedi un sistema di autenticazione solido usando solo quello. Però lo conosco praticamente zero, per cui non saprei dire più di tanto.

@pablos: Hai ragione, ora è il momento di aprire il thread dedicato. Finora non aveva senso, in quanto anche solo scaricare il codice giusto era una mezza impresa :D. Provvedo. Ogni critica è ben accetta, purché costruttiva.

EDIT: Fatto: http://forum.arduino.cc/index.php?topic=433776 (http://forum.arduino.cc/index.php?topic=433776)
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: As_Needed on Nov 06, 2016, 04:24 pm
Almeno a me non si clicca il link che hai messo ;) Però l'ho trovato lo stesso e ti ho commentato!
Title: Re: Come inviare i dati da ARDUINO ad una pagina HTML
Post by: SukkoPera on Nov 06, 2016, 04:27 pm
Fixato. Odio la gestione dei link su questo forum! :smiley-mad: