ESP8266 zobrazení na web

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

ESP8266 zobrazení na web

Příspěvek od visk52 » 29 led 2020, 16:16

Dobrý den
Jak to udělat aby se třeba síla wifi signálu ukázala na webové stránce ? díky

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

Re: ESP8266 zobrazení na web

Příspěvek od jankop » 29 led 2020, 18:13

Modul ESP8266 je schopen zjistit RSSI okolních sítí, respektive sílu signálu routeru, na který je připojen. Co s tímto údajem uděláš, je na tobě. Můžeš ho odeslat nějaký server nebo ho můžeš zobrazit na serveru, který je přímo součástí ESP8266 tj. "běží přímo na něm". Tyhle dva základní přístupy se od sebe dost liší. Měl bys upřesnit, co vlastně chceš. Pro kamaráda jsem dělal monitoring solárního systému. Je to naprogramovaný HTTP server v ESP8266. Ale ten program by ti nepomohl, je napsán v Lua.
Jednoduše řečeno: "Sílu WiFi signálu na webové stránce zobrazíš úplně stejně, jako jakékoliv jiné údaje."
Hodnotu signálu RSSI získáš funkcí WiFi.RSSI() jak je ostatně popsáno zde:
https://arduino-esp8266.readthedocs.io/ ... figuration

keva.png
Jako příklad můžeš vyzkoušet program http://esp8266.fancon.cz/esp8266-sonoff ... duino.html
který by měl běžet na jakémkoliv modulu ESP8266. Jen musí být tlačítko na GPIO0. Úpravou jediného řádku by mělo jít dostat na webovou stránku to RSSI.

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

Re: ESP8266 zobrazení na web

Příspěvek od visk52 » 29 led 2020, 19:26

Jak upravit tento příklad aby mě se na stránce ukazovala síla wifi signálu,kanál a podobně

Kód: Vybrat vše

//https://randomnerdtutorials.com/esp32-esp8266-input-data-html-form/
//2. ESP32/ESP8266 Save Input Fields to SPIFFS
/*********
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-input-data-html-form/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*********/

#include <Arduino.h>
#ifdef ESP32
  #include <WiFi.h>
  #include <AsyncTCP.h>
  #include <SPIFFS.h>
#else
  
  #include <ESP8266WiFi.h>
  #include <ESPAsyncTCP.h>
  #include <Hash.h>
  #include <FS.h>
#endif
#include <ESPAsyncWebServer.h>

AsyncWebServer server(80);

// REPLACE WITH YOUR NETWORK CREDENTIALS
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

const char* PARAM_STRING = "inputString";
const char* PARAM_INT = "inputInt";
const char* PARAM_FLOAT = "inputFloat";

// HTML web page to handle 3 input fields (inputString, inputInt, inputFloat)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
  <title>ESP Input Form</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script>
    function submitMessage() {
      alert("Saved value to ESP SPIFFS");
      setTimeout(function(){ document.location.reload(false); }, 500);   
    }
  </script></head><body>
  <form action="/get" target="hidden-form">
    inputString (current value %inputString%): <input type="text" name="inputString">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form><br>
  <form action="/get" target="hidden-form">
    inputInt (current value %inputInt%): <input type="number " name="inputInt">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form><br>
  <form action="/get" target="hidden-form">
    inputFloat (current value %inputFloat%): <input type="number " name="inputFloat">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form>
  <iframe style="display:none" name="hidden-form"></iframe>
</body></html>)rawliteral";

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

String readFile(fs::FS &fs, const char * path){
  Serial.printf("Reading file: %s\r\n", path);
  File file = fs.open(path, "r");
  if(!file || file.isDirectory()){
    Serial.println("- empty file or failed to open file");
    return String();
  }
  Serial.println("- read from file:");
  String fileContent;
  while(file.available()){
    fileContent+=String((char)file.read());
  }
  Serial.println(fileContent);
  return fileContent;
}

void writeFile(fs::FS &fs, const char * path, const char * message){
  Serial.printf("Writing file: %s\r\n", path);
  File file = fs.open(path, "w");
  if(!file){
    Serial.println("- failed to open file for writing");
    return;
  }
  if(file.print(message)){
    Serial.println("- file written");
  } else {
    Serial.println("- write failed");
  }
}

// Replaces placeholder with stored values
String processor(const String& var){
  //Serial.println(var);
  if(var == "inputString"){
    return readFile(SPIFFS, "/inputString.txt");
  }
  else if(var == "inputInt"){
    return readFile(SPIFFS, "/inputInt.txt");
  }
  else if(var == "inputFloat"){
    return readFile(SPIFFS, "/inputFloat.txt");
  }
  return String();
}

void setup() {
  Serial.begin(115200);
  // Initialize SPIFFS
  #ifdef ESP32
    if(!SPIFFS.begin(true)){
      Serial.println("An Error has occurred while mounting SPIFFS");
      return;
    }
  #else
    if(!SPIFFS.begin()){
      Serial.println("An Error has occurred while mounting SPIFFS");
      return;
    }
  #endif

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Failed!");
    return;
  }
  Serial.println();
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // Send web page with input fields to client
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Send a GET request to <ESP_IP>/get?inputString=<inputMessage>
  server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String inputMessage;
    // GET inputString value on <ESP_IP>/get?inputString=<inputMessage>
    if (request->hasParam(PARAM_STRING)) {
      inputMessage = request->getParam(PARAM_STRING)->value();
      writeFile(SPIFFS, "/inputString.txt", inputMessage.c_str());
    }
    // GET inputInt value on <ESP_IP>/get?inputInt=<inputMessage>
    else if (request->hasParam(PARAM_INT)) {
      inputMessage = request->getParam(PARAM_INT)->value();
      writeFile(SPIFFS, "/inputInt.txt", inputMessage.c_str());
    }
    // GET inputFloat value on <ESP_IP>/get?inputFloat=<inputMessage>
    else if (request->hasParam(PARAM_FLOAT)) {
      inputMessage = request->getParam(PARAM_FLOAT)->value();
      writeFile(SPIFFS, "/inputFloat.txt", inputMessage.c_str());
    }
    else {
      inputMessage = "No message sent";
    }
    Serial.println(inputMessage);
    request->send(200, "text/text", inputMessage);
  });
  server.onNotFound(notFound);
  server.begin();
}

void loop() {
  // To access your stored values on inputString, inputInt, inputFloat
  String yourInputString = readFile(SPIFFS, "/inputString.txt");
  Serial.print("*** Your inputString: ");
  Serial.println(yourInputString);
  
  int yourInputInt = readFile(SPIFFS, "/inputInt.txt").toInt();
  Serial.print("*** Your inputInt: ");
  Serial.println(yourInputInt);
  
  float yourInputFloat = readFile(SPIFFS, "/inputFloat.txt").toFloat();
  Serial.print("*** Your inputFloat: ");
  Serial.println(yourInputFloat);
  delay(5000);
}
nic méně mám rozdělán na stole druhý projekt a který bych chtěl dokončit http://www.urel.feec.vutbr.cz/MPOA/2015/esp8266-ds18b20 které mi funguje ale pevně připojeno na moji wifi síť ale já bych potřeboval upravit aby to mohl přepnou na AP pro skenovat okolí a připojit to na wifi sít na kterou budu chtít.Já vím ze toho chci mnoho ale už nad tím trávím mnoho času a nevím si rady díky

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

Re: ESP8266 zobrazení na web

Příspěvek od visk52 » 29 led 2020, 20:03

Ještě jsem zapomněl dodat že to čidlo teploty je na esp8266 esp-01 které má 1MB flash paměti

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

Re: ESP8266 zobrazení na web

Příspěvek od jankop » 29 led 2020, 22:46

Chtěls upravit konkrétní příklad, tak jsem ti ho upravil. Zobrazuje RSSI, jak sis přál, odzkoušel sem to. Základní princip je jasný a pokud potřebuješ zobrazovat další parametry, jistě si je z mého názorného příkladu snadno doplníš.

Kód: Vybrat vše

//https://randomnerdtutorials.com/esp32-esp8266-input-data-html-form/
//2. ESP32/ESP8266 Save Input Fields to SPIFFS
/*********
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-input-data-html-form/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*********/

#include <Arduino.h>
#ifdef ESP32
  #include <WiFi.h>
  #include <AsyncTCP.h>
  #include <SPIFFS.h>
#else
  
  #include <ESP8266WiFi.h>
  #include <ESPAsyncTCP.h>
  #include <Hash.h>
  #include <FS.h>
#endif
#include <ESPAsyncWebServer.h>

AsyncWebServer server(80);

// REPLACE WITH YOUR NETWORK CREDENTIALS
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

const char* PARAM_STRING = "inputString";
const char* PARAM_INT = "inputInt";
const char* PARAM_FLOAT = "inputFloat";

// HTML web page to handle 3 input fields (inputString, inputInt, inputFloat)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
  <title>ESP Input Form</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script>
    function submitMessage() {
      alert("Saved value to ESP SPIFFS");
      setTimeout(function(){ document.location.reload(false); }, 500);   
    }
  </script></head><body>
  <form action="/get" target="hidden-form">
    inputString (current value %inputString%): <input type="text" name="inputString">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form><br>
  <form action="/get" target="hidden-form">
    inputInt (current value %inputInt%): <input type="number " name="inputInt">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form><br>
  <form action="/get" target="hidden-form">
    inputFloat (current value %inputFloat%): <input type="number " name="inputFloat">
    <input type="submit" value="Submit" onclick="submitMessage()">
  </form>
  <iframe style="display:none" name="hidden-form"></iframe>
 <h1> WiFi RSSI JE %RSSI% dBm</h1>
</body></html>)rawliteral";

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

String readFile(fs::FS &fs, const char * path){
  Serial.printf("Reading file: %s\r\n", path);
  File file = fs.open(path, "r");
  if(!file || file.isDirectory()){
    Serial.println("- empty file or failed to open file");
    return String();
  }
  Serial.println("- read from file:");
  String fileContent;
  while(file.available()){
    fileContent+=String((char)file.read());
  }
  Serial.println(fileContent);
  return fileContent;
}

void writeFile(fs::FS &fs, const char * path, const char * message){
  Serial.printf("Writing file: %s\r\n", path);
  File file = fs.open(path, "w");
  if(!file){
    Serial.println("- failed to open file for writing");
    return;
  }
  if(file.print(message)){
    Serial.println("- file written");
  } else {
    Serial.println("- write failed");
  }
}

// Replaces placeholder with stored values
String processor(const String& var){
  //Serial.println(var);
  if(var == "inputString"){
    return readFile(SPIFFS, "/inputString.txt");
  }
  else if(var == "inputInt"){
    return readFile(SPIFFS, "/inputInt.txt");
  }
  else if(var == "inputFloat"){
    return readFile(SPIFFS, "/inputFloat.txt");
  }
  else if(var == "RSSI"){
    return String(WiFi.RSSI());
  }
  return String();
}

void setup() {
  Serial.begin(115200);
  // Initialize SPIFFS
  #ifdef ESP32
    if(!SPIFFS.begin(true)){
      Serial.println("An Error has occurred while mounting SPIFFS");
      return;
    }
  #else
    if(!SPIFFS.begin()){
      Serial.println("An Error has occurred while mounting SPIFFS");
      return;
    }
  #endif

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Failed!");
    return;
  }
  Serial.println();
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // Send web page with input fields to client
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Send a GET request to <ESP_IP>/get?inputString=<inputMessage>
  server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String inputMessage;
    // GET inputString value on <ESP_IP>/get?inputString=<inputMessage>
    if (request->hasParam(PARAM_STRING)) {
      inputMessage = request->getParam(PARAM_STRING)->value();
      writeFile(SPIFFS, "/inputString.txt", inputMessage.c_str());
    }
    // GET inputInt value on <ESP_IP>/get?inputInt=<inputMessage>
    else if (request->hasParam(PARAM_INT)) {
      inputMessage = request->getParam(PARAM_INT)->value();
      writeFile(SPIFFS, "/inputInt.txt", inputMessage.c_str());
    }
    // GET inputFloat value on <ESP_IP>/get?inputFloat=<inputMessage>
    else if (request->hasParam(PARAM_FLOAT)) {
      inputMessage = request->getParam(PARAM_FLOAT)->value();
      writeFile(SPIFFS, "/inputFloat.txt", inputMessage.c_str());
    }
    else {
      inputMessage = "No message sent";
    }
    Serial.println(inputMessage);
    request->send(200, "text/text", inputMessage);
  });
  server.onNotFound(notFound);
  server.begin();
}

void loop() {
  // To access your stored values on inputString, inputInt, inputFloat
  String yourInputString = readFile(SPIFFS, "/inputString.txt");
  Serial.print("*** Your inputString: ");
  Serial.println(yourInputString);
  
  int yourInputInt = readFile(SPIFFS, "/inputInt.txt").toInt();
  Serial.print("*** Your inputInt: ");
  Serial.println(yourInputInt);
  
  float yourInputFloat = readFile(SPIFFS, "/inputFloat.txt").toFloat();
  Serial.print("*** Your inputFloat: ");
  Serial.println(yourInputFloat);
  delay(5000);
}
AsySer.png
Náhled na dosažitelné sítě WiFi vcelku snadno naprogramuješ, funkcí je na to dost, jen si o tom něco přečíst na odkazu, který už jsem zmínil. Když k tomu přidáš znalost trochy HTML a čas, který jsi tomu již věnoval, tak máš vystaráno. Na druhé straně stačí použít WifiManager a vlastně není co programovat. To je ten půvab Arduina, vlastně se programuje samo...

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

Re: ESP8266 zobrazení na web

Příspěvek od visk52 » 29 led 2020, 23:24

Ten WiFi Manager jsem taky zkoušel ale nevím jak to tam zapracovat aby to fungovalo ,taky je omezení na esp8266 esp-01 tam jsou GPIO1 na jednom pinu je to tepelné čidlo a GPIO0 je použito při flasovani tady vniká problém toho tlačítka které to přepne do módu AP tak nevím jak na to.diky

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

Re: ESP8266 zobrazení na web

Příspěvek od jankop » 30 led 2020, 08:27

ESP8266 má čtyři GPIO k dispozici. GPIO0-GPIO3. Nic ti nebrání dát tlačítko na GPIO0 nebo GPIO1 či GPIO3. Ostatně tvoje schéma zapojení ESP8266 není zrovna moc dobré, co vidíš na webu, nemusí být vždy správné. Neošetřený Reset, CH_PD a neošetřený vstup GPIO0(ten určuje tzv. boot mode) ti nejspíš přinesou řadu problémů. O napájení dvěma tužkovými bateriemi ani nemluvím. 90% problémů s ESP8266 je způsobeno právě napájením. Z následujícího schématu by se dal vypustit jen rezistor 330R.
http://esp8266.fancon.cz/esp8266-web-hy ... duino.html
Ta tlačítka ti dovolí jednoduše a rychle modul programovat. Podržíš GPIO0 a krátce stiskneš Reset. Pak už můžeš všechno pustit a v klidu spustit programování s IDE. A pak tlačítko na GPIO0 máš už volné a můžeš ho použít třeba pro ten WifiManager.

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

Re: ESP8266 zobrazení na web

Příspěvek od visk52 » 30 led 2020, 14:01

Ten odkaz je inspirující i to zapojení i ten příklad díky za něj díky i za tu úpravu toho výše uvedeného projektu už mi to vypisuje sílu wifi signálu i uplynulý čas od startu.Na tom ESP8266 - 01 jsou čtyři GPO a dva jsou "připnuty" na signály RxD,TxD 1 je na teplotní senzor a jeden GPO0 na BOOT tak kde mám upíchnout to tlačítko? a hlavně nevím si rady jak upravit ten příklad posílání teploty na server Thingspeak o ten WiFiManager a další věc možná se zeptám blbě nebo s nevědomosti ale nešlo by ta sila wifi signálu zobrazovat i na webové stránce :oops: a posílat tu hodnotu i na můj webhosting ? díky za trpělivost
Přílohy
ESP8266-01.jpg

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

Re: ESP8266 zobrazení na web

Příspěvek od jankop » 30 led 2020, 14:30

K těm GPIO. Rx a Tx jsou definovány pro sériovou komunikaci pouze v režimu bootloaderu tj. když nahráváš program. Při běhu programu mají funkci, jakou jim určíš. Nejspíš je možné nechat v provozu Tx a samotný Rx použít jako univerzální I/O. Ale klidně si nech RX i TX pro obousměrnou komunikaci, pokud to potřebuješ. Zapoj si tlačítko na GPIO0, jak je ve schématu. Při restartu sice plní funkci aktivace bootloaderu, ale jen v okamžiku restartu, jinak ho můžeš normálně používat, to je naprosto běžné. Ten tvůj obrázek s popisem vývodů je prostě nepřesný a zavádějící. Na ten WiFiManager se podívám, zatím jsem ho nepoužíval.
K poslední otázce, jestli ti dobře rozumím, chtěl bys nějakou hodnotu zobrazovat na http serveru, který běží na ESP8266 a zároveň ji odesílat na jiný server. V principu to možné je, je to otázka koexistence http klienta a serveru. Zkus to, maximálně narazíš na nedostatek paměti.

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

Re: ESP8266 zobrazení na web

Příspěvek od jankop » 30 led 2020, 21:23

Zkoušel jsem ten WifiManager. Použít se dá bez větších problémů. Upravil jsem tvůj program. Snažil jsem se příliš nezasahovat do jádra programu, jen jsem přidal položky podle mně potřebné pro požadovanou činnost. Je nezbytné po nahrání programu provést restart ESP8266, buď odpojením napájení nebo lépe tlačítkem Reset. Program počítá s tlačítkem z GPIO0 do země a pochopitelně pullup rezistorem do Vcc.
Po zapnutí se program snaží připojit k WiFi. Pokud se mu to nepovede do deseti sekund, tak pokračuje do smyčky loop(). Tam vyčkává a dělá pouze dvě věci. Pokouší se obnovit připojení a testuje tlačítko GPIO0 pro spuštění WifiManageru. Pokud se podaří připojení k WiFi, pak program začne odesílat data na thingspeak. Zároveň však dál průběžně testuje i tlačítko GPIO0 pro vyvolání WifiManageru.
První vzorek je odeslán po uplynutí doby SamplingTime. Mě to vcelku funguje.

Kód: Vybrat vše

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h>          //https://github.com/tzapu/WiFiManager
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
#define TRIGGER_PIN 0                          // tlacitko na GPIO0
const int httpPort = 80;
const char* host = "api.thingspeak.com";       // Informace pro připojení k thingspeak.com
const char* APIkey   = "CM4O1WWET8RHAT99";
const unsigned long SamplingTime = 30000;                 // perioda odesilani [ms]
unsigned long TimeStamp;
float temp;
OneWire oneWire(ONE_WIRE_BUS);                 // Inicializace DS18B20 na pinu GPIO2
DallasTemperature DS18B20(&oneWire);
//---------------------------------------------------------------------------------
void setup() {
  Serial.begin(115200);                        // Otevření komunikace po sériové lince
  pinMode(TRIGGER_PIN, INPUT);                 // tlacitko na GPIO0
  WiFi.begin();                                // Inicializace připojení k síti
  WiFi.mode(WIFI_STA);
  WiFi.setAutoReconnect(true);
  // deset sekund se pokousi o pripojeni k WiFi
  Serial.println("\r\nWaiting for wifi");
  for (uint8_t i = 0; (WiFi.status() != WL_CONNECTED) && (i < 10); i++) {
    delay(1000);
    Serial.print(".");
  }
  // Potvrzení připojení k síti
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("\r\nWiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    Serial.println();
  }
  else {
    Serial.println("\r\nWiFi not connected!\r\nPress the GPIO button to start the WifiManager");
  }
  DS18B20.requestTemperatures();               // Prvni vzorek
  temp = DS18B20.getTempCByIndex(0);
  TimeStamp = millis();
}
//---------------------------------------------------------------------------------
void loop() {
  // je volan WifiManager?
  if ( digitalRead(TRIGGER_PIN) == LOW ) {
    WiFiManager wifiManager;
    wifiManager.startConfigPortal("OnDemandAP");
    Serial.println("connected...yeey :)");
  }
  // Měření a odesílání teploty probíhá v intervalu SamplingTime,
  // ale pouze pokud existuje pripojeni k WiFi
  if ((millis() > SamplingTime) && ((millis() - SamplingTime) > TimeStamp) && (WiFi.status() == WL_CONNECTED)) {
    TimeStamp = millis();
    DS18B20.requestTemperatures();               // Získání informace o teplotě teploty
    temp = DS18B20.getTempCByIndex(0);
    Serial.print("Temperature: ");
    Serial.println(temp);
    char charVal[12];
    // Konverze vyčtené teploty do stringu
    // (hodnota, počet míst, počet desetinných míst,
    // umístění stringu)
    dtostrf(temp, 8, 2, charVal);
    Serial.print("connecting to ");
    Serial.println(host);
    WiFiClient client;
    if (!client.connect(host, httpPort)) {
      Serial.println("connection failed");
      return;
    }
    // Vytvoření URL pro odeslání informace o teplotě
    String url = "/update?key=";
    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");
    delay(10);
    Serial.println();
    while (client.available()) {
      String line = client.readStringUntil('\r');
      Serial.print(line);                        // tisk informací přijatých ze serveru
    }
    Serial.println();
    Serial.println("connection completed");      // potvrzení ukončení odesílání
    Serial.println();
    Serial.println();
  }
}

Odpovědět

Kdo je online

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