JSON и ардуино, создание массива
- Войдите на сайт для отправки комментариев
Пт, 30/03/2018 - 17:37
Помогите создать массив с использованием библиотеки #include <ArduinoJson.h>
нужно " упаковать" данные с датчиков в массив!
я только начал осваивать ардуино!!!
инфа на сайте http://arduinojson.org/doc/decoding/
#include "DHT.h"
#include <Wire.h>
#include <BH1750.h>
#include <ArduinoJson.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
BH1750 lightMeter;
void setup() {
Serial.begin(9600);
Serial.println("Датчик Температуры и Влажности подключен");
dht.begin();
Serial.println("Датчик Освещенности подключен");
lightMeter.begin();
// JSON
while (!Serial) continue;
StaticJsonBuffer<200> jsonBuffer;
delay(2000);
//По температуре
float hum = dht.readHumidity();
float temp = dht.readTemperature();
/*
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temp);
Serial.print(" *C ");
*/
//По Освещенности
uint16_t lux = lightMeter.readLightLevel();
/*
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
*/
// Есть 3 показателя датчиков : lux temp hum
//Пробное создание JSON
char json[]
="{\"Temperatura\":\"temp\",\"Vlagjnost\":\"hum\",\"Osveschennost"\:\"lux\"}";
/*
{
"Arduino_Mega": "Datchik",
"Temp_Vlag_Kluch": {
"Temperatura": "temp",
"Vlagjnost": "humе",
},
"Oswechennost_Kluch": {
"Osveschennost": "lux",},
},
*/
//Используйте функцию объекта parseobject() для декодирования/парсить json в строку JsonObject называется корень.
JsonObject& root = jsonBuffer.parseObject(json);
//Чтобы проверить, если декодирование/разбор был успешным, можно назвать root.успех():
if (!root.success()) {
Serial.println("parseObject() failed");
return;
}
// Извлечения значений.
//
// Большую часть времени, вы можете полагаться на неявные преобразования.
// В другом случае вы можете сделать root["time"].as<long>();
const char* temp = root ["Temperatura"];
const char* hum = root["Vlagjnost"];
const char* lux = root ["Osveschennost"];
/*
long time = root["time"];
double latitude = root["data"][0];
double longitude = root["data"][1];
*/
// Print values.
Serial.println(temp);
Serial.println(hum);
Serial.println(lux);
void loop() {
}
Что не понятно в http://arduinojson.org/doc/encoding/ и в http://arduinojson.org/api/jsonobject/createnestedobject/ (копировать сюда не буду)?
decoding - это распаковка строки в переменные
encoding - это упаковка переменных в строку
все что в кавадратных скобочках это Array, все что в фигурных Object, если внутри то добавляется приставка nested.
Посмотрел исходники - данные можно выводить и в String переменную и в char[] буфер с укзанием размера буфера.
Возник вопрос по библиотеке JSON.
Можно ли разместить jSON во flash ?
// The value is originally in Flash memory obj["hello"] = F("world");в примере пишут что можно, но насколько экономиться RAM, и как это можно посчитать ?
Подскажите как обойтись без граблей и сразу отправить Json в http?
String POST_HTTP; serializeJson(doc, POST_HTTP); http.POST(POST_HTTP);обойтись без граблей и сразу отправить Json в http?
Что бы этот набор слов мог значить?
Ответ на мой вопрос