Есть код для ESP8266
, который парсит данные на моем сайте и выполняет включение/выключение светильника. Когда это был статичный JSON
файл, оно все обрабатывало без проблем. Но когда я все перенес в PHP
файл, который динамически обновляет данные и выводит их в JSON
формате, скрипту не получается его прочитать. В чем может быть проблема?
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#define pin 5
const char* ssid = "ssid";
const char* password = "password";
const char* host = "www.site.ru"; // domain
String path = "/lightAPI.php";
void setup() {
pinMode(pin, OUTPUT);
pinMode(pin, HIGH);
digitalWrite(5, HIGH);
Serial.begin(9600);
delay(10);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
int wifi_ctr = 0;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println("IP address: " + WiFi.localIP());
}
void loop() {
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
client.print(String("GET ") + path + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: keep-alive\r\n\r\n");
delay(2000); // wait for server to respond
// read response
String section="header";
while(client.available()){
String line = client.readStringUntil('\r');
// Serial.print(line);
// we’ll parse the HTML body here
if (section=="header") { // headers..
Serial.print("");
if (line=="\n") { // skips the empty space at the beginning
section="json";
}
}
else if (section=="json") { // print the good stuff
section="ignore";
String result = line.substring(1);
// Parse JSON
int size = result.length() + 1;
char json[size];
result.toCharArray(json, size);
StaticJsonBuffer<200> jsonBuffer;
JsonObject& json_parsed = jsonBuffer.parseObject(json);
if (!json_parsed.success())
{
Serial.println("parseObject() failed");
return;
}
// Make the decision to turn off or on the LED
if (strcmp(json_parsed["light"], "OFF") == 0) {
digitalWrite(5, HIGH);
Serial.println("LED OFF");
}
else {
digitalWrite(5, LOW);
Serial.println("LED ON");
}
}
}
}
Файл PHP
<?php
$status = file_get_contents('txt/lightStatus.txt');
$json = array('light' => $status, 'time' => date("G"));
echo json_encode($json);
?>
Вот какие ответы я получаю от сервера
//Такой ответ получаю, когда запрашиваю JSON файл
HTTP/1.1 200 OK
Server: nginx admin
Date: Fri, 16 Jun 2017 20:49:26 GMT
Content-Type: application/json
Content-Length: 40
Connection: keep-alive
Last-Modified: Fri, 16 Jun 2017 17:03:12 GMT
X-Cache: HIT from Backend
Accept-Ranges: bytes
//А такой ответ, когда PHP
HTTP/1.1 200 OK
Server: nginx admin
Date: Fri, 16 Jun 2017 20:51:42 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую jQuery Waypoints Infinite Scroll в приложении Django
При нажатии на btn добавляется стиль display: block и окно открывается, но при нажатии на Close я не могу его закрыть так как стиль не меняется почему...
Вот так подключены файлы скриптов библиотеки jquery: