Files
obsidian-vault/family/how-to/home-automation.md
T

510 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "🏠 Умный дом — автоматика"
aliases: ["Умный дом", "Home automation", "Modbus", "home-automation"]
tags: ["family", "how-to", "smarthome", "modbus"]
updated: "2026-05-17"
related: ["[[family/how-to/router-bishkek-asus]]"]
---
# 🏠 Умный дом — автоматика
## AT2 — калибровка PWM
```
P73 31700
P74 0
Pwm/freq
10/3.3
15/6
20/10
25/15.8
26/18.5
28/21.2
29/23.3
30/25.6
32/31.3
33/33.6
35/38
36/41.3
37/41.8
38/43.3
40/46.1
41/47.9
42/48.2
44/50
45/51.6
46/51.9
47/52.6
48/53.5
49/54.2
50/54.8
52/56.2
54/57.2
56/58.3
58/59.2
59/59.6
60/60
Hz : PWM
0 : 0
1 : 0
2 : 0
3 : 0
4 : 48
5 : 55
6 : 63
7 : 70
8 : 78
9 : 85
10 : 92
11 : 97
12 : 102
13 : 107
14 : 112
15 : 117
16 : 120
17 : 123
18 : 126
19 : 129
20 : 132
21 : 135
22 : 138
23 : 141
24 : 144
25 : 147
26 : 149
27 : 151
28 : 153
29 : 155
30 : 157
31 : 159
32 : 161
33 : 163
34 : 165
35 : 167
36 : 169
37 : 171
38 : 173
39 : 175
40 : 177
41 : 179
42 : 181
43 : 183
44 : 185
45 : 187
46 : 190
47 : 194
48 : 198
49 : 202
50 : 206
51 : 210
52 : 214
53 : 218
54 : 222
55 : 226
56 : 220
57 : 228
58 : 236
59 : 245
60 : 255
```
## Карта Slave ID — датчики и реле
```
Датчики
Гостиная - 1 (modbus bridge virt. sensor - 101)
Детская - 2 (modbus bridge virt. sensor - 102)
Спальня - 3 (modbus bridge virt. sensor - 103)
Tuya Zigbee thermal Sensor - 100
Vent control - 10 (0A)
Газ котёл вкл - 20 (14)
Заслонки:
Relay module - 11 (0B): reg 2-17, on: 256, off: 512
Спальня
Закрыто (Синий): 1
30% (Красный): 2
60% (Жёлтый): 3
Открыто (Коричневый): 4
Гостиная правый:
5: Закрыто, -6(вытяж), 7: 66%, 8: Открыто
Гостиная левый:
9: Закрыто, -10(вытяж), 11: 66%, 12: Открыто
Детская:
13 Закрыто ... 16: Открыто
Кухня отток: 6: откр, 10: закр
Relay module - 12 (0C)
Кабинет:
1: Закрыто ... 4: Открыто
Север:
5: Закрыто ... 8: Открыто
Вытяж Ванная: 9: откр, 10: закр
Вытяж Кабинет: 11: откр, 12: закр
Вытяж Туалет 1: 13: откр, 14: закр
Вытяж Душевая 2: 15: откр, 16: закр
Relay module - 13 (0D) (ZONT)
Радиаторы 2эт:
9: ванная
10(н/п): коридор
11(н/п): северная
12: детская левый
13: детская правый
14(н/п): гостевая
15: спальня левый
16: спальня правый
регистры записи из зонт reg+1! 256 - on, 512 - off
чтение статусов 1-8, 9-16 возвр. 1 или 0
Заслонки пластиковые: время открытия/закрытия ~3.5-3.8
Relay module 14 (0E)
Тёплый пол (ZONT)
[1: Лест.коридор - н.п.]
2: Гостиная ближний
[3: Столовая - н.п.]
4: Кухня
[5: Туалет 1 - н.п.]
6: Ванная 2
7: Душевая 2
8: Гардеробная
13: Гостиная дальний
[14: Прихожая - н.п.]
15: Кабинет правый
16: Кабинет левый
регистры записи из зонт reg+1! 256 - on, 512 - off
чтение статусов 1-8, 9-16 возвр. 1 или 0
ZONT relays
1: Конвектор кухня
2: Конвектор терраса
3: Конвектор гостиная средний
4: Конвектор гостиная левый
[5: Радиатор лестница - н.п.]
6: Радиатор кабинет
7: Насос тёплые полы
[8: Конвектор котельная - н.п.]
```
> **ℹ️ Про «виртуальные sensor 101/102/103» и «недоступные датчики в ZONT»:**
> 101/102/103 — это **виртуальные Modbus-slaves**, которые контейнер `modbus-bridge` на TrueNAS подставляет на шине `ttyZONT`: реальные 485-датчики **Гостиная=1, Детская=2, Спальня=3** сниффятся и их температуры выдаются ZONT'у как датчики 101/102/103 (регистр 100). ZONT (Modbus master) опрашивает их как внешние датчики.
> Если `modbus-bridge` не запущен/не слушает `ttyZONT` → ZONT показывает эти датчики **«недоступные»**. Известная первопричина — гонка docker/udev после рестарта TrueNAS. Подробности и план защиты: `[[family/how-to/truenas-infrastructure.md#Проблема-modbus-bridge/mbusd-после-рестарта-TrueNAS-гонка-с-udev]]` и `[[family/plans/zont-modbus-bridge-udev-race-protection]]`. (Заметка обновлена 2026-08-25: добавлено пояснение про 101/102/103, ZONT relays не менялись.)
## Карта регистров контроллера вентиляторов
```
(home assistant = reg - 1)
Slave id 10 (0A)
AT2-1
Run (Relay 5, orange) - 28 (ha: 27) (D10): 0 - ON, 1 - OFF
PWM (brown) - 13 (ha: 12) (D6)
AT2-2
Run (Relay 4, green) - 22 (ha: 21) (D4): 0 - ON, 1 - OFF
PWM (blue) - 12 (ha: 11) (D5)
set_percentage:
- service: modbus.write_register
data:
hub: rtu
slave: 10
address: 12
value: "{{ (percentage * 255 / 100) | int }}"
- service: modbus.write_register
data:
hub: rtu
slave: 10
address: 13
value: 1
Vent 3
Relay 1 (Вент 3 белый) - 25 (ha: 24) (D7)
Relay 2 (Вент 4 белый) - 26 (ha: 25) (D8)
Relay 3 (Вент 4 синий) - 21 (ha: 20) (D3)
40001 : Slave ID (1..247) R/W EEPROM
PWM 0..255
40011 : D3 R/W EEPROM
40012 : D5 R/W EEPROM
40013 : D6 R/W EEPROM
40014 : D9 R/W EEPROM
40015 : D10 R/W EEPROM
40016 : D11 R/W EEPROM
DIGITAL 0/1
40021 : D2 R/W EEPROM
40022 : D3 R/W EEPROM
40023 : D4 R/W EEPROM
40024 : D5 R/W EEPROM
40025 : D6 R/W EEPROM
40026 : D7 R/W EEPROM
40027 : D8 R/W EEPROM
40028 : D9 R/W EEPROM
40029 : D10 R/W EEPROM
40030 : D11 R/W EEPROM
40031 : D12 R/W EEPROM
40032 : D13 R/W EEPROM
0 : Slave ID (1..247) R/W EEPROM
PWM 0..255
10 : D3 R/W EEPROM
11 : D5 R/W EEPROM
12 : D6 R/W EEPROM
13 : D9 R/W EEPROM
14 : D10 R/W EEPROM
15 : D11 R/W EEPROM
DIGITAL 0/1
20 : D2 R/W EEPROM
21 : D3 R/W EEPROM
22 : D4 R/W EEPROM
23 : D5 R/W EEPROM
24 : D6 R/W EEPROM
25 : D7 R/W EEPROM
26 : D8 R/W EEPROM
27 : D9 R/W EEPROM
28 : D10 R/W EEPROM
29 : D11 R/W EEPROM
30 : D12 R/W EEPROM
31 : D13 R/W EEPROM
```
## Ручное управление AT2
Когда автоматика сломалась и нужно перевести вентиляторы на ручное управление прямо с панели AT2:
1. **PRG** — войти в параметры
2. Стрелками выбрать **P10****FUNC/DATA** → изменить на **0****FUNC/DATA**
3. Стрелками выбрать **P11****FUNC/DATA** → изменить на **0****FUNC/DATA**
4. **PRG** — выйти
**P10 = 0** — частота с панели (потенциометр)
**P11 = 0** — пуск/стоп с панели
Чтобы вернуть на внешнее управление через Arduino/Node-RED:
**P10 = 2**, **P11 = 2**, **P50 = 5** (см. секцию ниже)
## Контроллер AT2 — параметры
```
Как задавать параметры
1. PRG – войти в параметры.
2. Стрелками выбрать номер параметра.
3. FUNC/DATA – открыть параметр.
4. Стрелками изменить значение.
5. FUNC/DATA сохранить.
6. PRG выйти.
---
Что выставить для управления Arduino (05 В + RUN через X1)
1) Источник частоты — внешний аналог
P10 = 2
2) Источник RUN/STOP — внешние входы
P11 = 2
3) Назначение X1 как RUN (вперёд)
P50 = 5
4) Калибровка входа 0–5 В
P74 = 2096 (минимум, 0 В)
P73 = 15720 (максимум, 5 В)
(Если нужно точнее — потом подстроишь)
5) Максимальная рабочая частота (если нужно 50 Гц)
P06 = 50
Да, есть ещё несколько коротких и реально важных моментов, которые стоит учесть, чтобы всё работало корректно и безопасно. Тоже без простыней.
---
1) Выбор режима остановки
Параметр:
P12 — режим остановки
Рекомендовано:
P12 = 1 (плавное торможение / deceleration stop)
Если оставить “0” (инерционная остановка), мотор будет раскручиваться сам по себе при STOP.
---
2) Время разгона и торможения
Если Arduino будет резко менять напряжение 0–5 В, а инвертор сможет резко менять частоту — нагрузка может дёрнуться.
Параметры:
P34 — ускорение
P42 — торможение
Рекомендовано для мягкой работы:
P34 = 2050
P42 = 2050
(значения = Гц/сек)
---
3) Логика входов X1–X6 — активны «на землю»
На стр. 3 инструкции написано:
> Short port Xn and COM, input effective
То есть вход активируется замыканием на COM.
Это важно при подключении оптопары — выход PC817 должен замыкать X1 → COM.
---
4) Выходы SP1 и SP2 — open collector
Можно использовать для:
получение сигнала RUN
сигнал ошибки
сигнал «достигнута частота»
Выбирается параметрами P58 / P60.
Например:
P58 = 3 → SP1 выдаёт fault indication (авария)
Полезно при интеграции с Arduino.
---
5) Верхний предел частоты
Параметр:
P06 — максимальная рабочая частота (default 65 Гц)
Если не хочешь случайно подать 5 В и получить перегруз:
→ поставь P06 = 50 (или твою номинальную частоту).
---
6) Источник отображаемой величины
Параметр:
P62
Если хочешь видеть на дисплее выходную частоту, а не заданную:
P62 = 1
Если хочешь видеть температуру радиатора — P62 = 4.
---
7) Режим питания 5V/10V OUT
На схеме есть вывод 5V/10V power output.
Это питание для внешних потенциометров.
Не путать с аналоговым входом.
Твой Arduino должен давать своё напряжение на VI1, НЕ на этот 5/10V OUT.
---
8) Ограничения тока (опционально)
Если двигатель маленький, можно ограничить ток:
P78–P85 — защитные лимиты
Обычно трогать не нужно.
---
9) Параметры сброса
Полный сброс параметров:
P77 = 54321
На случай, если что-то настроится неправильно.
---
Если хочешь, могу собрать короткую финальную таблицу всех параметров, которые ты реально используешь, чтобы не искать по PDF.
```
## Xiaomi / Tuya — локальный сервер
```
Четыре способа управления тёплым полом. Термостаты я взял на али, от не очень понятного производителя, но дёшево и с вайфаем. Родное для него приложение Smart Life сразу увидело все три термостата и данные бодро пошли на китайские сервера Tuya. В качестве основного средства автоматизации и управления умным домом я выбрал опенсорсный сервер Home Assistant. Есть интеграции под все на свете, выглядит не убого и шустро работает на запылившемся на полке микрокомпьютере raspberry pi 3. Сперва я завёл интеграцию через официальный плагин от Tuya, зарегистрировавшись на их сайте IoT разработчиков и получив нужные ключи api. Теперь данные через китайские сервера шли на мой локальный. Но оказалось, что их api не умело все возможности моего термостата. Например он умеет показывать температуру воздуха и температуру самого пола. А через сервер приходила только температура воздуха. При этом родное приложение Smart Life умело все. Огорчившись, я нашёл неофициальную интеграцию Tuya девайсов для Home Assistant. Она умеет работать с данными девайсами локально, в обход китайских серверов. Но не поддерживает термостаты как класс. Поэтому я нашёл форк с поддержкой термостатов, сделал свой форк, дописал туда несколько строк на питоне для корректной работы именно моей модели, заодно сделал пул реквест и наконец-то заимел полнофункциональный термостат на своём локальном сервере. Ну а самим девайсам запретил ходить во внешний мир на роутере. И вишенкой на торте является интеграция с Apple HomeKit, куда Home Assistant умеет пробрасывать все девайсы. Теперь могу просить сири сделать потеплее) Многие из вас могли не понять примерно треть написанного. И это наглядная иллюстрация нынешнего состояния умных домов и простоты их настройки.
```