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

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

Модератор: immortal

Husky
Сообщения: 59
Зарегистрирован: Ср мар 06, 2019 8:46 am
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Husky » Вт мар 26, 2019 9:09 am

Расскажу про настройку срабатывания подсветки шлюза 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
Благодарил (а): 25 раз
Поблагодарили: 6 раз

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

Сообщение bat86 » Вт мар 26, 2019 12:09 pm

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

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

Сообщение Husky » Вт мар 26, 2019 9:25 pm

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

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

Сообщение Torch » Ср мар 27, 2019 12:24 pm

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

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

Сообщение nick7zmail » Ср мар 27, 2019 12:36 pm

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

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

Сообщение Husky » Ср мар 27, 2019 1:08 pm

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
Благодарил (а): 2 раза
Поблагодарили: 0

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

Сообщение Torch » Ср мар 27, 2019 2:48 pm

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

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

Сообщение Husky » Ср мар 27, 2019 3:54 pm

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

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

Сообщение skysilver » Ср мар 27, 2019 4:17 pm

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

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

Сообщение viss1 » Ср мар 27, 2019 4:33 pm

Подскажите! Куда смотреть?. В какой то определенный момент устройства не управляются через шлюз, вижу НЕВЕРНЫЙ КЛЮЧ. Проходит время, все вновь нормально. Как вычислить с чем это связано. Сейчас, опять не работает, в логах вижу такую строку:
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 после загрузки и опять не работает.
Ответить