Stránka 1 z 1

ESP8266 ESP - 01 posílání teploty na thingspeak i na můj webhosting

Napsal: 06 úno 2020, 14:29
od visk52
Podle tohoto příkladu mám prakticky http://www.urel.feec.vutbr.cz/MPOA/2015/esp8266-ds18b20 mám udělán ten program to mi funguje ale já bych potřeboval do něho přidat navíc aby ta teplota se posílala i na můj frehosting něco jako (http://mujhosting.cz/somepage.php?)
kus kódu výše uvedeného příkladu

Kód: Vybrat vše

....
.....
.....
String url = "/update?key=";                // Vytvoření URL pro odeslání informace o teplotě
    url += APIkey;
    url += "&field1=";
    url += charVal;       
 
    Serial.print("Requesting URL: ");
    Serial.println(url);
 
                                                 // Odeslání požadavku na server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
...
...

************************************************************************************************
String url1="http://mujhosting.cz/somepage.php?";
url1 += charVal;
client.print(String("GET") + url1);
*************************************************************************************************
.....
......
......

při to na serveru by byl php skript jména somepage.php

Kód: Vybrat vše

   $username = $_GET['username'];  //make sure you filter these values, before showing them
    
  $sez = $username;     
  $relace = fopen("./IP/zap.txt", "r+");      // Otevřeme soubor
  fwrite($relace,$sez );                  // Zapíšeme text do souboru
  fclose($relace);
  
?>
mělo by to jít nebo ne ?v podstatě potřebuji ten skript somepage.php vykonat a tudíž zapsat tu teplotu do textového souboru.díky
poz.
hvězdičkami je označeno je to co by tam bylo přidáno

Re: ESP8266 ESP - 01 posílání teploty na thingspeak i na můj webhosting

Napsal: 07 úno 2020, 06:19
od pavel1tu
A nebylo by tu teplotu na svoji WWW lepší zapisovat do databáze ?
Lépe se pak s tím pracuje ...

příklad (skoro dole Arduino jak klient)
https://arduino.cz/programovani-webovyc ... o-arduino/

Re: ESP8266 ESP - 01 posílání teploty na thingspeak i na můj webhosting

Napsal: 07 úno 2020, 12:47
od visk52
Dost dobře nerozumím tomu co je vyznačeno hvězdičkami HOST to ještě možná chápu i když je ten výše uvedený celý odkaz ale
řádek client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); ten nechápu vůbec díky

Kód: Vybrat vše

void loop() {
    if(client.connect(server, 80)){
        delay(1000);
        Serial.println("OK");
        client.print("GET https://arduino.cz/data/logger.php?hodnota=");
        client.println(analogRead(A5));
        *************************************************************************************************
        client.println("Host: arduino.cz");
        client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        client.println("Connection: close");
        *********************************************************************************************************************
        client.println();

        client.stop();
        delay(5000);
    }

Re: ESP8266 ESP - 01 posílání teploty na thingspeak i na můj webhosting

Napsal: 07 úno 2020, 13:25
od jankop
Když navazuješ http spojení se serverem, tak je nezbytné mít správnou hlavičku, v tomto případě požadavku GET. Ty tam už za tím svým GET nemáš mezeru, což je dle mého názoru špatně. Hlavička má definovanou syntaxi, včetně odřádkování, kterou je třeba dodržet, na druhé straně existuje spousta nepovinných parametrů, které uvádět nemusíš.

Kód: Vybrat vše

client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
Tohle je parametr hlavičky požadavku GET, který v podstatě říká, s jakými daty je schopen klient pracovat. Když to vynecháš, nic by se stát nemělo.
O HTTP hlavičce je toho na webu spousta a většina prohlížečů dovoluje jednoduše zobrazovat i hlavičky klienta včetně odpovědí serveru.

Re: ESP8266 ESP - 01 posílání teploty na thingspeak i na můj webhosting

Napsal: 07 úno 2020, 14:34
od pavel1tu
Před client.stop() dej delay(1000);
Nesmíš klienta stopnout dokud se to neodešle - mne to dost blblo.

Pokud si to ukládáš někde doma, stihne se to, ale pokud jedeš někam ven na FREE hosting,
mám zkušenost, že 1000-1500ms postačuje a je to taková jistota že to vždy projde.
Záleží na momentální konektivitě a vytížení jejich serveru.

můj kod na server doma (BananaPi M2):

Kód: Vybrat vše

//*************************************************************  
//*             Odeslani dat na WWW server                    *
//*************************************************************
  void OdeslatData() {
   if(client.connect(server , 80)){  
       if(ladeni == 1) Serial.println("Odesilam na WWW");
       client.print("GET /METEOlogger.php?T=");
       client.print(String(T));
       client.print("&P=");
       client.print(String(P));
       client.print("&H=");
       client.print(String(H));
       client.print("&Tin=");
       client.print(String(Tin));       
       client.print("&Us=");       
       client.print(String(Us));
       client.println(" HTTP/1.1"); 
       client.println("Host: 192.168.123.183");
       client.println("Connection: close");
       client.println();
       delay(500);
       client.stop();
       if(ladeni == 1) Serial.println("------------------------------"); 
       }
  else {
       // If Arduino can't connect to the server (your computer or web page)
       Serial.println("--> connection failed\n");
       }
  }