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

Odpovědět
Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

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

Příspěvek od visk52 » 06 úno 2020, 14:29

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

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

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

Příspěvek od pavel1tu » 07 úno 2020, 06:19

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/
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

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

Příspěvek od visk52 » 07 úno 2020, 12:47

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);
    }

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek od jankop » 07 úno 2020, 13:25

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.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

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

Příspěvek od pavel1tu » 07 úno 2020, 14:34

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");
       }
  }
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 20 hostů