[Модуль] Xiaomi Home (xiaomihome)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Husky
Сообщения: 59
Зарегистрирован: Ср мар 06, 2019 8:46 am

[Модуль] Xiaomi Home (xiaomihome)

Сообщение Husky »

Расскажу про настройку срабатывания подсветки шлюза Gateway 2 при обнаружении движения. Не могу понять принцип регулировки цвета.

Подсветка шлюза привязана к объекту класса SRGB. В нем есть свойства color и brightness. Brightness работает вполне корректно и предсказуемо, а вот color нет.

Если устанавливать color прямо в свойстве объекта в панели управления, то шлюз загорается указанным цветом, brightness автоматически устанавливается в этом случае в 100, все хорошо.

А если пробовать установить цвет в коде, например в методе "motionDetected" датчика движения, то начинается что-то непонятное.

Поведение, которое пробовал настраивать:
При срабатывании датчика открытия входной двери в темное время суток включается белый цвет, яркость 100, через 2 мин тухнет.
При срабатывании датчика движения если уровень освещенности < 10 lux, то включать синий цвет, яркость 20 на 1 минуту.

Синий цвет включаю таким кодом:

Код: Выделить всё

setGlobal('GatewayLight.brightness', "20");
setGlobal('GatewayLight.color', "0000FF"); 
Белый соответственно

Код: Выделить всё

setGlobal('GatewayLight.brightness', "100");
setGlobal('GatewayLight.color', "FFFFFF"); 


Проблема в том, что сначала вне зависимости от задания цвета включался все время белый. Пробовал разными способами. В том числе и так:

Код: Выделить всё

callMethod('GatewayLight.setColor',array("color"=>'blue'));
Но иногда цвет все-таки включался нужный. То ли дело в том, что я не устанавливал яркость сразу после выбора цвета, то ли в том, что шлюз включал последний сохраненный цвет(пробовал менять через Mi Home, чтобы подобрать код цвета). Если сделать так:

Код: Выделить всё

setGlobal('GatewayLight.color', "0000FF");
SetTimeOut("lightOffTimer","setGlobal('GatewayLight.brightness', '50');", 15);
,
то работает нормально, сначала загорается синим, потом через 15 сек тускнеет

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

Полный код методов на текущий момент:
Метод motionDetected:

Код: Выделить всё

if (getGlobal('MotionSensor1.lux') < 10 ) {
  setGlobal('GatewayLight.color', "0000FF"); 
  setGlobal('GatewayLight.brightness', "20");
  clearTimeOut("lightOffTimer");
  SetTimeOut("lightOffTimer","setGlobal('GatewayLight.brightness', '0');", 60);
 }
Метод statusUpdated у датчика открытия двери

Код: Выделить всё

if (getGlobal('isDark')=="1" && getGlobal('MainDoor.status')=="0") {
  setGlobal('GatewayLight.color', 'FFFFFF');
  setGlobal('GatewayLight.brightness', '100');
  clearTimeOut("lightOffTimer");
  SetTimeOut("lightOffTimer","setGlobal('GatewayLight.brightness', '0');", 60 * 2);
}
Хочу понять это у всех так или я что-то делаю не так?
bat86
Сообщения: 80
Зарегистрирован: Пн ноя 30, 2015 10:20 pm

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение bat86 »

Такая же срань. Ставлю желтый, загорается белый.
Husky
Сообщения: 59
Зарегистрирован: Ср мар 06, 2019 8:46 am

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение Husky »

Продолжил тесты с установкой яркости и цвета и пришел к такому выводу:
Мне кажется, что в передаваемом пакете шлюзу должны идти одновременно и цвет и яркость. Если отправить только яркость, то он сам подставит какой-то цвет из памяти, а если передать только цвет - то он будет считать, что яркость 100.
В системе MJ в модуле взаимодействия с xiaomi я так понял, что реализована отправка яркости и цвета по отдельности, что и приводит к таким последствиям.
Аватара пользователя
Torch
Сообщения: 13
Зарегистрирован: Чт янв 17, 2019 9:50 am

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение Torch »

Husky писал(а): Вт мар 26, 2019 9:25 pm Продолжил тесты с установкой яркости и цвета и пришел к такому выводу:
Мне кажется, что в передаваемом пакете шлюзу должны идти одновременно и цвет и яркость. Если отправить только яркость, то он сам подставит какой-то цвет из памяти, а если передать только цвет - то он будет считать, что яркость 100.
В системе MJ в модуле взаимодействия с xiaomi я так понял, что реализована отправка яркости и цвета по отдельности, что и приводит к таким последствиям.
если верить вот этому мануалу вы не правы. есть метод set_bright для яркости и set_ct_abx для цветовой температуры
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение nick7zmail »

Во первых тут про шлюз Xiaomi говорят а не про yeelight, во-вторых если уж приглядываться к этому мануалу - у того же метода set_bright можно передать ещё пару параметров помимо яркости. На сяоми шлюз нет такого развёрнутого мануала, но возможно тут так же стоит поступить, и отправлять помимо цвета ещё и яркость в 1 посылке. Ну это так...предположения.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Husky
Сообщения: 59
Зарегистрирован: Ср мар 06, 2019 8:46 am

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение Husky »

Torch писал(а): Ср мар 27, 2019 12:24 pm если верить вот этому мануалу вы не правы. есть метод set_bright для яркости и set_ct_abx для цветовой температуры
Вполне может быть и не прав, я не залезал в формат обмена пока, это вывод только исходя из экспериментов по настройке.

Формат действительно не похож, мне он намного больше нравится того, что есть в MJ относительно регулировки шлюза. Можно плавно менять яркость, что для меня было бы неплохо. Я хотел делать через таймеры и циклы плавное изменение яркости и цвета. Температура вообще не меняется на шлюзе, только цвет и яркость, по крайней мере в модуле. Какие возможности есть в протоколе я не знаю.

Куда копать дальше? Как определить какие есть параметры в сообщениях? снифить пакеты от мобильного приложения Mi Home или там другой протокол?

Пока создал тикет по этому поводу: https://connect.smartliving.ru/ideas/554.html
Аватара пользователя
Torch
Сообщения: 13
Зарегистрирован: Чт янв 17, 2019 9:50 am

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение Torch »

Husky писал(а): Ср мар 27, 2019 1:08 pm Я хотел делать через таймеры и циклы плавное изменение яркости и цвета.
В лампах (не знаю как в шлюзе) есть сцены - задаете начальные параметры, задаете конечные параметры и время перехода из одного состояние в другое. со скриптами по переходу мудрить не нужно.
Husky
Сообщения: 59
Зарегистрирован: Ср мар 06, 2019 8:46 am

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение Husky »

Torch писал(а): Ср мар 27, 2019 2:48 pm
Husky писал(а): Ср мар 27, 2019 1:08 pm Я хотел делать через таймеры и циклы плавное изменение яркости и цвета.
В лампах (не знаю как в шлюзе) есть сцены - задаете начальные параметры, задаете конечные параметры и время перехода из одного состояние в другое. со скриптами по переходу мудрить не нужно.
Где эти сцены находятся? Если в родном приложении, то мы не можем их использовать в MJ, если эта функция не интегрирована в модуль для MJ. А так мне бы очень пригодился данный функционал.
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Контактная информация:

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение skysilver »

Хватить оффтопить. Лампочки yeelight обсуждайте в ветках модулей, через которые они интегрируются в МДМ. Здесь только касательно модуля Xiaomi Home.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
viss1
Сообщения: 28
Зарегистрирован: Вт сен 25, 2018 10:09 pm

Re: [Модуль] Xiaomi Home (xiaomihome)

Сообщение viss1 »

Подскажите! Куда смотреть?. В какой то определенный момент устройства не управляются через шлюз, вижу НЕВЕРНЫЙ КЛЮЧ. Проходит время, все вновь нормально. Как вычислить с чем это связано. Сейчас, опять не работает, в логах вижу такую строку:
Xiaomi data timeout... Try reconnect
15:58:53 0.35985200 {"cmd":"iam","port":"9898","sid":"7c49eb1ce440","model":"gateway","proto_version":"1.1.2","ip":"192.168.0.2"}
Заметил, когда перезагружаю сервер, команды от шлюза уходят на устройства. Проходит секунд 30 после загрузки и опять не работает.
Ответить