Идеальный сервер умного дома на Home Assistant, часть 1 (аппаратная)
В этой статье хочу рассказать про компоненты, из которых лучше всего собрать сервер умного дома. У меня стояла более сложная задача — покрыть участок 15 соток с баней и основным домом, между которыми около 15 метров. Также хотелось организовать медиасервер, а для него нужно что-то более менее производительное. В итоге остановился на такой связке — основной сервер Raspberry Pi4B 8GB в корпусе Argon One с поддержкой M.2 SATA SSD диска + оригинальный блок питания Raspberry на 3A, дополнительный мини-сервер — шлюз Xiaomi EU — прошитый в OpenWRT, который может также работать самостоятельно (децентрализация системы и повышение отказоустойчивости). Ссылки на все товары из этой статьи будут в конце.
Введение
Данная статья будет в основном только про аппаратную часть (серверную) умного дома. На рынке существует много различных вариантов для сервера, но сервер на Raspberry Pi является самым распространенным. До этого времени у сборки на Raspberry был один очень существенный недостаток — основным хранилищем данных и системы была microSD карта, которая под большими нагрузками и огромными количествами циклов чтение\запись очень быстро приходила в негодность (около года жили брендовые карты памяти, более дешевые уже через несколько месяцев вызывали проблемы). Совсем недавно начали появляться платы расширения с поддержкой SSD дисков, которые полностью решают проблему с microSD. А буквально с месяц назад появился проект Argon One M.2 — специальный корпус для Raspberry Pi, даже я бы сказал серверная оболочка, которая имеет пассивное\активное охлаждение, встроенное ПО для управления кулером и настройкой кнопок питания, платой расширения, которая дает 2 полноценных HDMI порта, вместо micro HDMI. Также 3.5mm аудио выход переносится с боковой части на заднюю, где все порты, что намного удобнее. Отдельно докупается плата M.2 для Argon One (либо сразу идет в сборке) — позволяет использовать только SSD NGFF (SATA, ключи B\B+M), диски NVME не поддерживаются.
Сердце сервера умного дома — Raspberry Pi4B 8GB
Raspberry Pi4 была выпущена в 2019 году, позднее уже появилась версия 4B (B считается лучше, чем А, бывает еще символ + в версии, который означает незначительное улучшение). Версия 4B на 8GB вышла совсем недавно. Вернее ее анонсировали сразу, но купить стало возможно только недавно. Я взял сразу на 8GB. Для умного дома вполне хватит и 2GB, но если хотите поставить что-то еще на сервер кроме умного дома, то лучше брать 4Gb, либо 8.
Технические характеристики
- Процессор: Broadcom BCM2711
4 ядра Cortex-A72 (ARMv8)
64-bit SoC @ 1.5 GHz - RAM: 2\4\8GB
- Питание: USB Type-C (5V, минимум 3А).Возможно питание через GPIO (5V, минимум 3А).
- Порты и разъемы: 2 порта Micro-HDMI (одновременная поддержка двух мониторов с разрешением 4K), 2 порта USB 2.0, 2 порта USB 3.0, 1 порт Gigabit Ethernet (RJ45, 1000Base-T), 1 порт microSD (для операционной системы и хранения данных). Рекомендуется использовать карты объемом минимум 8Gb. Протестирована работа с картами до 128Gb., 40 пиновый GPIO, 3.5мм Audio, Display\Camera Connector, Power over Ethernet (PoE)
- Беспроводные интерфейсы: Двухдиапазонный WiFi (2.4 GHz и 5.0 GHz IEEE 802.11ac/n), Bluetooth 5.0, BLE (Bluetooth Low Energy)
- Индикаторы: Встроенные светодиоды: индикация питания, работа с microSD картой, режим работы Ethernet.
Сама плата производится в Великобритании. Поставляется в красной коробке, очень маленького размера. Raspberry не навязывает никаких аксессуаров и в базовой комплектации идет только плата. На официальном сайте, можно найти еще оригинальное зарядное 5V 3A (для 4 версии компьютера нужно минимум 3A).
В комплекте только плата, буклет с базовыми "инструкциями" в картинках — руками не трогать за компоненты, брать за торцы и т.д. Также есть подробная инструкция на многих языках. Размеры платы 8,5см на 5,6см — чуть больше пластиковой банковской карты.
Плата крупным планом. Есть разъем для дисплея, разъем для камеры. 2 micro HDMI разъема, вход Type-C для питания. Вход 3.5mm для наушников. Справа 1 LAN (POE), 2 USB2.0 и 2 USB3.0. Сверху плата GPIO (интерфейс ввода/вывода общего назначения) — компьютер можно запитать от GPIO.
С обратной стороны есть только microSD разъем. Даже если будем использовать SSD, microSD нужен для записи специального образа, который будет по умолчанию грузить плату с SSD (типа как в Windows в BIOS переключается). На плате есть отверстия для прикручивания к чему-нибудь — многие корпуса с Алиэкспресс прикручиваются с помощью этих отверстий.
Компьютер очень компактный. Сложно представить, что к нему можно подключить 2 монитора 4K. Кстати, 4K при одновременно двух мониторах будет по 30fps. Если 1, то будет все 60fps. Компьютер не сверх мощный, но для сервера самое-то, главное энергопотребление и температурный режим.
При поиске на Алиэкспресс платы Raspberry, сразу замечаешь, что каждый продавец хочет вам продать свой «самый лучший» набор: обычно это сама плата, какой-нибудь корпус, ноунэйм блок питания, неизвестная карта памяти и обычно пару проводов (HDMI или другие). Не советую брать такие комплекты, так как качество аксессуаров там на очень низком уровне. Найти же чисто голую плату в продаже сложно, но можно. Там где я покупал, была опция плата + алюминиевые радиаторы. Именно такой вариант я и заказал. Радиаторы мне не пригодились, но это было дешевле, чем покупать ненужные наборы.
Argon One — лучший корпус для Raspberry
С чистой совестью могу назвать Argon One лучшим корпусом для одноплатника Raspberry. Такой корпус обойдется в 20$ за версию без платы расширения M.2, но мы здесь собрались именно ради этой самой платы M.2 — за такой вариант придется выложить около 43$. Цена не сильно высока, по сравнению с безымянными корпусами неизвестных производителей. Плюс здесь мы получаем полноценные HDMI в итоге, управляемое (настраиваемое) активное охлаждение + качественное продуманное пассивное охлаждение (толстый алюминиевый корпус отводящий тепло с процессора и RAM через теплопроводящие силиконовые проставки). Ну и вишенка на торте — плата M.2, которая решает проблему быстро выходящих из строя microSD карт. Поставляется корпус в фирменной коробке, по размеру чуть больше самой платы Raspberry.
В комплекте корпус, аксессуары вложенные в него, инструкция на английском по настройке.
Все разъемы вырезаны идеально. Также очень удобно, что все разъемы выведены в одно место (сама плата имеет выходы на разные стороны). Нижняя часть здесь — плата расширения M.2 с USB3.0 разъемом (есть версии без нее).
Под магнитной крышкой удобно выведена плата GPIO. Очень удобно использовать пины Raspberry — нет нужды разбирать корпус. Кстати питать плату можно и через пины 5V и GND (помните про минимум 3А).
А вот, собственно, и все содержимое корпуса. Слева верх корпуса, в нем есть кулер и плата для управления им. Также тут пины GPIO, которые выходят на саму крышку корпуса. Весь корпус из металла. Обратите внимание на 2 массивных прямоугольных куска металла слева — это для процессора и RAM. Также на плате есть переключатель, который покажу чуть позже. Правая часть — плата расширения M.2. На ней слот M.2 и USB3.0 разъем. Как видно, диски SSD подходят разного размера, вплоть до 2280. Единственное, NVME диски не поддерживаются. USB3.0 перемычка папа-папа по центру фото служит для соединения платы M.2 с самим корпусом Argon (с самой платой Raspberry). Снизу — конвертер HDMI, Audio 3.5mm. В пакетике винты и силиконовые проставки.
Две части корпуса крупным планом. На левой (основной) части есть «джампер» — специальный переключатель пинов. Он имеет 2 положения: 1-2 (ручное включение компьютера по нажатии на кнопку) и 2-3 (всегда включен- при отключении электричества и его восстановления, компьютер сам запускается). Естественно, я поставил его в положение 2-3 (нам важно, чтобы сервер работал нон-стоп 24\7). Вообще я хочу купить самый простой ИБП для роутера и сервера умного дома, чтобы они всегда были онлайн. Также на плате есть IR (инфракрасный) приемник для дистанционного включения\выключения компьютера, но для моих задач, это не нужно.
Плата-конвертер. Выводит все разъемы с Raspberry на одну сторону корпуса. Конвертирует micro HDMI в 2 полноценных HDMI (как показывает практика, полноценные HDMI прилично дешевле и вообще их куда проще найти).
Набор аксессуаров — силиконовые ножки на корпус, винтики, силиконовые теплопроводящие прокладки.
SSD диск формата M.2 2280 от Netac — 240GB
На секунду оставим корпус, так как для сборки сервера нам не хватает последней детали — SSD диска.
Самым дешевым и проверенным сейчас является производитель Netac. Давно пользуюсь их HDD и SSD и ничего плохого про них сказать не могу. Взял на 240GB, хотя для умного дома и 120GB с головой хватило бы на всевозможные расширения (меньше 120 не делают просто уже), так как хочу запустить медиасервер на Raspberry. Приходит диск в коробке полностью на китайском. Есть надпись 3 года гарантии. Диск SATA (6GB\s). Формат M.2 2280 (длины диска).
На передней стороне модуль памяти. Видно, что есть 1 свободный слот — в версии 480GB (максимальная для такого формата диска, NVME может быть и на 2TB, но нам он не подходит) — будет тут еще один модуль памяти. Бумажка с серийником обязательна, при ее удалении обнуляется гарантия (гарантия кстати рабочая, знакомый получил бесплатно замену за нерабочий по приезду диск. Не от магазина, а от производителя). В комплекте есть отвертка и 2 винта (не нужны нам, в корпусе уже есть винт).
К слову, чтобы больше не возвращаться к диску — максимальная его температура — 73.6 градуса при постоянной записи на него. Скорость записи прямо зависит от нагрева диска.
При тестировании диска, первые минут 7 скорость записи была около 250МБ\с, а после разогрева стала постепенно падать с 250 до 180, потом до 130 и в конце до 50МБ\с. Емкость диска проверена, скорость чтения не падала — 250МБ\с. Это скорость чтения\записи не через SATA, а через USB3.0 плату от Argon, то есть реальные показатели, как оно и будет на сервере. Скорость более чем хорошая, такого конкретного разогрева диска на сервере не будет.
SSD диск кстати приходит неразмеченный. Нужно через Disk manager (Менеджер дисков Windows) создать новый том, следуя стандартным настройкам мастера настроек.
Сборка сервера умного дома
Первым этапом плата-конвертер соединяется с Raspberry. Также теплопроводящие силиконовые проставки наклеиваются на процессор и оперативную память.
Далее плата вставляется в пины GPIO и привинчивается к корпусу. В плату расширения M.2 вставляется диск SSD. Обратите внимание, что диск прикручивается черным винтом, а золотой остался внизу как поддержка диска. Не перегибайте SSD диск.
Перед скручиванием корпуса нужно применить небольшое улучшение — нужно поменять приоритет загрузки системы с microSD карты на SSD диск. Для этого в программе Raspberry Pi Imager, которая скачивается здесь, выбирается Misc Utilities Imager -> Bootloader -> USB boot. Записывается это на microSD карту (она становится загрузочной на 200МБ).
Ставите ее в Raspberry и подаете питание, когда зеленый светодиод перестанет мигать — выключаете и достаете карту — запись завершена.
После этого нужно установить операционную систему Raspberry OS (Lite версия без графического интерфейса). Рекомендую ставить именно ее, можно поставить Home Assistant и без нее, но тогда сервер не сможет больше ничего делать, кроме запуска Home Assistant. В том же прошивальщике выбираете Raspberry Pi OS Lite 32bit и пишите образ уже на SSD. Диск ваш станет определяться как и СД карта — 200МБ. Не пугайтесь, это часть диска фрагментируется под загрузочный раздел, так и должно быть (через диспетчер дисков Windows можно вернуть все как было — удалить загрузочные разделы и вернуть реальный размер диска одним разделом, если нужно).
После этого ставим диск в корпус и можно все скручивать. Финальным шагом является установка USB перемычки, соединяющей плату M.2 с корпусом. Не забудьте про нее, а то загрузка OS не пойдет. Сервер готов к использованию (вернее аппаратная часть готова).
Программная настройка Raspberry OS и Home Assistant
На программной части в этой статье останавливаться не буду. Для нетерпеливых, вот видео от уважаемого Alex Kvazis по настройке системы (кстати тоже на SSD диск). Просто спокойно делаете все по шагам — проще простого.
Важно. Если у вас не идет загрузка «зависимостей» через интернет на Raspberry (нет внешнего выхода в сеть), то посмотрите урок 1.1, который решает эту проблему (нужно WiFi сети дать больший приоритет).
По настройке только отмечу 1 этап — настройка локализации Raspberry. Здесь нужно выбрать ru-RU-UTF-8 и делается это пробелом на клавиатуре. Alex пропустил этот момент, пришлось потупить, пока не нашел.
Питание сервера умного дома
Raspberry Pi4B требует минимум 3А для бесперебойной работы сервера. Блоки 5В, выдающие полноценные 3А, можно посчитать на пальцах. Я изначально использовал блок QC3.0 с Fasttech (типа их фирменный), потом все же раскошелился на оригинальную Raspberry зарядку. Стоит кстати недорого, по цене обычных зарядок из китая.
Параметры: вход 100-240V 50\60Hz, выход 5.1В 3А, кабель 1.5 метра 18AWG, коннектор Type-C, вилка EU.
Блок сделан по заказу UK в Камбоджии, даже не Китай. Сделан конечно очень качественно, ничего не скажешь. Есть в 2 цветах: черный и белый. Крайне не рекомендую использовать паленые китайские блоки, тем более, те, что идут в универсальных наборах — от блока питания зависит очень много, при недостатке мощности сервер может тупить + надежность блока очень важна.
Zigbee координатор
Zigbee считается самым распространенным беспроводным протоколом на данный момент. Все ввиду низкого потребления и ячеистости сети — то есть некоторые устройства могут быть репитерами (повторителями сигнала), которые расширяют сеть и снижают нагрузку на координатор (головное Zigbee устройство).
Для умного дома Home Assistant требуется универсальный Zigbee «стик» (специальный Zigbee USB модуль в виде флешки). Данный модуль позволяет подключать к умному дому любые Zigbee устройства, не важно какого бренда.
Это не заводские устройства. Их паяют энтузиасты и продаются они здесь: тыц.
Самым первым был стик CC2531 (заводской кстати), у него была очень маленькая дальность покрытия и минимальное число устройств в сети. На смену ему пришел стик V3 на модуле CC2538. Недавно вышел новый V4 на модуле CC2652P (разницы между CC2538 и CC2652 огромной нет, а вот разница по сравнению с CC2531 колоссальная). У меня модуль CC2562P с модулем Ebyte E72 (есть также RFstar, но это совсем не принципиально). Есть также менее и более мощные антенны — у меня например на 12dBi (стоит в частном доме в котельной).
Zigbee стик рекомендуется подключать на некотором удалении от самого сервера, чтобы не создавать помехи. Для этих целей подойдет любой usb 2.0 — 3.0 удлинитель, который часто идет в комплекте с мышкой\флешкой и т.д.
Вот кстати некоторые другие самоделки, купленные через ZigБЕРУ группу. Слева вверху — шлюз Xiaomi EU версии, прошитый в OpenWRT и установленным Home Assistant — у него 250МБ памяти, есть динамик и подсветка. Можно включать радио или звуковые оповещения через Google TTS. Вся система запускается в оперативной памяти и обнуляется каждый перезапуск (нет проблем с картами памяти). Это самое дешевое устройство для умного дома Home Assistant — в нем есть Zigbee модуль, BT Mesh модуль, что позволяет через разные интеграции подключать любые устройства умного дома. Минус — очень слабое устройство с технической точки зрения, которое по факту работает на пределе (но работает и ничего не тормозит — просто тяжелые интеграции вы не поставите). Данный шлюз — идеальное решение для небольшой дачи, дома или же для новичков в умном доме.
Далее слева внизу — 8 канальное реле с сухими контактами — может выступать как обычное реле с беспроводным управлением, либо как контроллер любых внешних датчиков\сенсоров.
Справа вверху — сенсор Co2 на модуле SenseAir S8 (довольно дорогой модуль), но славится своей точностью.
Снизу справа — тот же Zigbee стик, просто с другой стороны.
Архитектура умного дома для больших площадей покрытия
Возвращаемся к покрытию основного дома и гостевого, между которыми около 15 метров. Понятное дело, что требуется в первую очередь сеть WiFi. Xiaomi EU шлюз имеет не очень мощный WiFi модуль, поэтому лучше, чтобы WiFi роутер\репитер был как можно ближе (опять же интернет нужен только для дистанционного управления, а так, все устройства общаются со шлюзом по Zigbee и все работает шустро).
Основной сервер. Raspberry Pi4B 8GB + Argon One корпус + SSD диск + Zigbee стик 2652P. Я сервер разместил в котельной, так как там есть и питание и WiFi роутер с LAN портом и куча свободного места, где можно все это добро удобно расположить и в тоже время ограничить доступ посторонним. Далее Zigbee устройства наполняют сеть. Те, что питаются от сети 220V, обычно являются еще и репитерами — расширяют сеть. Понятно, что не все работает по Zigbee, есть еще WiFi устройства (обычно самодостаточные продукты, типа умного пылесоса, лампочек, увлажнителей, обогревателей и т.д.), Bluetooth датчики или устройства. Я стараюсь избегать Bluetooth протокола из-за небольшой дальности работы и необходимости еще одного шлюза.
Дополнительный сервер. Xiaomi EU шлюз. Гостевой дом у меня небольшой, всего около 30 кв. метров. Для его покрытия с лихвой хватает шлюза сяоми с Home Assistant. В гостевом доме устройств и датчиков не сильно много, поэтому разворачивать еще один сервер на Raspberry было бы расточительно. Также настроено общение между основным сервером и дополнительным по MQTT (протокол общения по типу подписчик-издатель, то есть кто-то публикует сообщения, а кто-то их слушает).
Таким образом, в основном сервере можно управлять сразу всем, что есть и в основном доме и в гостевом, а в случае аварии на основном сервере, дополнительный продолжает работать. Вообще, в идеале, делить сеть на как можно большее число серверов, но это очень дорого и сложно.
Вывод
В данной статье рассмотрели из каких компонентов лучше собрать умный дом на Home Assistant. По соотношению цена-качество-удобство использования, это считается лучшей сборкой на данный момент. Знаю, что некоторые сидят на Intel NUC, но NUC сервер прилично дороже сборки на Raspberry. NUC обычно продается как голая материнская плата и если посчитать все затраты на накопитель, RAM память, блок питания, то получается уже кругленькая сумма. Можно также использовать старый компьютер или ноутбук, но тут вопрос уже сколько он проживет и плюс потребление ноутбука и Raspberry несравнимо.
Ссылки
Полезные ссылки на товары из этой статьи, кроме самоделок, которые можно купить в специализированной группе.
Умный дом на Raspberry Pi и Arduino
Давно хотели автоматизировать базовые функции вашего дома, сделать их легкодоступными и управляемыми удаленно? Предлагаем вашему вниманию статью, которая поможет сделать собственный умный дом на базе Raspberry Pi и Arduino. В данной статье мы расскажем, как создать блок управления, который позволит нам управлять освещением в разных комнатах, измерять температуру и влажность, управлять игровой приставкой PlayStation 4, домофоном, принимать сигналы с датчиков движения. Все это можно автоматизировать посредством Apple HomeKit.
Что необходимо иметь?
- — $42.50 — $2.98 — $1.39 — $2.59 — $1.48×2 — $8.55 — $5.18
- Провода
Можно выбрать любую другую версию Raspberry Pi. Наш выбор — Raspberry Pi 3 из-за наличия встроенного WiFi и Bluetooth. Вместо NodeMCU можете взять обычный Arduino Nano и отдельный модуль ESP8266 для WiFi. Далее все это спаять, перепрошить и настроить. Однако, для задач, которые мы будем выполнять, не нужны лишние затраты времени. В связи с чем, как по цене так и по трудозатратам, разумнее взять NodeMCU или что-то другое, уже готовое. Относительно силового реле – выберите необходимое вам количество. В нашем случае будут задействованы 3 устройства, в связи с чем мы будем использовать два реле с двумя отдельно-управляемыми отсеками. Ну и само собой, датчик движения вы тоже можете не использовать, если у вас нет в нем необходимости. Статья расскажет об установке, настройке всех этих компонентов, а каким именно образом использовать — решать вам.
Установка Raspbian Jessie
- Переходим на официальный сайт Raspberry Pi, и скачиваем последнюю версию операционной системы Raspbian Jessie Lite. Вы можете использовать обычную версию с desktop-ом, если вдруг она вам будет необходима для каких-то других целей
- Форматируем SD карту FAT32 или FAT.
- Следуем инструкции по установке скачанного образа на Windows, Linux или macOS. Мы воспользовались Etcher для быстрого монтирования образа из-под Mac OS X в графическом интерфейсе.
- Вставляем карту памяти в Raspberry Pi, подключаем USB клавиатуру и HDMI монитор (можно обычный телевизор). Ждем загрузки и корректируем некоторые настройки по своему усмотрению
- Изменяем пароль по умолчанию в пункте 2 — Change User Password
- Экран загрузки оставляем Scratch , так как графический интерфейс нам не пригодится
- Изменяем имя хоста в Advanced Options > Hostname (по желанию)
- Включаем SSH в Advanced Options > SSH , для удобного управления с другого компьютера
- Все! Нажимаем Finish и ждем перезагрузки
Настройка Wifi на Raspberry Pi
- После загрузки Raspberry открываем файл интерфейсов сети, для этого пишем:
sudo nano /etc/network/interfaces Находим iface wlan0 inet manual и меняем на iface wlan0 inet static , под ним добавляем статичный локальный адрес. В нашем случае получилось так:
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
Обновление системы
- До начала настройки рекомендуем обновиться и проапгрейдится. Для этого вводим в командную строку: sudo apt-get update
sudo apt-get upgrade - Если вдруг, вы используете не Raspbian Jessie, то стоит установить необходимый компилятор. Проверить версию можно по команде:
g++-4.9 -v Если в ответе вы получили gcc version 4.9.2 (Raspbian 4.9.2-10) , то все в порядке. Если же у вас старая версия или вовсе не установлен компилятор, то необходимо установить следующей командой:
sudo apt-get install g++
Установка Node.js
Нам необходимо установить Node.js начиная с версии 4.0. Именно с этой версии Node.js начал поддерживать ARM платформы по умолчанию. Мы установим версию 6.х, так как на данный момент многие плагины Homebridge не адаптированы под версию 8.х. Для установки последней актуальной версии из линейки 6.х выполняем следующие команду:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash —
sudo apt-get install -y nodejs Проверяем корректность установленной версии:
nodejs -v В нашем случае установилась версия v6.11.2
Установка Homebridge
- Изначально необходимо установить Avahi и прочие зависимости, которые необходимы для пакета MDNS из библиотеки HAP-NodeJS.
Выполняем команду: sudo apt-get install avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev - Устанавливаем Homebridge и все зависимости последовательностью следующих команд:
sudo npm install -g —unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/lib/node_modules/homebridge/
sudo npm install —unsafe-perm bignum
cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild
Проверяем тестовым запуском:
homebridge В ответ должны получить:
[2017-08-15 10:05:15] —
[2017-08-15 10:05:15] config.json (/home/pi/.homebridge/config.json) not found.
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
Установка плагинов Homebridge
Homebridge, посредством плагинов от сотни разработчиков, может управлять GPIO Raspberry Pi на разном уровне, а также IR, Wifi, Bluetooth устройствами. Для нашей сборки необходимо установить следующие плагины:
- Устанавливаем cmdswitch2 для вкл/выкл устройств скриптом
sudo npm install -g homebridge-cmdswitch2 - Устанавливаем homebridge-cmd_light_control для вкл/выкл и диммирования света
sudo npm install -g homebridge-cmd_light_control - Устанавливаем HttpTemphum для получения данных температуры и влажности через HTTP в формате JSON
sudo npm install -g homebridge-httptemperaturehumidity - Устанавливаем homebridge-hc-sr501 для считывания данных с датчика движения HC-SR501
sudo npm install -g homebridge-hc-sr501 - Устанавливаем ps4-waker для вкл/выкл PlayStation 4
sudo npm install -g ps4-waker
Данный набор плагинов достаточен для нашей сборки, их конфигурации вы можете найти и изменить в config.json, который скачали ранее.
Подключение устройств
Далее вам необходимо подключить все необходимые устройства в пины Raspberry Pi, как это указано на фотографии.
БУДЬТЕ ОСТОРОЖНЫ при работе с реле и высоким напряжением! Если вы чего-то не знаете точно, лучше не трогать!
После подключения, скатайте архив со скриптами, разархивируйте и загрузите в директорию /home/pi/ .
Обратите внимание: все файлы должны иметь права 0777.
Для этого вы можете выполнять команду для всех файлов по отдельности следующим образом:
chmod 0777 /home/pi/light_bathroom_off.py
. Выполните данную команду для всех файлов, которые вы скачали и загрузили в директорию /home/pi/
Подключение к PlayStation 4
- Включаем PlayStation 4. Переходим в настройки Settings > [Remote Play Connection Settings] > [Add Device]
- В терминале RaspberryPi пишем
ps4-waker - Система попросит вас открыть приложение PS4 на мобильном телефоне и подключиться к ps4-waker.
- Далее вас попросит указать пин-код с экрана монитора, куда подключен PS4. После ввода создастся связь и в RaspberryPi будут сохранены ключи и сертификаты для дальнейшего подключения.
Настройка термометра на Arduino
- Подключаем NodeMCU к компьютеру и открываем официальный программатор.
Для NodeMCU необходимо установить драйвер, в нашем случае он построен на чипе CH340G. Для этого необходимо зайти в File > Preferences , далее в поле Additional Boards Manager URLs указать ссылку для скачивания альтернативных плат http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать OK. После, переходим в раздел Tools > Boards > Boards Manager , в строке поиска пишем esp8266, находим esp8266 by ESP8266 Community и устанавливаем. - Устанавливаем модуль для управления датчиком DHT и модуль Adafruit Sensor master. для создания HTTP сервера и вывода данных с датчика температуры и влажности DHT21.
В скетче смените IP адрес и данные для подключения к WiFi на ваши. Заливаем скетч и идем дальше. - Подключаем датчик, как показано на фотографии. В нашем случае подключение идет на ножку D5, GDN и 3.3V.
Запускаемся!
- Очищаем кеш аксессуаров и persist на Raspberry Pi следующими командами:
sudo -i
rm -r /root/.homebridge/accessories
rm -r /root/.homebridge/persist
Перезагружаемся:
reboot - Включаем Arduino к USB 5V/1A и ставим в нужное место в комнате.
- Открываем iPad, iPhone и заходим в приложение Home (Дом). Нажимаем добавить аксессуар и ваш планшет или смартфон должен увидеть устройство с названием RaspberryPi. Добавляем его и радуемся!
Вуаля! Теперь мы можем управлять светом на кухне, в ванной, управлять PlayStation 4, получать данные от датчика движения, узнавать температуру и влажность. Мы также можем автоматизировать некоторые действия в Apple Home. Например, чтобы все устройства автоматически выключались, когда вы уходите из дома. Или, чтобы при достижении определенной температуры, реле включало не свет, а вентилятор. Надеемся, данная статья была полезной для вас и на основе нее вы сможете автоматизировать и другие, необходимые вам устройства.
Опыт построения умного дома на Raspberry Pi и открытой платформе OpenHAB. Часть 1
Два года назад у нас появился загородный дом. Только сейчас, во время пандемии, мы поняли, что это была инвестиция, а не трата бабла повышение уровня жизни. Изначально планировали жить на два дома — квартира в городе и дом за городом. Поэтому появилось желание автоматизировать его по максимуму. Ну, как минимум, чтобы зимой можно было прогреть дом перед приездом.
Эта статья не является полной инструкцией что и как делать, а больше сборником куда копать и что почитать или посмотреть, чтобы сделать самому.
Тем не менее вы найдете для себя много полезной информации и ссылок, а главное при минимальных навыках поиска информации в интернете вы сможете сами найти все необходимые пошаговые инструкции. В наш век DIY (Do It Yourself, самоделки), вы все можете получить в виде 5-20 минутных делай-как-я видео инструкций. Нынче никто уже не пишет по-старинке.
Перед началом эпического описания собранной системы несколько наблюдений. Если вы хотите умный дом так как вы хотите, вам придется делать его своими руками. Эта истина все еще свежа как и два года назад. К сожалению, производители с мировым именем выпускают какое-то барахло, непонятно кому и зачем нужное. Вы можете накупить множество различных штук, каждая из которых будет автоматизировать одну определенную задачу, но собрать все воедино в одном приложении — нереально. То одного нет, то другого. Несмотря на весь хайп вокруг IoT, плаг энд плеем это так и не стало.
Для начала расскажу что и как было сделано до начала автоматизации и какие наиболее актуальные задачи стоят.
Итак, характеристики того что есть.
- Дом — 2 этажа, 140 кв.м, брус.
- В доме 15 КВт электроэнергии
- Разводка электрики сделана в щиток на DIN рейку. Щиток правда барахло, надо бы поменять, на что-нибудь получше, но пока довольствуемся тем что есть, уж очень геморройно будет все переделывать…
- Водоснабжение — скважина 35м и колодец 15м. В колодце 2 насоса, один — полив участка, дает где-то 2.5бар, и харьковский скважинный на водоснабжение дома (планируется переезд на скважину, если мы поймем, что там вода лучше). В скважине маленький насос из разряда чтобы был и скважина не заиливалась, что-то типа малыша. Сейчас не используется, но думаем все-таки перейти на него. Вода в дом подается через джилексовский «Краб 24». Точно такой же «Краб 24» стоит в колодце для управления насосом на полив.
- Так как все новое, все освещение изначально делаем только на светодиодах.
- Разводка довольно грамотная, по комнатам. Каждая комната заведена на свой автомат 16А.
- Обогрев организован радиаторами с разводкой пластиковыми трубами по всему дому.
- Теплоноситель в батареях зимний, что-то типа тосола. Но при падении давления предусмотрен клапан добавить давления в систему.
- Обогрев осуществляется электрическим котлом Protherm, 12кВт, достаточно умным, чтобы уметь поддерживать заданную температуру теплоносителя и ограничивать свою мощность двумя-четырьмя-шестью-восемью и двенадцатью киловаттами.
- Горячая вода — два электрических водонагревательных котла. Один на ванную комнату, чтобы можно было мыться и принимать ванну (100л) и один в кухне, мыть посуду, литров 15.
- Канализация — септик Юнилос, живет своей жизнью. Все что нужно — подача электричества.
- Internet Gpon, 70Mb/s. Я когда своим коллегам из Европы рассказываю, что у нас в деревне в 80км от Москвы есть оптика, они делают круглые глаза. Я сам сделал круглые глаза когда уже после покупки дома во второй свой приезд, увидел оптический кабель на столбе напротив моего дома.
- Apple TV. Ну не смотрим мы TV, зато нетфликсы и другие стрим сервисы вполне себе.
Что хотелось иметь:
- Управление котлами (2 водонагревательных), один системы отопления.
- Управление светом на улице в темное время суток. Включать с закатом, выключать с рассветом.
- Управление светом дома из разряда когда-нибудь.
- Управление поливом. У нас есть 12 грядок, засаженных горохом и клубникой. Ну и зелень к шашлыкам.
- Система видеонаблюдения на будущее, пока дом на пультовой охране Дельта.
Забегая вперед, все удалось реализовать, кроме света в доме и видео. Это как оказалось самый очевидная, но и самый бесполезный функционал. Как нибудь все равно сделаю.
Итак, проект начал два года назад не имея большого опыта в домашней автоматизации, зато с опытом системного администрирования Windows. Не сказать что я когда-либо был продвинутым Linux-администратором, но кое что умею. А еще у меня есть коллега, который если что может подсказать.
Первое что пришлось делать — выбирать платформу. Вариантов много, кто-то использует Domoticz, мой же выбор пал на OpenHAB. Во многом благодаря вот этому видеоблогу. Видео на YouTube:
Почему выбор пал на нее:
- Она очень гибкая, можно сделать все что угодно.
- Есть коннектор в мир автоматизации Apple Home Kit.
- Работает на Raspberry Pi.
- Есть свое приложение для телефона и свой Cloud для работы с ним.
Второе — железо. Как работник Broadcom, не могу заставить себя купить какой-нибудь Intel ;))) Есть две вещи, в котором BCM лучше всех в масс-маркет сегменте, это чипы для Raspberry Pi и чипы для роутеров :). Ну а если еще более развернуто, то мне хотелось дополнительно к автоматизации дома на своем собственном проекте посмотреть как обстоят дела в мире embedded-систем, что там с ARM, что там с софтом. Ну и сам по себе комп за 50 баксов (на самом деле дороже из-за корпуса, флэшки и блока питания), это же круто. Очень хотелось попробовать. Это был мой первый RaspPi, поэтому все было интересно.
Кроме этого, для того, чтобы что-то сделать рабочее, нужно чем-то как-то управлять. На связке OpenHAB-RaspPi управлять можно выводами GPIO RaspPi и через WiFi с протоколом MQTT (Mosquito) https://mosquitto.org/man/mqtt-7.html. Если вы еще не знаете, что это, советую почитать про него. Это легковесный message-based протокол, который может работать на самых простых микроконтроллерах. Я честно думал, что буду собирать сам датчики на ардуинках, даже купил две. Но практика показала, что все есть готовое и надо только его правильно подать (перепрошить). Об этом речь пойдет во второй части.
В качестве устройств которыми управлять после недели поисков в интернете и просмотра блогов (видеоблогов, каюсь), выбрал следующие два устройства:
Для того, чтобы запитать такого зверя мне понадобились реле. Паять желания нет, да и кто сейчас такое паяет. Идем в Чип и Дип (не реклама) или любой другой магазин электроники и покупаем. Рублей 300.
Пока писал, подивился, оказывается появились прямо готовые платки с реле для крепления на борду моей малинки. https://www.chipdip.ru/product/rpi-relay-board. Куплю как-нибудь.
Итак, железо собрано. Теперь дело за софтом.
Первый этап — накатываем OpenHABian. Это образ, который надо распаковать на флэшку вашего будущего сервера домашней автоматизации. Качаем отсюда, там же есть подробная инструкция что и как. Потом вставляем флэшку в малинку, подключаем питание и ждем часик. В этот момент установочный скрипт сам все для вас настроит. Далее вы заходите на веб-мордочку и администрируете там. Кроме этого, у системы есть несколько текстовых файлов, которые приходится время от времени править ручками. Sitemap, Items и Rules, предназначенных для различных нужд. Например в Sitemap вы описываете то, что будет в вашем управляющем софте. То есть кнопочки и переключатели-выключатели. В Rules можно писать разные правила, например там я сделал включение-выключение света в темное время суток по астрономическим данным. Items описывает ваши устройства, которыми вы управляете. Прежде чем умело начать всем этим пользоваться, я смотрел пошаговые видео инструкции от уже упомянутого подростка mk-smarthome.
Второй этап — сборка схемы в электрощитке. Установка контактора, блока реле, проводки между ними. С GPIO я подаю сигнал на блок реле, а уже оттуда 220V AC на контактор. Контактор включает 12КВт электропечку.
Ну и третий этап — конфигурируем наше только что собранное в софте OpenHAB.
Я сделал это за первый вечер. Итогом моей работы стало рабочее приложение на айфоне (а также на андроиде или просто в браузере), которое через свое родное облако связывается с моим Raspberry Pi с OpenHAB. Это особо важно при выборе платформы, чтобы самому не заниматься написанием кода для своего телефона, не устанавливать клаужных серваков и.т.д. И все это забесплатно. То есть по цене оборудования. Софт OpenHAB — безвозмезден.
Что омрачило мои занятия — так это борьба Роскомнадзора с Телеграммом. Если помните, они начали банить все IP-подсети подряд. В том числе и github, OpenHAB.org, и.т.д. И если основные ресурсы пришли в себя довольно скоро, то вот OpenHAB, которым в РФ пользуется, видимо, три инвалида включая меня еще год работал с косяками. Нет, не в боевых своих функциях, а в моменты апгрейдов и апдейтов софта. Я год ходил на сайт OpenHAB через анонимайзер-прокси… Это убедило меня, что с IoT в нашей стране все грустно. Еще одно замечание в сторону OpenHAB. Не надо апгрейдить рабочую конфигурацию. Сделайте бэкап всего и вся перед любыми подобными действиями. При переходе на какую-то новую мажорную версию я как-то зимой оставил себя без обогрева… Пришлось сначала подключать все байпассом, чтобы не замерзнуть, а потом полночи чинить сломанную конфигурацию. При переходе на новые версии у них меняются форматы, подходы и.т.д.
Вот так в итоге выглядит мое приложение.
Через пару недель я реализовал программный термостат в OpenHAB, используя беспроводной датчик температуры-влажности на Sonoff TH16 (ардуиноподобный китайский процессор ESP8266 с вайфаем и релюшечки типа уже продемонстрированной сверху). Но обо всем этом во второй части. А пока пишите что вам рассказать поподробней. Во второй части добавлю.
Делаем умный дом с нуля. Часть 1 — Введение, установка Raspbian на Raspberry pi
С некоторых пор меня заинтересовала тема домашней автоматизации, или умного дома. Так как раньше я с этой темой никоим образом не пересекался (как наверное и многие из вас, которые сейчас читают эту статью), то потратил достаточное количество времени на просвещение в интернете. От дорогостоящих «готовых» систем умного дома я сразу отказался, и решил делать свою систему домашней автоматизации бюджетно, с нуля и поэтапно. Так как готовых проектов с пошаговыми инструкциями (рассчитанных на абсолютных новичков) в глобальной сети я не нашел, то и решил написать этот цикл статей. Здесь я буду подробнейшим образом и пошагово описывать создание своей конкретной системы домашней автоматизации. Должно получиться своего рода руководство для тех людей, которые сами хотят создать подобную систему, но, не обладают необходимыми знаниями (для абсолютных новичков). На выходе у нас получится собранная с нуля готовая система умного дома.
Поскольку речь здесь пойдет о конкретной системе домашней автоматизации, то рассказывать как и из чего я выбирал, я не буду. Моя система будет базироваться на платформе MajorDoMo (это такое программное обеспечение). Почитать, что она из себя представляет, вы можете на официальном сайте данной платформы. В качестве сервера, на который будет установлена платформа MajorDoMo я буду использовать одноплатный компьютер Raspberry pi 3 model B+ с установленной на него операционной системой Raspbian.
У меня есть новый одноплатный компьютер Raspberry pi 3 model B+, и мне в первую очередь нужно установить на него операционную систему.
Вообще для этого компьютера существует множество Linux-based операционных систем, но я выбрал Raspbian — официальную операционную систему для Raspberry pi. Если у вас есть такой же одноплатник, то вы можете не напрягаться и сразу поставить на него операционную систему вместе с MajorDoMo, скачав базовый образ с официального сайта MajorDoMo. Я же пойду немного более трудоемким путем, и сначала установлю себе Raspbian (так как хочу немного поближе познакомиться с Linux), а потом платформу умного дома MajorDoMo.
Помимо Raspberry pi под MajorDoMo можно выбрать другие одноплатные компьютеры (или же обычные компьютеры, ноутбуки, нетбуки) и другие операционные системы. В этом случае могут отличаться от рассмотренных в данной статье только способы установки платформы MajorDoMo. Дальнейшая настройка самой платформы я так думаю везде будет одинаковой (но не совсем уверен, так как сам пока с платформой не работал, и думаю, что в дальнейшем этот вопрос прояснится).
Для установки операционной системы Raspbian в одноплатный компьютер, нам понадобится:
- MicroSD карта объемом не менее 8 Гб
- Обычный персональный компьютер (ноутбук) на Windows
- программа Etcher (скачать ее можно с официально сайта).
- образ операционной системы Raspbian (я выбрал Raspbian Stretch Lite без графической оболочки, так как работать с raspberry буду только по удаленке, скачать этот образ можно так же с официального сайта)
Сам процесс установки довольно прост:
- В обычный компьютер (ноутбук) вставляем MicroSD карту.
- Запускаем программу Etcher.
- Нажимаем первую кнопку Select image, после чего откроется проводник, при помощи которого мы выберем скачанный ранее образ Raspbian.
- Далее, при помощи второй кнопки Select drive нужно будет выбрать нашу MicroSD карту, в которую будет записан образ системы. Если в компьютер воткнута только одна карта, то она будет выбрана автоматически.
- Ну и последнее, нажимаем кнопку Flash!, после чего происходит запись образа Raspbian на карту памяти.
Все! Теперь можно достать карту памяти из компьютера и воткнуть ее в специальный слот на нижней стороне Raspberry pi.
Наш одноплатник готов к работе. Чтобы убедиться в этом, нам понадобится телевизор или монитор с HDMI входом, и HDMI кабель. Подключиться удаленно к raspberry на данном этапе не получится, так как SSH в raspbian по умолчанию отключен (с этим мы разберемся в следующей статье).
Давайте подключим HDMI кабель к HDMI выходу микрокомпьютера и HDMI входу телевизора (монитора).
Теперь включаем телевизор и подаем питание на микрокомпьютер от обычного зарядного устройства для смартфонов с Микро USB разъемом. (Желательно, чтобы это зарядное устройство было не менее чем на 2 А, на случай дальнейшего расширения одноплатника).
При подаче питания одноплатник включится автоматически (никаких кнопок включения на нем нет). На экране телевизора (монитора) мы при этом увидим процесс загрузки операционной системы. Когда операционка загрузится, нам будет предложено ввести логин и пароль для входа в систему. (Графическая оболочка в нашем варианте отсутствует, имеется только командная строка).
Логин по умолчанию — pi, а пароль — raspberry.
На этом на сегодня мы закончим.
В следующей статье мы рассмотрим необходимую настройку Raspbian, включим SSH и зайдем на наш одноплатный компьютер по удаленке.
Спойлер: Поскольку я сам только начинаю разбираться с системами умного дома, и отношусь к разряду новичков, то людей, обладающих достаточным опытом в данном вопросе, прошу отнестись с пониманием к возможным неточностям и огрехам данного проекта. Повторюсь, готового проекта для новичков в интернете я не нашел (может плохо искал). Информации много, но она не собрана в единое целое.