Страница 1 из 1
Датчик не обновляется.
Добавлено: Чт май 02, 2019 10:15 pm
chaoba
Majordomo. Raspbian. Датчик утечки газа Xiaomi.
Перодически статус меняется на желтый. Датчик утечки газа не обновляется.
Нажму на кнопку на датчике, приходит сигнал от датчика, сатус меняется на зеленый.
Что с этим можно сделать?
Re: Датчик не обновляется.
Добавлено: Чт май 02, 2019 10:29 pm
Logrus
у меня сяоми батарейные девайся, особенно датчики протечки, дыма, газа, которые редко обновляют свое состояния
а проверять их работоспособность только по одному параметру величина заряда батарейки не надежно
проверяются еще через heartbeat который и формирует alive
Re: Датчик не обновляется.
Добавлено: Сб май 04, 2019 9:01 am
chaoba
Logrus писал(а): ↑Чт май 02, 2019 10:29 pm
проверяются еще через heartbeat который и формирует alive
Можно пример?
Re: Датчик не обновляется.
Добавлено: Сб май 04, 2019 9:26 pm
chaoba
В принципе, как я понимаю, проблем особо нет. При появлении газа, датчик срабатывает, орет, отправляет сигнал в Majordomo, статус меняется на зеленый, сценарий отрабатывается. Только портит картинку желтый статус.
Re: Датчик не обновляется.
Добавлено: Сб май 04, 2019 9:32 pm
Logrus

- 1.PNG (10.02 КБ) 4355 просмотров
у всех сяоми девайсах есть две метрики (даже у которых нет батарейки, но
это отдельная тема)
сенсор - шлюз - модуль обновляет их значение раз в (примерно) 50 мин. (в свойство,
к сожалению метод не вызывается без изменения значения)

- 2.PNG (27.84 КБ) 4355 просмотров
к свойству можно привязать метод (который будет вызываться при каждой записи в данное свойство
в методе heartbeat
Код: Выделить всё
$this->setProperty('heartbeat', time());
if ($this->getProperty('alive') == 0) {
$this->setProperty('alive', 1);
}
вот мы уже имеем три свойства: battery_level в процентах емкость батарейки, heartbeat время последнего сердцебиения в формате линукстайм, alive состояние сенсора
viewtopic.php?f=24&t=5827&start=20#p102488
в системе есть класс systemStates, в котором прекрасно реализуется контроль батареек, контроль сердцебиения и изменение состояния сенсора alive = 0
сам класс, его цикл и методы можно "доработать" дабы минимизировать нагрузку на систему и получить более гибкие настройки/возможности
Re: Датчик не обновляется.
Добавлено: Сб май 04, 2019 9:40 pm
Logrus
chaoba писал(а): ↑Сб май 04, 2019 9:26 pm
В принципе, как я понимаю, проблем особо нет. При появлении газа, датчик срабатывает, орет, отправляет сигнал в Majordomo, статус меняется на зеленый, сценарий отрабатывается. Только портит картинку желтый статус.
https://github.com/sergejey/majordomo/b ... kstate.php
не учитывает вышесказанного, контролирует состояние свойства alive, которое принимает значение 1 при срабатывании сенсора и сбрасывается в 0 по таймеру (по умолчанию 48 часов)
п.с. маленькая ремарка, у тс последняя версия образа (!!!) и там инжекция из ПУ расположена правильно (поправлено, то система ее в конце располагает)
вот у все остальных это или не работает, или закомментировано (у меня закомментировано, но у меня свои механизмы проверок, имхо лучше)
и еще ссылка на материал
https://connect.smartliving.ru/profile/ ... state.html
https://t.me/MajorDoMoRu/119479
Re: Датчик не обновляется.
Добавлено: Сб май 11, 2019 10:55 pm
SmoKE_xDDD
Все же, как нибудь можно принудительно запросить свежие цифры допустим по датчику температуры?
Re: Датчик не обновляется.
Добавлено: Вс май 12, 2019 1:15 pm
skysilver
SmoKE_xDDD писал(а): ↑Сб май 11, 2019 10:55 pm
Все же, как нибудь можно принудительно запросить свежие цифры допустим по датчику температуры?
Записать в метрику
command значение
read через привязанное свойство объекта. Но не факт, что это будут актуальные данные с датчика, возможно, шлюз отдаст свои кешированные данные.