/hass-tns-energo

TNS Energo Integration

Primary LanguagePython

ЛК «ТНС Энерго» для Home Assistant

Предоставление информации о текущем состоянии ваших лицевых счетов в ЛК ТНС Энерго. Передача показаний по счётчикам.

TNS Energo personal cabinet information and status retrieval, with meter indications submission capabilities.

hacs_badge Лицензия Поддержка

Пожертвование Yandex Пожертвование PayPal

Скриншоты

Информация о лицевом счёте Скриншот: Информация о лицевом счёте
Последний зарегистрированный платёж Скриншот: Последний зарегистрированный платёж
Счётчик коммунальных услуг Скриншот: Счётчик коммунальных услуг
Служба отправки показаний Скриншот: Служба отправки показаний

Установка

  1. Установите HACS (инструкция по установке на оф. сайте)
  2. Найдите TNS Energo (ТНС Энерго) в поиске по интеграциям 1
  3. Установите последнюю версию компонента, нажав на кнопку Установить (Install)
  4. Перезапустите Home Assistant

Конфигурация компонента:

  • Вариант А: Через Интеграции (в поиске - "ТНС Энерго" или "TNS Energo")
  • Вариант Б: YAML

Пример конфигурации YAML

tns_energo:
  username: 1234567890
  password: super_password

Описание конфигурационной схемы

# Файл `configuration.yaml`
tns_energo:

  # Имя пользователя (номер лицевого счёта)
  # Обязательный параметр
  username: "..."

  # Пароль
  # Обязательный параметр
  password: "..."

  # Конфигурация по умолчанию для лицевых счетов
  # Необязательный параметр
  #  # Данная конфигурация применяется, если отсутствует  # конкретизация, указанная в разделе `accounts`.
  default:

    # Добавлять ли объект(-ы): Информация о лицевом счёте
    # Значение по умолчанию: истина (true)
    accounts: true | false

    # Добавлять ли объект(-ы): Счётчик коммунальных услуг
    # Значение по умолчанию: истина (true)
    meters: true | false

    # Добавлять ли объект(-ы): Последний зарегистрированный платёж
    # Значение по умолчанию: истина (true)
    last_payment: true | false

  # Настройки для отдельных лицевых счетов
  # Необязательный параметр
  accounts:

    # Номер лицевого счёта
    "...":

      # Конфигурация по конкретным лицевым счетам выполняется аналогично
      # конфигурации по умолчанию для лицевых счетов (раздел `default`).
      ...

Вариант конфигурации "Чёрный список"

Для реализации белого списка, конфигурация выполняется следующим образом:

...
tns_energo:
  ...
  # Выборочное исключение лицевых счетов
  accounts:
    # Все указанные ниже лицевые счета будут добавлены
    "12345-678-90": false
    "98765-432-10": false
    "111000111000": false

Вариант конфигурации "Белый список"

Для реализации белого списка, конфигурация выполняется следующим образом:

...
tns_energo:
  ...
  # Отключение добавление лицевых счетов по умолчанию
  default: false

  # Выборочное включение лицевых сченов
  accounts:
    # Все указанные ниже лицевые счета будут добавлены
    "12345-678-90": true
    "98765-432-10": true
    "111000111000": true

Также возможно использовать укороченную запись:

...
tns_energo:
  ...
  # Данный пример функционально эквивалентен предыдущему примеру
  default: false
  accounts: ["12345-678-90", "98765-432-10", "111000111000"]

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

Служба передачи показаний - tns_energo.push_indications

Служба передачи показаний позволяет отправлять показания по счётчикам в личный кабинет, и имеет следующий набор параметров:

Название Описание
target Выборка целевых объектов, для которых требуется передавать показания
data.indications Список / именованный массив показаний, передаваемых в ЛК
data.incremental Суммирование текущих показаний с передаваемыми
data.ignore_period Игнорировать период передачи показаний
data.ignore_indications Игнорировать ограничения по значениям

Пример автоматизации

# Файл configuration.yaml

automation:
  - alias: Send elecric indications
    description: -|
      Отправлять показания по электричеству
      в 14 часов каждый 25-й день месяца'
    trigger:
      - platform: time
        at: '14:00'
    condition:
      - condition: template
        value_template: {{ now().day == 25 }}
    action:
      - service: tns_energo.push_indications
        target:
          entity_id: sensor.tns_yar_1111111111111_meter_11111111
        data:
          indications: {{ states('sensor.pzem_004t_v3_energy') }}

Пример скрипта

# Файл configuration.yaml

script:
  send_electric_indications:
    sequence:
      - service: tns_energo.push_indications
        target:
          entity_id: sensor.tns_yar_1111111111111_meter_11111111
        data:
          indications: {{ states('sensor.pzem_004t_v3_energy') }}

Примеры параметров службы

1. Обычная передача показаний
  • Например, если передача показаний активна с 15 по 25 число, а сегодня 11, то показания не будут отправлены1.
  • Например, если текущие, последние или принятые значения по счётчику – 321, 654 и 987 по зонам Т1, Т2 и Т3 соответственно, то показания не будут отправлены1.
service: tns_energo.push_indications
data:
  indications: "123, 456, 789"
target:
  entity_id: sensor.1243145122_meter_123456789

... или, с помощью именованного массива:

service: tns_energo.push_indications
data:
  indications:
    t1: 123
    t2: 456
    t3: 789
target:
  entity_id: sensor.1243145122_meter_123456789

... или, с помощью списка:

service: tns_energo.push_indications
data:
  indications: [123, 456, 789]
target:
  entity_id: sensor.1243145122_meter_123456789
2. Форсированная передача показаний

Отключение всех ограничений по показаниям.

  • Например, если передача показаний активна с 15 по 25 число, а сегодня 11, то показания будут отправлены1.
  • Например, если текущие, последние или принятые значения по счётчику – 321, 654 и 987 по зонам Т1, Т2 и Т3 соответственно, то показания будут отправлены1.
service: tns_energo.push_indications
data_template:
  indications: [123, 456, 789]
  ignore_indications: true
  ignore_periods: true
target:
  entity_id: sensor.1243145122_meter_123456789
3. Сложение показаний
  • Например, если передача показаний активна с 15 по 25 число, а сегодня 11, то показания не будут отправлены1.
  • Например, если текущие, последние или принятые значения по счётчику – 321, 654 и 987 по зонам Т1, Т2 и Т3 соответственно, то показания будут отправлены1.

Внимание: в данном примере будут отправлены показания 444, 1110 и 1776, а не 123, 456 и 789.

service: tns_energo.push_indications
data_template:
  indications: [123, 456, 789]
  incremental: true
target:
  entity_id: sensor.1243145122_meter_123456789