Meteostanice na Arduinu

zabak

Meteostanice na Arduinu
« kdy: 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:
Kód: [Vybrat]
  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.


jt

Re:Meteostanice na Arduinu
« Odpověď #1 kdy: 27. 05. 2014, 20:04:23 »
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.

zapik

Re:Meteostanice na Arduinu
« Odpověď #2 kdy: 28. 05. 2014, 07:09:49 »
Já to posílám takto:
Kód: [Vybrat]
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/

zabak

Re:Meteostanice na Arduinu
« Odpověď #3 kdy: 29. 05. 2014, 13:25:05 »
díky za nakopnutí.