Как сохранить значение датчиков в строке JSON - PullRequest
0 голосов
/ 14 июня 2019

Я делаю со строкой JSON, я хочу сохранить свои данные датчика в строке JSON, а затем отправлю их на красный или огненный узел (который, как я слышал, нуждается в формате JSON, не уверен в этом). На самом деле мой проект - это получение большого количества датчиков, таких как

["ID": 01, "temp": value_temp_1, "humid": value_humid_1], ["ID": 02, "temp": value_temp_2, "humid": value_humid_2], ...

#include <DHT.h>
#include <DHT_U.h>
#include <ArduinoJson.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
int humidity, temperature;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Begin");
  dht.begin();
}
void loop() 
{
  delay(2000);
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  StaticJsonDocument<50> doc;
  JsonObject object = doc.to<JsonObject>();  
  object["ID"] = "Node01";
  object["humidity"] = humidity;
  object["temperature"] = temperature;
  serializeJson(doc, Serial);
  Serial.println("");
} 

мой вопрос: должен ли я использовать этот код в цикле ()? каждый раз он будет создавать Json <50>, поэтому он будет заполнен позже, или он будет создавать только 1 раз? я немного запутался по этому поводу, или кто-нибудь может дать мне несколько советов по оптимизации моего кода. спасибо

1 Ответ

0 голосов
/ 14 июня 2019

Вам не нужно каждый раз создавать object.Просто определите его как глобальную переменную и измените ее значения в цикле.Как то так:

#include <DHT.h>
#include <DHT_U.h>
#include <ArduinoJson.h>
#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
int humidity, temperature;

StaticJsonDocument<50> doc;
JsonObject object;

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Begin");
  dht.begin();
  object = doc.to<JsonObject>();
}

void loop()
{
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  object["ID"] = "Node01";
  object["humidity"] = humidity;
  object["temperature"] = temperature;
  serializeJson(doc, Serial);
  Serial.println("");
  delay(2000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...