решил описать пару способов отправки
данных на наш излюбленный сервис народного мониторинга.
Я долго искал информацию, как составить их достаточно замороченный запрос JSON и вот один
добрый человек — Николай В. (@Vasilchuk) из сообщества телеграмм помог и написал код формирования запроса, за что ему огромный респект и донат на пивасик.
Код с комментариями, ниже расскажу нюансы использования.
timeout: 10s
interval:
- interval: 1min
then:
http_request.post:
url: http://narodmon.ru/post
json: |-
JsonObject &device = root.createNestedArray("devices").createNestedObject();
device["mac"] = "20642B4D322F";
device["name"] = "TestESP";
device["owner"] = "login_narodmon";
device["lat"] = 44.010053;
device["lon"] = 25.721269;
JsonArray &sensors = device.createNestedArray("sensors");
JsonObject &temp = sensors.createNestedObject();
temp["id"] = "TEMP";
temp["value"] = id(test_ds).state;
temp["unit"] = "C";
temp["name"] = "Температура DS";
JsonObject &hum = sensors.createNestedObject();
hum["id"] = "RH";
hum["value"] = id(test_hum).state;
hum["unit"] = "%";
hum["name"] = "Влажность AHT";
JsonObject &bh = sensors.createNestedObject();
bh["id"] = "LUX";
bh["value"] = id(test_lux).state;
bh["unit"] = "lux";
bh["name"] = "Освещенность";
JsonObject &upt = sensors.createNestedObject();
upt["id"] = "UPTIME";
upt["value"] = id(test_upt).state;
upt["name"] = "Время работы";
Тут несколько уточнений:
1. Что бы вставить показания датчиков, у каждого вашего датчика должен быть прописан его уникальный id.
который потом вставляется в запрос json.
Делается это так:
name: "Test8266 Uptime"
id: test_upt
2. Заполните свои данные — mac, название прибора, логин на проекте и координаты.
3. Пропишите все данные для датчиков, укажите их параметры опираясь на api народного мониторинга.
4. И самое важное, после загрузки прошивки в esp, понаблюдайте за логом.
Esp 8266 может пропускать отправки через одну, но и получаемый интервал в 2 минуты будет избыточен для статистики.
Если же у вас esp32, то скорее всего данные будут отправляться без проблем каждую минуту.
Почему происходит данная проблема я не знаю, но жить она особо не мешает.
UPD: Проверьте, что в проекте у вас правильно установлен протокол приёма данных — JSON
Полезные ссылки:
Форум amperka