Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/alryaz/hass-lkcomu-interrao

Интеграция Home Assistant с ЛК "Интер РАО"
https://github.com/alryaz/hass-lkcomu-interrao

altaienergosbyt bashelektrosbyt custom-components energosbyt esbvolga home-assistant mosenergosbyt sevesk tambovenergosbyt tomskenergosbyt

Last synced: 2 days ago
JSON representation

Интеграция Home Assistant с ЛК "Интер РАО"

Awesome Lists containing this project

README

        

_ЕЛК ЖКХ «Интер РАО»_ для _Home Assistant_
==================================================
Логотип интеграции

> Предоставление информации о текущем состоянии ваших аккаунтов в ЕЛК ЖКХ.
>
> Information retrieval from Inter RAO personal cabinets.
>
>[![hacs_badge](https://img.shields.io/badge/HACS-Default-green.svg)](https://github.com/custom-components/hacs)
> [![Лицензия](https://img.shields.io/badge/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
> [![Поддержка](https://img.shields.io/badge/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F%3F-%D0%B4%D0%B0-green.svg)](https://github.com/alryaz/hass-lkcomu-interrao/graphs/commit-activity)
>
>[![Пожертвование Yandex](https://img.shields.io/badge/%D0%9F%D0%BE%D0%B6%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-Yandex-red.svg)](https://money.yandex.ru/to/410012369233217)
> [![Пожертвование PayPal](https://img.shields.io/badge/%D0%9F%D0%BE%D0%B6%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-Paypal-blueviolet.svg)](https://www.paypal.me/alryaz)

## Установка

### Посредством HACS

> **✔️️ Рекомендуемый метод**

1. Установите
HACS ([инструкция по установке на оф. сайте](https://hacs.xyz/docs/setup/prerequisites/))
2. Найдите `lkcomu_interrao` (или `Интер РАО`) в поиске по интеграциям 1
3. Установите последнюю версию компонента, нажав на кнопку `Установить` (`Install`)
4. Перезапустите Home Assistant

### Вручную

> **⚠️ Не рекомендуется**

1. Скачайте архив с исходным кодом дополнения
2. Извлеките папку `lkcomu_interrao` из архива в папку `custom_components` внутри папки с
конфигурацией Home Assistant (создайте её, если она отсутствует)
3. Перезапустите Home Assistant

## Настройка

### Через раздел интеграции
1. Перейдите в подраздел _"[Интеграции](https://my.home-assistant.io/redirect/integrations)"_ в разделе _"Настройки"_
2. Нажмите кнопку _"Добавить интеграцию"_
3. Введите в поисковую строку: **_Личный кабинет Интер РАО (Энергосбыт)_** (англ. **_Inter RAO Personal Cabinet (Energosbyt)_**)
4. Выберите найденную интеграцию
5. Следуйте инструкциям мастера по добавлению

_Примечание:_ Поле **_Заголовок User-Agent_** (англ. **_User-Agent header_**) генерируется автоматически.

### Описание конфигурационной схемы
```yaml
# Файл `configuration.yaml`
lkcomu_interrao:

# Тип выбранного ЛК
# Значение по умолчанию: moscow
# Перечень возможных значений:
# - altai (ЛК Алтай (АО «АлтайЭнергосбыт»))
# - bashkortostan (ЛКК ЭСКБ (Башэлектросбыт))
# - moscow (ЕЛК ЖКХ (АО «Мосэнергосбыт», МосОблЕИРЦ, ПАО «Россети Московский регион»))
# - oryol (ЛКК Орел (ООО «Орловский энергосбыт»))
# - saratov (ЛК Саратов (ПАО «Саратовэнерго»))
# - sevesk (ЕЛК Вологда (Северная сбытовая компания))
# - tambov (ЛК ТЭСК (Тамбовская энергосбытовая компания))
# - tomsk (ЕЛК Томск (Томскэнергосбыт / Томск РТС))
# - volga (ЛКК ЭСВ (Энергосбыт Волга))
type: "..."

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

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

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

# Получать ли ссылки на логотипы
# Значение по умолчанию: истина (true)
logos: true | false

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

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

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

# Добавлять ли объект(-ы): Последняя выпущенная квитанция
# Значение по умолчанию: истина (true)
last_invoice: true | false

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

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

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

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

Для реализации белого списка, конфигурация выполняется следующим образом:
```yaml
...
lkcomu_interrao:
...
# Выборочное исключение лицевых счетов
accounts:
# Все указанные ниже лицевые счета будут добавлены
"12345-678-90": false
"98765-432-10": false
"111000111000": false
```

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

Для реализации белого списка, конфигурация выполняется следующим образом:
```yaml
...
lkcomu_interrao:
...
# Отключение добавление лицевых счетов по умолчанию
default: false

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

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

## Доступные объекты

Все объекты гарантируют наличие и полноту следующих атрибутов:

- `account_code: str` - Номер лицевого счёта
- `account_id: int` - Внутренний идентификатор лицевого счёта

### Лицевые счета — `lkcomu_interrao_account`

> **Домен объектов:** `sensor`

Объект лицевого счёта отображает основную информацию о лицевом счёте, а также его баланс
(положительное значение) или имеющуюся задолженность (отрицательное значение) 1.

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

- `unknown` - Информация о состоянии баланса не была предоставлена
- _число_ - Текущее состояние баланса

_1 ... в том случае, если лицевой счёт предоставляет информацию о балансе_

#### Сопутствующие службы

> Данные службы применимы только к объектам лицевых счетов

##### `set_description` — Установить описание лицевого счёта

Устанавливает описание для лицевого счёта и провоцирует его обновление.

###### Параметры

- `description: str | None` - _(опционально)_ Новое описание для лицевого счёта

###### Результат

Событие с идентификатором `lkcomu_interrao_set_description` и следующими значениями:
- `success: bool` - Если установка описания была выполнена успешно
- `description: str | None` - Описание, с которым была вызвана служба
- `previous: str | None` - Описание, которым обладал (или, в случае ошибки, обладает) лицевой счёт
- `account_id: int` - Внутренний идентификатор лицевого счёта
- `account_code: str` - Номер лицевого счёта

##### `get_invoices` — Получение квитанций по периодам

> Только для объектов, поддерживающих данный функционал

###### Параметры

- `start: str | None` - _(опционально)_ Дата начала периода
- `end: str | None` - _(опционально)_ Дата окончания периода

###### Результат

Событие с идентификатором `lkcomu_interrao_get_invoices` и следующими значениями:

- `sum: float` - сумма всех квитанций за указанный период
- `period: str` - период квитанции
- `invoice_id: str` - идентификатор квитанции
- `total: float` - сумма к оплате по квитанции
- `paid: float | None` - сумма оплат, учтённых к квитанции
- `initial: float | None` - задолженность/избыток на начало периода
- `charged: float | None` - начислено за период
- `insurance: float | None` - добровольное страхование
- `benefits: float | None` - льготы
- `penalty: float | None` - штрафы
- `service: float | None` - тех. обслуживание

##### `get_payments` — Получение платежей по периодам

> Только для объектов, поддерживающих данный функционал

###### Параметры

- `start: str | None` - _(опционально)_ Дата начала периода
- `end: str | None` - _(опционально)_ Дата окончания периода

###### Результат

Событие с идентификатором `lkcomu_interrao_get_payments` и следующими значениями:

- `sum: float` - сумма всех платежей за указанный период
- `amount: float` - объём платежа
- `paid_at: str` - дата/время платежа
- `period: str` - период, за который платёж был выполнен
- `status: str | None` - состояние платежа
- `agent: str | None` - банк-обработчик платежа
- `group: str | None` - группа платежа (для лицевых счетов с несколькими типами платежей)


### Счётчики — `lkcomu_interrao_meter`

> **Домен объектов:** `sensor`

Объект счётчика отображает информацию о счётчике, а также сведения о последних переданных показаниях
и диапазоне периода передачи показаний1.

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

- `ok` - Текстовое описание состояния отсутствует
- _текст_ - Текстовое описание состояние счётчика (может быть любой длины, и содержать в себе любой
набор символов, в т.ч. HTML-теги)

Объект гарантирует наличие и полноту следующих атрибутов:

- `meter_code` - Номер счётчика
- `install_date` - Дата установки
- `submit_period_start` - Дата начала периода передачи показаний (в текущем месяце) 1
- `submit_period_end` - Дата окончания периода передачи показаний (в текущем месяце) 1
- `submit_period_active` - Флаг активности периода передачи показаний 1
- `zone_t[N]_name` - Наименование тарифной зоны / тарифа
- `zone_t[N]_last_indication` - Последнее показание по тарифной зоне 2

Объект гарантирует наличие, но не полноту следующих атрибутов:

- `model` - Модель счётчика
- `last_indications_date` - Дата последней передачи показаний
- `zone_t[N]_description` - Описание тарифной зоны / тарифа
- `zone_t[N]_today_indication` - Значение переданного сегодня показания по тарифной зоне
- `zone_t[N]_invoice_indication` - Значение последнего показания по тарифной зоне, учтённому в
квитанции
- `zone_t[N]_period_indication` - Значение переданного за период показания по тарифной зоне
1

- `zone_t[N]_invoice_name` - Наименование тарифной зоны, указанное в последней квитанции

_1 ... в том случае, если счётчик поддерживает передачу показаний_

_2 При отсутствии фактического значения атрибут примет значение `0.0`_

#### Сопутствующие службы

> Данные службы применимы только к объектам счётчиков

##### `push_indications` — Передача показаний

> Только для объектов, поддерживающих данный функционал

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

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

###### 1. Обычная передача показаний

- Например, если передача показаний активна с 15 по 25 число, а сегодня 11, то показания
**не будут** отправлены1.
- Например, если текущие, последние или принятые значения по счётчику – 321, 654 и 987 по зонам
_Т1_, _Т2_ и _Т3_ соответственно, то показания **не будут**
отправлены1.

```yaml
service: lkcomu_interrao.push_indications
data:
indications: "123, 456, 789"
target:
entity_id: sensor.1243145122_meter_123456789
```

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

```yaml
service: lkcomu_interrao.calculate_indications
data:
indications:
t1: 123
t2: 456
t3: 789
target:
entity_id: sensor.1243145122_meter_123456789
```

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

```yaml
service: lkcomu_interrao.calculate_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.

```yaml
service: lkcomu_interrao.calculate_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_.

```yaml
service: lkcomu_interrao.calculate_indications
data_template:
indications: [123, 456, 789]
incremental: true
target:
entity_id: sensor.1243145122_meter_123456789
```

##### `calculate_indications` — Подсчёт показаний

> Только для объектов, поддерживающих данный функционал


### Последние платежи — `lkcomu_interrao_last_payment`

> **Домен объектов:** `binary_sensor`

Объект последнего платежа отображает информацию о последнем зарегистрированном платеже, связанном с
лицевым счётом.

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

- `on` - Платёж был обработан
- `off` - Платёж ещё не обработан
- `unknown` - Последний платёж не был найден

Объект гарантирует наличие и полноту следующих атрибутов:

- `amount: float` - Сумма платежа
- `paid_at: str` - Дата и время платежа
- `period: str` - Период, за который был выполнен платёж

Объект гарантирует наличие, но не полноту, следующих атрибутов:

- `status: str | None` - Состояние платежа
- `agent: str | None` - Банк, проводящий платёж
- `group: str | None` - Группа платежа (для лицевых счетов с несколькими источниками платежей)


### Последние квитанции — `lkcomu_interrao_last_invoice`

> **Домен объектов:** `sensor`

> @ TODO @


## Поддерживаемые ЛК

Ниже предъявлен перечень поддерживаемых ЛК с их внутренними идентификаторами.
Данные идентификаторы используются как значение для поля `type`.

> **Внимание:** Поддерживаются только ЛК физических лиц. Поддержка ЛК юридических лиц не планируется.
### ЕЛК ЖКХ (АО «Мосэнергосбыт», МосОблЕИРЦ, ПАО «Россети Московский регион») - `moscow`
[![Ссылка на личный кабинет "ЕЛК ЖКХ (АО «Мосэнергосбыт», МосОблЕИРЦ, ПАО «Россети Московский регион»)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/moscow.png)](https://my.mosenergosbyt.ru)

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

```yaml
...
lkcomu_interrao:
type: moscow
username: username1
password: password1
```

#### Поставщик `MES` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

#### Поставщик `KSG` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

#### Поставщик `MOE` — ЕПД
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

#### Поставщик `TKO` — ТКО
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Снимок экрана отсутствует

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Снимок экрана отсутствует

### ЛКК Орел (ООО «Орловский энергосбыт») - `oryol`
[![Ссылка на личный кабинет "ЛКК Орел (ООО «Орловский энергосбыт»)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/oryol.png)](https://my.interrao-orel.ru)

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

```yaml
...
lkcomu_interrao:
type: oryol
username: username1
password: password1
```

#### Поставщик `ORL_EPD` — ЕПД
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последняя выпущенная квитанция
Скриншот

#### Поставщик `ORL` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЛКК ЭСВ (Энергосбыт Волга) - `volga`
[![Ссылка на личный кабинет "ЛКК ЭСВ (Энергосбыт Волга)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/volga.png)](https://my.esbvolga.ru)

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

```yaml
...
lkcomu_interrao:
type: volga
username: username1
password: password1
```

#### Поставщик `VLD` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЕЛК Томск (Томскэнергосбыт / Томск РТС) - `tomsk`
[![Ссылка на личный кабинет "ЕЛК Томск (Томскэнергосбыт / Томск РТС)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/tomsk.png)](https://my.tomskenergosbyt.ru)

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

```yaml
...
lkcomu_interrao:
type: tomsk
username: username1
password: password1
```

#### Поставщик `TMK_NRG` — generic
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЛК ТЭСК (Тамбовская энергосбытовая компания) - `tambov`
[![Ссылка на личный кабинет "ЛК ТЭСК (Тамбовская энергосбытовая компания)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/tambov.png)](https://my.tesk.su)

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

```yaml
...
lkcomu_interrao:
type: tambov
username: username1
password: password1
```

#### Поставщик `TMB` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЕЛК Вологда (Северная сбытовая компания) - `sevesk`
[![Ссылка на личный кабинет "ЕЛК Вологда (Северная сбытовая компания)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/sevesk.png)](https://lk.sevesk.ru)

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

```yaml
...
lkcomu_interrao:
type: sevesk
username: username1
password: password1
```

#### Поставщик `VLG` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЛК Саратов (ПАО «Саратовэнерго») - `saratov`
[![Ссылка на личный кабинет "ЛК Саратов (ПАО «Саратовэнерго»)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/saratov.png)](https://my.saratovenergo.ru)

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

```yaml
...
lkcomu_interrao:
type: saratov
username: username1
password: password1
```

#### Поставщик `SAR` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЛКК ЭСКБ (Башэлектросбыт) - `bashkortostan`
[![Ссылка на личный кабинет "ЛКК ЭСКБ (Башэлектросбыт)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/bashkortostan.png)](https://lkk.bashesk.ru)

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

```yaml
...
lkcomu_interrao:
type: bashkortostan
username: username1
password: password1
```

#### Поставщик `UFA` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

### ЛК Алтай (АО «АлтайЭнергосбыт») - `altai`
[![Ссылка на личный кабинет "ЛК Алтай (АО «АлтайЭнергосбыт»)"](https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/images/headers/altai.png)](https://lkfl.altaiensb.com)

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

```yaml
...
lkcomu_interrao:
type: altai
username: username1
password: password1
```

#### Поставщик `ALT` — Электричество
Для поставщика реализована поддержка следующих объектов:

Информация о лицевом счёте
Скриншот

Последний зарегистрированный платёж
Скриншот

Последняя выпущенная квитанция
Скриншот

Счётчик коммунальных услуг
Скриншот

## Дополнительная информация

Компонент находится в активной разработке. Примерная дорожная карта и план развития:

- `[0.0.1; 0.1.0)` — первичная обкатка компонента на поддерживаемых поставщиках;
- `[0.1.0; 0.2.0)` — разработка визуального конфигуратора для интеграции;
- `[0.2.0; 1.0.0)` — выполнение задач по оптимизации и чистке кода;
- `[1.0.0; .....)` — финальный выпуск компонента и исправление ошибок.

Увеличение старшей версии сопутствует:

- изменениям в конфигурационной схеме;
- удалению функционала;
- расширению сферы применения интеграции.

Увеличение младшей версии сопутствует:

- добавлению нового функционала;
- исправлению значительных ошибок.

Увеличение номера сборки сопутствует:

- исправлению мелких ошибок / выпуску хотфиксов;
- изменениям во взаимодействии с основополагающей библиотекой (или её версии).