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

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

Модератор: immortal

Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

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

Сообщение Sas » Ср ноя 14, 2018 11:24 pm

к чему свойство датчика motion прицеплено в классе?
у меня раньше в к свойству motion был прицеплен метод on_motion где был примерно такой код
$this->setProperty('status',1);
а к свойству no_motion был привязан метод no_motion
где был такой примерно такой код
if($params['NEW_VALUE'] == '120' ){
$this->setProperty('status',0);
}
можно и без no_motion, но придется создавать таймер и двигать его при движении
Теперь я выкинул все статусы движения в Rooms и натравил сцены на их свойства
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

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

Сообщение woow » Чт ноя 15, 2018 1:10 am

Ron писал(а):
Ср ноя 14, 2018 1:58 pm
От куба приходит все реактивно.
Ротейт к примеру прилетает за 1 секунду.
вот такой код получился:

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

if (gg('Liustra.status1')==0 && gg('Liustra.status2')==0){
//usleep(500000);
sleep(1); 
getURL("http://192.168.1.173/control?cmd=GPIO,12,1");
	}
else if (gg('Liustra.status1')==1 && gg('Liustra.status2')==0){
//usleep(500000);
sleep(1);  
getURL("http://192.168.1.173/control?cmd=GPIO,13,1");
	}
else if (gg('Liustra.status1')==1 && gg('Liustra.status2')==1){ 
//usleep(500000);
sleep(1); 
getURL("http://192.168.1.173/control?cmd=GPIO,12,0");
	}
else if (gg('Liustra.status1')==0 && gg('Liustra.status2')==1){
//usleep(500000);
sleep(1); 
getURL("http://192.168.1.173/control?cmd=GPIO,13,0");
	}
с 0,5секунды работает всё ровно хаотично, с 1секундой задержки более менее меньше ложных срабатываний, но все же есть, не знаю пока как будет с тремя лампами. Попробую применить вкл -поворот 180, а выкл--поворот90, моментальный вех вкл/выкл тряска в воздухе.
Raspberry Pi 3B+
skyrider
Сообщения: 138
Зарегистрирован: Ср ноя 22, 2017 11:46 am
Благодарил (а): 35 раз
Поблагодарили: 7 раз

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

Сообщение skyrider » Чт ноя 15, 2018 9:50 am

Sas писал(а):
Ср ноя 14, 2018 11:24 pm
к чему свойство датчика motion прицеплено в классе?
Все датчики заведены через простые устройства, в модуле Xiaomi Home к motion привязано - Связанный объект(XiMotion03)>Связанное св-во(status)>Метод(motionDetected). Больше ничего не менял, т.е. все так как система настроила автоматом через связку модуля Xiaomi Home+Простые устройства и все это прекрасно работало до вчерашнего дня. А теперь XiMotion.status постоянно равно 1, и естественно на сцене висит и не исчезает красный датчика движения, раньше после сработки датчика был отсчет времени ,10 секунд назад, 20 секунд назад, 30 секунд назад, затем красный круг со сцены исчезал.
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Чт ноя 15, 2018 10:18 am

skyrider писал(а):
Чт ноя 15, 2018 9:50 am
в модуле Xiaomi Home к motion привязано - Связанный объект(XiMotion03)>Связанное св-во(status)>Метод(motionDetected). Больше ничего не менял, т.е. все так как система настроила автоматом через связку модуля Xiaomi Home+Простые устройства
Не должно там быть метода. Автоматом только свойство привязывается. Метод - это уже твое творчество. Это первое.
Второе. Видимо, у тебя не запускаются таймеры, которые должны сбрасывать статус ПУ в ноль. Смотри работу таймеров в ИксРей и статус цикла exec. Либо в самих ПУ это время (Время активности (секунд)) стоит не корректное.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Чт ноя 15, 2018 11:17 am

woow писал(а):
Чт ноя 15, 2018 1:10 am
с 0,5секунды работает всё ровно хаотично, с 1секундой задержки более менее меньше ложных срабатываний, но все же есть, не знаю пока как будет с тремя лампами. Попробую применить вкл -поворот 180, а выкл--поворот90, моментальный вех вкл/выкл тряска в воздухе.
Попробуй так.

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

$lamp1=gg('Liustra.status1');
$lamp2=gg('Liustra.status2');
if (!$lamp1 && !$lamp2){
getURL("http://192.168.1.173/control?cmd=GPIO,12,1");
	}
else if ($lamp1 && !$lamp2){ 
getURL("http://192.168.1.173/control?cmd=GPIO,13,1");
	}
else if ($lamp1 && $lamp2){ 
getURL("http://192.168.1.173/control?cmd=GPIO,12,0");
	}
else if (!$lamp1 && $lamp1){
getURL("http://192.168.1.173/control?cmd=GPIO,13,0");
	}
За это сообщение автора nick7zmail поблагодарил:
woow (Пт ноя 16, 2018 10:19 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
skyrider
Сообщения: 138
Зарегистрирован: Ср ноя 22, 2017 11:46 am
Благодарил (а): 35 раз
Поблагодарили: 7 раз

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

Сообщение skyrider » Чт ноя 15, 2018 1:43 pm

skysilver писал(а):
Чт ноя 15, 2018 10:18 am
Не должно там быть метода. Автоматом только свойство привязывается. Метод - это уже твое творчество. Это первое.
Второе. Видимо, у тебя не запускаются таймеры, которые должны сбрасывать статус ПУ в ноль. Смотри работу таймеров в ИксРей и статус цикла exec. Либо в самих ПУ это время (Время активности (секунд)) стоит не корректное.
Удалил датчик движения со сцены, удалил в простых устройствах, в модуле Xiaomi Home к motion добавляю через кнопку Добавить
https://yadi.sk/i/Z8ymxxAJzdaQrw
https://yadi.sk/i/U_AGg6KQ-OYZhg
Вываливаются ошибки:

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

Details
145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
DELETE FROM jobs WHERE TITLE LIKE 'HomeBridgeMode'

Details
145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
INSERT INTO `jobs`(`TITLE`, `COMMANDS`, `RUNTIME`, `EXPIRE`) VALUES('HomeBridgeMode', 'sg(\'HomeBridge.mode\',\'\');', '2018-11-15 13:04:42', '2018-11-15 13:34:42')

Details
145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
INSERT INTO `jobs`(`TITLE`, `COMMANDS`, `RUNTIME`, `EXPIRE`) VALUES('HomeBridgeMode', 'sg(\'HomeBridge.mode\',\'\');', '2018-11-15 13:04:42', '2018-11-15 13:34:42')
В итоге датчик привязывается автоматом, но мочему-то вместе с методом motionDetected
https://yadi.sk/i/YvfXNRqoqT5Nnw
В xray закладка timers посмотрел, там вот такая ошибка, по тексту вижу что что то посыпалось, но что с этим делать незнаю

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

Details
145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
SELECT jobs.* FROM jobs WHERE EXPIRED!=1 AND PROCESSED!=1 AND 1 ORDER BY jobs.RUNTIME
В простых устройствах Время активности (секунд) ничего не выставлено, ставлю 30, опять вываливается ошибка:

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

Details
145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
DELETE FROM jobs WHERE TITLE LIKE 'HomeBridgeMode'


Details
145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
INSERT INTO `jobs`(`TITLE`, `COMMANDS`, `RUNTIME`, `EXPIRE`) VALUES('HomeBridgeMode', 'sg(\'HomeBridge.mode\',\'\');', '2018-11-15 13:22:26', '2018-11-15 13:52:26')
Значение 30 секунд в итоге выставляется но это не помогает.
Модулем MQTT(HomeBridge) не пользуюсь вообще, может в нем дело и его нужно удалить?
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Чт ноя 15, 2018 2:07 pm

Чини таблицу. Написано же 145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
Из-за этого у тебя вообще никакие таймеры не работают.
За это сообщение автора skysilver поблагодарил:
skyrider (Чт ноя 15, 2018 3:33 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
skyrider
Сообщения: 138
Зарегистрирован: Ср ноя 22, 2017 11:46 am
Благодарил (а): 35 раз
Поблагодарили: 7 раз

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

Сообщение skyrider » Чт ноя 15, 2018 3:33 pm

skysilver писал(а):
Чт ноя 15, 2018 2:07 pm
Чини таблицу. Написано же 145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
Из-за этого у тебя вообще никакие таймеры не работают.
Спасибо, понял, буду пробовать.

UPD. Через несколько часов.
Починил таблицу jobs, таймеры запустились, датчики движения заработали корректно, уважаемый skysilver оказался прав, благодарю.
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

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

Сообщение woow » Пт ноя 16, 2018 10:21 am

nick7zmail писал(а):
Чт ноя 15, 2018 11:17 am
Попробуй так.

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

$lamp1=gg('Liustra.status1');
$lamp2=gg('Liustra.status2');
if (!$lamp1 && !$lamp2){
getURL("http://192.168.1.173/control?cmd=GPIO,12,1");
	}
else if ($lamp1 && !$lamp2){ 
getURL("http://192.168.1.173/control?cmd=GPIO,13,1");
	}
else if ($lamp1 && $lamp2){ 
getURL("http://192.168.1.173/control?cmd=GPIO,12,0");
	}
else if (!$lamp1 && $lamp1){
getURL("http://192.168.1.173/control?cmd=GPIO,13,0");
	}
Вашу переработку моего кода я так понимаю , как придать иную форму, объект-свойство через переменную, о в сущности не чего не изменилось хаос присутствует. Всё таки я считаю нужны "тормоза" sleep так более стабильно работает, но в принципе всё ровно не рискну ставить в люстру. Нужен какой то более утонченный код, что в промежутке времени (напр.1 секунды) обрабатывается поступившая команда и потом проверяется изменилось ли что то и только потом ждёт следующую, но иногда сигнал теряется и в этом случае опять проблема всё повиснет, тогда нужен какой то таймер чтобы всё становилось в изначальное состояние после 1,5 секунды. Ну я это так примитивно наверное рассуждаю. А так скорей всего куб не предназначен ка выполнение таких команд, одно действие одна однотипная команда.
Raspberry Pi 3B+
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Пт ноя 16, 2018 10:56 am

нет...разница не только в "форме". в вашем случае переменные забирались каждый раз. А это значит что могло произойти так, что 1 условие выполнилось, выполнилась команда, а потом свойства снова забираются, и оно может прилететь уже измененным, и выполнится вторая конструкция (идеологически при elseif так быть не должно...но вдруг)...

В остальном всё ок. Никакой хаотичности быть не должно, если всё правильно связано. Смотрите не выполняется ли часом этот метод при обновлении свойства, когда значение прилетает с лампы.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить