Aggiungere Variabile Arduino dentro paragrafo HTML

Ciao ragazzi! Ho un piccolo problema che mi sta mandand fuori! ]:slight_smile:
In poche parole sto modificando un progetto esistente per la Domotica, personalizzandolo per una serra automatizzata.
Il programma funziona e sui dispositivi mobili si vede divinamente, però ho un piccolo problema che proprio non riesco a risolvere.
Vorrei inserire il valore che legge il mio DHT11 (cosa banalissima) all’interno del codice html che ho inserito nello sketch!
Posto il codice(posto solo lo spezzone interessato)

void sensorCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)

{
  DHT11 dht11(2);
int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0);
  if (type == WebServer::POST)
  {
    Serial.println("POST: NTP abrufen");
    epoch = getNTP();
    setTime(getNtpHour(), getNtpMinute(), getNtpSecond(), 1, 1, 11);
 
    server.httpSeeOther(PREFIX "/sensor.html");
    return;
  }
 
  server.httpSuccess();
 
  if (type == WebServer::GET)
  {
    Serial.println("GET: Seite laden");
    P(options1) = 
"<!DOCTYPE html>"
"<html>"
"  <head>"
"  <meta name='viewport' content='width=device-width, initial-scale=1'>"
"  <title>::Serra::</title>"
"  <link rel='stylesheet' href='http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css' />"
"  <script src='http://code.jquery.com/jquery-1.6.4.min.js'></script>"
"  <script src='http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js'></script>"
"</head>"
"<body>"
"<div data-role='page'>"
"  <div data-role='header' data-position='fixed'>"
"    <h1>Sensori</h1>"
"  </div>"
"  <div data-role='content'>"
"  <script>"
"	function setTheTime2() {"
"	  now=new Date();"
"	  hour=now.getHours();"
"	  min=now.getMinutes();"
"	  sec=now.getSeconds();"
"	  if (min<=9) { min='0'+min; }"
"	  if (sec<=9) { sec='0'+sec; }"
"	  if (hour<=9) { hour='0'+hour; }"
"	  document.optionsForm.theTime.value = hour + ':' + min + ':' + sec;"
"         setTimeout(setTheTime2, 1000);"
"	}"
"      $(document).ready(function() { setTheTime2(); });"
"  </script>"
"	<form action='/options.html' method='post' data-ajax='false' name='optionsForm'>"
"	  <div data-role='fieldcontain'>"
"           <label for='tempin'>Temperatura Interna:</label>"
"           <progress value='xxxxxxxx' max='50'>"    //------------------------------------------------------------inserire qui al posto di "value"
"	  </div>"
"	  <button type='submit' data-theme='a' name='save' value='submit-value'>Sincronizza</button>"
"	</form>"
"  </div><!-- /content -->"
"<div data-role='footer' data-position='fixed'>		"
"	<div data-role='navbar' data-iconpos='top'>"
"		<ul>"
"			<li><a href='remote.html' data-icon='grid' data-transition='flip'>Controlli</a></li>"
"			<li><a href='timer.html' data-icon='gear' data-transition='flip'>Timer</a></li>"
"                       <li><a href='#' data-icon='gear' data-transition='flip'>Sensori</a></li>"
"		</ul>"
"	</div><!-- /navbar -->"
"</div><!-- /footer -->"
"</div><!-- /page -->"
"</body>"
"</html>";
    server.printP(options1);
    if (hour() < 10)
      server.print(":0");
    server.print(hour());
    server.print(":");
    if (minute() < 10)
      server.print("0");
    server.print(minute());
    server.print(":");
    if (second() < 10)
      server.print("0");
    server.print(second());
 
   // server.printP(options2);
  }
}
//----------------------------------------------------------------

Avete idea di come diavolo posso risolvere questo problemaccio???
Una mezza idea la ho ma vorrei evitare di modificare tutte le righe dell html ( aggiungendo client.print ad ogni riga)

Grazie in anticipo a tutti voi

Non otterai risposta adeguata con quello che hai detto e postato. Mancano riferimenti a modelli presi e modificati, la domanda è in ambito HTML, javascript, non sei sul forum giusto.
Puoi inserire qualunque cosa sulla pagina html che già hai, ma hai davvero ben compreso come funziona quello che hai modificato?

Non so come spiegarlo in altra maniera…

Ovvero di che stai parlando?
Codice di sketch per Arduino? Quale modello? Quale scheda ethernet, la WIZ o la ENC ?
Che librerie usi?
Mi pare quel codice lo hai copiato, o parli tedesco? "POST: NTP abrufen" => richiamare

Stai usando "Webduino web server library" ? Lo devo capire perchè nel codice usi server.httpSeeOther.
Se si, non potevi spiegare il contesto di quel codice? Sei avaro di informazioni. Senza o ci dotiamo di palla magica o ...

Esatto! Infatti lo ho scritto nel primo post che sto modificando un progetto esisteste...
Questo è il link
http://v3-1255.vlinux.de/mediawiki/index.php/Remotesocket
Utilizzo arduino mega con una ethernet shield originale....

Non è una questione di spiegare o meno (non te la prendere), qui nessuno si occupa di fare questo tipo di cose, l'html, javaScript, jquery, ecc va al di là degli argomenti connessi all'hardware e software arduino, che poi ci sia qualcuno capace di farlo non lo metto in dubbio, ma come dire, non riguarda il software arduino, ci saranno 3-4 utenti in tutto che potrebbero risponderti, ma non da quel pezzettino che hai postato. Esso non basta per capire come arduino interagisce con l'html e dirti dove intervenire.

dxcoco2:
Esatto! Infatti lo ho scritto nel primo post che sto modificando un progetto esisteste...
Questo è il link
http://v3-1255.vlinux.de/mediawiki/index.php/Remotesocket
Utilizzo arduino mega con una ethernet shield originale....

Grazie, nel primo post però non hai scritto quale. Pregando in ginocchio ti sei deciso a mettere un link a quello che stai modificando. :zipper_mouth_face:
Ora, hai capito la critica al fatto che sei avaro di informazioni? :smiley:

Vediamo un po’ se caviamo fuori qualcosa…
Volendo potrei aggiungere un client.print per ogni riga di html ma occupa memoria preziosa!

          client.println("<html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("
");

Ho deciso di optare per questa soluzione che mi sembra migliore…ma non so veramente come fare!

nid69ita:

dxcoco2:
Esatto! Infatti lo ho scritto nel primo post che sto modificando un progetto esisteste...
Questo è il link
http://v3-1255.vlinux.de/mediawiki/index.php/Remotesocket
Utilizzo arduino mega con una ethernet shield originale....

Grazie, nel primo post però non hai scritto quale. Pregando in ginocchio ti sei deciso a mettere un link a quello che stai modificando. :zipper_mouth_face:
Ora, hai capito la critica al fatto che sei avaro di informazioni? :smiley:

Hehehe scusa ma pensavo non fosse importante il resto del codice!

Ora mi sono perso. Nel primo post parli del DTH11, ora dei pin analogici?

Comunque per non occupare ram, da cosi

client.print("analog input ");

a cosi

client.print( F("analog input ") );

Un’altra piccola nota. Ad un browser gli spazio non fregano nulla, servono solo per rendere leggibile a noi umani il codice

"    <h1>Sensori</h1>"

a cosi, tolti 4 spazi ovvero 4 byte, non molti ma se conti tutti gli spazi che hai messo

"<h1>Sensori</h1>"

L ultimo era solo un esempio preso al volo...
Io parlo sempre del dht11...

Hai pensato al concatenamento della stringa contenente codice HTML con il valore che devi mostrare ?
Ti faccio un esempio :

 "CODICE HTML PHP JS CSS AJAX O QUELLO CHE VUOI :D" + valoreDaMostrare + "RESTO DEL CODICE HTML"
Nel tuo caso :
"           <label for='tempin'>Temperatura Interna:</label>"
"           <progress value='" + valoreDaMostrare + "' max='50'>"
"	  </div>"

Non vi arrabbiate, poteva essere qualsiasi la stringa non si tratta assolutamente di HTML, è programmazione di base… :slight_smile:
Ciao

@Duecce, ti assicuro che nessuno si arrabbia :smiley:

Però concorderai che @dxcoco2 chiede aiuto senza spiegare nulla.
E che confusione. Chiede di DTH11 e poi parla e fa esempi su altro. Sono un programmatore professionista (non un elettronico), se tutti i clienti mi chiedessero di fare qualcosa in questa maniera, non caverei un ragno dal buco.
Quindi l'invito a chiunque legge questo thread è: date informazioni complete, mettete gli altri nelle condizioni di aiutare. :grin:

@nid69ita : quando si tratta di lavoro hai pienamente ragione su questa cosa eheh, anche se il cliente si rivolge a persone come te proprio perchè ci capisce poco, in questo caso ( sempre se va bene quello che ho scritto io è :smiley: ) si trattava di tradurre la domanda in: come la concateno una stringa in C per Arduino ?

Concordo sulle informazioni complete da scrivere in un topic, e credo che @dxcoco2 si impegner√† a fare richieste pi√Ļ specifiche da qu√¨ in avanti :wink:

Ciao e buondì

[quote author=Duecce link=topic=241995.msg1735131#msg1735131 date=1400798799]
Hai pensato al concatenamento della stringa contenente codice HTML con il valore che devi mostrare ?
Ti faccio un esempio :
[code]
 "CODICE HTML PHP JS CSS AJAX O QUELLO CHE VUOI :D" + valoreDaMostrare + "RESTO DEL CODICE HTML"
Nel tuo caso :
"           <label for='tempin'>Temperatura Interna:</label>"
"           <progress value='" + valoreDaMostrare + "' max='50'>"
"	  </div>"

Non vi arrabbiate, poteva essere qualsiasi la stringa non si tratta assolutamente di HTML, è programmazione di base… :slight_smile:
Ciao
[/quote]

Esatto!!! Bravissimo intendevo proprio questo! Ho provato :
code]
"
" Temperatura Interna:"
" "
" "
[/code]
Oggi provo e ti aggiorno…
Mi spiace di non esser stato molto chiaro ma quando non sai come spiegarlo non è facile…

nid69ita:
Un’altra piccola nota. Ad un browser gli spazio non fregano nulla, servono solo per rendere leggibile a noi umani il codice

"    <h1>Sensori</h1>"

a cosi, tolti 4 spazi ovvero 4 byte, non molti ma se conti tutti gli spazi che hai messo

"<h1>Sensori</h1>"

Mi raccomando questo. Se siete a corto di SRAM, gli spazi sono inutili.

Purtroppo non funziona.... Il problema è che proprio non riesco ad inserire le variabili all interno del paragrafo HTML...altre idee? :frowning:

Ok ragazzi, ci sono riuscito…ecco come…era una cavolata:

.............
"	<form action='/sensor.html' method='post' data-ajax='false' name='optionsForm'>"
"	  <div data-role='fieldcontain'>"
"          <label>Temperatura Interna: ";
server.printP(options1);
 server.print(temp);
     P(options2) =
" C¬į</label>"
"           <progress id='tempin' max='50' value='";
 server.printP(options2);
 server.print(temp);
     P(options3) =
    "' <span class='meter' style='width: 100%'></span>" 
     "'>"
"           <input type='text' name='theTime' id='theTime' value='' disabled/>"
...............

adesso devo riuscire a inviare dati dalla rangebar (tipo slider) per settare il pwm…
voi avete qualche idea?
E’ l’ultima cosa, poi perfeziono il progetto e lo rendo pubblico :slight_smile:

Apposto...ho fatto anche questo....domani vedo di postare il codice!
Sono distrutto...ho fuso!

Altra cosa che voglio implementare è il salvataggio dei dati nella SD e il recupero (variabili, impostazioni etc etc) ma aprirò un nuovo topic

Notte ragazzi