Пример: Автоматизация освещения при движении

Готовый пример flow для Node-RED, который автоматически включает свет при обнаружении движения и выключает его через 3 минуты после последнего движения.

Визуальное представление flow

_images/motion-sensor-light-control.png

Использование

  1. Скопируйте JSON код ниже

  2. В Node-RED откройте меню (☰) → Import

  3. Вставьте скопированный код в текстовое поле

  4. Нажмите Import

  5. Настройте топики устройств в блоках rocket-in и rocket-out (см. NodeRED + Rocket Home)

  6. Нажмите Deploy

JSON код для импорта

 1[
 2    {
 3        "id": "3d651a49b05d7c5a",
 4        "type": "switch",
 5        "z": "0e2f639075f84199",
 6        "name": "occupancy == true",
 7        "property": "payload.occupancy",
 8        "propertyType": "msg",
 9        "rules": [
10            {
11                "t": "true"
12            }
13        ],
14        "checkall": "true",
15        "repair": false,
16        "outputs": 1,
17        "x": 530,
18        "y": 100,
19        "wires": [
20            [
21                "17cb82fad58c45b6"
22            ]
23        ]
24    },
25    {
26        "id": "17cb82fad58c45b6",
27        "type": "trigger",
28        "z": "0e2f639075f84199",
29        "name": "ON 180s (extend)",
30        "op1": "{\"state\":\"ON\"}",
31        "op2": "{\"state\":\"OFF\"}",
32        "op1type": "json",
33        "op2type": "json",
34        "duration": "180",
35        "extend": true,
36        "overrideDelay": false,
37        "units": "s",
38        "reset": "reset",
39        "bytopic": "all",
40        "topic": "topic",
41        "outputs": 1,
42        "x": 790,
43        "y": 100,
44        "wires": [
45            [
46                "f5b58471f8e1c7d4"
47            ]
48        ]
49    },
50    {
51        "id": "72a6a42fa08e901f",
52        "type": "rocket-in",
53        "z": "0e2f639075f84199",
54        "name": "Дом > Коридор > Движение",
55        "topic": "",
56        "qos": 0,
57        "datatype": "auto-detect",
58        "x": 220,
59        "y": 100,
60        "wires": [
61            [
62                "3d651a49b05d7c5a"
63            ]
64        ]
65    },
66    {
67        "id": "f5b58471f8e1c7d4",
68        "type": "rocket-out",
69        "z": "0e2f639075f84199",
70        "name": "Дом > Коридор > Свет",
71        "topic": "",
72        "topicType": "topic",
73        "qos": 0,
74        "retain": false,
75        "datatype": "auto",
76        "x": 1070,
77        "y": 100,
78        "wires": []
79    },
80    {
81        "id": "0ff8482485a20937",
82        "type": "global-config",
83        "env": [],
84        "modules": {
85            "@rocket-home/nodes": "1.0.0"
86        }
87    }
88]

Описание flow

Этот flow состоит из 4 блоков:

  1. ``rocket-in`` — получает данные от датчика движения

  2. ``switch`` — проверяет, обнаружено ли движение (payload.occupancy == true)

  3. ``trigger`` — включает свет и запускает таймер на 180 секунд (3 минуты) с возможностью продления

  4. ``rocket-out`` — отправляет команды управления лампой

Как это работает

[Датчик движения (rocket-in)]
    ↓ (получает данные о движении)
[Проверка: есть ли движение? (switch)]
    ↓ (если движение обнаружено)
[Включить свет + Таймер 3 минуты (trigger)]
    ↓ (если движение продолжается - продлевать таймер)
[Через 3 минуты после последнего движения]
    ↓
[Выключить свет (rocket-out)]

После импорта

Важно

После импорта необходимо настроить топики MQTT для ваших устройств в блоках rocket-in и rocket-out. Подробные инструкции см. в разделе NodeRED + Rocket Home.

  • Дважды кликните на блок rocket-in и настройте топик датчика движения

  • Дважды кликните на блок rocket-out и настройте топик лампы с суффиксом /set

  • Нажмите Deploy для активации автоматизации