snažím sa rozbehnúť komunikáciu medzi ESP8266 a webom. Komunikácia by mala prebiehať tak že ESP8266 (Node MCU V3) pošle request (POST alebo GET) na stránku a tá mu odpovie jednoduchým textom. Kód mám momentálne spravený pre POST metódu ale skúšal som aj GET s rovnakým výsledkom.
- Posielanie dát aj ich spracovanie mi funguje.
- Dokonca mi funguje aj prijatie dát.
- Problém však nastáva po prijatí dát kedy sa mi ESP8266 resetuje a cyklus sa opakuje.
serialport my vypíše chybu "Exception (9)".
https://links2004.github.io/Arduino/dc/ ... auses.html
jediné čo sa mi zatiaľ podarilo zistiť je že ak sa nevykoná metóda POST na stránke tak sa modul neresetuje.
problém môže byť aj v stránke ale neviem ako ju upraviť.
používam ARDUINO IDE
Za akékoľvek postrehy Ďakujem
Zdroj:
https://techtutorialsx.com/2016/07/17/e ... -requests/
Kód ESP8266
Kód: Vybrať všetko
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
const char* ssid = "moje ssid";
const char* password = "moje heslo";
const char* address = "http://webtemp.wz.cz/test.php";
//const char* address = "http://jsonplaceholder.typicode.com/users/1"
String apiKeyValue = "mojetralalaapi"; //API
int c = 0;
//*********** LOOP ***********
void setup () {
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
delay(10);
Serial.print("Connecting..");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
//*********** SETUP ***********
void loop() {
Serial.println("************************ NEW LOOP ************************");
c++;
Serial.print("c: ");
Serial.println(c);
if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
//---------------------------------------------
//post data
String data = "4321";
String postData = "api_key=" + apiKeyValue +
"&value=" + String(data) + "";
//-------------------------------------------------
HTTPClient http; //Declare an object of class HTTPClient
http.begin(address); //Specify request destination
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
auto httpCode = http.POST(postData);
// int httpCode = http.GET(); //Send the request
Serial.println(httpCode); //Print HTTP return code
if (httpCode > 0) { //Check the returning code
delay(300);
String payload = http.getString(); //Get the request response payload
Serial.println(payload); //Print the response payload
}
http.end(); //Close connection
}
delay(10000); //Send a request every 30 seconds
}
Kód: Vybrať všetko
<?php
$ESP_api_key = 'mojetralalaapi';
//-----------------------------------------------------------------------------------------------
$ESP_api_key_rec = $value = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$ESP_api_key_rec = test_input($_POST["api_key"]);
$value = test_input($_POST["value"]);
if($ESP_api_key_rec === $ESP_api_key){
echo "API OK ";
echo "nacitane data: " . $value;
}
else{
echo "Wrong API!";
}
}
else{
echo "no data!" ;
}
// Osetrenie vstupnych dat
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
si tu
výstup serialmonitor
Kód: Vybrať všetko
WiFi connected
IP address:
192.168.43.17
************************ NEW LOOP ************************
c: 1
200
API OK nacitane data: 4321
si tu
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Exception (9):
epc1=0x40207278 epc2=0x00000000 epc3=0x00000000 excvaddr=0x0110012e depc=0x00000000
>>>stack>>>
ctx: cont
sp: 3ffffd10 end: 3fffffc0 offset: 0190
3ffffea0: 40203c24 3ffee450 3ffe870a 40203f01
3ffffeb0: 3fffdad0 00000020 3ffffee0 40202a38
3ffffec0: 3ffef354 000000c8 3ffffee0 402037dc
3ffffed0: 3fffdad0 000000c8 3ffee450 40201231
3ffffee0: 00000000 00000000 3ffef2a4 3ffef2f4
3ffffef0: 000d000f 00fef100 00010050 40001388
3fffff00: 7365742f 68702e74 89fe0070 70747468
3fffff10: 3ffe8700 84000000 3ffef5bc 0000004f
3fffff20: 00fe870c 3ffef234 0011001f 00204196
3fffff30: 3ffe8600 287008a9 80003c00 00000000
3fffff40: 00000000 000000c8 00000020 40203c00
3fffff50: 00000000 3ffe000a 3ffe8700 40203f01
3fffff60: 80ffdad0 00000001 3ffef344 3ffef300
3fffff70: 0020002f 80ffff00 3ffef400 000c000f
3fffff80: 80ffdad0 3ffef26c 0021002f 002010c0
3fffff90: 31323334 112ba800 84efeffe feefeffe
3fffffa0: feefeffe 00000000 3ffee48c 402053bc
3fffffb0: feefeffe feefeffe 3ffe84f0 40100b85
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3584, room 16
tail 0
chksum 0xb0
csum 0xb0
v2843a5ac
~ld