ESP8266 zobrazení na web
ESP8266 zobrazení na web
Dobrý den
Jak to udělat aby se třeba síla wifi signálu ukázala na webové stránce ? díky
Jak to udělat aby se třeba síla wifi signálu ukázala na webové stránce ? díky
-
- Příspěvky: 1029
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP8266 zobrazení na web
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
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.
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
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.
Re: ESP8266 zobrazení na web
Jak upravit tento příklad aby mě se na stránce ukazovala síla wifi signálu,kanál a podobně
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
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);
}
Re: ESP8266 zobrazení na web
Ještě jsem zapomněl dodat že to čidlo teploty je na esp8266 esp-01 které má 1MB flash paměti
-
- Příspěvky: 1029
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP8266 zobrazení na web
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íš.
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...
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);
}
Re: ESP8266 zobrazení na web
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
-
- Příspěvky: 1029
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP8266 zobrazení na web
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.
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.
Re: ESP8266 zobrazení na web
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 a posílat tu hodnotu i na můj webhosting ? díky za trpělivost
-
- Příspěvky: 1029
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP8266 zobrazení na web
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.
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.
-
- Příspěvky: 1029
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP8266 zobrazení na web
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.
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();
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů