web e sd

Buongiorno a tutti ho iniziato a eseguire letture di Temperatura da Arduino via WEB Naturalmente in locale E Tutto funziona, pero mi Sono accorto Che scrivendo il codice html Sullo sketch la Memoria SI accorcia notevolmente.
Allora ho Pensato Che potevo scrivere la pagina web su sd, ma non Riesco a Capire come mandare dallo sketch"Temperatura" alla Pagina Creata da me .... qualcuno può illuminarmi?
Grazie

Non Saprei Proprio. :stuck_out_tongue:

Hai già fatto questa domanda identica qui
http://arduino.cc/forum/index.php/topic,137820.msg1035551.html#msg1035551

ti basta un UP e riprendere il post senza farne uno nuovo.

Per la domanda che hai fatto, su questo forum e su google trovi molto da provare, studiare, modificare ecc
non ci vuole molto google "arduino web sd"

La domanda è troppo generica, per risponderti bisognerebbe postarti il lavoro completo, inizia a fare qualcosa e poi ti si può rispondere a un intoppo o una incomprensione del codice

ciao

1 Like

dai un'occhiata all'ottimo lavoro di kattivik76 http://arduino.cc/forum/index.php/topic,63747.0.html

Se non capisci qualcosa chiedi pure, ci sto "smanettando" da un po' su webserverSD

non può fare up perchè è il forum vecchio, doveva rifare il post

ho visto che c'e' qualcosa su internet ma io sono all'inizi e poco si capisce, io chiedevo solo come posso fare per leggere la temperatura di casa "ad esempio" su una pagina web che non fosse inclusa nello sketch ma messa all'esterno nella SD.
Tutto qui mi basta uno spunto e poi parto in quarta.

Se leggi le istruzioni e gli esempi forniti su webduino lo capisci al volo come funziona

QUI UN TUTORIAL

Io personalmente utilizzo tinywebserver , lo trovo più performante .
Salut.

ti ringrazio ma non ci siamo.... facciamo che posto il codice che ora sto utilizzando ...

//Librerie impiegate per il progetto
#include <SPI.h>
#include <Ethernet.h>
int PIN_TEMP=0; //Assegniamo alla variabile il pin di ingresso analogico scelto
float tempC; //Dichiariamo la variabile che conterrà il valore della temperatura

//Creao un array di byte per specificare il mac address
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//creo un array di byte per specificare l'indirizzo ip
byte ip[] = {192,168,1,177}; //modificate questo valore in base alla vostra rete

char Data_RX;

//creao un oggetto server che rimane in ascolto sulla porta
//specificata
EthernetServer ArduinoServer(80);

void setup()
{
//inizializza lo shield con il mac e l'ip
Ethernet.begin(mac, ip);
//inizializza l'oggetto server
ArduinoServer.begin();
}

void loop()
{
tempC= analogRead(PIN_TEMP)*0.5; //Leggo la temperatura dalla sonda

EthernetClient pc_client = ArduinoServer.available();

//controllo se pc_client è true
if (pc_client != false)
{
//controllo continuamente che il client sia connesso
while (pc_client.connected())
{
//Controllo se ci sono byte disponibili per la lettura
if (pc_client.available())
{
//leggo i byte disponibili
//provenienti dal client
Data_RX = pc_client.read();

//Attendo che tutti i byte siano letti
//quando Data_RX contiene il carattere
//di nuova line capisco tutti i byte sono
//stati letti
if (Data_RX == '\n')
{

//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("");
pc_client.print("");
//questo codice html permette di eseguireil refresh automatico
//della pagina html
pc_client.print("");
pc_client.print("");
pc_client.print("

");
pc_client.print("Temperatura Casa");
pc_client.print(" ");
//inserisco nella pagina html il valore acquisito dal pin analogico
pc_client.print(tempC);
pc_client.write("&#176");
pc_client.print("");

pc_client.print("");

//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
}
}
}
//chiudo la connessione
pc_client.stop();
}
}

A parte i tanti esempi e tutorial citati.
Se vuoi usare questo codice e risparmiare memoria puoi usare la funzione F(); che permette di lasciare sulla flash tutto il contenuto statico come le stringhe html.

da così:

//questo codice html permette di eseguire il refresh automatico
                    //della pagina html
                    pc_client.print("<META HTTP-EQUIV='refresh' CONTENT='5; /'>");
                    pc_client.print("</head>");
                    pc_client.print("<p style='font-size:20px;font-family:nyala;font-weight: 500;text-shadow: 2px 2px 2px #000;'>");
                    pc_client.print("Temperatura Casa");
                    pc_client.print(" ");
                    //inserisco nella pagina html il valore acquisito dal pin analogico
                    pc_client.print(tempC);
                    pc_client.write("&#176");
                    pc_client.print("</style>");

a così:

//questo codice html permette di eseguire il refresh automatico
                    //della pagina html
                    pc_client.print(F("<META HTTP-EQUIV='refresh' CONTENT='5; /'>"));
                    pc_client.print(F("</head>"));
                    pc_client.print(F("<p style='font-size:20px;font-family:nyala;font-weight: 500;text-shadow: 2px 2px 2px #000;'>"));
                    pc_client.print(F("Temperatura Casa"));
                    pc_client.print(F(" "));
                    //inserisco nella pagina html il valore acquisito dal pin analogico
                    pc_client.print(tempC);
                    pc_client.write(F("&#176"));
                    pc_client.print(F("</style>"));

Nota che per la variabile temp non è possibile usare la funzione F().
Occhio alle parentesi tonde. :cold_sweat:
E' facile dimenticarsene una o metterne una in più.

La funzione è stata inserita nell'IDE dalla versione 1.0 e seguenti; non è disponibile con le vecchia versione 0023 e precedenti.
Io comunque ti consiglio di usare la 1.0.3 uscita la settimana scorsa.

Leggiti questo http://arduino.cc/forum/index.php/topic,81080.0.html ne avevamo parlato un anno fa al
« Reply #8 on: December 02, 2011, 09:40:17 PM »

Ho migliorato e semplificato ulteriormente quel codice in un anno anche la libreria tinywebserver l'ho un po' modificata, ma il principio è lo stesso, inviare e ricevere dati dalla pag web scaricata dalla SD

Quel codice è per la 22-23 ma bisogna cambiare pochissimo per farla funzionare con la 1.xx
la libreria della sd non è più #include <SdFat.h> ma #include <SD.h>

Se sei interessato ti scarichi la libreria per l'IDE1.0 in poi gli errori (se ce ne sono) si correggono

ah usando F non caricherei più la memoria?
Beh questo è già qualcosa in più, però mi piacerebbe proprio capire bene questa cosa del web su SD, solo che essendo alle prime armi e dovendo sviluppare qualcosa di veramente grosso cercavo qualcosa di molto semplificato giusto per iniziare a capire.... ma mi sà che mi tocca accottentarmi..

Se devi costruire qualcosa di molto grosso, hai già sbagliato in partenza comprando arduino :slight_smile: (a parte che non hai detto quale hai) e poi facendo la pagina web nello sketch.
Quanto sarebbe grossa questa cosa ... che vorresti fare?

anche io avevo fatto una doamnda nella discussione vecchia...
visto che non ho la ethernet shield, ma ho solo arduino uno rev 3 (sto usando ancora l'ide 0023 , faccio male?)
ho installato su un pc fisso a casa ubuntu apache ,php e mysql , e "parlo con l'arduino solo tramite seriale.
adesso riesco a inviare dati ad arduino dalla pagina php e qllo ke arduino mi stampa sulla seriale lo riesco a visulaizzare nella pagina html generata dal php.
adesso mi kiedo, se qnd cn il php leggo la seriale invece di stamparla solo a video posso mandarla a mysql?(credo di si).

grazie a tutti

Leg qi frs trv tt le difrenz ke c sn tr la vers 23 e la 1.0.3 :smiley: :smiley:

tnt salut

allora spiego.... io ho un'Arduino uno che mi serve per fare dei test... ovvero imparare..
A casa di un mio cliente 2 anni fa gli ho installato una bellissima centrale antifurto che fa anche della domotica.
e fin qua va tutto bene.
Giustamente il mio cliente mi ha chiesto....Davide ma possiamo mettere in rete questa centrale in modo che posso controllarla anche da remoto?
Il mio fornitore 2 anni fa mi disse.... a breve faremo le app per android e apple cosi potranno controllare le centrali anche da remoto.
A oggi queste app non le ho ancora viste... e il mio cliente è un pò deluso" giustamente".
Siccome la centrale mi permette di avere input pilota per gestire il tutto o pensato.... cavolo aggiungo un'Arduino la metto in rete creo
una bella paginetta in html o risolto il mio problema.
Bene devo poter gestire 12 gruppi di allarmi e 12 parti domotiche... quindi scrivere tutto sul micro controllore dell'Arduino penso che sia decisamente pesante.
Allora avevo pensato di utilizzare la SD per snellire lo sketch.
Ma leggendo tutti i tutorial in giro la vedo proprio dura.

Secondo me potresti gestire il sito web su un hosting in internet, ce ne sono anche di gratuiti.
Arduino UNO con la Ethernet shield, o direttamente il modello Arduino Ethernet, si collega al sito ed aspetta i comandi.
Ricevuti i comandi li interpreta e li rigira alla centralina segmento il protocollo di questa.
Potresti fare anche il percorso inverso: Arduino legge lo stato della centralina e la invia al sito per aggiornarlo.
In questo modo scindi il problema in due parti e liberi Arduino dalla gestione della pagina Web.
Anche perché non credo sia semplice neanche la parte di interfaccia con la centralina d'allarme. :wink:

Capito, spero tu non stia parlando di Tecnoalarm. :sweat_smile:
Non sono molto diffusi i moduli ethernet per le centrali antintrusione, in realtà sono predisposte, ma non trovi i pezzi tanto facilmente, il perchè è molto semplice (lo spiegano anche quando si fanno i corsi di installazione e uso del software), la prima cosa che ti spiegano sul collegamento in rete è "non si collega mai una centrale di allarme in rete!" in realtà non concepita per essere controllata da remoto .... e allora perchè ci avete messo il connettore per il modulo ethernet se poi non si fa?
Perchè la politica è: se la installiamo noi e programmiamo noi ci mettiamo il modulo, ma ti colleghi al nostro centro operativo di telegestione allora diventa tutto più semplice, se rubano in casa la responsabilità è della casa produttrice e del centro, se la programmi tu e violano il sistema la colpa è sicuramente la tua e ci va di mezzo anche il nome del prodotto e questo a loro non piace. Le app non le fanno a nessuno interessa attivare o disattivare le zone della centrale da uno smarphone.

A parte i principi aziendali, quella centrale sarà costata un po' (non a te al cliente ahahaha) io non mischierei antintrusione remota con la domotica, poi ognuno fa come crede, ma se sei alle prime armi per fare con arduino un bel lavoretto preparati a metterci tanti mesi di pazienza e una UNO non è un granchè per gestire anche un piccolo web server.
Solo le librerie
SPI
ethernet
webduino o una tyniweb
SD
dhcp per configurare la rete
RTC ce lo vuoi mettere un orologino per fare qualche timer

ti portano via quasi tutto di una UNO, ti resta poco e niente per fare un po' di elaborazione.

Quali sono i tuoi livelli di conoscienza su html, js, c++? fai un quadro più preciso di cosa intendi per domotica da applicare alla case del tuo cliente, le possibilità di sviluppo sono tantissime, dipende molto anche dall'impianto esistente, centralizzare il tutto o usare tanti moduli a 4 fili 486, magari ti posso aiutare o ci possiamo aiutare.

ciao

grazie per le risposte.... allora la parte domotica è già fatta e la gestisce la centrale che ho installato, P.S. non è tecno allarm.... non mi piace anzi direi che la trovo proprio una centrale di M.... comunque dicevo con l'Arduino che ho attualmente sto solo facendo delle prove a casa niente di più per iniziare a capire come muovermi..... interfacciare Arduino alla centrale è proprio una cavolata, perchè questa centrale mi permette dei comandi "totali" in ingresso quindi attivando questi comandi in ingresso posso ad esempio attivare o disattivare un zona di allarme oppure aprire o chiudere un cancello e tanto altro ancora... quindi il problema hardware non esiste...
Con html sono abbastanza bravo quindi fare una pagina web non è un problema..... programmare Arduino è semplicissimo.... il problema lo riscontro proprio nel gestire tramite sketch la pagina web.
Almeno che non la scrivo direttamente nello sketch ma ho paura che diventi troppo pesante.
L'orologio come dici tu è già nella centrale quindi non mi pongo il problema per eventuali timer e ritardi.
Ho letto parecchio ieri sera che per fare quello che serve a me devo usare le stringhe.... e da ieri sera ci sto cercando di capire qualcosa....
purtroppo il classico esempio del PREMI il pulsante e accendi il led non lo trovo, trovo sfilze di programmi che solo a guardarli mi prende malissimo.

Ah dimenticavo.... Naturalmente se riesco a fare questo in piccolo con la uno al mio cliente installerò quella più grande che ha se non sbaglio 54 pin a disposizione.....