Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: zabak 27. 05. 2014, 19:35:49
-
Zdravím,
pokouším se sestavit meteostanici postavenou na arduinu. Z prohlížeče se mi daří data zaslat na hosting (http://XXXXX.moxo.cz/index.php?tempV=25.6&humV=66.0&pressV=123456&coV=33.3). Data se uloží do databáze a vše je OK.
Podobně bych to potřeboval z arduina. To má posílat data přes požadavek typu GET. Ale nějak se nedaří :-(.
Ukázka kódu:
if (client.connect("XXXXX.moxo.cz", 80)) {
Serial.println("Posilam data na XXXXX.moxo.cz");
stanice_data = String("GET /index.php?") + String("tempV=") + teplotaStr + String("&humV=") + vlhkostStr + String("&pressV=") + tlakStr + String("&coV=") + koncentrace_coStr + String(" HTTP/1.1\r\n\r\n");
Serial.println(stanice_data); //ukazka dat: GET /index.php?tempV=25.6&humV=66.0&pressV=101325&coV=33.3 HTTP/1.1
client.println(stanice_data);
client.println("Host: XXXXX.moxo.cz");
client.println("Connection: close");
client.println("Accept: text/html");
client.stop();
client.flush();
}
else {
Serial.println("Pripojeni na monitor.moxo.cz se nezdarilo!");
}
Budu rád za nasměrování. Díky.
-
http://www.root.cz/clanky/arduino-webovy-server-i-klient-do-ruky/
connect() – pokud vrátí true, znamená to, že jsme se úspěšně připojili a můžeme poslat požadavek na HTTP server běžným způsobem – pošleme hlavičky požadavku a prázdný řádek.
-
Já to posílám takto:
void odesli () {
byte i;
Serial.println("Pripojuji...");
// když se podaří spojení se serverem tak....
// číslo 80 je sdandardní číslo portu pro html
if (client.connect("192.168.1.56", 80))
{
// vypíše text na serial monitor
Serial.println("Pripojeni probehlo v poradku 192.168.1.56");
// odešle požadavek GET na vrácení stránky test.html
// zde si upravte id na nějaké svoje, tzn. přepište xxxxxx
// může to být slovo nebo číslo jen ne se znakem '&' a to,
// aby jste si poté na stránce http://www.arduino.asp2.cz/ViewData.aspx
// celkově to bude odesílat toto:
// GET hxxp://www.arduino.asp2.cz/AddData.aspx?id=MojeID&h1=547&h2=447
client.print("GET http://192.168.1.56/info.php?");
client.print("a=");
client.print(int(prumer*10/prumer_count));
client.print("&b=");
client.print(int(maxr*10));
client.print("&c=");
int mint;
mint = int(minr*10);
if ( mint > 200 ) { mint = 0;}
client.print(mint);
for (i=0; i<pocet; i++){
client.print("&t");
client.print(i);
client.print("=");
client.print(int(teploty[i]*10));
}
client.println(" HTTP/1.1");
client.println("Host:test.test.cz");
client.println("Connection: close");
client.println();
// čeká v limitu na odezvu
int timeout = TimeOut;
while ((!client.available()) && (timeout > 0))
{
delay(1);
timeout = timeout - 1;
}
if (timeout > 0)
{
Serial.print("Odezva serveru v case: ");
Serial.print(TimeOut - timeout);
Serial.println("ms");
}
else
{
Serial.println("Server neodpovida...");
}
// připraví proměnou pro případ když nalezneme naše řídící znaky
boolean nalez = false;
// do této hodnoty se nám budou ukládat data
String rc = "";
// dokud je stánka dostupná...
while (client.available())
{
//...do proměné c zapiš bajt odeslaný ze serveru
char c = client.read();
Serial.print(c);
// když objevíš náš počátečný kontrolní znak
// tak nález bude true - pravda
// když konečný tak false
if (c == '<') nalez = true;
if (c == '>') nalez = false;
// když je nález tak ukládej znaky do proměné data
// protože by se nám ukládal i první řídící znak tak,
// jen ukládej když je znak rozdílný od '<'
if (nalez && (c!='<')) rc = rc + c;
}
// .... když už není co číst a stránka není dostupná
// zastav připojení a vypiš na serial "Odpojeno"
client.stop();
client.flush();
Serial.println("\nOdpojeno.");
Serial.println();
// Zde nám vypíše jaká data jsme dostali
Serial.print("data ze serveru jsou: ");
// Na serial port vypíše buď 1 - povedlo se nebo 0 - nepovedlo
Serial.println(rc);
// když se spojení nepodařilo
}else{
Serial.println("spojeni se serverem nenavazano...");
}
}
Je to upravený příklad odsud:
http://arduino8.webnode.cz/tutorialy/newscbm_612419/20/
-
díky za nakopnutí.