Giter Club home page Giter Club logo

alice-to-mqtt's Introduction

ALICE-TO-MQTT

Шлюз между Яндекс.Колонкой и MQTT сервером / умным домом


I. Установка

  1. Копируем файлы проекта на хостинг с поддержкой PHP и настроенным SSL;
  2. Изменяем пин-код и параметры MQTT сервера (я использую CloudMQTT) в файле config.php;
  3. Публикуем приватный навык на платформе Яндекс.Диалоги. В качестве Webhook URL указываем адрес: https://<url_сайта>/<путь_к_проекту>/alice.php
  4. Дожидаемся одобрения модерации.

II. Настройка

Все устройства, которыми необходимо управлять, настраиваются в файле config.php (см.переменную $SMART_DEVICES). Указывается имя MQTT топика и активационные названия.

Со стороны умного дома приведу пример интеграции с Home Assistant.

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

connection cloudmqtt
address xxx.cloudmqtt.com:28093
remote_username user
remote_password password
remote_clientid cloudmqtt
bridge_protocol_version mqttv311
try_private true
notifications false
start_type automatic
topic # both 2 /cloudmqtt/
bridge_cafile /etc/mosquitto/ca_certificates/AddTrustExternalCARoot.cer
bridge_insecure false
cleansession false
local_clientid mosquitto

Соответственно address, remote_username и remote_password заменить на свои. В каталог /etc/mosquitto/ca_certificates/ положить файл сертификата AddTrustExternalCARoot.cer.

Если же локальный брокер не используется, то можно подключаться непосредственно к CloudMQTT. Читаем про это на странице документации.

В Home Assistant для каждого из подключенных к навыку устройств необходимо прописать автоматизации на включение и отключение:

- id: '1549298936175'
  alias: 'Алиса: Свет в спальне (вкл)'
  trigger:
  - payload: 'on'
    platform: mqtt
    topic: /cloudmqtt/bedroom-light
  condition:
  - condition: state
    entity_id: light.bedroom_light
    state: 'off'
  action:
  - data:
      entity_id: light.bedroom_light
    service: light.turn_on

- id: '1549298970158'
  alias: 'Алиса: Свет в спальне (выкл)'
  trigger:
  - payload: 'off'
    platform: mqtt
    topic: /cloudmqtt/bedroom-light
  condition:
  - condition: state
    entity_id: light.bedroom_light
    state: 'on'
  action:
  - data:
      entity_id: light.bedroom_light
    service: light.turn_off

III. Управление

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

Произнесите "Алиса, попроси <имя_навыка> запомнить это устройство" для запуска этой процедуры. На запрос системы введите пин-код, указанный в файле настроек.

После прохождения авторизации вам становятся доступными функции включения и отключения настроенных устройств умного дома. Например:

Алиса, попроси <имя_навыка> включить свет в ванной

Или, команда непосредственно внутри запущенного навыка:

Выключи весь свет в доме

IV. Используемые библиотеки

YANDEX-DIALOGS-PHP: https://github.com/kasitoru/yandex-dialogs-php

phpMQTT: https://github.com/bluerhinos/phpMQTT

alice-to-mqtt's People

Contributors

kasitoru avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.