Home Assistant хранение переменных и констант.

Здравия всем! Когда я первый раз поставил 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 надо его определить в конфигурации

input_boolean:
    garden_auto:
      name: Сад автополив 
      icon: mdi:water-check

После перезагрузки конфигурации Home Assistаnt у нас появится переключатель

Управление

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

а можно в коде. Включить:

service: input_boolean.turn_on
target:
  entity_id: input_boolean.garden_auto

Выключить:

service: input_boolean.turn_off
target:
  entity_id: input_boolean.garden_auto

или переключить:

service: input_boolean.toggle 
target:
  entity_id: input_boolean.garden_auto

Состояние переключателя сохраняется при перезагрузки

Использование

Самое интересное, это использование, например в автоматизациях. Добавим в нашу конфигурацию

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 может быть определен тремя разными способами:

  1. Только время
  2. Только дата
  3. и дата и время

Конфигурация

Для того чтобы использовать Input Datetime надо его определить в конфигурации

input_datetime:
    garden_tap_on_1:
      name: "Время полива сада"
      has_date: false
      has_time: true
    
   garden_day:
      name: "Время последнего полива"
      has_date: true
      has_time: true

После применения настроек, у нас появится новые объекты

Управление

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

Либо можно изменять его в коде:

- 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

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 определяет список.

Конфигурация

Определим наш список в конфигурации:

input_select:
  garden_auto:
    name: Режим полива сада
    options:
      - Отключен
      - Ручной
      - Автоматический
    
   

Управление

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

Использование

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 Если нам нужен другой, меняем его на нужный.

input_number:
  target_temp:
    name: Температура термостата
    min: 1
    max: 30
    step: .1
    icon: mdi:target

Управление

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

так и в коде:

service: input_number.set_value
      target:
        entity_id: input_number.target_temp
      data:
        value: 10.8

Использование

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 определяются его входные параметры:

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

Управление

Поменяем значение в коде:

      - service: input_text.set_value
        target:
          entity_id: input_text.Text1
        data:
          value: "Привет мир!"

Заключение

Как видно из этой заметки, в Home Assistant есть всё, чтобы облегчить себе настройку и работу. Настраиваются эти вспомогательные объекты, как через конфигурацию, так и через web интерфейс. В самом начале меня сбили названия Input. Но самое главное, они выполняют свою функцию, они хранят текущие значения переменных и констант в базе данных. И при пропадании электричества, восстанавливают значения, если при инициализации не указано какое нибудь значение!

14 ответов к «Home Assistant хранение переменных и констант.»

  1. Спасибо за статью! Тоже долго искал переменные, пока не наткнулся на input_boolean, а там и сюда попал.

  2. Спасибо за статью, полезно. А как-то можно использовать эти переменные в автоматизациях через GUI

    1. Здравствуйте, все просто, идем в Настройки -> Устройства и службы -> Вспомогательное и щелкаем по кнопке + Создать вспомогательный объект. Появится окошко в нем много разных элементов

  3. А куда можно записать отрицательное значение, например хочу хранить минимальную температуру на улице за определенный период.

        1. Действительно недоработка интерфейса, но если ввести число и потом нажать стрелки вверх вниз в интерфейсе поля ввода, то число сохраняется

  4. А не подскажешь как присвоить в автоматизации значение сенсора созданной переменной input_number ?

    1. Что нибудь такого:

      service: input_number.set_value
      target:
      entity_id: input_number.target_temp
      data:
      value: "{{ states('sensor.temperture') }}"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.