Июл 222024
 

Home Assistantрешил описать пару способов отправки​
данных на наш излюбленный сервис народного мониторинга.
Я долго искал информацию, как составить их достаточно замороченный запрос JSON и вот один​
добрый человек — Николай В. (@Vasilchuk) из сообщества телеграмм помог и написал код формирования запроса, за что ему огромный респект и донат на пивасик.
Код с комментариями, ниже расскажу нюансы использования.

http_request:
  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.
Делается это так:

  - platform: uptime
    name: "Test8266 Uptime"
    id: test_upt

esphome
2. Заполните свои данные — mac, название прибора, логин на проекте и координаты.
3. Пропишите все данные для датчиков, укажите их параметры опираясь на api народного мониторинга.
4. И самое важное, после загрузки прошивки в esp, понаблюдайте за логом.
Esp 8266 может пропускать отправки через одну, но и получаемый интервал в 2 минуты будет избыточен для статистики.

Если же у вас esp32, то скорее всего данные будут отправляться без проблем каждую минуту.
​Почему происходит данная проблема я не знаю, но жить она особо не мешает.
UPD: Проверьте, что в проекте у вас правильно установлен протокол приёма данных — JSON
narodmon protocol

Полезные ссылки:
Форум amperka

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)