Как создать вложенный объект JSON в Arduino - PullRequest
0 голосов
/ 18 июня 2019

Я делаю с сетью nrf24l01.я хочу сохранить значение из узла датчика (например, id, значение temp, значение humid) в строке JSON, как эта.моя строка:

{ 
    "1": {//this is a ID from node
            "Temp": "value",
            "Humid": "value"
        },
    "2": {
         "Temp": "value",
         "Humid": "value"
     }
}

Я могу создать объект и добавить значение из временного и влажного, но я не знаю, как создать "1" / * ID / *

Мой код

void loop() 
{
  network.update();
  if(network.available())
  {
    RF24NetworkHeader header;  
    network.read(header, &pack0, sizeof(pack0));
    if (header.from_node == 1)//this is the ID , return 1, 2, ....
    {
      object["ID"] = header.from_node;
      value["Temperature"] = pack0.temperature;
      value["Humidity"] = pack0.humidity;
      value["Soil"] = pack0.soil;
      serializeJsonPretty(object, Serial);
      Serial.println("");    }
    else if (header.from_node == 2)
    { 
      object["ID"] = header.from_node;
      value["Temperature"] = pack0.temperature;
      value["Humidity"] = pack0.humidity;
      value["Soil"] = pack0.soil; 
      serializeJsonPretty(object, Serial);
      Serial.println("");
    }
  }
}

1 Ответ

1 голос
/ 18 июня 2019

Вы можете использовать createnestedobject, также помните, что вы создаете вложенные объекты json в цикле, поэтому вам нужно позаботиться о размере вашего документа Json (256).

РЕДАКТИРОВАТЬ: Например, когда ваш вложенный объект превышает фиксированное значение, вы можете использовать функцию clear() для очистки объекта JSON.

#define MAX_ELEMENTS 10

int receive_count = 0;
StaticJsonDocument<256> doc;
JsonObject object = doc.to<JsonObject>();

void loop()
{
    network.update();
    if (network.available())
    {
        RF24NetworkHeader header;
        network.read(header, &pack0, sizeof(pack0));
        if (header.from_node)
        {
            JsonObject ID = object.createNestedObject(String(header.from_node));
            ID["Temperature"] = pack0.temperature;
            ID["Humidity"] = pack0.humidity;
            ID["Soil"] = pack0.soil;
            serializeJsonPretty(object, Serial);
            Serial.println("");
            receive_count++;
            //reset counter if reached and clear object
            if (receive_count >= MAX_ELEMENTS)
            {
                doc.clear();
                object = doc.to<JsonObject>();
                receive_count = 0;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...