Могу ли я прочитать значение с датчиков, а затем добавить его в строку JSON для сети RF24l01 - PullRequest
0 голосов
/ 05 июня 2019

Я прочитал несколько примеров, и значение является строкой или числом вроде этого

json[] =
      "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";

Например, у меня есть 2 значения:

pack0.humidity = dht.readHumidity();
pack0.temperature = dht.readTemperature();

Могу ли я прочитать эти временные и влажные идобавьте его в json в loop () следующим образом

  json[] =
          "{\"Temperature\": /*temp here*/,
           \"Humidity\":/*humid here*/}";

Может ли кто-нибудь дать мне пример для моего проекта.большое спасибо.Мой текущий код для rf24

struct package0
  {
    float temperature = 0;
    float humidity = 0;
    int soil = 0;
  };
  typedef struct package0 Package0;
  Package0 pack0;
void loop()
{
  delay(2000);
  pack0.humidity = dht.readHumidity();
  pack0.temperature = dht.readTemperature();
  pack0.soil = map(analogRead(SOILPIN), 0, 4096, 100, 0);//convert to percentage
  if (isnan(pack0.humidity) || isnan(pack0.temperature))
  {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
  RF24NetworkHeader header(master00);
  bool ok = network.write(header, &pack0, sizeof(pack0));

1 Ответ

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

Подумайте об использовании ArduinoJson , который сделает кодировку JSON за вас. Преимущество этой библиотеки в том, что она упрощает изменение схемы данных в более позднее время.

Или вы можете сделать это самостоятельно, просто используя snprintf:

const int BUFFER_SIZE = 48; // Choose a suitable number here
char json[BUFFER_SIZE];
snprintf(json, BUFFER_SIZE, "{\"Temperature\":%f,\"Humidity\":%f}", pack0.humidity, pack0.temperature);

json будет содержать ваши данные JSON. Использование snprintf гарантирует, что запись не будет переполнена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...