отправка погоды json

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Здраствйте форумчание. Есть скечт на esp 01, получает тепературу на улице и передает на httml, хохотелось получать данные на другом устройстве, nodemcu 1602 и выводить на 1602, не могу найти видео или статью как это реолизовать по json,  подскажите пожайлуста. Зарание спасибо

#include <ESP8266WebServer.h>
#include <OneWire.h>                                   
#include <DallasTemperature.h>    
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <dht11.h>
#include <Adafruit_Sensor.h>                            // Adafruit_Sensor
#include <DHT.h>
#include <OneWire.h>
#define DHTPIN 2                                        // Пин к которому подключен датчик
#define DHTTYPE DHT11  
 int temp_0; 
DHT dht(DHTPIN, DHTTYPE); 
#define DHT11_PIN 2
const char* ssid  = "ssid";               
const char* password   = "password"; 
char auth[] = "8SjAfjfo72jlp6tD9WBPblf-mCVaQFK-"; //Токен сгенерированый Блинком (Проверьте почту)
SimpleTimer timer;
WiFiServer server(80);   
dht11 DHT;
#define ONE_WIRE_BUS 0                                  // Указываем, к какому выводу подключена датчик
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire); 
void setup()
{
  Serial.begin(115200);
 delay(10);                                            // Пауза 10 мкс
  dht.begin();
  DS18B20.begin();  
  Serial.println("");                                   // Печать пустой строки
  Serial.print("Connecting to ");                       // Печать "Подключение к:"
  Serial.println(ssid);                                 // Печать "Название Вашей WiFi сети"
  WiFi.begin(ssid, password);                           // Подключение к WiFi Сети
if (WiFi.status() != WL_CONNECTED)                 // Проверка подключения к WiFi сети
  {
   delay(500);                                          // Пауза 500 мкс
   Serial.print(".");                                   // Печать "."
  }
   Serial.println("");                                  // Печать пустой строки                                         
   Serial.println("WiFi connected");                    // Печать "Подключение к WiFi сети осуществлено"
   server.begin();                                      // Запуск Web сервера
   Serial.println("Web server running.");               // Печать "Веб-сервер запущен"
   delay(10000);                                        // Пауза 10 000 мкс
   Serial.println(WiFi.localIP());   
 // See the connection status in Serial Monitor
   Blynk.begin(auth, ssid, password); //сюда вписываем имя и пароль WiFi сети
 timer.setInterval(1000L, sendUptime);
 timer.setInterval(1000L, getSendData);
}
void sendUptime()
{
Blynk.virtualWrite(10, DHT.temperature); //Виртульный pin
 Blynk.virtualWrite(11, DHT.humidity); // Виртульный pin 
}
void loop()
{
  Blynk.run(); // Initiates Blynk
  timer.run(); // Initiates SimpleTimer
  int chk; 
 chk = DHT.read(DHT11_PIN);    // READ DATA
   html();
}
void html()
{
 WiFiClient client = server.available();                // Получаем данные, посылаемые клиентом
 if (client){
  Serial.println("New client");                         // Отправка "Новый клиент"
  boolean blank_line = true;                            // Создаем переменную, чтобы определить конец HTTP-запроса
  while (client.connected()){                           // Пока есть соединение с клиентом
    if (client.available()){                            // Если клиент активен
     char c = client.read();                            // Считываем посылаемую информацию в переменную "с"
     if (c == '\n' && blank_line){
      delay(3000);
       float t = dht.readTemperature();                  // Запрос на считывание температуры
       float h = dht.readHumidity();
       client.println("HTTP/1.1 200 OK");               // Стандартный заголовок HTTP
       client.println("Content-Type: text/html");
       client.println("Connection: close");             // Соединение будет закрыто после завершения ответа
       client.println("Refresh: 10");                   // Автоматическое обновление каждые 10 сек
       client.println();
       client.println("<!DOCTYPE HTML>");               // Веб-страница создается с использованием HTML
       client.println("<html>");                        // Открытие тега HTML
       client.println("<head>");
       client.print("<title>ESP8266 TEMP</title>");     // Название страницы
       client.println("</head>");
       client.println("<body>");
      client.println("<h1>ESP8266 - Temperature & Humidity</h1>");
       client.println("<h3>t = ");
       client.println(t);                               // Отображение температуры
       client.println("*C</h3>");
       client.println("</head>");
       client.println("<body>");
       client.println("<h3>H= ");
       client.println(h);                               // Отображение влажности
       client.println("</h3>");
       client.println("<h3>Temperature = ");
       client.println(DS18B20.getTempCByIndex(0),0);  
       client.println("</body>");
     client.println("</html>");                     // Закрытие тега HTML
    break;                                           // Выход
       }
        if (c == '\n'){                                 // Если "с" равен символу новой строки                                            
         blank_line = true;                             // Тогда начинаем новую строку
        }                                         
         else if (c != '\r'){                           // Если "с" не равен символу возврата курсора на начало строки                                       
          blank_line = false;                           // Тогда получаем символ на текущей строке
         }                                       
    }
  } 
    client.stop();                                      // Закрытие соединения
    Serial.println("Client disconnected.");   
         ESP.restart();
}
}
void getSendData()
{
  
 

  DS18B20.requestTemperatures(); 
  temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 показания для датчика 1 в цельсиях
Blynk.virtualWrite(9, temp_0); //выврд данных на виртуальный пин V10
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Каким образом и где искали?

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

в гугле, получение отправка данных в json, искал сайты где пишут про json, в ютубе, нашел 1 видео, с отправкой данных, немного не понял, пытался по нему делать, не чего не оплучатся. При переходе на страницу, у меня происходит перезагрузка скетча.

sadman41
Offline
Зарегистрирован: 19.10.2016

Странный гугл используете. Наверное один из первых релизов.
Мой по фразе "ESP JSON" наваливает так, что монитор во все стороны раздувает.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Немного не в ту степь ушел, нашел как получать данные по /json, но теперь неполучатся сделать страницу с тепературой.

#include <ESP8266WebServer.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
//#include <dht11.h>
#include <Adafruit_Sensor.h>                            // Adafruit_Sensor
#include <DHT.h>
#include <OneWire.h>
ESP8266WebServer HTTP(80);
#define DHTPIN 2                                        // Пин к которому подключен датчик
#define DHTTYPE DHT11
int temp_0;
DHT dht(DHTPIN, DHTTYPE);
#define DHT11_PIN 2
const char* ssid  = "ssid";
const char* password   = "password";
char auth[] = "8SjAfjfo72jlp6tD9WBPblf-/-"; //Токен сгенерированый Блинком (Проверьте почту)
SimpleTimer timer;
WiFiServer server(80);
//dht11 DHT;
#define ONE_WIRE_BUS 0                                  // Указываем, к какому выводу подключена датчик
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
char temperatureCString[6];

void setup() {
  Serial.begin(115200);
  Serial.println("");
  Serial.println("Start 1-WIFI");
  //Запускаем WIFI
 
  //Настраиваем и запускаем HTTP интерфейс
  Serial.println("Start 2-WebServer");
  HTTP_init();
}
void loop() {
  HTTP.handleClient();
  delay(1);
}
void HTTP_init(void) {
  HTTP.on("/restart", handle_Restart); // Перезагрузка модуля по запросу вида http://192.168.0.101/restart?device=ok
  HTTP.on("/configs.json", handle_ConfigJSON); // формирование configs.json страницы для передачи данных в web интерфейс
  HTTP.on("/",html);
  HTTP.begin();

}

// Перезагрузка модуля по запросу вида http://192.168.0.101/restart?device=ok
void handle_Restart() {
  String restart = HTTP.arg("device");
  if (restart == "ok") ESP.restart();
  HTTP.send(200, "text/plain", "OK");
}
void html()
{
int val = 123;
 HTTP.send(200, "text/plain", "yt");
  HTTP.send(val);
float t = dht.readTemperature();                  // Запрос на считывание температуры
          float h = dht.readHumidity();
  HTTP.send(t);
  WiFiClient client = server.available();                // Получаем данные, посылаемые клиентом
  if (client) {
    Serial.println("New client");                         // Отправка "Новый клиент"
    boolean blank_line = true;                            // Создаем переменную, чтобы определить конец HTTP-запроса
    while (client.connected()) {                          // Пока есть соединение с клиентом
      if (client.available()) {                           // Если клиент активен
        char c = client.read();                            // Считываем посылаемую информацию в переменную "с"
        if (c == '\n' && blank_line) {
          delay(3000);
          float t = dht.readTemperature();                  // Запрос на считывание температуры
          float h = dht.readHumidity();
          client.println("HTTP/1.1 200 OK");               // Стандартный заголовок HTTP
          client.println("Content-Type: text/html");
          client.println("Connection: close");             // Соединение будет закрыто после завершения ответа
          client.println("Refresh: 10");                   // Автоматическое обновление каждые 10 сек
          client.println();
          client.println("<!DOCTYPE HTML>");               // Веб-страница создается с использованием HTML
          client.println("<html>");                        // Открытие тега HTML
          client.println("<head>");
          client.print("<title>ESP8266 TEMP</title>");     // Название страницы
          client.println("</head>");
          client.println("<body>");
          client.println("<h1>ESP8266 - Temperature & Humidity</h1>");
          client.println("<h3>t = ");
          client.println(t);                               // Отображение температуры
          client.println("*C</h3>");
          client.println("</head>");
          client.println("<body>");
          client.println("<h3>H= ");
          client.println(h);                               // Отображение влажности
          client.println("</h3>");
          client.println("<h3>Temperature = ");
          client.println(DS18B20.getTempCByIndex(0), 0);
          client.println("</body>");
          client.println("</html>");
 HTTP_init();
  handle_ConfigJSON();


          break;                                           // Выход
        }
        if (c == '\n') {                                // Если "с" равен символу новой строки
          blank_line = true;                             // Тогда начинаем новую строку
        }
        else if (c != '\r') {                          // Если "с" не равен символу возврата курсора на начало строки
          blank_line = false;                           // Тогда получаем символ на текущей строке
        }
      }
    }
    client.stop();                                      // Закрытие соединения
    Serial.println("Client disconnected.");             // Печать "Клиент отключен"
    ESP.restart();
  }
}
void getSendData()
{
DS18B20.requestTemperatures();
  temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 показания для датчика 1 в цельсиях
  Blynk.virtualWrite(9, temp_0); //выврд данных на виртуальный пин V10
}
 
  

void handle_ConfigJSON() {
  String json = "{";  // Формировать строку для отправки в браузер json формат
  //{"SSDP":"SSDP-test","ssid":"home","password":"i12345678","ssidAP":"WiFi","passwordAP":"","ip":"192.168.0.101"}

  //json += ;
  json += ssid;
  // Пароль сети
  json += ", " ;
  json += password;
  json += ", ";
  json += WiFi.localIP().toString();
  json += "\"}";
  HTTP.send(200, "text/json", json);
}