[Модуль] Xiaomi Home (xiaomihome)
Модератор: immortal
-
- Сообщения: 207
- Зарегистрирован: Вт июл 12, 2016 6:16 pm
- Благодарил (а): 2 раза
- Поблагодарили: 14 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
к чему свойство датчика motion прицеплено в классе?
у меня раньше в к свойству motion был прицеплен метод on_motion где был примерно такой код
$this->setProperty('status',1);
а к свойству no_motion был привязан метод no_motion
где был такой примерно такой код
if($params['NEW_VALUE'] == '120' ){
$this->setProperty('status',0);
}
можно и без no_motion, но придется создавать таймер и двигать его при движении
Теперь я выкинул все статусы движения в Rooms и натравил сцены на их свойства
у меня раньше в к свойству 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)
вот такой код получился:
Код: Выделить всё
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");
}
Raspberry Pi 3B+
-
- Сообщения: 138
- Зарегистрирован: Ср ноя 22, 2017 11:46 am
- Благодарил (а): 35 раз
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
Все датчики заведены через простые устройства, в модуле Xiaomi Home к motion привязано - Связанный объект(XiMotion03)>Связанное св-во(status)>Метод(motionDetected). Больше ничего не менял, т.е. все так как система настроила автоматом через связку модуля Xiaomi Home+Простые устройства и все это прекрасно работало до вчерашнего дня. А теперь XiMotion.status постоянно равно 1, и естественно на сцене висит и не исчезает красный датчика движения, раньше после сработки датчика был отсчет времени ,10 секунд назад, 20 секунд назад, 30 секунд назад, затем красный круг со сцены исчезал.
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: [Модуль] Xiaomi Home (xiaomihome)
Не должно там быть метода. Автоматом только свойство привязывается. Метод - это уже твое творчество. Это первое.
Второе. Видимо, у тебя не запускаются таймеры, которые должны сбрасывать статус ПУ в ноль. Смотри работу таймеров в ИксРей и статус цикла exec. Либо в самих ПУ это время (Время активности (секунд)) стоит не корректное.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
Попробуй так.
Код: Выделить всё
$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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 138
- Зарегистрирован: Ср ноя 22, 2017 11:46 am
- Благодарил (а): 35 раз
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
Удалил датчик движения со сцены, удалил в простых устройствах, в модуле Xiaomi Home к motion добавляю через кнопку Добавитьskysilver писал(а): ↑Чт ноя 15, 2018 10:18 amНе должно там быть метода. Автоматом только свойство привязывается. Метод - это уже твое творчество. Это первое.
Второе. Видимо, у тебя не запускаются таймеры, которые должны сбрасывать статус ПУ в ноль. Смотри работу таймеров в ИксРей и статус цикла exec. Либо в самих ПУ это время (Время активности (секунд)) стоит не корректное.
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')
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
Код: Выделить всё
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')
Модулем MQTT(HomeBridge) не пользуюсь вообще, может в нем дело и его нужно удалить?
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: [Модуль] Xiaomi Home (xiaomihome)
Чини таблицу. Написано же 145: Table '.\db_terminal\jobs' is marked as crashed and should be repaired
Из-за этого у тебя вообще никакие таймеры не работают.
Из-за этого у тебя вообще никакие таймеры не работают.
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 138
- Зарегистрирован: Ср ноя 22, 2017 11:46 am
- Благодарил (а): 35 раз
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
Спасибо, понял, буду пробовать.
UPD. Через несколько часов.
Починил таблицу jobs, таймеры запустились, датчики движения заработали корректно, уважаемый skysilver оказался прав, благодарю.
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
Вашу переработку моего кода я так понимаю , как придать иную форму, объект-свойство через переменную, о в сущности не чего не изменилось хаос присутствует. Всё таки я считаю нужны "тормоза" sleep так более стабильно работает, но в принципе всё ровно не рискну ставить в люстру. Нужен какой то более утонченный код, что в промежутке времени (напр.1 секунды) обрабатывается поступившая команда и потом проверяется изменилось ли что то и только потом ждёт следующую, но иногда сигнал теряется и в этом случае опять проблема всё повиснет, тогда нужен какой то таймер чтобы всё становилось в изначальное состояние после 1,5 секунды. Ну я это так примитивно наверное рассуждаю. А так скорей всего куб не предназначен ка выполнение таких команд, одно действие одна однотипная команда.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"); }
Raspberry Pi 3B+
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: [Модуль] Xiaomi Home (xiaomihome)
нет...разница не только в "форме". в вашем случае переменные забирались каждый раз. А это значит что могло произойти так, что 1 условие выполнилось, выполнилась команда, а потом свойства снова забираются, и оно может прилететь уже измененным, и выполнится вторая конструкция (идеологически при elseif так быть не должно...но вдруг)...
В остальном всё ок. Никакой хаотичности быть не должно, если всё правильно связано. Смотрите не выполняется ли часом этот метод при обновлении свойства, когда значение прилетает с лампы.
В остальном всё ок. Никакой хаотичности быть не должно, если всё правильно связано. Смотрите не выполняется ли часом этот метод при обновлении свойства, когда значение прилетает с лампы.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<