Skip to content

Прослойка для соединения проекта VVip-68 и "Домовенка Кузи"

Notifications You must be signed in to change notification settings

Krypt0nC0R3/AliceMQTTHandler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AliceMQTTHandler

Прослойка для соединения проекта VVip-68 и "Домовенка Кузи"

Оглавление

  1. Установка
    • Windows
    • Linux
  2. Настройка программы
  3. Настройка "Кузи"
  4. TODO лист

Установка

Проект выходит для 2 самых популярных платформ - Windows и Linux (Debian based). Скачать архив с программой можно тут

Windows

Программа тестировалась на Windows 10 21H2.

  1. Для работы потребуется .NET 5.0 ;
  2. Скачайте и распакуйте архив AliceMQTTHandler-win-x64.zip в удобном для Вас месте;
  3. Запустите AliceMQTTHandler.exe. Она сообщит об отсутствии файла конфигурации;
  4. Настройте программу;

Linux

  1. Скачайте архив AliceMQTTHandler-linux-x64.zip;
  2. Распакуйте архив в удобном для Вас месте (unzip -a AliceMQTTHandler-linux-x64.zip);
  3. Запустите программу от имени администратора (sudo). Она сообщит об отсутствии файла конфигурации;
  4. Настройте программу;

Настройка

Файл настройки представляет собой обычный json-документ, как пример:

{
  "Do_Output": true,
  "Web_Port": 88,
  "Web_Path_Prefix": "/smarthome/lamp1",
  "MQTT_address": "92.68.145.12",
  "MQTT_Port": 1883,
  "MQTT_Path": "/my/path/to/lamp/or/matrix",
  "MQTT_Username": "Krypt0nC0R3",
  "MQTT_Password": "TheM0stStr0ngP@sSw0rd",
  "Secret_Phrase": "Random_Secret_phrase"
}

Разберем более подробно, для чего служит каждый параметр.


Do_Output

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


Web_Port

Порт, который будет слушать программа и который должен быть доступен извне. На одном ПК можно запустить несколько копий программы на разных портах. Они не будут мешать друг другу. В качестве значения принимает число, отличное от нуля. Желательно не использовать стандартные значиея, типа 21, 22, 88, 443 и т.д..


Web_Path_Prefix

Адрес, по которому программа будет принимать запросы на управление. Полный адрес для управления выглядит следующим образом http://{Ваш IP}:{Web_Port}{Web_Path_Prefix}. Принимает в качестве значения строку, начинающуюся с /.


MQTT_address

Адрес MQTT сервера, к которому подключена Ваша лампа/матрица. Если вы запускаете программу на том же ПК, где стоит MQTT-сервер можно вписать localhost. Принимает в качестве значения IP-адрес сервера или его WS:// адрес.


MQTT_Port

Порт MQTT сервера. Зачастую можно оставить по умолчанию. В качестве значения принимает ненулевое число


MQTT_Path

Путь (префикс) вашей лампы на MQTT-сервере. Должен совпадать с префиксом MQTT из настроек матрицы.


MQTT_Username

Имя пользователя для аутентификации на MQTT-сервере. По умолчанию null. При таком значении авторизация по логину-паролю отключена. Значение - строка либо null.


MQTT_Password

Пароль для аутентификации на MQTT-сервере. По умолчанию null. При таком значении авторизация по логину-паролю отключена. Значение - строка либо null.


Secret_Phrase

Секретная комбинация, без которой программа не будет воспринимать команды от "Кузи" и через GET запросы. Можно оставить значение по умолчанию (значение у каждого свое, генерируется при первом запуске) либо придумать свое. Запрещается использовать символы, отличные от букв анлийского алфавита и цифр.

Настройка "Кузи"

Для начала нам понадобится Ваш IP-адрес или адрес Вашего домена, если он есть. Вам необходим адрес, к которому мы будем добавлять различные суфффиксы. Адрес получается вида http://{IP}:{Web_Port}/{Web_Path_Prefix}/. Используя данные из примера выше получится следующее: http://142.15.224.163:88/smarthome/lamp1/. Назовем получивщуюся конструкицю Базовым адресом. Для управления лампой/матрицей нам потребуется создать 8 HTTP правил и 1 RGB-лампу в приложении.

image

Правила


Правило запроса состояния

Отдает "Кузе" информацию о том, ключена лампа или нет.

В URL управления устройством, доступный из интернета вписываем базовый адрес и к нему сзади приписываем getstate/?secret={Secret_Phrase}, где {Secret_Phrase} нужно заменить на вашу секретную фразу. Обязательно ставим галочку Ждать ответ от сервера

image

На всех правилах по запросу информации обязательно ставить галочку Ждать ответ от сервера. Без нее Ваша лампа будет отключаться спустя 5-10 секунд, т.к. "Кузя" не дождался ответа.


Правило установки состояния

Принимает от "Кузи" информацию о том, что нужно сделать с лампой - включить или выключить.

URL управления устройством, доступный из интернета: Базовый адрес + setstate/{value}?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу. {value} ни в коем случае не трогаем, оставляем как есть В поле Поиск значений в фразе выбираем значение Цифры, вкл/выкл.


Правило запроса цвета

Отдает информацию о том, какой последний цвет использовался для рисования.

На версии прошивки 1.12 и ниже может не работать из-за бага

По умолчанию - Черный цвет.

URL управления устройством, доступный из интернета: Базовый адрес + getcolor/?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу.


Правило установки цвета

Принимает информацию от "Кузи" о том, каким цветом залить лампу/матрицу.

URL управления устройством, доступный из интернета: Базовый адрес + setcolor/{r}.{g}.{b}?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу.


Правило запроса яркости

Отдает информацю "Кузе" о текущей яркости гирлянды.

URL управления устройством, доступный из интернета: Базовый адрес + getbrightness/?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу.


Правило установки яркости

Принимает информацю у "Кузи" о текущей яркости гирлянды.

URL управления устройством, доступный из интернета: Базовый адрес + setbrightness/{value}?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу.


Правило запроса текущего эффекта

Отдает информацю "Кузе" о текущем эффекте.

URL управления устройством, доступный из интернета: Базовый адрес + geteffect/?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу.


Правило установки текущего эффекта

Принимает информацю у "Кузи" о текущем эфекте.

URL управления устройством, доступный из интернета: Базовый адрес + seteffect/{value}?secret={Secret_Phrase}, заменяем {Secret_Phrase} на секретную фразу.


Настройка устройства

Создаем RGB-лампу. С помощью цветовой температуры мы будем управлять эффектами. Выставляем в настройках правила следующим образом:

image

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

TODO-лист

  • Do_Output имеет влияние на лог;
  • Запрос цвета работает корректно Оказалось это глюк "Кузи", на следующий день баг пропал сам собой;
  • Переключение эффектов работает корректно всегда;
  • Управление из одного приложения несколькими лампами (долгострой);

About

Прослойка для соединения проекта VVip-68 и "Домовенка Кузи"

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages