Go Down

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

As_Needed

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
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

tototer

@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

SukkoPera

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

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

zoomx

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

As_Needed

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

As_Needed

#80
Oct 19, 2016, 07:29 pm Last Edit: Oct 19, 2016, 07:32 pm by As_Needed
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' :)
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

tototer

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

zoomx

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.

tototer

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

pablos71

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.
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

pablos71

L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

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

pablos71

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 :)
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

SukkoPera

Ma è strano, non dovrebbe richiedere quella liberia se non attivi il supporto ESP!
"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

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

Go Up