Go Down

Topic: Webbino - Server web "dinamico" per Arduino (Read 54609 times) previous topic - next topic

SukkoPera

Nov 06, 2016, 04:09 pm Last Edit: Nov 07, 2016, 03:00 pm by SukkoPera
È finalmente giunto il momento di annunciare all'intero pianeta la disponibilità di Webbino. Si tratta di un server web per Arduino, che avevo scritto originariamente per il mio progetto SmartStrip, e che ho successivamente separato e reso indipendente, visto che può avere un utilizzo molto più generico.

Le sue funzionaità principali sono le seguenti:
  • Compatibile con molte interfacce di rete:
    • WizNet W5100: Ethernet Shield
    • WizNet W5500: Ethernet Shield 2
    • ENC28J60: KMTronic DINo (first version)
    • WINC1500 (Wi-Fi): WiFi Shield 101, MKR1000
    • ESP8266 (Wi-Fi): Sia in aggiunta ad Arduino (tipo Shield MLT), sia standalone tipo NodeMCU, WeMos D1/D1 Mini...
  • Possibilità di salvare le pagine HTML nella flash interna o su una SD.
  • Permette di sostituire facilmente tag tipo #TEMPERATURA# nelle pagine HTML con dati dinamici generati al momento della richiesta della pagina.
  • Possibilità di richiamare una funzione alla richiesta di una pagina, con disponibilità dei parametri passati in GET.

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

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

Di seguito qualche progetto che già usa Webbino:
"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

Grande sukko! Serviva sto topic :D Comunque sui link che hai messo ti consiglio di mettere QUESTO che almeno è il progetto completo che lo utilizza ;)
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

As_Needed

Rispolvero questo topic perché forse pablos e altri non l'hanno visto. Dovevano porre tanti bei quesiti, di cui onestamente sono curioso. :)
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

pablos71

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

SukkoPera

Ed ecco la gradita sorpresa di oggi:



Ora provare Webbino è ancora più semplice, non avete più scuse :).
"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

MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

SukkoPera

Grazie @As_Needed! Ne approfitto per raccomandarti, appena puoi, di portare il tuo sketch alla versione 0.9.0 di Webbino. L'API ora dovrebbe rimanere stabile e alcune cose dovrebbero risultare più semplici. Inoltre i futuri sviluppi (file binari? ;)) saranno aggiunti a questa.

A breve cancellerò i branch.
"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

Hai ragione Sukko e ora di aggiornare anche il mio sketch ;)
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

As_Needed

#9
Nov 10, 2016, 01:59 pm Last Edit: Nov 10, 2016, 02:01 pm by As_Needed
Cosa? Non pensavo era diventato così semplice :D

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


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

static const var_substitution

Giusto? ;)
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

SukkoPera

Direi di sì, occhio solo che la stringa del tag va senza virgolette.
"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

#11
Nov 10, 2016, 02:32 pm Last Edit: Nov 10, 2016, 02:36 pm by As_Needed
occhio solo che la stringa del tag va senza virgolette.
Sì. Poi per i file binari questo significa che potrò mettere la mia favicon :)
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

As_Needed

#12
Nov 10, 2016, 05:40 pm Last Edit: Nov 10, 2016, 05:41 pm by As_Needed
Non so se vale la pena postare qui, però ho un problema. Praticamente ho aggiornato tutto il mio codice con la nuova libreria, ovviamente con IDE 1.6.12 compilato e tutto e nessun errore ovviamente. Poi dopo quando cerco di accedere all'IP impostato da me non visualizzo niente, come mai?

Queste le definizioni

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

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


E nel setup

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

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

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


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

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


Sicuramente sbaglio qualcosa nel setup. Poi con la seriale mi scrive che tutto è stato configurato, sia ip che scheda SD, insomma tutto "done".
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

SukkoPera

Beh, questo thread serve proprio per queste cose, hai fatto benissimo a postare qui. Cosa ti scrive nel monitor seriale? Hai provato ad abilitare il debug?
"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

#14
Nov 10, 2016, 05:52 pm Last Edit: Nov 10, 2016, 05:52 pm by As_Needed
Capito ;) Comunque no ancora non ho provato, comunque esce esattamente questo sulla seriale:

Code: [Select]
Using Webbino 0.9.0
Configuring static IP address
Static IP configuration done:
- IP: 192.168.1.51
- Netmask: 255.255.255.0
- Default Gateway: 192.168.1.1
Initializing SD card... done
MY PWS!
http://forum.arduino.cc/index.php?topic=413560.0
http://meteoflaminia.zapto.org:4600

Go Up