[Модуль] Xiaomi Home (xiaomihome)
Модератор: immortal
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Модуль поддержки Xiaomi Smart Home
Нет. Номер порта верный. Все в соответствии с апи сяоми и акара.
Какая версии прошивок на всех трёх шлюзах?
Какая версии прошивок на всех трёх шлюзах?
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
Re: Модуль поддержки Xiaomi Smart Home
Добрый день гуру majordomo!
Собственно у меня несколько вопросов по датчику движения, не обессудьте если что не правильно говорю или пишу, т.к. всю систему изучаю только месяц и это мой первый вопрос на форуме, а в программировании вообще полный нуль(((
Собственно поставил себе цель чтоб с утра по датчику движения у меня отрабатывался такой сценарий (1. Приветствие >> 2. Сообщает о погоде на улице >> 3. Включает телевизор новости) ровно один раз в определенное время с ..:.. и до ..:.. :
Но т.к. датчик движения постоянно при движении шлет 1 то была проблема в том что он в это интервал времени постоянно отрабатывал это сценарий пока время не подходило к концу. Вроде как победил эту ситуации и реализовал таким образом (если что неправильно поправьте все писал в блокли)
все сделал Через цикл до условия пока у определенного обьекта не поменяется статус ну и соответственно вручную это статус и сменил.....
создал отдельный обьект у которого после исполнения цикла меняется статус ну и напихал таймеров....
Собственно сам код
while (!(getGlobal('STOPCICKLE'.'.'.'status') == 1)) {
for ($count = 0; $count < 1; $count++) {
if ($this->getProperty('status') == 1) {
if (timeBetween('17:11', '17:16')) {
say('Доброе утро !', 2);
say('Коротко о погоде на улице', 2);
runScript('Pogoda na yulice inet');
say('Включаю для вас новости', 2);
setTimeOut('VklSony', " callMethod('Button01'.'.'.'pressed');", (int)('19'));
setTimeOut('chanel', " getURL('http://127.0.0.1:80/ajax/sonytv.html?id=1&key=Num7', 0);", (int)('25'));
}
setGlobal('STOPCICKLE'.'.'.'status', '1');
}
setTimeOut('STPcik', " setGlobal('STOPCICKLE'.'.'.'status', '0');", (int)('300'));
}
}
Вопросы:
1.Насколько так правильно?
2. Этот код я впихнул в метод statusUpdated датчика движения, правильно ли это или его над писать в motionDetected
3. В дальнейшем еще планирую несколько сценариев на это же датчик их писать туда же куда будет ответ на 2ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
Собственно у меня несколько вопросов по датчику движения, не обессудьте если что не правильно говорю или пишу, т.к. всю систему изучаю только месяц и это мой первый вопрос на форуме, а в программировании вообще полный нуль(((
Собственно поставил себе цель чтоб с утра по датчику движения у меня отрабатывался такой сценарий (1. Приветствие >> 2. Сообщает о погоде на улице >> 3. Включает телевизор новости) ровно один раз в определенное время с ..:.. и до ..:.. :
Но т.к. датчик движения постоянно при движении шлет 1 то была проблема в том что он в это интервал времени постоянно отрабатывал это сценарий пока время не подходило к концу. Вроде как победил эту ситуации и реализовал таким образом (если что неправильно поправьте все писал в блокли)
все сделал Через цикл до условия пока у определенного обьекта не поменяется статус ну и соответственно вручную это статус и сменил.....
создал отдельный обьект у которого после исполнения цикла меняется статус ну и напихал таймеров....
Собственно сам код
while (!(getGlobal('STOPCICKLE'.'.'.'status') == 1)) {
for ($count = 0; $count < 1; $count++) {
if ($this->getProperty('status') == 1) {
if (timeBetween('17:11', '17:16')) {
say('Доброе утро !', 2);
say('Коротко о погоде на улице', 2);
runScript('Pogoda na yulice inet');
say('Включаю для вас новости', 2);
setTimeOut('VklSony', " callMethod('Button01'.'.'.'pressed');", (int)('19'));
setTimeOut('chanel', " getURL('http://127.0.0.1:80/ajax/sonytv.html?id=1&key=Num7', 0);", (int)('25'));
}
setGlobal('STOPCICKLE'.'.'.'status', '1');
}
setTimeOut('STPcik', " setGlobal('STOPCICKLE'.'.'.'status', '0');", (int)('300'));
}
}
Вопросы:
1.Насколько так правильно?
2. Этот код я впихнул в метод statusUpdated датчика движения, правильно ли это или его над писать в motionDetected
3. В дальнейшем еще планирую несколько сценариев на это же датчик их писать туда же куда будет ответ на 2ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Модуль поддержки Xiaomi Smart Home
А чего бы просто не завести глобальную переменную Greeting (например) и без всяких циклов проверять чему она равна. Если 0 и условие наступило, то выполняем все наши действия и записываем в переменную 1. А потом, в сценарии OnNewHour перед нужным периодом времени переменную сбрасываем.Degu писал(а): ↑Вт окт 02, 2018 5:54 pmДобрый день гуру majordomo!
Собственно у меня несколько вопросов по датчику движения, не обессудьте если что не правильно говорю или пишу, т.к. всю систему изучаю только месяц и это мой первый вопрос на форуме, а в программировании вообще полный нуль(((
Собственно поставил себе цель чтоб с утра по датчику движения у меня отрабатывался такой сценарий (1. Приветствие >> 2. Сообщает о погоде на улице >> 3. Включает телевизор новости) ровно один раз в определенное время с ..:.. и до ..:.. :
Но т.к. датчик движения постоянно при движении шлет 1 то была проблема в том что он в это интервал времени постоянно отрабатывал это сценарий пока время не подходило к концу. Вроде как победил эту ситуации и реализовал таким образом (если что неправильно поправьте все писал в блокли)
все сделал Через цикл до условия пока у определенного обьекта не поменяется статус ну и соответственно вручную это статус и сменил.....
создал отдельный обьект у которого после исполнения цикла меняется статус ну и напихал таймеров....
Собственно сам код
while (!(getGlobal('STOPCICKLE'.'.'.'status') == 1)) {
for ($count = 0; $count < 1; $count++) {
if ($this->getProperty('status') == 1) {
if (timeBetween('17:11', '17:16')) {
say('Доброе утро !', 2);
say('Коротко о погоде на улице', 2);
runScript('Pogoda na yulice inet');
say('Включаю для вас новости', 2);
setTimeOut('VklSony', " callMethod('Button01'.'.'.'pressed');", (int)('19'));
setTimeOut('chanel', " getURL('http://127.0.0.1:80/ajax/sonytv.html?id=1&key=Num7', 0);", (int)('25'));
}
setGlobal('STOPCICKLE'.'.'.'status', '1');
}
setTimeOut('STPcik', " setGlobal('STOPCICKLE'.'.'.'status', '0');", (int)('300'));
}
}
Вопросы:
1.Насколько так правильно?
2. Этот код я впихнул в метод statusUpdated датчика движения, правильно ли это или его над писать в motionDetected
3. В дальнейшем еще планирую несколько сценариев на это же датчик их писать туда же куда будет ответ на 2ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
И конечно код надо писать в motionDetected, отпадает необходимость проверять статус на 1.
И такой странный вопрос - а что, утро начинается в 17:11?!
Re: Модуль поддержки Xiaomi Smart Home
Поэтому и спрашивал как лучше что и куда... Сам то всего навсего с majordomo разбираюсь ровно месяц вот и не понятно пока многое... Да и с кодом не дружу((А чего бы просто не завести глобальную переменную Greeting (например) и без всяких циклов проверять чему она равна. Если 0 и условие наступило, то выполняем все наши действия и записываем в переменную 1. А потом, в сценарии OnNewHour перед нужным периодом времени переменную сбрасываем.
И конечно код надо писать в motionDetected, отпадает необходимость проверять статус на 1.
И такой странный вопрос - а что, утро начинается в 17:11?!
Время 17.11 это указано когда тест делал на отработку.
А так спсб за совет будем думать.
-
- Сообщения: 395
- Зарегистрирован: Вт май 31, 2016 6:56 pm
- Откуда: Россия Карелия Петрозаводск
- Благодарил (а): 95 раз
- Поблагодарили: 57 раз
Re: Модуль поддержки Xiaomi Smart Home
Продолжение наблюдений с тормозами и пропусками.
1 В логе модуля замечал что сработка датчика не зафиксирована, но в логе после пишет что последнее срабатывание датчки было вроде 180 сек назад.
2 Датчики нормально срабатывают если часто ходить по квартире.
3 Если датчики долго не срабатывали, например ночью, то сработка датчика мд может не фиксировать,
Предположения , может у меня распери входит в режим пониженного энергопотребления когда долго нет активности и пока просыпается не успевает обработать события у датчиков?
Как посмотреть настройки энергопотребления и их настроить
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
-
- Сообщения: 11
- Зарегистрирован: Пн сен 10, 2018 12:14 pm
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Re: Модуль поддержки Xiaomi Smart Home
Здравствуйте.
Уже несколько дней мучаюсь с подключением шлюза.
Видимо сам не осилю. На данный момент докопался о того что, как мне кажется, проблема в шлюзе, при запросе командой nmap результат таков что все порты закрыты. Режим разработчика открыт. Уже не один раз переустанавливал программу на мобиле, отключал и заново подключал шлюз, ничего не помогает, все порты закрыты, в локальную сеть шлюз вообще ничего не транслирует,судя по соединениям открытым на роутере. Сервер на Распберри 3б+, Шлюз третьей версии, роутер Зиксель Кинетик Юльтра. Прошу помощи, я в отчаянии, уже много времени убил, но не сдвинулся в сторону понимания проблемы совсем.
Уже несколько дней мучаюсь с подключением шлюза.
Видимо сам не осилю. На данный момент докопался о того что, как мне кажется, проблема в шлюзе, при запросе командой nmap результат таков что все порты закрыты. Режим разработчика открыт. Уже не один раз переустанавливал программу на мобиле, отключал и заново подключал шлюз, ничего не помогает, все порты закрыты, в локальную сеть шлюз вообще ничего не транслирует,судя по соединениям открытым на роутере. Сервер на Распберри 3б+, Шлюз третьей версии, роутер Зиксель Кинетик Юльтра. Прошу помощи, я в отчаянии, уже много времени убил, но не сдвинулся в сторону понимания проблемы совсем.
-
- Сообщения: 2079
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Модуль поддержки Xiaomi Smart Home
статус можно и передавать в логикактионс, в пу поправить, на днях в тлг спрашивал https://t.me/MajorDoMoRu/73438fandaymon писал(а): ↑Вт окт 02, 2018 8:58 pmА чего бы просто не завести глобальную переменную Greeting (например) и без всяких циклов проверять чему она равна. Если 0 и условие наступило, то выполняем все наши действия и записываем в переменную 1. А потом, в сценарии OnNewHour перед нужным периодом времени переменную сбрасываем.Degu писал(а): ↑Вт окт 02, 2018 5:54 pmДобрый день гуру majordomo!
Собственно у меня несколько вопросов по датчику движения,
Вопросы:
1.Насколько так правильно?
2. Этот код я впихнул в метод statusUpdated датчика движения, правильно ли это или его над писать в motionDetected
3. В дальнейшем еще планирую несколько сценариев на это же датчик их писать туда же куда будет ответ на 2ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
И конечно код надо писать в motionDetected, отпадает необходимость проверять статус на 1.
И такой странный вопрос - а что, утро начинается в 17:11?!
а такое у меня в комнатах в оннауактивити через registerEvent https://connect.smartliving.ru/profile/ ... og163.html
- Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
-
- Сообщения: 53
- Зарегистрирован: Вт июл 24, 2018 12:01 pm
- Благодарил (а): 6 раз
- Поблагодарили: 1 раз
Re: Модуль поддержки Xiaomi Smart Home
Привет всем. Вот такая интересная ерунда происходит. Включение выключение кондика через шайбу, пылесос вкл.выкл. происходило довольно быстро.1-4 сек. задержки. Сейчас 10 попыток и только 3 достучались до пылесоса. с кондеем по лучше 6 из 10 запросов.
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Модуль поддержки Xiaomi Smart Home
Оффтоп. По миИО другая тема.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 16
- Зарегистрирован: Чт окт 11, 2018 12:33 am
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Re: Модуль поддержки Xiaomi Smart Home
Здравствуйте, кто-нибудь может помочь с подключением gateway 2?
В модуле, как не извращайся висит "нет данных"
в Домотикз подключается без проблем
upd:
Спустя 5 дней, заработало само
В модуле, как не извращайся висит "нет данных"
в Домотикз подключается без проблем
upd:
Спустя 5 дней, заработало само
Последний раз редактировалось Tort :P Чт окт 11, 2018 7:36 pm, всего редактировалось 1 раз.