Освещение с датчиком движения

Приглашаю обсудить такую вещь

Поиском в интернете находится куча примеров, но они все по сути однотипные

При сработке датчика - включить свет
при отсутствии движения подождать, у кого то 3 минуты, у кого то 15 и выключить свет

Есть ещё вариант включить на час, потом уже ожидать отсутствия движения.

Как по мне все это не то - завязка на какое либо деление время, которое иногда не подходит, или часто не подходит.

Пока вижу такой вариант:
Если выключатель включён - ничего не делать.
Если выключатель выключен, то при сработке включить свет / При отсутствии движения - выключить. (Где-то здесь возможен таймер)

Таким образом при кратковременных посещениях свет будет по датчику, если же планируется долгое пребывание - реакции на датчик нет.

Но есть одна загвоздка - умное реле в коробке реагирует на состояние механического выключателя, но если включится программно, то по датчику свет уже не выключится, так как мониторится состояние реле, а не состояние сухого контакта на его входе.

Вопрос
1. Можно ли получать именно состояние входа реле, а не состояние "выхода", если да, это могут все или какие либо отдельные модели отдельных производителей
2. Возможно кто-то предложит иное решение с аналогичным функционалом.

Home Assistant

21 пост853 подписчика

Добавить пост

Правила сообщества

Сообщество не имеет каких-либо строгих правил для размещения публикаций за исключением офтопа (не по теме сообщества) и публикаций нарушающих правила сайта Pikabu - https://pikabu.ru/information/rules.

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий
Не очень понял загвоздка. Вы же можете получить состояние на выходе реле - вкл или выкл. Плюс датчик движения на таймере
раскрыть ветку (17)
Автор поста оценил этот комментарий
В том то и дело, что мне нужно получить состояние физической кнопки на входе реле, так как считывание состояния самого реле ничего не даёт - датчик меняет его состояние.
раскрыть ветку (4)
Автор поста оценил этот комментарий
Как раз под этим комментарием и обсуждается решение. Вряд ли получится получить состояние физической кнопки. Остаётся ее состояние хранить в переменной. Далее автоматизацию по условию в зависимости от состояния переменной
раскрыть ветку (3)
Автор поста оценил этот комментарий
Пока не вижу, как в моём случае может помочь переменная.
Датчик хороший, срабатывает раньше, чем я достану до выключателя.
А если реле уже включено программно из автоматизации и будет выключено из автоматизации, ему на состояние собственной физической кнопки плевать 🤷‍♂️
раскрыть ветку (2)
Автор поста оценил этот комментарий

Покажу на простейшем примере, но увеличивая количество переменных (не знаю как с массивами в ХА), можно решать и более сложные задачи. Итак...

1. Вводим переменную manual_switch (если нужно отдельно понимать источник для вкл и для выкл, то две переменные manual_switch_on и manual_switch_off с соответствующим усложнением условий дальше), которая фиксирует ручную манипуляцию (значение 1) или автоматизацию (значение 0). Начальное значение неважно, первая манипуляция всё определит.

2. При ручном вкл/выкл (в ХА же передается факт изменения состояния выключателя?) переменной присваивается значение 1 (manual_switch = 1).

3. При использовании автоматизаций добавлять изменение переменной manual_switch = 0.

4. При выполнении автоматизаций получаем значение переменной. Если manual_switch =1, значит было включено руками, не надо выполнять автоматизацию. В противном случае - выполнять.

В крупную клетку как-то так

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

Загвоздка в том, чтоб понять чем было включено реле: выключателем или автоматизацией.

раскрыть ветку (11)
Автор поста оценил этот комментарий
А. Теперь понял. Задачка. Мне, как программисту, первое, что приходит в голову - использование переменной. Но пока ХА недавно осваиваю. Не уверен, что такое возможно.
раскрыть ветку (10)
Автор поста оценил этот комментарий

Именно с переменной. Так у меня и сделано. В контексте ХА это input_boolean будет.

раскрыть ветку (9)
Автор поста оценил этот комментарий
Возьмусь за это чуть позже. Укажите в какою сторону копать? Теорию я вижу простой: есть переменная ч двумя состояниями - условно 0 (автоматика) и 1 (руки). При срабатывании присваивается значение. При необходимости считывается. Но где там переменную вбить?
раскрыть ветку (8)
Автор поста оценил этот комментарий

Вот примерно как это выглядит. Код длинный, если понадобится пишите, весь дам. Пока скриншотом, иначе тут каша будет

Иллюстрация к комментарию
раскрыть ветку (7)
Автор поста оценил этот комментарий
Тут, как я понимаю, присваивается значение
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Нет, это триггер. Если состояние сенсора двери сменится на "on", то работает секция action.


сondition - дополнительные условия для триггера, ну то есть если событие триггера произошло, но action запускать не надо. Тут нет доп. условий. Например, сюда датчик света можно засунуть, типа если светло - ничего не произойдёт. Вообще тут эту строку с условием можно не указывать, я просто что-то отлаживал и осталась.

Автор поста оценил этот комментарий
А как выглядит условие? Где то же должна проверяться переменная
раскрыть ветку (4)
Автор поста оценил этот комментарий

Да, и ещё. Эта хрень уж год как у меня работает. Такие сложности с отдельным таймером (в самом датчике движения таймер есть, и событие "нет движения") для того, чтобы свет гарантированно выключился, если датчик отвалится. А они бывает подглючивают. Пару раз было.


Тем самым я избавился от проблем с ненадёжными железками. Отвалился - ну и хрен с ним, свет просто не будет гореть, пока тусуешься в прихожей, а погаснет через полторы минуты. Тыкнул выключатель и всё, опять всё работает в ручном режиме. А потом уже можно датчик перезагрузить или выкинуть нахрен, другой поставить.

Автор поста оценил этот комментарий

Там несколько вариантов синтаксиса, в yaml и в Jinja2. Можно комбинировать. Вот так примерно. В Jinja2 получается компактнее и больше на программный код похоже, а не на конфиг. Несколько условий проще записать.

Иллюстрация к комментарию
раскрыть ветку (2)
Автор поста оценил этот комментарий
А вот это прям действительно легко читается. Спасибо огромное! Мне это очень пригодится. Дальше, думаю, на пару с Гуглом справимся )
раскрыть ветку (1)
Автор поста оценил этот комментарий

Да, тут инфы по нему тонны. Правда много устаревшей (ХА активно допиливается и ядро ежемесячно обновляется), а так же однобокой. Но основное таки на официальном сайте. Справка у них неплохая.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку