Прослойка для соединения проекта VVip-68 и "Домовенка Кузи"
- Установка
- Windows
- Linux
- Настройка программы
- Настройка "Кузи"
- TODO лист
Проект выходит для 2 самых популярных платформ - Windows и Linux (Debian based). Скачать архив с программой можно тут
Программа тестировалась на Windows 10 21H2.
- Для работы потребуется .NET 5.0 ;
- Скачайте и распакуйте архив
AliceMQTTHandler-win-x64.zip
в удобном для Вас месте; - Запустите
AliceMQTTHandler.exe
. Она сообщит об отсутствии файла конфигурации; - Настройте программу;
- Скачайте архив
AliceMQTTHandler-linux-x64.zip
; - Распакуйте архив в удобном для Вас месте (
unzip -a AliceMQTTHandler-linux-x64.zip
); - Запустите программу от имени администратора (
sudo
). Она сообщит об отсутствии файла конфигурации; - Настройте программу;
Файл настройки представляет собой обычный 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"
}
Разберем более подробно, для чего служит каждый параметр.
Определяет, будет ли программа писать в станадартный вывод общую информацию. true
если вывод необходим, false
если вывод не нужен. Информация об ошибках и предупреждениях выводится в любом случае.
Порт, который будет слушать программа и который должен быть доступен извне. На одном ПК можно запустить несколько копий программы на разных портах. Они не будут мешать друг другу. В качестве значения принимает число, отличное от нуля. Желательно не использовать стандартные значиея, типа 21, 22, 88, 443 и т.д..
Адрес, по которому программа будет принимать запросы на управление. Полный адрес для управления выглядит следующим образом http://{Ваш IP}:{Web_Port}{Web_Path_Prefix}
. Принимает в качестве значения строку, начинающуюся с /
.
Адрес MQTT сервера, к которому подключена Ваша лампа/матрица. Если вы запускаете программу на том же ПК, где стоит MQTT-сервер можно вписать localhost
. Принимает в качестве значения IP-адрес сервера или его WS:// адрес.
Порт MQTT сервера. Зачастую можно оставить по умолчанию. В качестве значения принимает ненулевое число
Путь (префикс) вашей лампы на MQTT-сервере. Должен совпадать с префиксом MQTT из настроек матрицы.
Имя пользователя для аутентификации на MQTT-сервере. По умолчанию null
. При таком значении авторизация по логину-паролю отключена. Значение - строка либо null
.
Пароль для аутентификации на MQTT-сервере. По умолчанию null
. При таком значении авторизация по логину-паролю отключена. Значение - строка либо null
.
Секретная комбинация, без которой программа не будет воспринимать команды от "Кузи" и через GET
запросы. Можно оставить значение по умолчанию (значение у каждого свое, генерируется при первом запуске) либо придумать свое. Запрещается использовать символы, отличные от букв анлийского алфавита и цифр.
Для начала нам понадобится Ваш IP-адрес или адрес Вашего домена, если он есть.
Вам необходим адрес, к которому мы будем добавлять различные суфффиксы. Адрес получается вида http://{IP}:{Web_Port}/{Web_Path_Prefix}/
. Используя данные из примера выше получится следующее: http://142.15.224.163:88/smarthome/lamp1/
. Назовем получивщуюся конструкицю Базовым адресом
.
Для управления лампой/матрицей нам потребуется создать 8 HTTP правил и 1 RGB-лампу в приложении.
Отдает "Кузе" информацию о том, ключена лампа или нет.
В URL управления устройством, доступный из интернета
вписываем базовый адрес и к нему сзади приписываем getstate/?secret={Secret_Phrase}
, где {Secret_Phrase}
нужно заменить на вашу секретную фразу.
Обязательно ставим галочку Ждать ответ от сервера
На всех правилах по запросу информации обязательно ставить галочку Ждать ответ от сервера
. Без нее Ваша лампа будет отключаться спустя 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-лампу. С помощью цветовой температуры мы будем управлять эффектами. Выставляем в настройках правила следующим образом:
Если попросить Алису установить цвет, то вся лампа/матрица будет залита нужным цветом. Для возврата в демо режим нужно попросить ее сделать цвет потеплее или похолоднее. В таком случае будет включен следующий режим. Включение/выключение и управление яркостью работают так, как ожидается, тут сюрпризов нет.
- Do_Output имеет влияние на лог;
-
Запрос цвета работает корректноОказалось это глюк "Кузи", на следующий день баг пропал сам собой; - Переключение эффектов работает корректно всегда;
- Управление из одного приложения несколькими лампами (долгострой);