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

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

Модератор: immortal

Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm

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

Сообщение Sas »

к чему свойство датчика 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

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

Сообщение woow »

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

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

Сообщение skyrider »

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
Откуда: Киров, Россия
Контактная информация:

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

Сообщение skysilver »

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
Откуда: Екатеринбург

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

Сообщение nick7zmail »

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");
	}
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
skyrider
Сообщения: 138
Зарегистрирован: Ср ноя 22, 2017 11:46 am

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

Сообщение skyrider »

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
Откуда: Киров, Россия
Контактная информация:

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

Сообщение skysilver »

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

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

Сообщение skyrider »

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

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

Сообщение woow »

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
Откуда: Екатеринбург

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

Сообщение nick7zmail »

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

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