Go Down

Topic: Come inviare i dati da ARDUINO ad una pagina HTML  (Read 26253 times) previous topic - next topic

zoomx

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.

tototer

come procedo? ce qualcuno che mi aiuta a superare questo messaggio d'errore?

SukkoPera

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.
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

5a2v0

...
@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 ?

tototer

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"

SukkoPera

#65
Oct 19, 2016, 11:42 am Last Edit: Oct 19, 2016, 11:43 am by SukkoPera
@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?
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

tototer

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?

SukkoPera

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?
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

tototer

risolto, dopo tutte le prove avevo il router in crash!

sono riuscito ad entrare sul webserver adesso faccio qualche prova con i tuoi esempi!

tototer

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.


SukkoPera

È 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;
}
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

SukkoPera

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.
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

As_Needed

#72
Oct 19, 2016, 01:15 pm Last Edit: Oct 19, 2016, 01:20 pm by As_Needed
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?
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

SukkoPera

"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

gpb01

@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
Search is Your friend ... or I am Your enemy !

Go Up