Как установить domoticz на linux

Обновлено: 03.07.2024

Причина редактирования: Подключение датчика температуры и влажности Xiaomi Mijia cleargrass к Raspberry Pi

Наверно многим будет интересно - теперь есть возможность использовать Xiaomi Gateway + ZigBee датчики и розетки со своим сервером "умного дома".
Есть несколько разных систем "умного дома", я поставил на Raspberry Pi 2B Domoticz.

Что нужно сделать:
- активировать режим разработчика (developer mode) в Gateway. Делается из приложения MiHome (в плугине Gateway). Необходим Gateway версии 2 (с радио).
- на Raspberry Pi (а также на РС и МАС) ставится приложение Domoticz. Устанавливается буквально одной командой (на Raspberry по-крайней мере). Цена системы не более 50USD (включая блок питания и MicroSD карточку).
- Raspberry, Gateway и лампочки должны быть в одной локальной сети.

Что будет доступно (лично тестировал):
- видны датчики температуры/влажности, датчики окно/дверь, датчики движения, ZigBee розетки, кнопки
- также видны и управляются белые и цветные WiFi лампочки
- есть возможность управлять ZigBee розетками
- информация с/на датчика поступает практически мгновенно. Задержек нет.

Что можно сделать:
- смотреть и управлять состояниями датчиков, лампочек и розеток (вкл/выкл, изменение цвета и светимости ламп). Просмотр графиков и архива.
- настраивать уведомления (открытие дверей, повышение/уменьшение температуры, фиксация движения). Уведомления можно на е-мэйл, на разные сервисы пуш-уведомлений, можно настроить уведомление на телеграм.
- настраивать свои сценарии. Сложность сценария зависит только от вас
- есть клиент-приложение Domoticz на iOS и Android. Ну и конечно, веб-интерфейс.

Могу сказать, что первоначальная настройка достаточно проста. Цены на аналоги ZigBee датчиков и устройств Xiaomi от других фирм по схожим технологиям (Z-Wave), дороже как минимум раз в 5.

pavelbor,
Добрый день. А где находится режим разработчика (developer mode)? Не могу найти на Android версии. Добрый день. А где находится режим разработчика (developer mode)? Не могу найти на Android версии.

Активация режима разработчика:

Make sure you set your region to Mainland China under settings -> Locale - at time of writing this seems to be required.
Select your Gateway in Mi Home, then the 3 dots at the top right of the screen, then click on about. Tap the version number at the bottom of the screen repeatedly until you enable developer mode - you should now have 2 extra options listed in Chinese. Choose the first new option, and then tap the toggle switch to enable LAN functions. Note down the password (ie 91bg8zfkf9vd6uw7) Make sure you hit the OK button (to the right of the cancel button) to save your changes.

Выберите шлюз в Mi Home, нажмите на 3 точки в правом верхнем углу экрана, а затем нажмите на "about". Нажмите на номер версии в нижней части экрана несколько раз подряд, пока не будет включен режим разработчика - теперь вы должны иметь 2 дополнительные параметры, перечисленные на китайском языке. Выберите первую новую опцию, а затем нажмите тумблер для включения функции LAN. Запишите пароль (например 91bg8zfkf9vd6uw7). Убедитесь, что вы нажмете кнопку OK (справа от кнопки Отмена), чтобы сохранить изменения.

Пароль нужен будет для настройки в Domoticz, для управления розеткой.

P.S. Нужно иметь шлюз версии 2. Тот, в котором есть радио. Активация режима разработчика не влияет на обычную работу с китайскими серверами и своим приложением.

pavelbor,
Спасибо! И еще вопрос, если сделать локальный сервер на Raspberry Pi, я так понял, что сценарии будут работать и с китайским сервером и с локальным и чтобы не дублировались сценарии нужно их удалить на китайском и добавить на локальный и вообще если есть возможность отключить общение с китайским сервером? При этом сценарии пишутся уже не с программы MiHome а с Domoticz? Спасибо! И еще вопрос, если сделать локальный сервер на Raspberry Pi, я так понял, что сценарии будут работать и с китайским сервером и с локальным и чтобы не дублировались сценарии нужно их удалить на китайском и добавить на локальный и вообще если есть возможность отключить общение с китайским сервером? При этом сценарии пишутся уже не с программы MiHome а с Domoticz?

Оба вида сценариев ("родные" и Domoticz) могут существовать параллельно.

Сценарии, которые создаются в приложении MiHome, работают в шлюзе и в облаке. Сценарии, которые могут быть созданы в системе "умного дома", например в Domoticz, работают в этой системе независимо от Xiaomi.
Они (Domoticz) просто "читают" состояния датчиков, которые шлюз посылает в локальную сеть. И управляют розетками через шлюз (для этого нужен пароль шлюза).
Потом "родные" сценарии можно будет удалить и вообще отключиться из облака (наверно). По крайней мере, пока не станет понятно, как создавать сценарии в Domoticz. Там надо немного разбираться.

Мы часто думаем о том, как автоматизировать свое жилище, но часто этот вопрос упирается в то, что готовые системы слишком негибки и дороги, а разбираться, как сделать что-нибудь самому совершенно нет времени.

Под катом - подробный гайд по настройке системы умного дома: сделаем возможным работу устройств ZWave и кастомных MQTT-устройств на базе ESP8266, настроим управление домом при помощи HomeKit и Яндекс Алисы.


Первоначальная настройка Raspberry PI

Установка системы

Headless

Если не хотим подключать монитор

В boot разделе создаем файл с именем ssh(это одноразовый способ: при наличии файла с именем ssh в разделе при старте raspberry sshd запускается и удаляется этот файл, поэтому не забываем в sudo raspi-config включить ssh насовсем)

Теперь при первом запуске у нас будет возможность подключиться к системе по ssh.

Если необходимо подключение к локальной сети посредством wifi, создаем в boot разделе файл wpa_supplicant.conf

Содержимое файла wpa_supplicant.conf

Первый запуск

Вставляем флешку в малину, подключаем ее по ethernet к сети, если не настроили wifi, подаем питание по microUSB, используя блок питания с предельным током как минимум 2 ампера.

Raspberry PI должна загрузить систему, а также подключиться к сети.

Попробуем получить к ней доступ по ssh.

Для этого нам необходимо узнать, какой ip-адрес получила raspberry pi в нашей локальной сети. Вы можете зайти в веб интерфейс маршрутизатора и посмотреть список активных хостов, но я предпочитаю использовать nmap. Выполняю сканирование сети посредством пингования всех ip адресов подсети.

Здесь можно заметить, что кроме самого роутера(192.168.0.1) и моего ПК(192.168.0.105) появился еще один хост 192.168.0.120 - многовероятно, что это и есть наша малина.

Попробуем подключиться. Стандартная пара логин/пароль: pi/raspberry.

Мы успешно вошли по ssh на raspberry pi и теперь можем приступать к дальнейшей настройке системы.

Установка Domoticz

Domoticz - программная система для управления умным домом с открытым исходным кодом. Написана на C++. На хабре я видел статьи про аналоги этой системы, такие как openhub и home assistant, но мой выбор пал на domoticz вследствие того, что эта платформа максимально проста для конфигурирования, а кроме того, написана на C++, что делает ее гораздо менее требовательной к вычислительным мощностям для работы, чем аналоги, использующие java и python. Кроме того, подкупила простая система написания сценариев на Lua или python.

Итак, установим domoticz на наш одноплатник. Установка максимально простая, за что личный респект разработчикам.

После окончания установки и, на всякий случай, ребута, проверяем, что демон domoticz поднялся:

В процессе эксплуатации я заметил, что Domoticz иногда падает с ошибкой. Чтобы поднимать его автоматически, напишу watchdog с помощью cron.

Теперь каждые 5 минут будет запускаться скрипт, который проверит, работает ли Domoticz и перезапустит его, если это необходимо

Настройка domoticz для работы с устройствами

Теперь, когда система работает и готова к продолжению конфигурирования, можно настроить какие нибудь устройства.

IP-камера

Самое простое, что можно настроить в Domoticz - это камера. Для этого зайдем в web-интерфейсе в Setup -> More options -> Cameras -> Add camera.

Вводим данные о своей камере. У меня возникли сложности с определением picture url, но они решились вот этим сервисом.

После того, как мы сохранили новую камеру, у нас появилась строка в таблице с кнопками, чтобы посмотреть изображение или видео.

Z-Wave USB Stick

Посредством Domoticz, мы можем управлять домашней сетью Z-Wave IoT устройств. Это удобный протокол, позволяющий устройствам взаимодействовать друг с другом так, чтобы некоторые из них являлись, помимо своего основного назначения, Z-Wave ретрансляторами, своей работой расширяя радиус покрытия Z-Wave. Протокол закрытый, проприеритарный, поэтому просто создать свое Z-Wave устройство не выйдет, поэтому обычно, по этому протоколу работают покупные устройства/компоненты умного дома.

По моему опыту, настройка Z-Wave сети в Domoticz оказалась сильно проще и, в отличие от систем Home Assistant и openHub, здесь USB Stick заработал сразу и без проблем.

Для того, чтобы настроить свою сеть Z-Wave, я приобрел Z-Wave USB Stick. Подключив его к Raspberry pi, я добавил его как еще одну Hardware, с Type OpenZWave USB. Путь к Serial Port у меня выглядел примерно так: /dev/serial/by-id/usb-0658_0200-if00

После добавления стика, появится запись в таблице с ним, в которой будет кнопка Setup, открывающая возможность настраивать ZWave сеть. В меню настройки можно включать режим обнаружения новых ZWave устройств, а также изменять параметры сети и устройств в ней.

ВАЖНО: следите, чтобы рабочая частота Z-Stick соответствовала рабочей частоте Z-Wave устройств

MQTT-брокер

Установим свободный MQTT-брокер Mosquitto.

Теперь Mosquitto установлен и работает. Мы можем подключиться к нему без аутентификации по адресу 0.0.0.0:1883. Таких настроек нам хватит на первое время.

Domoticz - MQTT клиент

Подключим domoticz к MQTT-брокеру. В web-интерфейсе Domoticz - Setup -> Hardware.

Type - MQTT Client Gateway with LAN interface.

Remote address - localhost

Data Timeout - disabled

Username и password - оставляем пустыми до лучших времен

Publish topic - топик, куда domoticz будет публиковать все обновления статусов. Для себя я оставил стандартно - out, и domoticz публикует в топик domoticz/out.

После нажатия на Add у нас добавился новый hardware. Если все хорошо, то в таблице, в колонке Enabled мы увидим Yes.

Dummy switch

Хотелось бы быстро проверить работу нашей системы. Для этого есть виртуальные устройства - не имеющие физических воплощений(по крайней мере, пока мы их не сделаем), но имеющие статус в системе domoticz и управляемые из нее.

Добавим Dummy hardware. В web-интерфейсе Domoticz - Setup -> Hardware

Type - Dummy (Does nothing, use for virtual switches only)

Добавляем. В таблице появилась еще одна запись. Можно увидеть, что в таблице рядом с Type есть кнопка Create virtual sensors. Нажимаем ее, вводим параметры

Sensor type - Switch

Сохраняем и переходим в меню Switches. Теперь здесь можно увидеть новый переключатель:

Теперь мы можем посмотреть, как изменение переключателя отражается в топике MQTT.

$ mosquitto_sub -h localhost -v -t "domoticz/out"

Мы использовали клиент MQTT, который установили вместе с брокером, и подписались на топик, куда domoticz публикует свои обновления. Нажмем на лампочку в веб-интерфейсе

Программируем собственные IoT устройства на базе Arduino-like контроллеров.

Для реализации данного функционала я использую клон Arduino Uno, Ethernet Shield, а также Arduino-like плату на основе контроллера ESP8266, который способен подключаться к сети по WiFi. Таким образом, у меня будут две версии устройства - с подключением по Ethernet и по WiFi.

Для работы с MQTT я использовал библиотеку MQTT.h. Для парсинга JSON - ArduinoJSON.h.

Изначально, написав скетч для Arduino, я, выставив значение для буферов MQTTClient и ArduinoJSON в 500 байт и использовав преобразование входных данных в класс String, превысил мизерное количество оперативной памяти в 2 килобайта. Уменьшив размер буферов до 300 байт и использовав "сишные" строки, мне удалось уложиться в данный лимит, и даже оставить 300-400 свободных байт, но стало понятно, что модифицировать и усложнять программу, добавлять дополнительную логику в случае этой платы будет затруднительно.

Программировать ESP8266 оказалось сильно проще, так как оперативной памяти здесь на порядок больше.

Отлично! Оба устройства отслеживают изменения значения переключателя в интерфейсе Domoticz, и переключают светодиод соответственно значению переключателя!

Для себя в данный момент я сделал вывод, что гораздо разумнее использовать платы на основе ESP8266, потому что:

нет давящего ограничения по оперативной памяти

цена за комплект Arduino UNO + Ethernet Shield - 1100 руб, а на плату с работающим из коробки WiFi - 400

Таким образом, мы научились управлять собственным WiFi устройством прямо из интерфейса Domoticz, что открывает перед нами гигантские перспективы для автоматизации

Управляем всем через Яндекс Алису

Domoticz как таковой не поддерживает интеграцию с Алисой, потому что для этого необходим работающий навык Алисы и какой-то облачный интерфейс. Поэтому, для работы с Алисой предлагается следующий костыль: к mqtt брокеру, куда domoticz публикует изменения своих статусов, подключить homebridge - средство для подключения умного дома Apple, и передавать команды от Алисе к domoticz через него.

Поставим все необходимое ПО:

Для подключения Homebridge к Алисе я использовал g-on плагин. По ссылке - исчерпывающее описание настройки.

После окончания настройки мы имеем возможность управлять устройствами Domoticz, используя приложение Дом или Алису

Результатом моей работы стала система, обладающая приемлемой стабильностью, способная управлять IoT устройствами без необходимости подключения к интернету, позволяющая интегрировать собственные IoT устройства, работающие в сети WiFi, а также управлять этими устройствами голосовыми командами через Алису, или же с помощью облачного сервиса Apple

Демонстрация работы системы. Торшер подключен к самодельной "умной розетке", состоящей из реле, которым управляет ESP8266. Розетка по MQTT общается с Domoticz


В комментариях к статье развернулось интересное обсуждение, из которого я вынес несколько ценных рекомендаций и решил дополнить статью ссылками на них.

Исправление костыля с watchdog'ом

Большое спасибо автору этой статьи, который показал на примере из моей статьи, что в данном случае более подходящим инструментом для контроля работы domoticz будет systemd. И действительно, systemd снимает с нас необходимость следить за работой демонов, предоставляя гибкий интерфейс для настройки управления ими

Tasmota

Использование готовой прошивки для ESP8266 позволит не писать свой код для нее. Я проверил работоспособность этой прошивки на плате Wemos D1 R32.

Можем посмотреть логи tasmota через монитор последовательного порта

Вводим данные wifi сети и ждем, пока esp8266 не подключится к ней.

Теперь смотрим в логах, какой ip адрес получила esp8266, и снова открываем веб интерфейс, уже используя новый адрес.

Сначала настраиваем MQTT: все оставляем стандартно, кроме логопассов и IP адреса MQTT брокера. После этого настраиваем модуль: выбираем порты, которыми хотим управлять, указываем, что за устройство на них висит: реле, кнопка или что-то еще. После этого настраиваем Domoticz - смотрим, какое idx у dummy device, и записываем его в соответствующее поле. Теперь мы можем управлять этим устройством при помощи domoticz

Конечно, можно жить и с одним шлюзом, но в случае больших площадей либо этажности либо количества устройств одного шлюза может и не хватить.


Orange Pi PC 2. Технические характеристики


Установка операционной системы

Для установки ОС — нам необходима SD карта, желательно не менее 8 ГБ, и желательно иметь хотя бы две одинаковые карты — ибо бекапы. Я дополнительно не покупал, так как имею порядочный запас карт, для апельсинки приберег две карты MICROSD 16GB SAMSUNG CLASS 10

Диструбитивы ОС для апельсинок находятся ЗДЕСЬ находим нашу модель и качаем — я взял Debian Desktop — может будет охота в будущем поиграться с ней, но с тем же успехом можно взять более компактный Debian Server/


Распаковываем img системы (может быть архив в архиве — .xz в .rar) — нам нужен именно .img файл, дебиан десктоп — 2 ГБ с кепкой. Пишем на microSD при помощи Win32 Diskimage — ССЫЛКА

После того как флешка записывается — вставляем ее в картоприемник апельсинки и включаем питание.Через минутку — даем системе загрузится, заходим в список DHCP клиентов на домашнем роутере и ищем адрес выданный для OrangePi

Теперь можно заходить на нее через SSH используя любой SSH клиент — я использую старый добрый Putty.

По умолчанию, для апельсинового дебиана, используем следующие учетные данные —

user — root, pass — orangepi? но рутовый доступ через SSH закрыт, заходим под пользователем orangepi, пароль такой же. Пользователь orangepi — входит в группу sudo.

Сразу меняем пароль на свой командой


Далее переходим в учетную запись root командой

и аналогично меняем пароль для root. После этого выходим из учетки root — все делаем под пользователькой учеткой.

Если хотите добавить другого пользователя, то воспользуйтесь командой

И добавьте его в группу sudo командой


Далее, прописываем статический IP адрес для малинки (либо в настройках DHCP роутера) либо командой

И в файле прописываем адрес


Меняем часовой пояс при помощи команды


после установки прописываем свои ntp сервера в файле настроек вместо дефолтных

Синхронизируемся и радуемся точному времени.


Подготовка к установке domoticz

Перед установкой — нужно обновить систему, для этого сначала запускаем команду

А после успешной загрузки —

Дожидаемся полного завершения


Теперь устанавливаем домотикз — делается это одной командой

Собирается и устанавливается stable версия Domoticz


Основные настройки — задаем в окне инсталлятора, но можно все оставить по умолчанию


На данный момент стабильная версия поддерживает работу с шлюзом Xiaomi


На данном этапе я настоятельно рекомендую сделать бекап — чистой, с иголочки, системы домотикз, что даст возможность мучать ее как угодно, после чего за пару минут получать исходный, чистый образ. Для создания бекапа я снимаю образ диска программой R-Drive, нашел ее на торрентах, достаточно даже portable версии — сколько раз она меня выручала — не передать.


Основная страница по установке находится здесь. Это приложение для смартфонов/планшетов, выглядит примерно так — можете настраивать по своему желанию.


Domoticz for Android


Domoticz for Android is the new Android app for Domoticz. You can manage switches, utilities, cameras and more right from your Android device.

The app is being actively developed! New features and bug fixes are added regularly! It is open-source, available from GitHub.


Примерно год назад на страницах этого сайта я делал небольшой обзор системы домашней автоматизации Home Assistant. В конце обзора предлагалось желающим поделиться своим опытом применения других альтернативных вариантов систем автоматизации. К сожалению, таких не нашлось, а самому попробовать что-то новое как-то руки не доходили. И все же в конце концов я нашел время и решил установить на Raspberry Pi еще одну довольно известную систему домашней автоматизации. Сегодня речь у нас пойдет о автоматизации дома с помощью программы Domoticz.

Domoticz обладает очень широким функционалом и огромной поддержкой различных устройств. Разумеется, что бы рассказать о всех ее возможностях, речь здесь не идет. Поэтому, сегодня мы рассмотрим просто «быстрый старт» Domoticz на Raspberry Pi с наглядными примерами подключения датчиков различного типа.

В качестве аппаратной части для развертывания и тестирования Domoticz подойдет любая версия кросс-платы или просто Raspberry Pi с подключенными по интерфейсу 1-wire двумя датчиками DS18B20, а также датчиком температуры и атмосферного давления BMP180 и датчиком освещенности TSL2561 с интерфейсом I2C. Схема подключения датчиков к портам GPIO Raspberry Pi приведена на рис.1:

Raspberry Pi DS18B20 BMP180

Raspberry Pi Domoticz

Рис. 2

В первую очередь через пункт меню Setup – Setting адаптируем интерфейс под нужный язык (рис.3)

Raspberry Pi Domoticz

Рис. 3

Далее вводим любое название системы и географические координаты вашего местоположения (без этих параметров могут не сохраниться настройки) (рис.4):

Raspberry Pi Domoticz

Рис. 4

Применяем изменения кнопкой Apply Setting. Остальные настройки пока не трогаем. После рестарта системы, интерфейс должен отображаться уже на выбранном языке (рис.5)

Raspberry Pi Domoticz

Raspberry Pi Domoticz

Рис. 6

Аналогично конфигурируем и второй датчик DS18B20.

Далее конфигурируем датчик давления и температуры BMP180. Для этого датчика выбираем интерфейс I2C sensors и во вкладке SubType - I2C sensor BMP085/180 Temp+Baro (рис.7)

Raspberry Pi Domoticz

Рис. 7

По такому же принципу конфигурируем датчик освещенности TSL2561 (рис.8)

Raspberry Pi Domoticz

Рис. 8

Переходим в Setup – Setting и активирует сконфигурированные датчики. Для этого необходимо кликнуть мышкой по стрелке в зеленом кружке напротив выбранного датчика и присвоить ему имя (например, Temperature 1), которое будет отображаться в интерфейсе системы (рис.9).

Raspberry Pi Domoticz

Рис. 9

Показания датчиков должны отображаться в трех закладках:

DS18B20 – в закладке Tempetature (рис.10)

BMP180 (температура) – в закладке Tempetature (рис.10)

BMP180 (атмосферное давление) – в закладке Weather (рис.11)

TSL2561 – в закладке Utility (рис.12)

Raspberry Pi Domoticz

Рис. 10

Raspberry Pi Domoticz

Рис. 11

Raspberry Pi Domoticz

Рис. 12

Как видите датчики у нас оказались сгруппированы в зависимости от их функционала по различным закладкам. С одной стороны это удобно, когда устройств различного назначения слишком много. Но в любом случае, какие-то параметры и элементы управления интересуют нас более часто, а некоторые нужны периодически. Поэтому, в Domoticz есть такая приятная функция, как главная панель – «Dashboard», на которой можно разместить избранные устройства. Что бы добавить устройство в избранное, достаточно кликнуть по звездочке на панели устройства. При этом цвет звездочки меняется с белого на желтый, а устройство (в нашем случае это датчики) появится на панели Dashboard (рис.13).

Raspberry Pi Domoticz

Рис. 13

У Domoticz есть система логирования, которая позволяет отследить динамику изменения параметров датчиков за различные периоды времени. Что бы вывести график определенного датчика для его просмотра, достаточно кликнув мышкой по иконке этого датчика. В качестве примера на рис.14 показан график температуры первого датчика DS18B20.

Raspberry Pi Domoticz

Рис. 14

Как уже было сказано в начале обзора, Domoticz является довольно мощной системой, позволяющей реализовать практически любые требования в части автоматизации дома. Система поддерживает создание пользователем сценариев, позволяет интегрировать широкий спектр устройств различных производителей, для более удобного визуального восприятия пользователем интерфейса имеет возможность подгружать планировки автоматизируемых помещений. И это, конечно, далеко еще не все.

Но несмотря на то, что в этом обзоре был рассмотрен только один из множества сегментов системы (датчики), для первого знакомства с Domoticz этой информации будет достаточно. Все вопросы, отзывы и пожелания оставляем в комментариях к обзору и на нашем форуме.

Небольшое демонстрационное видео по установке и начальным настройкам Domoticz:

Читайте также: