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

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

Модератор: immortal

skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Модуль поддержки Xiaomi Smart Home

Сообщение skysilver » Пн окт 01, 2018 10:31 pm

Нет. Номер порта верный. Все в соответствии с апи сяоми и акара.

Какая версии прошивок на всех трёх шлюзах?
За это сообщение автора skysilver поблагодарил:
Cresh (Вт окт 09, 2018 10:58 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Degu
Сообщения: 6
Зарегистрирован: Пн авг 20, 2018 11:11 pm
Благодарил (а): 3 раза
Поблагодарили: 0

Re: Модуль поддержки Xiaomi Smart Home

Сообщение 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ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Модуль поддержки Xiaomi Smart Home

Сообщение fandaymon » Вт окт 02, 2018 8:58 pm

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ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
А чего бы просто не завести глобальную переменную Greeting (например) и без всяких циклов проверять чему она равна. Если 0 и условие наступило, то выполняем все наши действия и записываем в переменную 1. А потом, в сценарии OnNewHour перед нужным периодом времени переменную сбрасываем.
И конечно код надо писать в motionDetected, отпадает необходимость проверять статус на 1.
И такой странный вопрос - а что, утро начинается в 17:11?!
Degu
Сообщения: 6
Зарегистрирован: Пн авг 20, 2018 11:11 pm
Благодарил (а): 3 раза
Поблагодарили: 0

Re: Модуль поддержки Xiaomi Smart Home

Сообщение Degu » Вт окт 02, 2018 9:23 pm

А чего бы просто не завести глобальную переменную Greeting (например) и без всяких циклов проверять чему она равна. Если 0 и условие наступило, то выполняем все наши действия и записываем в переменную 1. А потом, в сценарии OnNewHour перед нужным периодом времени переменную сбрасываем.
И конечно код надо писать в motionDetected, отпадает необходимость проверять статус на 1.
И такой странный вопрос - а что, утро начинается в 17:11?!
Поэтому и спрашивал как лучше что и куда... Сам то всего навсего с majordomo разбираюсь ровно месяц вот и не понятно пока многое... Да и с кодом не дружу((
Время 17.11 это указано когда тест делал на отработку.
А так спсб за совет будем думать.
VladPTZ
Сообщения: 395
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 95 раз
Поблагодарили: 57 раз

Re: Модуль поддержки Xiaomi Smart Home

Сообщение VladPTZ » Ср окт 03, 2018 8:17 pm

VladPTZ писал(а):
Вс сен 16, 2018 12:36 am
Датчики движения часто не срабатывают, если посмотреть в приложение xiaomi но сработка в логе есть , почему то мд стал часто пропускать сработки датчика.
Продолжение наблюдений с тормозами и пропусками.
1 В логе модуля замечал что сработка датчика не зафиксирована, но в логе после пишет что последнее срабатывание датчки было вроде 180 сек назад.
2 Датчики нормально срабатывают если часто ходить по квартире.
3 Если датчики долго не срабатывали, например ночью, то сработка датчика мд может не фиксировать,
Предположения , может у меня распери входит в режим пониженного энергопотребления когда долго нет активности и пока просыпается не успевает обработать события у датчиков?

Как посмотреть настройки энергопотребления и их настроить
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
skorolenko
Сообщения: 11
Зарегистрирован: Пн сен 10, 2018 12:14 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Модуль поддержки Xiaomi Smart Home

Сообщение skorolenko » Сб окт 06, 2018 8:39 pm

Здравствуйте.
Уже несколько дней мучаюсь с подключением шлюза.
Видимо сам не осилю. На данный момент докопался о того что, как мне кажется, проблема в шлюзе, при запросе командой nmap результат таков что все порты закрыты. Режим разработчика открыт. Уже не один раз переустанавливал программу на мобиле, отключал и заново подключал шлюз, ничего не помогает, все порты закрыты, в локальную сеть шлюз вообще ничего не транслирует,судя по соединениям открытым на роутере. Сервер на Распберри 3б+, Шлюз третьей версии, роутер Зиксель Кинетик Юльтра. Прошу помощи, я в отчаянии, уже много времени убил, но не сдвинулся в сторону понимания проблемы совсем.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Модуль поддержки Xiaomi Smart Home

Сообщение Logrus » Вс окт 07, 2018 3:02 am

fandaymon писал(а):
Вт окт 02, 2018 8:58 pm
Degu писал(а):
Вт окт 02, 2018 5:54 pm
Добрый день гуру majordomo!
Собственно у меня несколько вопросов по датчику движения,

Вопросы:
1.Насколько так правильно?
2. Этот код я впихнул в метод statusUpdated датчика движения, правильно ли это или его над писать в motionDetected
3. В дальнейшем еще планирую несколько сценариев на это же датчик их писать туда же куда будет ответ на 2ой вопрос? Как отсекать один сценарий от другого в методе? (с помощью \\ )? Чтоб они вместе не срабатывали
А чего бы просто не завести глобальную переменную Greeting (например) и без всяких циклов проверять чему она равна. Если 0 и условие наступило, то выполняем все наши действия и записываем в переменную 1. А потом, в сценарии OnNewHour перед нужным периодом времени переменную сбрасываем.
И конечно код надо писать в motionDetected, отпадает необходимость проверять статус на 1.
И такой странный вопрос - а что, утро начинается в 17:11?!
статус можно и передавать в логикактионс, в пу поправить, на днях в тлг спрашивал https://t.me/MajorDoMoRu/73438
а такое у меня в комнатах в оннауактивити через registerEvent https://connect.smartliving.ru/profile/ ... og163.html
За это сообщение автора Logrus поблагодарил:
Degu (Пн окт 08, 2018 4:29 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
dksobol
Сообщения: 53
Зарегистрирован: Вт июл 24, 2018 12:01 pm
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: Модуль поддержки Xiaomi Smart Home

Сообщение dksobol » Пн окт 08, 2018 3:52 pm

Привет всем. Вот такая интересная ерунда происходит. Включение выключение кондика через шайбу, пылесос вкл.выкл. происходило довольно быстро.1-4 сек. задержки. Сейчас 10 попыток и только 3 достучались до пылесоса. с кондеем по лучше 6 из 10 запросов.
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Модуль поддержки Xiaomi Smart Home

Сообщение skysilver » Пн окт 08, 2018 4:16 pm

dksobol писал(а):
Пн окт 08, 2018 3:52 pm
Привет всем. Вот такая интересная ерунда происходит. Включение выключение кондика через шайбу, пылесос вкл.выкл. происходило довольно быстро.1-4 сек. задержки. Сейчас 10 попыток и только 3 достучались до пылесоса. с кондеем по лучше 6 из 10 запросов.
Оффтоп. По миИО другая тема.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Tort :P
Сообщения: 16
Зарегистрирован: Чт окт 11, 2018 12:33 am
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Модуль поддержки Xiaomi Smart Home

Сообщение Tort :P » Чт окт 11, 2018 12:35 am

Здравствуйте, кто-нибудь может помочь с подключением gateway 2?
В модуле, как не извращайся висит "нет данных"
в Домотикз подключается без проблем

upd:
Спустя 5 дней, заработало само :shock:
Последний раз редактировалось Tort :P Чт окт 11, 2018 7:36 pm, всего редактировалось 1 раз.
Ответить