Здравия всем! Когда я первый раз поставил Home Assistant, после того как несколько лет сидел на MajorDomo, встал вопрос: А где и как хранить переменные и константы? Я мучился 2 недели. Никак в официальной документации и в рунете не мог найти упоминание. В рунет в основном описано как сделать то или другое, как подключить оборудование?
И вот в одном из описаний мне попалась информация как автор использовал Input Number. Я начал изучать его в документации и меня осенило! Вот же шь авторы Home Assistant. Я потратил 2 недели поисков, а ларчик просто открывался. В Home Assistant есть несколько типов Input :
- Input Boolean
- Input Datetime
- Input Select
- Input Number
- Input Text
Как видим из названий, нам доступно 5 типов переменных, это булевы переменные, время, список, числовой и текстовый. Рассмотрим их подробнее.
Input Boolean
Input Boolean может принимать два значения 0/1 или False/True. Очень удобно использовать этот тип данных в автоматизации. И в зависимости от значения запускать её или нет.
Конфигурация
Для того чтобы использовать Input Boolean надо его определить в конфигурации
1 2 3 4 | input_boolean: garden_auto: name: Сад автополив icon: mdi : water-check |
После перезагрузки конфигурации Home Assistаnt у нас появится переключатель

Управление
Этот переключатель можно щелкать в интерфейсе:

а можно в коде. Включить:
1 2 3 | service: input_boolean.turn_on target: entity_id: input_boolean.garden_auto |
Выключить:
1 2 3 | service: input_boolean.turn_off target: entity_id: input_boolean.garden_auto |
или переключить:
1 2 3 | service: input_boolean.toggle target: entity_id: input_boolean.garden_auto |
Состояние переключателя сохраняется при перезагрузки
Использование
Самое интересное, это использование, например в автоматизациях. Добавим в нашу конфигурацию
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | automation: #Включаем автополив в 21:00 - alias : garden_auto_tap initial_state: true trigger: - platform : time at: "21:00" condition: - condition : state entity_id: input_boolean.garden_auto state: 'on' action: - service : switch.turn_on entity_id: switch.garden_tap_1 |
Данная автоматизация, включает авто полив сада в заданное ! При этом секции condition происходит проверка условия, разрешен ли автополив.
Input Datetime
Input Datetime может быть определен тремя разными способами:
- Только время
- Только дата
- и дата и время
Конфигурация
Для того чтобы использовать Input Datetime надо его определить в конфигурации
1 2 3 4 5 6 7 8 9 10 | input_datetime: garden_tap_on_1: name: "Время полива сада" has_date: false has_time: true garden_day: name: "Время последнего полива" has_date: true has_time: true |
После применения настроек, у нас появится новые объекты


Управление
Можно выставить время в интерфейсе:


Либо можно изменять его в коде:
1 2 3 4 5 6 7 8 9 10 11 | - service : input_datetime.set_datetime target: entity_id: input_datetime.garden_tap_on_1 data: time: "21:00:00" - service : input_datetime.set_datetime target: entity_id: input_datetime.garden_day data: timestamp: "{{ now().timestamp() }}" |
Использование
Давайте поменяем в автоматизации, из примера Input Boolean, время включения на Input Datetime
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | automation: #Включаем автополив в 21:00 - alias : garden_auto_tap initial_state: true trigger: - platform : time at: input_datetime.garden_tap_on_1 condition: - condition : state entity_id: input_boolean.garden_auto state: 'on' action: - service : switch.turn_on entity_id: switch.garden_tap_1 |
Теперь, не нужно лезть в автоматизацию, чтобы поменять время включения авто полива.
Input Select
Как видно из названия, Input Select определяет список.
Конфигурация
Определим наш список в конфигурации:
1 2 3 4 5 6 7 8 9 | input_select: garden_auto: name: Режим полива сада options: - Отключен - Ручной - Автоматический |

Управление
Управление через интерфейс:

Использование
1 2 3 4 5 6 7 8 9 10 11 | automation: - alias : garden_auto_off initial_state: true trigger: - platform : state entity_id: input_select.garden_auto to: 'Отключен' action: service: input_boolean.turn_off target: entity_id: input_boolean.garden_auto |
Данная автоматизация, при изменении списка на «Отключен», выключает Input Boolean полива
Input Number
Как видно из названия Input Number хранит данные в числовом значении. Он может хранить как целые числа, так и дробные.
Конфигурация
Определим наш Input Number. При инициализации нам нужно определить минимальное, максимальное значение. Так же при инициализации автоматически определяется шаг: 1 Если нам нужен другой, меняем его на нужный.
1 2 3 4 5 6 7 | input_number: target_temp: name: Температура термостата min: 1 max: 30 step: .1 icon: mdi : target |

Управление
Изменять значение можно как в интерфейсе:

так и в коде:
1 2 3 4 5 | service: input_number.set_value target: entity_id: input_number.target_temp data: value: 10.8 |
Использование
1 2 3 4 5 6 7 8 9 10 11 | automation: - alias : "Set temp slider" trigger: platform: mqtt topic: "setTemperature" action: service: input_number.set_value target: entity_id: input_number.target_temp data: value: "{{ trigger.payload }}" |
Данная автоматизация устанавливает значение слайдера, из MQTT топика.
Input Text
Input Text хранит значения в текстовом виде. Может принимать форму для ввода пароля.
Конфигурация
При инициализации Input Text определяются его входные параметры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | input_text: text1: name: Text1 initial: Some Text text2: name: Text2 min: 8 max: 40 text3: name: Text3 pattern: "[a-fA-F0-9]*" text4: name: Text4 mode: password |
Управление
Поменяем значение в коде:
1 2 3 4 5 | - service : input_text.set_value target: entity_id: input_text.Text1 data: value: "Привет мир!" |
Заключение
Как видно из этой заметки, в Home Assistant есть всё, чтобы облегчить себе настройку и работу. Настраиваются эти вспомогательные объекты, как через конфигурацию, так и через web интерфейс. В самом начале меня сбили названия Input. Но самое главное, они выполняют свою функцию, они хранят текущие значения переменных и констант в базе данных. И при пропадании электричества, восстанавливают значения, если при инициализации не указано какое нибудь значение!
Спасибо за статью! Тоже долго искал переменные, пока не наткнулся на input_boolean, а там и сюда попал.
По этому и написал статью, чтобы было легче понять Home Assistant.
Спасибо Юра!
Спасибо за статью, полезно. А как-то можно использовать эти переменные в автоматизациях через GUI
Здравствуйте, все просто, идем в Настройки -> Устройства и службы -> Вспомогательное и щелкаем по кнопке + Создать вспомогательный объект. Появится окошко в нем много разных элементов
А куда можно записать отрицательное значение, например хочу хранить минимальную температуру на улице за определенный период.
Можно создать число (input_number) со следующими параметрами

Спасибо
У меня невозможно ввести отрицательное число в поля ввода
Действительно недоработка интерфейса, но если ввести число и потом нажать стрелки вверх вниз в интерфейсе поля ввода, то число сохраняется
Ввел способом копипаста
А не подскажешь как присвоить в автоматизации значение сенсора созданной переменной input_number ?
Что нибудь такого:
service: input_number.set_value
target:
entity_id: input_number.target_temp
data:
value: "{{ states('sensor.temperture') }}"
Спасибо, испробую.