Продолжаем проект домашней автоматизации Карла. Рассмотрим автоматизацию освещения на основе времени суток и движения. В первой части мы настроили Home Assistant и прошили базовые WiFi-переключатели Sonoff. Сегодня создадим мост 433 МГц в MQTT и подключим сенсоры.
433 МГц
В зависимости от страны, 433 МГц — открытая частота для коммуникации. Существуют сотни устройств, использующих 433 МГц для передачи данных. Сосредоточимся на двух моделях с Gearbest: датчике движения WMS07 (слева) и датчике двери/окна WDS07 (2 компонента, справа).
Датчик двери не разбираем из-за простой конструкции, но приводим фото детектора движения PIR.

Мост 433 МГц
При разработке системы отслеживания присутствия в комнатах был обнаружен этот проект . Он фиксирует сигналы 433 МГц и передаёт их на MQTT-сервер. Реализация проста. Дополнительно поддерживается передача ИК-сигналов через MQTT. Тестировался ИК-приёмник, но функционал не внедрён. На странице проекта есть подробные инструкции, поэтому детали опустим. Можно собрать базовую версию без неиспользуемых сенсоров. Дополнительно добавлены датчик освещённости и DHT-сенсор (версия здесь ). В данной статье они не рассматриваются для снижения стоимости.
- NodeMCU $5.69
- Модуль приёмника H3V4F $1.21
- Макетная плата $2.88
Этого достаточно. За ~$10 получаем недорогой мост 433 МГц. Для защиты от помех устройство можно разместить в корпусе в центральной локации. Рекомендуется припаять разъёмы на плату для упрощения замены компонентов. Существует множество приёмников 433 МГц; протестированные на Gearbest модели показали, что H3V4F оптимален. Экспериментальный переход на супергетеродинный приёмник не дал заметных преимуществ. Обновление потребовалось для датчика на почтовом ящике (дистанция 60 метров). Использовалась антенна этой конструкции (справа) как наиболее эффективная.
Ключевой параметр — зона покрытия. В одноэтажном кирпичном доме ~185 м² мост уверенно охватывает внутренние помещения и прилегающую территорию. Для многоэтажных зданий потребуются дополнительные приёмники с уникальными MQTT-топиками во избежание дублирования сигналов. На фото — готовое устройство. Практическую ценность имеет только замер температуры, но реализованы все возможности. DHT11 показал низкую точность; рекомендуем DHT22. На изображении — почти полная комплектация моста (ИК-передатчик отсутствует). Тестируется альтернативная модель с аппаратным кодированием сигналов — результаты будут в обновлении.
Датчик движения
Настройка датчика движения осуществляется джамперами. Рекомендуется отключить светодиод и установить интервал срабатывания на 5 минут после настройки. Микропереключатель в левом верхнем углу (защита от вскрытия) используется как тумблер быстрого отключения света. Датчики размещены на тумбах и в углах — они эффективны для принудительного включения света, когда Home Assistant игнорирует движение. Лёгкое сжатие корпуса переключает состояние света.
После настройки моста установите в датчик батареи. Запустите batch-файл для идентификации кодов движения и вскрытия. Запишите оба значения..
1
2
|
«C:\Program Files (x86)\mosquitto\mosquitto_sub» —t stat/# -t tele/# -t cmnd/# -t home/# -v»
pause
|
Home Assistant
Пример YAML-конфигурации для Home Assistant (с возможностью поиска-замены). Код адаптирован с официального сайта платформы. Добавлен скрипт отключения (датчики отправляют сигнал только при обнаружении движения) и тумблер вскрытия. Для подключения нескольких сенсоров используйте единые группы «binary_sensor:» и «automation:».
Find/Replace | Explanation |
generic | use livingroom or masterbedroom etc no spaces |
5555555 | use the motion number you found earlier |
8888888 | make up a number around your tamper/motion number |
9999999 | use the tamper number you found earlier. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
binary_sensor:
— platform: mqtt
name: «Generic Motion»
payload_on: «5555555»
payload_off: «8888888»
sensor_class: motion
state_topic: «home/433toMQTT»
automation:
— alias: Turn on generic after Sunset
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.generic_motion
to: ‘on’
condition:
condition: and
conditions:
— condition: sun
after: sunset
after_offset: «-1:00:00»
— condition: time
before: ’20:00:00′
action:
service: homeassistant.turn_on
entity_id: script.generic_timed_lamp
— alias: Turn on generic before Sunrise
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.generic_motion
to: ‘on’
condition:
condition: and
conditions:
— condition: sun
before: sunrise
before_offset: «1:00:00»
— condition: time
after: ’07:00:00′
action:
service: homeassistant.turn_on
entity_id: script.generic_timed_lamp
— alias: Turn off generic motion
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.generic_motion
to: ‘on’
action:
service: homeassistant.turn_on
entity_id: script.generic_pir_timer_off
— alias: generic Tamper
hide_entity: true
trigger:
platform: mqtt
topic: home/433toMQTT
payload: ‘9999999’
action:
service: homeassistant.toggle
entity_id: light.generic
Light:
— alias: generic
platform: mqtt
name: «generic»
state_topic: «stat/testbench/POWER»
command_topic: «cmnd/testbench/power»
payload_on: «ON»
payload_off: «OFF»
script:
generic_timed_lamp:
alias: «Turn on generic and set timer»
sequence:
# Cancel ev. old timers
— service: script.turn_on
data:
entity_id: script.generic_pir_timer_off
— service: script.turn_off
data:
entity_id: script.generic_timer_off
— service: light.turn_on
data:
entity_id: light.generic
# Set new timer
— service: script.turn_on
data:
entity_id: script.generic_timer_off
generic_timer_off:
alias: «Turn off generic after 30 minutes»
sequence:
— delay:
minutes: 30
— service: light.turn_off
data:
entity_id: light.generic
generic_pir_timer_off:
alias: «Turn off generic motion»
sequence:
— delay:
minutes: 1
— service: mqtt.publish
data:
topic: ‘home/433toMQTT’
payload: ‘8888888’
|
Датчик двери
Пример для почтового ящика: после определения кодов открытия/закрытия через batch-файл настроена отправка уведомлений через Pushbullet .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
binary_sensor:
— platform: mqtt
name: «Mailbox»
payload_on: «11784714»
payload_off: «11784718»
sensor_class: opening
state_topic: «home/433toMQTT»
automation:
— alias: You‘ve Got Mail
hide_entity: true
trigger:
platform: mqtt
topic: home/433toMQTT
payload: ‘11784714‘
action:
service: notify.pushbullet
data:
message: ‘Youve Got Mail‘
|
Финальные шаги
Освещение автоматизировано. Остаётся проблема недостаточной освещённости в пасмурные дни или при закрытых шторах. В следующей части добавим к датчикам движения сенсоры освещённости без превышения бюджета. Созданный мост позволяет подключать множество беспроводных сенсоров. Управление устройствами осуществляется через передатчики с Gearbest (от $1.25). Вопросы можно задать в комментариях.
Item | Qty | Price | Total | ||||
Initial Setup | Sonoff Basic | 5 | $4.85 | $24.25 | |||
Headers | 1 | $1.50 | $1.50 | ||||
USB to TTL | 1 | $2.54 | $2.54 | ||||
$28.29 | |||||||
Motion Sensors | NodeMCU | 1 | $5.69 | $5.69 | |||
H3V4F Receiver | 1 | $1.21 | $1.21 | ||||
Prototyping board | 1 | $2.88 | $2.88 | ||||
Motion Sensor | 4 | $7.03 | $28.12 | ||||
$37.90 | |||||||
Grand Total | $66.19 | ||||||
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.