Привет, Хабр! Цель данной статьи (цикла) - ознакомительный рассказ о моей системе домашней автоматизации, конечно я ее не придумал и создал все с нуля, а лишь собрал технологии и проекты, которые считал наиболее подходящими для этой цели и добавил немного мой собственный.
Уровень любительский, но в итоге всё работает, люди пользуются и не бегают за мной с дубинкой.
Я все сделал сам.
Конструктивная критика приветствуется, интересно будет услышать любое мнение.
В состав системы входит оборудование и набор программ: сама система автоматизации подключения оборудования и визуализации, связь и телеметрия для удаленного мониторинга и обновления, голосовой помощник от Яндекс.
Все (Почти все) открыть и разместить на Гитхаб .
Уровень оснащения
Основная и необходимая часть — это сервер на базе Raspberry Pi, но он без проблем может работать и на ПК с Debian или Ubuntu. Операционная система Raspbian. Система должна работать 24/7/365, поэтому необходим качественный блок питания, например, отлично подойдет блок питания для iPad.Для Удаленного управления мне также нужен сервер с «белым» IP и домен для голосового помощника Яндекса.
На сервере работает сервер MQTT и для безопасности используется SSL/TLS. Поддержка KNX через шлюз BAOS 771-774. BAOS — это интерфейс между шиной KNX и локальной сетью.
Обеспечивает доступ к адресам на шине через веб-сервис в формате JSON. Моё оборудование: Проекты для Arduino IDE Wi-Fi контроллер на базе Wemos D1 mini
Электропитание от сети 230 Вольт; Также возможно использование варианта без питания от общей шины 5 Вольт для питания Wemos или от управляемого им оборудования, например привода штор.
Возможна установка в монтажные и распределительные коробки достаточной глубины, например за выключателем.
Может использоваться вместо радиоуправления для различных приводов штор.
Схема
Распиновка управляемых контактов:
L1, L2 — Силовые выходы от симисторов BT-137S, управляемые wemos-выходами D0, D5 через оптопару MOC 3063S с контролем перехода фазы через ноль.
Включение и выключение нагрузки будет происходить без создания помех в сети.
p1,p2 - выход ШИМ для диммеров или моторизованных приводов штор или дополнительных кнопок, зависит от настроек.
соответствуют выводам wemos D6, D7. Аналоговый вход А0 для подключения различных датчиков, например света или дополнительной кнопки.
ds — Подключение датчика температуры DS18B20 соответствует контакту D1. DHT – Подключение датчика температуры DHT22 соответствует контакту D2. b1, b2 - Кнопки короткого и длительного нажатия, с функцией счетчика, могут быть подключены к импульсным выходам счетчиков электроэнергии, воды и т.п.
Демонстрация работы Программа контроллера создана в среде Arduino IDE. Подходит для всех плат на базе ESP-8266. Настройка сети, управление и работа контроллера осуществляются через MQTT. Для удобного просмотра настроек имеется Web-интерфейс; раньше была возможность управления по http, но потом я посчитал это ненужным и удалил.
веб интерфейс
Веб-интерфейс можно отключить.
Для упрощения первоначальной настройки предоставляются сценарий winit.sh и инструкции.
Для сброса контроллера к настройкам по умолчанию необходимо либо ввести команду «по умолчанию 1», либо одновременно нажать кнопки b1, b2 и удерживать их в течение 20 секунд. Также существует упрощенная версия программы для управляемых розеток Sonoff. Контроллер на базе Arduino Mega
Состоит из самой мега и шилда сетевой карты W5100, на плате есть выходы для диммеров и входы для датчиков и кнопок, релейные выходы необходимо подключить отдельно кабелем к 2-х рядному разъему, расположенному на плате мега с противоположной стороны.
сторону от порта питания и USB. Контроллер предназначен для корпуса D6MG. Распиновка: D2-9, D11-13 - выходы ШИМ для диммеров, частота ШИМ увеличена от штатной.
Д14-21 – датчики температуры ДС18Б20 и ДХТ22. D22-49 – релейные выходы, выходы D22-29 можно настроить на приводы жалюзи, ворот, штор.
D10.50-53 – использует сетевую карту W5100. А0-16 - вход для кнопок, короткое и длинное нажатие.
A0-A6 можно настроить для аналоговых датчиков.
Настройки сети для мега указываются в программе перед прошивкой.
IP-адрес фиксирован.
веб интерфейс
Диммер на симисторе BT137-600E
Вход 220 Вольт, ШИМ-управление 0-5/3,3 Вольта, устанавливается установкой перемычки.
0-5 вольт для работы с Arduino Mega или 0-3,3 вольта в случае с wemos. Сигнал ШИМ поступает на аналоговый вход А0 Arduino Pro, где преобразуется в задержку открытия симистора; предусмотрен разъем для локальной прошивки Arduino. Есть место для радиатора.
Со стороны Arduino находится разъем управления и питания Arduino (ШИМ, -, +), со стороны smstor 4-контактный разъем питания - питание и вывод на нагрузку; при необходимости на него также можно установить варистор или снаббер.
Плата диммера предназначена для корпуса D2MG.
Проект диммера:
Демонстрация работы
Также имеется блок симисторов на 28 каналов.
в корпусе Д9МГ.
Извините за качество фото
Подключение оборудования осуществляется по локальной сети, протокол связи MQTT. Я использую сервер Mosquitto MQTT.
Программная часть
Для удобства предварительно необходимо подготовить образ операционной системы со всеми необходимыми программами; Я использую Raspbian Stretch Lite. Вам потребуется установить nodejs, python-pip, python3-pip, Supervisor, Mosquitto, Mosquitto-Clients, sqlite3. И пакеты pip: paho-mqtt и psutil. Вы также можете установить Node-red, который идеально подходит для всевозможных экспериментов.После выхода Apple Homekit в 2016 году выяснилось, что все производители и разработчики за все время существования систем «Умный дом» не смогли сделать ничего близкого по удобству и функциональности по сравнению с Homekit; это похоже на ситуацию с выпуском первого айфона, когда выяснилось, что целый зоопарк телефонов, смартфонов, коммуникаторов превратился в кучу ненужного хлама.
В любом случае всегда приятно пользоваться качественным и готовым продуктом.
Я выбрал проект homekit2mqtt в качестве основной системы визуализации.
Конечно, вы можете использовать OpenHUB или Homeassistant, эти системы также работают с MQTT. hjmqtt Homekit2mqtt создает Homekit Bridge, который можно найти в приложении Home на устройствах Apple. Аксессуары (освещение, датчики, термостаты и т.п.
) необходимо прописать в специальном файле в формате JSON. За создание этого файла отвечают сценарии filegen.sh и install.sh. Вам необходимо прописать аксессуары в файлеgen.sh, install.sh добавит в автозагрузку homekit2mqtt и запустит его.
В файле hjmqtt.py происходит главное — соединение аксессуаров с оборудованием; в файле также вручную нужно прописать параметры аксессуаров и оборудования, адреса для KNX. Функциональность аксессуаров описана в файлах аксессуар.
py и аксессуарknx.py. Статусы устройств хранятся в базе данных sqlite; библиотека statdb.py используется для операций с базой данных.
hjconnect Следующий проект — удаленная телеметрия.
Это память, использование диска, нагрузка и температура, для чего и используется пакет psutil. Сейчас в открытый доступ выложена версия hjconnect только для мониторинга и без шифрования, а отдельным проектом является программа для копирования файлов еще и через MQTT. передача файлов через MQTT .
Настройки расположены непосредственно в основном файле hjconnect.py. Если вы запустите его с параметром «-l», вы сможете протестировать его на локальном сервере MQTT; настройки удаленного сервера находятся в строке 160
сервер test.mosquitto.org можно заменить собственным доменом или IP. Для идентификации Raspberry Pi в теме указывается серийный номер процессора; если программа запущена на другом компьютере, то вместо серийного номера будет строка «SN».rclient.connect("test.mosquitto.org", 1883, 60)
Интервал сообщений задается в строке 96. th = threading.Timer(9, my_stat) # interval
где 9 — секунды.
Пример того, как выглядит мониторинг
Сима
В настоящее время только у Яндекса есть единственная русскоязычная колонка.
Создать навык для Алисы довольно легко.
В отличие от Siri, вам предоставляется полная свобода действий.
И доступ с любого устройства.
Но, к сожалению, вменяемого способа запустить навык пока нет; неудобно постоянно запускать навык.
Демо Это рабочий пример навыка.
Чтобы начать использовать навык, вам понадобится SSL-сертификат; его можно создать с помощью openssl. В файле sima.py в строке 14 есть пример генерации сертификата openssl req -new -keyout crt.pem -out crt.pem -x509 -days 365 -nodes -subj '/CN=site.com/O=user/C=RU'
site.com и user необходимо заменить вашими данными.
При запуске навыка на новом устройстве записывается его идентификатор.
Чтобы связать идентификатор и систему автоматизации, сначала необходимо создать в каталоге клиентов новый файл csv, аналогичный файлу my.csv. В файле прописывается серийный номер по шаблону, это тот же серийный номер из программы hjconnect, и пишутся объекты управления: имя, тип, тема.
Эта тема является значительной частью дополнительной темы MQTT из файла JSON для homekit2mqtt. Затем с помощью sn.py нужно преобразовать серийный номер в пароль и назвать этот пароль на устройстве, с которого вы будете управлять.
Связь обеспечивает программа hjconnect, а сервер мониторинга MQTT — тот же компьютер, на котором запущен навык.
Спасибо, пока.
Теги: #python #Raspberry Pi #разработка Raspberry Pi #Умный дом #arduino #ESP8266
-
Все О Тестировании Видеоигр
19 Oct, 24 -
Ваш Компьютер Надежен?
19 Oct, 24 -
Интерфейсы Против Классов
19 Oct, 24 -
Yota-Модем В Использовании
19 Oct, 24 -
Социальные Сети — Самый Жирный Хронофаг
19 Oct, 24 -
Создавать Алгоритмы Маркова — Это Весело
19 Oct, 24