All Projects → popstas → yandex-dialogs-smarthome-mqtt

popstas / yandex-dialogs-smarthome-mqtt

Licence: MIT License
Умный дом Яндекса для MQTT устройств (Sonoff Tasmota и т.п.)

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to yandex-dialogs-smarthome-mqtt

ccu-jack
CCU-Jack bietet einen einfachen und sicheren REST- und MQTT-basierten Zugriff auf die Datenpunkte der Zentrale (CCU) des Hausautomations-Systems HomeMatic. Zudem können einfach Fremdgeräte an die CCU angebunden werden.
Stars: ✭ 63 (+270.59%)
Mutual labels:  smarthome, mqtt-smarthome
Home-Assistant-Main
My Home Assistant Configuration Be sure to ⭐ my repo so you can keep up to date on the daily progress!
Stars: ✭ 54 (+217.65%)
Mutual labels:  smarthome
ioBroker.octoprint
ioBroker adapter to manage your 3D printer over ioBroker
Stars: ✭ 31 (+82.35%)
Mutual labels:  smarthome
ioBroker.fhem
Communication with FHEM over Telnet
Stars: ✭ 15 (-11.76%)
Mutual labels:  smarthome
gree-remote
Simple remote control utility for Gree Smart air conditioners
Stars: ✭ 150 (+782.35%)
Mutual labels:  smarthome
ha-rhvoice
Home Assistant integration for RHVoice - a local text-to-speech engine.
Stars: ✭ 19 (+11.76%)
Mutual labels:  smarthome
ioBroker.cloud
Enable access to ioBroker from internet
Stars: ✭ 36 (+111.76%)
Mutual labels:  smarthome
homebridge-switcheroo
Simple on/off or multiswitch radio buttons for http reqs. Useful for lights, A/V systems, home automation, whatever
Stars: ✭ 38 (+123.53%)
Mutual labels:  smarthome
ioBroker.dwd
Fetches weather warnings from "Deutscher Wetterdienst" (germany only)
Stars: ✭ 19 (+11.76%)
Mutual labels:  smarthome
Lumos
😴 Smart Lighting for Better Sleep
Stars: ✭ 98 (+476.47%)
Mutual labels:  smarthome
fritz-box
📦 Promise-based JavaScript FRITZ!Box API.
Stars: ✭ 14 (-17.65%)
Mutual labels:  smarthome
ioBroker.ping
Pings configured IPs for ioBroker
Stars: ✭ 18 (+5.88%)
Mutual labels:  smarthome
openhab2 pub 001
openhab2_pub_001
Stars: ✭ 29 (+70.59%)
Mutual labels:  smarthome
ioBroker.modbus
Modbus adapter for ioBroker
Stars: ✭ 31 (+82.35%)
Mutual labels:  smarthome
WeConnect-mqtt
MQTT Client that publishes data from Volkswagen WeConnect
Stars: ✭ 14 (-17.65%)
Mutual labels:  smarthome
HomeAssistant-Config
Here is my current Home Assistant config. Hope this helps who needs it!!
Stars: ✭ 87 (+411.76%)
Mutual labels:  smarthome
cbj app
📱 CyBear Jinni App is the app to control CyBear Jinni Hub 💡 remotely from your Android, IOS and Web Browser. If you have ever wondered "Is there an open-source project to make my own smart home?", This is part of one.
Stars: ✭ 68 (+300%)
Mutual labels:  smarthome
ioBroker.hass
Connects Home Assistant to ioBroker
Stars: ✭ 14 (-17.65%)
Mutual labels:  smarthome
tradfri-mqtt
Mirrors Trådfri gateways endpoints into MQTT and send commands to the gateway from MQTT
Stars: ✭ 26 (+52.94%)
Mutual labels:  smarthome
edimax-smartplug
Unofficial Edimax Smartplug Libary. Control SP-1101W and SP-2101W from Node.js.
Stars: ✭ 25 (+47.06%)
Mutual labels:  smarthome

Цель проекта: подключить устройства Sonoff с прошивкой Tasmota к умному дому Яндекса через приватный навык. Подходит для других устройств с управлением по MQTT.

Более качественная реализация - https://github.com/munrexio/yandex2mqtt (я пользуюсь своей по историческим причинам). Если вам нужно только вкл/выкл, то мой проект настроить проще.

Особенности

  • Устройства добавляются через конфиг
  • Простая настройка устройств типа On_off
  • Отсутствует полноценная авторизация, проще настроить, но подходит только для приватных навыков
  • Возможность настроить устройства любого типа (я проверял только volume, но должны работать и другие)
  • Статус устройства обновляется в Яндексе при переключении устройства извне (только для on_off, с ограничениями, см. баги)
  • В коде части auth и provider разделены по файлам

Предполагается, что вы умеете:

  • Настраивать https перед сервером, например, через nginx и letsencrypt
  • Поднимать MQTT брокер
  • Научить устройства понимать MQTT команды.

Использование

  1. Скопируйте config.exemple.js в config.js, пропишите ваши доступы к MQTT и устройства. Пример объявления устройства:
{
  devices: [
    {
      name: 'Свет',
      room: 'Комната',
      type: 'devices.types.light',
      mqtt: {
        set: 'cmnd/room/light/power'
      }
    },
  ]
}

Для объявления чего-то сложнее лампочки вам придётся описывать capabilities по документации:

{
  devices: [
    {
      name: 'Телевизор',
      room: 'Кухня',
      type: 'devices.types.media_device',
      mqtt: {
        set: 'cmnd/kitchen/tv/power',
        stat: 'stat/kitchen/tv/power',
        volume: {
          set: 'cmnd/kitchen/tv/volume',
          stat: '',
        }
      },
      capabilities: [
        {
          type: 'devices.capabilities.on_off',
          retrievable: true,
          state: {
            instance: 'on',
            value: false
          }
        },
        {
          type: 'devices.capabilities.range',
          retrievable: true,
          parameters: {
            instance: 'volume',
            min: 0,
            max: 100
          },
          state: {
            instance: 'volume',
            value: 25
          }
        },
      ]
    },
  ]
}

В mqtt set и stat по умолчанию отвечают за instance == 'on', если надо управлять другим инстансом, то добавляйте объект с его именем.

  1. Установите пакеты и запустите, навык поднимется на порту 5554:
npm install
npm start
  1. Опубликуйте сервер на общедоступном домене через https, например, https://myhome.ru

  2. Создайте связку на https://dialogs.yandex.ru/developer/settings/oauth
    4.1. URL авторизации: https://myhome.ru/auth/auth
    4.2. URL для получения токена: https://myhome.ru/auth/token
    4.3. Название, идентификатор и секрет приложения могут быть любыми, остальные поля оставьте пустыми.

  3. Создайте навык типа "Умный дом" на https://dialogs.yandex.ru/developer
    5.1. Endpoint URL: https://myhome.ru/provider
    5.2. Название и иконка будут отображаться в списке провайдеров при подключении устройств.
    5.3. Навык должен быть приватным, для публичных провайдеров это не подойдёт.

  4. Отправьте навык на модерацию и опубликуйте. Модерация и публикация не настоящие, проходят мгновенно и автоматически.

  5. Подключите провайдера к своему аккаунту
    7.1. В приложении Яндекс зайдите в Устройства - Умный дом - Добавить - Устройство, пролистайте вниз, там должен быть ваш провайдер. Нажимте "Объединить аккаунты".
    7.2. На открывшейся странице нажмите "Подключить умный дом"
    7.3. Вас должно вернуть в приложение, нажмите там "Обновить список устройств"

После этого у вас всё должно заработать.

Запуск через Docker

Для постоянного использования я запускаю сервер под Docker, можно сделать это так:

  1. Скачать docker-compose.yml и config.js (проще склонировать проект).

  2. Настроить конфиг под себя (не забудьте, что если MQTT брокер крутился просто на localhost, внутри Docker уже не прокатит localhost).

  3. Запустить docker-compose up -d в папке с docker-compose.yml

Если всё пройдет нормально, сервер будет автозапускаться, логи можно посмотреть через docker-compose logs или docker logs.

Известные баги

  1. Состояния устройств плохо считываются.
    1.1. Если включить свет мимо Алисы, но при этом обновить статус устройства в /v1.0/user/devices, в приложении он не появится.
    1.2. Если включить свет через Алису, выключатель в приложении переключится, но после обновления списка устройств перейдет в выключенный режим, хотя /v1.0/user/devices говорит, что он включен.
    1.3. Если зайти внутрь устройства, то только тогда его статус в списке обновится до актуального.

  2. Список устройств плохо обновляется
    2.1. Если добавить устройство в конфиг, оно не появится, пока не зайти в добавление устройства и не нажать Обновить список устройств.
    2.2. Если удалить устройство, оно не пропадет, пока не зайдёте в него.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].