Инструменты пользователя

Инструменты сайта


iot:software:node-red:flows:telemetry_saving:narodmon

Передача метеоданных в Народный мониторинг

Эта цепочка узлов является частью потока «Сохранение телеметрии», но может использоваться отдельно, если заменить узел «link in» узлом «mqtt in».

Помимо Node-RED, в процессе участвует датчик температуры и влажности Sonoff SNZB-02, Zigbee-анализатор CC2531, локальная служба Zigbee2MQTT и некий дополнительный софт, о котором упомянуто в этих статьях.

:!: Если хотите использовать для передачи данных протокол MQTT, дополнительно смотрите эту статью.

Нестандартные узлы

Дополнительные подпотоки

Если использовать эту цепочку отдельно от основного потока, указанный выше подпоток не входит в состав кода ниже и его нужно загрузить и подключить отдельно вместо узла «link out»!

Описание работы цепочки

Соответствующий узел подключается к MQTT-брокеру и следит за данными, поступающими с наружного датчика. Следующий узел ограничивает поток сообщений 1 в 5 минут1). Далее, данные подготавливаются и последним узлом отправляются в сервис.

Помимо этого, есть триггер, который следит за потоком сообщений и, если нет сообщений больше установленного промежутка2), вбрасывает последнее полученное и отправляет уведомление на почту. Если сообщения есть, каждый раз продлевает таймер. Это сделано, чтобы при непредвиденных ситуациях иметь чуть больше времени для разбора ситуации. В общем, небольшая страховка.

Код для загрузки

narodmon.json
[
    {
        "id": "f279413e.d2c8e",
        "type": "delay",
        "z": "551f568e.e62c18",
        "name": "Ограничение 5 минут",
        "pauseType": "rate",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "5",
        "rateUnits": "minute",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "x": 160,
        "y": 580,
        "wires": [
            [
                "ef5cb94a.abad08",
                "15515561.bf4ccb"
            ]
        ]
    },
    {
        "id": "ef5cb94a.abad08",
        "type": "template",
        "z": "551f568e.e62c18",
        "name": "Подготовка данных",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "T={{{payload.temperature}}}&H={{{payload.humidity}}}",
        "output": "str",
        "x": 440,
        "y": 580,
        "wires": [
            [
                "b005735a.91059"
            ]
        ]
    },
    {
        "id": "b005735a.91059",
        "type": "narodmon",
        "z": "551f568e.e62c18",
        "name": "Передача данных",
        "narodmonServer": "9043fac.1f7e308",
        "nodegroup": "",
        "x": 710,
        "y": 580,
        "wires": []
    },
    {
        "id": "d8544fd0.c205f",
        "type": "link in",
        "z": "551f568e.e62c18",
        "name": "С MQTT",
        "links": [
            "c8c40256.0249b"
        ],
        "x": 75,
        "y": 640,
        "wires": [
            [
                "f279413e.d2c8e"
            ]
        ]
    },
    {
        "id": "15515561.bf4ccb",
        "type": "trigger",
        "z": "551f568e.e62c18",
        "name": "Вброс последнего сообщения",
        "op1": "",
        "op2": "",
        "op1type": "nul",
        "op2type": "payl",
        "duration": "28",
        "extend": true,
        "overrideDelay": false,
        "units": "min",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 290,
        "y": 640,
        "wires": [
            [
                "ef5cb94a.abad08",
                "c54dc60b.a15a28"
            ]
        ],
        "info": "Народный мониторинг требует передачи данных не реже раза в 30 мин, иначе выставляет санкции!.. а Sonoff SNZB-02, почему-то, периодически не передает данные дольше... Тут, либо у меня косяк какой-то, либо реально данные не меняются и он молчит.\n\nПоэтому был добавлен этот триггер - если данные не отправляются больше установленной задержки (меньше 30 мин), он вбрасывает последнее поступившее сообщение.\n\nПока данные периодические передаются, он постоянно продлевает таймер."
    },
    {
        "id": "c54dc60b.a15a28",
        "type": "change",
        "z": "551f568e.e62c18",
        "name": "Подготовка письма",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "\"Данные телеметрии были вброшены в \" & $now('[H01]:[m01]:[s01] [D01].[M01].[Y0001]', '+1000') & \"!\"",
                "tot": "jsonata"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "\"Для соответствия правилам портала \\\"Народный мониторинг\\\", были вброшены следующие данные из последнего сообщения:\\n\\n1) температура: \" & payload.temperature & \";\\n2) влажность: \" & payload.humidity & \".\"",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 600,
        "y": 640,
        "wires": [
            [
                "63bb51cd.8a1fc"
            ]
        ]
    },
    {
        "id": "63bb51cd.8a1fc",
        "type": "link out",
        "z": "551f568e.e62c18",
        "name": "Отправка почты",
        "links": [
            "7c896fde.621af"
        ],
        "x": 775,
        "y": 640,
        "wires": []
    },
    {
        "id": "9043fac.1f7e308",
        "type": "narodmon-server",
        "server": "http://narodmon.ru/",
        "name": "user"
    }
]
1)
Это ограничение сервиса для бесплатных пользователей.
2)
Меньше 30-и минут!

Обсуждение

Ваш комментарий:
W F W W M F K Y G Y F W M J N N
 
Последнее изменение: 2022/02/28 18:52 — Николай Солошин