Шановні покупці, у зв'язку з військовим станом магазин тимчасово призупинив роботу. З усіх питань пишіть admin@1wire.com.ua
Категории Статей
Популярные Статьи
Умный дом Xiaomi ZigBee на Raspberry Pi + Home Assistant
В этой статье пойдет речь о датчиках, розетках, выключателях Xiaomi Aqara/Mijia. Я расскажу к ...»
Home Assistant + база SQL MariaDB оптимизация
Все чаще у многих пользователей Home Assistant возникает вопрос о выросшем файле базы данных. П ...»
Открытая система управления “умным домом” MajorDoMo - Часть 1
В этой статье я расскажу об одном проекте, которым занимаюсь уже довольно продолжительное время и ко ...»

Умный дом Xiaomi ZigBee на Raspberry Pi + Home Assistant


В этой статье пойдет речь о датчиках, розетках, выключателях Xiaomi Aqara/Mijia. Я расскажу как подключить ZigBee устройства без родного шлюза Xiaomi и избавиться от облачного сервиса. Все устройства не требуют перепрошивки и доработки и будут работать из коробки. Так же, можно подключать большинство устройств с протоколом ZigBee.

Список всех поддерживаемых устройств
 
Почему Home Assistant?
 
Ранее в статье о Мажордомо рассматривалась универсальная платформа для построения умного дома, для настройки требовались достаточные знания и опыт в программировании.
Сейчас хочу представить вам альтернативу с более простой, на мой взгляд, настройкой, даже для начинающего.
Рассматривалось  несколько оффлайн Open source платформ Domoticz, OpenHUB и Home Assistant. Все были установлены и опробованы. Несомненным лидером оказался OpenHUB, это идеальная среда для построения систем автоматизации. Но для моей задачи, он показался слишком избыточным.
Выбор пал на Home Assistant. Очень продуманная система, с отличным дизайном. Простой синтаксис yaml, после одного дня изучения любой скрипт пишется за считанные минуты, для автоматизаций можно использовать встроенный менеджер или использовать NodeRed к примеру. Хороший форум, множество примеров. Огромное количество поддерживаемых устройств и плагинов, но об этом позже.
 
Задача
 
Контролировать все окна, входные двери, замки, гараж, присутствие.
Датчики движения, температуры, влажности, качества воздуха в каждой комнате, коридорах, туалетах, кухня.
Управление вентиляцией и освещением.
Управление аудио-видео техникой IR, голосовые оповещения.
Все датчики беспроводные, все выключатели беспроводные, все датчики на окнах, дверях беспроводные ZigBee.
 
Оборудование
 
- Сервер Raspberry PI 3 модель B
- ZigBee Sniffer CC2531
 
Xiaomi Aqara / Mijia


 
- Temperature Humidity Sensor
- Door Window Sensor
- Human Body Sensor & Lux
- Smart Socket Mi power plug
- Vibration Sensor
- Wireless Switch

Настройка
 
Установка Home Assistant простая, достаточно записать образ на карту памяти вставить карту в Raspberry PI и перейти по локальному адресу, установка и настройка не сложная, есть множество статей и видео на эту тему.
Должен быть установлен и настроен MQTT брокер, я пользуюсь Mosquitto MQTT Server bundled with Hivemq's web client.
 

 
Теперь необходимо прошить USB ZigBee Sniffer CC2531, который будем использовать в качестве шлюза конвертера ZigBee в MQTT. 
Есть несколько способов прошивки, я использую программатор CC-Dubugger и загрузочный кабель.
Подключаем программатор через кабель к снифферу как на картинке, сниффер подключаем в порт компьютера для питания.



Скачиваем с официального сайта программу SmartRF от Texas Instruments, flash-programmer-1.12.8, устанавливаем и запускаем.

Скачиваем прошивку для шлюза - загрузить прошивку zigbee2mqtt



Нажимаем на три точки напротив Flash image указываем путь к файлу прошивки и нажимаем Perform actions.
Данная прошивка представляет шлюз для конвертирования протокола ZigBee в протокол MQTT который универсален и используется всеми платформами для умного дома.
После чего подключаем ZigBee Sniffer в порт Raspberry PI.
Теперь необходимо узнать на каком порту у нас находится сам сниффер, для этого в панели Hass.io переходим в закладку System и нажимаем на кнопку Hardware.



В моем случае серийный порт сниффера находится по адресу /dev/ttyACM0.

После чего необходимо установить плагин Zigbee2mqtt. Переходим на вкладку Hass.io на закладку ADD-ON STORE и добавляем новый репозиторий - https://github.com/danielwelch/hassio-zigbee2mqtt
 
 
Устанавливаем аддон Zigbee2mqtt.
Переходим на закладку Dashboard, плагин Zigbee2mqtt.
 

В поле Config вписываем следующую конфигурацию, указываем адрес вашего сервера имя и пароль от mqtt сервера, порт сниффера (выделено красным).
Конфигурация уже будет прописана, достаточно указать свои данные.
 
{
  "data_path": "/share/zigbee2mqtt",
  "devices": "devices.yaml",
  "groups": "groups.yaml",
  "homeassistant": true,
  "permit_join": false,
  "mqtt": {
    "base_topic": "zigbee2mqtt",
    "server": "mqtt://192.168.1.7:1883",
    "user": "имя",
    "password": "пароль"
  },
  "serial": {
    "port": "/dev/ttyACM0"
  },
  "advanced": {
    "pan_id": 6754,
    "channel": 11,
    "network_key": [
      1,
      3,
      5,
      7,
      9,
      11,
      13,
      15,
      0,
      2,
      4,
      6,
      8,
      10,
      12,
      13
    ],
    "availability_blacklist": []
  },
  "ban": [],
  "whitelist": [],
  "queue": {},
  "socat": {
    "enabled": false,
    "master": "pty,raw,echo=0,link=/dev/ttyZ2M,mode=777",
    "slave": "tcp-listen:8485,keepalive,nodelay,reuseaddr, keepidle=1,keepintvl=1,keepcnt=5",
    "restartdelay": 1,
    "initialdelay": 1,
    "options": "-d -d",
    "log": false
  }
}
 
Сохраняем и делаем рестарт плагина. Проверяем лог плагина, что бы не было ошибок. 
 
Теперь необходимо добавить в конфигурацию configuration.yaml следующий код:
 
discovery:

mqtt:
  broker: 192.168.1.7
  port: 1883
  username: имя
  password: пароль
  discovery: true
  discovery_prefix: homeassistant

sensor:
  - platform: mqtt
    name: Zigbee-Bridge state
    state_topic: "zigbee2mqtt/bridge/state"
    icon: mdi:router-wireless

Для автоматического поиска новых устройств. Заменив на ваши данные (выделено красным). Если у вас уже есть данная конфигурация, то пропускаем.
Далее добавляем:
 
# Zigbee2mqtt
input_boolean:
  zigbee_permit_join:
    name: Allow devices to join
    initial: off
    icon: mdi:cellphone-wireless

timer:
  zigbee_permit_join:
    name: Time remaining
    duration: 600 # Updated this to the number of seconds you wish

В файл automations.yaml добавляем следующий код:
 
#  Zigbee to mqtt
  - id: enable_zigbee_join
    alias: Enable Zigbee joining
    trigger:
      platform: state
      entity_id: input_boolean.zigbee_permit_join
      to: 'on'
    action:
    - service: mqtt.publish
      data:
        topic: zigbee2mqtt/bridge/config/permit_join
        payload: 'true'
    - service: timer.start
      data:
        entity_id: timer.zigbee_permit_join
  - id: disable_zigbee_join
    alias: Disable Zigbee joining
    trigger:
    - entity_id: input_boolean.zigbee_permit_join
      platform: state
      to: 'off'
    action:
    - data:
        payload: 'false'
        topic: zigbee2mqtt/bridge/config/permit_join
      service: mqtt.publish
    - data:
        entity_id: timer.zigbee_permit_join
      service: timer.cancel
  - id: disable_zigbee_join_timer
    alias: Disable Zigbee joining by timer
    trigger:
    - platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.zigbee_permit_join
    action:
    - service: mqtt.publish
      data:
        topic: zigbee2mqtt/bridge/config/permit_join
        payload: 'false'
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.zigbee_permit_join
# end Zigbee to mqtt

На главной странице создаем карточку с таким кодом:
 
entities:
  - entity: input_boolean.zigbee_permit_join
  - entity: timer.zigbee_permit_join
  - entity: sensor.zigbee_bridge_state
show_header_toggle: false
title: Zigbee
type: entities


Перезагружаем Home Assistant.
Теперь для поиска новых устройств ZigBee достаточно нажать на переключатель Allow devices to join. Через 10 мин поиск прекратится.
Теперь все готово для подключения новых устройств!

Подключение устройств

Включаем поиск устройств Allow devices to join. Поочередно на каждом устройстве нажимаем на несколько секунд кнопку спаривания, до загорания индикатора.
На датчике температуры и влажности кнопка находится сверху, через несколько секунд мигание прекратится. И устройство появится в разделе Интеграции и разделе Устройства.



Переходим в MQTT: configuration.yaml



И видим наш датчик.



Нажимаем на него и попадаем в меню настройки датчика
Каждому значению необходимо добавить понятное название



Нажимаем на шестеренку и вводим свое название



Тепер можно вывести данные данного сенсора на главный экран, это проще всего сделать из этого меню


В всплывающем окне будет предложена страница главного экрана если их неколько как у меня, после чего появится окно с пунктами, необходимо нажать ADD TO LOVELACE



Переходим на главный экран и видим наш датчик



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



Мониторинг ZigBee сети

Для удобства контроля всех устройств ZigBee добавим монитор сети.

UPD. В новой версии zigbee2mqtt данный функционал уже встроен и дальнейшие действия не требуются.

Скачиваем плагин zigbee2mqtt-networkmap, окрываем конфигуратор и добавляем его в папку www.

В конфигурацию configuration.yaml добавляем следующий код:
 
sensor:
  - platform: mqtt
    name: Zigbee2mqtt Networkmap
    state_topic: zigbee2mqtt/bridge/networkmap/raw
    value_template: >-
      {{ now().strftime('%Y-%m-%d %H:%M:%S') }}
    json_attributes_topic: zigbee2mqtt/bridge/networkmap/raw

Для добавление карточки на главную страницу необходимо переключить внешний вид в Lovelace YAML mode, перейти в редактирование нажав на три точки в верхнем правом углу.

 

Далее необходимо переключиться в Текстовый редактор



В начале файла добавить следующий код
 
resources:
  - type: module
    url: /local/zigbee2mqtt-networkmap.js?v=0.6.0



В конец файла добавляем саму карточку Карты сети
 
  - cards:
      - css: |
          :host {
            --zigbee2mqtt-networkmap-node-color: rgba(18, 120, 98, .7);
            --zigbee2mqtt-networkmap-node-fill-color: #dcfaf3;
            --zigbee2mqtt-networkmap-node-pinned-color: rgba(190, 56, 93, .6);
            --zigbee2mqtt-networkmap-link-color: rgba(18, 120, 98, .5);
            --zigbee2mqtt-networkmap-hover-color: #be385d;
            --zigbee2mqtt-networkmap-link-selected-color: rgba(202, 164, 85, .6);
            --zigbee2mqtt-networkmap-label-color: #127862;
            --zigbee2mqtt-networkmap-arrow-color: rgba(18, 120, 98, 0.7);
            --zigbee2mqtt-networkmap-node-coordinator-color: rgba(224, 78, 93, .7);
            --zigbee2mqtt-networkmap-node-router-color: rgba(0, 165, 255, .7);
          }
        entity: sensor.zigbee2mqtt_networkmap
        font_size: 12
        force: 3000
        height: 400
        link_width: 2
        mqtt_base_topic: zigbee2mqtt
        node_size: 16
        type: 'custom:zigbee2mqtt-networkmap'
    panel: true
    path: zigbee-network
    title: Zigbee Network

panel: true - разворачивает карту на весь экран. В результате получаем такую карточку


 
 
  Отзывов: 1
Ваше Имя:


Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.

Оценка: Плохо           Хорошо

Введите код, указанный на картинке:



Последние Статьи
Замок по отпечатку пальца WiFi для Home Assistant
В прошлой статье я рассказывал о подключении модуля RFID - PN532 в Home Assistant, но всегда ...»
16.06.2021 в 11:22    Просмотров: 1070
Home Assistant - Звук через аудио выход RPI
Если нужно выводить оповещение или слушать музыку через аудиовыход Raspberry PI не используя внешн ...»
28.12.2020 в 14:34    Просмотров: 4530
RFID считыватель для Home Assistant
​В последнее время получили широкое распространение метки беспроводной идентификации RFI ...»
18.10.2020 в 12:37    Просмотров: 1967
Последние отзывы
Замок по отпечатку пальца WiFi для Home Assistant
Благодарю за очень полезный материал, даже не знал что ESPHome уже со сканерами работает. Спасибо, удачи в проектах, пишите еще!!! ...»
16.06.2021 в 13:13    Просмотров: 1070
Анатолий
Умный дом Xiaomi ZigBee на Raspberry Pi + Home Assistant
Отличная статья но есть ошибки, а именно отсутствует в основном конфиге sensor: - platform: mqtt name: Bridge state state_topic: "zigbee2mqtt/bridge/state" icon: mdi:rout ...»
10.02.2020 в 20:25    Просмотров: 16226
Kolyk
Открытая система управления “умным домом” MajorDoMo - Часть 2
Продолжайте писать, очень интересно ...»
04.03.2017 в 23:34    Просмотров: 5265
Алексей