ESP8266 читает JSON, но не читает PHP файл

402
17 июня 2017, 13:51

Есть код для 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

READ ALSO
Django Waypoints Infinite Scroll и get параметр

Django Waypoints Infinite Scroll и get параметр

Использую jQuery Waypoints Infinite Scroll в приложении Django

299
JQuery Модальное окно

JQuery Модальное окно

При нажатии на btn добавляется стиль display: block и окно открывается, но при нажатии на Close я не могу его закрыть так как стиль не меняется почему...

288
Проблема с подключением расширения jquery (select2)

Проблема с подключением расширения jquery (select2)

Вот так подключены файлы скриптов библиотеки jquery:

277