首页 > 解决方案 > 我可以从传感器读取值然后将其添加到 RF24l01 网络的 JSON 字符串吗

问题描述

我读了几个例子,值是这样的字符串或数字

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

例如,我有 2 个值:

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

我可以像这样读取那些温度和湿度并将其添加到循环()中的 json

  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));

标签: cjsonarduino

解决方案


考虑使用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确保写入不会溢出。


推荐阅读