Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant

Зональная уборка роботом пылесосом - v2

Когда  я писал  прошлый  пост Умный дом в котором я живу. Зональная  уборка роботом пылесосом у  меня возникла  идея  заменить  при выборе комнат  для уборки выпадающий  список 

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Писать полный перебор всех вариантов  комбинация  комнат - так себе идея. Их будет свыше 60 и выпадающий  список будет  огромный.  Поэтому  возникла идея  заменить на  пачку  селекторов, где я  выбираю комнаты в произвольной  комбинации.

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Но встал вопрос  как  передавать параметры уборки роботу.

Т.е. из отдельных  блоков  комнат [х1,у1,х2,y2,count] мы  должны собрать  строку

params: [[х1,у1,х2,y2,count],[х1,у1,х2,y2,count],[х1,у1,х2,y2,count]]


Пока я искал как это  написать, нашел статью https://sprut.ai/client/article/2555, где  решается  практически моя задача.

При  переделке кода под себя, вылезли  некоторые  косяки, которые и побудили меня  написать целый пост.

Итак, собственных возможностей  HA не хватает, чтобы написать перебор всех возможных вариантов уборки.  Поэтому, можно  задействовать  скрипты на Питоне, что существенно  расширяет  возможности автоматизации. В configuration.yaml  прописываем

python_script:
Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

и в каталоге config создаем директорию python_scripts


и в ней уже  файл  скрипта variant.py

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Как это работает. Мы должны  передать пылесосу  массив состоящий из параметров комнат, которые мы будем убирать.


Скрипт  принимает  на  вход состояния выключателей  input_boolean и  рассовывает их по переменным. затем он на  основе  значений  переменных или добавляет  параметры комнаты  или нет.

Закомментированная  строчка  выплевывает  передаваемый  роботу массив в  лог HA, что удобно для  отладки.


А теперь  обвязка.

Cоздаем  сами выключатели

В input_boolean: !include input_boolean.yaml

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Создаем карточку:

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Скрипт  автоматизации

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост
Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Ручное прерывание уборки:

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

И сброс  кнопок  при  возврате на базу

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Ну и на случай внешней  установки мощности всасывания (скажем из веб морды)  в HA надо  установить селекбокс.

для  этого  лепим сенсор

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

И автоматизацию, устанавливающую  в правильное положение  селект бокс

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Лепим сенсоры  замены расходников:

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

И кнопки для  сброса  и  кнопку скрытия  их

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

В итоге  карточка робота выглядит вот  так

Умный дом в котором я  живу.   Использование  скриптов  Python в автоматизациях Home Assitant Умный дом, Робот-пылесос, Длиннопост

Все конфиги можно дернуть здесь: https://drive.google.com/file/d/1GPZ92SDrBzFjQEVsfsA5EYbz8sH...