Skip to content

Интеграция для Home Assistant, поддерживающая сервис Мой Газ Смородина

License

Notifications You must be signed in to change notification settings

lizardsystems/hass-mygas

Repository files navigation

hacs_badge

my_gas 1

Этот репозиторий содержит настраиваемый компонент для Home Assistant для отображения данных из сервиса Мой Газ Смородина.

Установка

Способ 1. Open your Home Assistant instance and open a repository inside the Home Assistant Community Store. → Установить

Способ 2. Вручную скопируйте папку mygas из latest release в директорию /config/custom_components.

После установки необходимо перегрузить Home Assistant

Настройка

Настройки → Устройства и службы → ИнтеграцииДобавить интеграцию → Поиск MyGas

или нажмите:

Добавить интеграцию

Установка mygas 1

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

Установка mygas 2

Если вы ввели логин и пароль правильно, то появится сообщение об успешном окончании настройки.

Установка mygas 3

После подключения интеграции на закладке интеграции появится новая интеграция "Мой газ"

Установка mygas 4

Также вы можете подключить несколько аккаунтов в интеграции. Они будут отображаться в настройках интеграции отдельными строками

Установка mygas 5

Щелкнув на один из лицевых счетов можно посмотреть устройства или объекты созданные для этого лицевого счета.

Установка mygas 6

Устройством будет каждый счетчик (прибора учета) в аккаунте. Объекты (сенсоры) для каждого лицевого счета

Общий вид устройства в Home Assistant.

Установка mygas 7

Сенсоры

Сенсоры mygas 1

Сенсоры mygas 2

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

  • Лицевой счет
  • Задолженность
  • Последнее обновление
  • Счетчик
  • Средний расход
  • Цена за м³
  • Дата показаний
  • Показания
  • Потребление

Сенсор Лицевой счет имеет дополнительные атрибуты:

  • Площадь жилая
  • Количество проживающих
  • Использование среднегодовых тарифов
  • Наличие горячего водоснабжения
  • Электронная почта
  • Телефон
  • Адрес

Сенсоры mygas 3

Сенсор Счетчик имеет дополнительные атрибуты:

  • Модель
  • Серийный номер
  • Состояние счетчика
  • Тип оборудования
  • Расположение
  • Ресурс
  • Тарифность
  • Дата очередной поверки
  • Плановая дата ТО
  • Дата установки пломбы
  • Дата заводской пломбы
  • Дата изготовления прибора

Сенсоры mygas 4

Кнопки

  • Обновить - кнопка для немедленного обновления информации
    • Вызывает сервис mygas.refresh, сервис обновления информации
  • Получить счет - кнопка для запроса счета за прошлый месяц
    • Вызывает сервис mygas.get_bill, сервис запроса счета за прошлый месяц

Установка mygas buttons

Сервисы

Интеграция Мой Газ публикует три сервиса:

  • mygas.refresh - сервис обновления информации
  • mygas.get_bill - сервис получения счета за прошлый месяц
  • mygas.send_readings - сервис отправки показаний

Установка mygas services

mygas.refresh - Мой Газ: Обновить информацию

Сервис запрашивает информацию через API и обновляет все сенсоры.

Сервисы

Параметры:

  • device_id - Устройство Прибор учета

Вызов сервиса в формате yaml

service: mygas.refresh
data:
  device_id: 326995f8d0468225a1370b42297380c1

Можно сделать вызов сервиса с использованием имени устройства

service: mygas.get_bill
data:
  device_id: '{{device_id("ВК-G6(Т) Krom Schloder, № 0XXXXXXX (000XXXXXX) (Офис)")}}'

или с использованием одного из сенсоров этого устройства

service: mygas.get_bill
data:
  device_id: '{{device_id("sensor.mygas_XXXXXXXXXXXX_counter_XXXXXXXX_XXXX_XXXX_XXXX_XXXXXXXXXXXX_account")}}'

После завершения выполнения сервиса генерируется событие mygas_refresh_completed, в случае ошибки генерируется событие mygas_refresh_failed.

mygas.get_bill - Мой Газ: Получить счет

mygas services

Сервис позволяет запросить счет об оказанных услугах за прошлый месяц.

Параметры:

  • device_id - Устройство Прибор учета
  • email - электронная почта на которую будет отправлен счет, опционально

Вызов сервиса в формате yaml

service: mygas.get_bill
data:
  device_id: 326995f8d0468225a1370b42297380c1

или с указанием емейл

service: mygas.get_bill
data:
  device_id: 326995f8d0468225a1370b42297380c1
  email: test@mail.ru

Если была указана электронная почтя, то запрошенный счет придет только на электронную почту

После завершения выполнения сервиса генерируется событие mygas_get_bill_completed, в случае ошибки генерируется событие mygas_get_bill_failed.

mygas.send_readings - Мой Газ: Отправить показания

Сервисы

Сервис отправляет показания в ТНС Энерго из указанных сенсоров.

Параметры:

  • device_id - Устройство Лицевой счет
  • value - Сенсор со значением потребления

Вызов сервиса в формате yaml

service: mygas.send_readings
data:
  device_id: 326995f8d0468225a1370b42297380c1
  value: sensor.mygas_XXXXXXXXXXXX_counter_XXXXXXXX_XXXX_XXXX_XXXX_XXXXXXXXXXXX_readings

После завершения выполнения сервиса генерируется событие mygas_send_readings_completed, в случае ошибки генерируется событие mygas_send_readings_failed.

События

Интеграция генерирует следующие события:

  • mygas_refresh_completed - сведения обновлены успешно
  • mygas_get_bill_completed - счет получен успешно
  • mygas_send_readings_completed - показания отправлены успешно
  • mygas_refresh_failed - возникла ошибка при обновлении сведений
  • mygas_get_bill_failed - возникла ошибка при получении счета
  • mygas_send_readings_failed - возникла ошибка при отправке показаний

Событие: mygas_refresh_completed - Информация обновлена

После выполнения службы обновления информации генерируется события mygas_refresh_completed, со следующими свойствами:

event_type: mygas_refresh_completed
data:
  device_id: a05df6bea0854e17027c36a906722560
origin: LOCAL
time_fired: "2024-02-25T16:27:46.332645+00:00"
context:
  id: 01HQGHG1ST4GVCR3FPJVCVTA6X
  parent_id: null
  user_id: 86cc507484e845f7b03f46eeaaab0fa7

Событие: mygas_get_bill_completed - Счет получен

После успешного выполнения службы получения счета генерируется события mygas_get_bill_completed, со следующими свойствами:

event_type: mygas_get_bill_completed
data:
  device_id: a05df6bea0854e17027c36a906722560
  date: "2024-01-01"
  url: >-
    https://xn--80asg7a0b.xn--80ahmohdapg.xn--80asehdb/prodcontainerone/xxxxxxxxxxxxx.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minio_service_user/xxxxxxxx/us-east-1/s3/aws4_request&X-Amz-Date=20240225T162907Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
origin: LOCAL
time_fired: "2024-02-25T16:29:07.414544+00:00"
context:
  id: 01HQGHJHNGX3GNRNBQDBR7AXRX
  parent_id: null
  user_id: 86cc507484e845f7b03f46eeaaab0fa7

После успешного выполнения службы получения счета на электронную почту генерируется события mygas_get_bill_completed, со следующими свойствами:

event_type: mygas_get_bill_completed
data:
  device_id: a05df6bea0854e17027c36a906722560
  date: "2024-01-01"
  email: your_email@mail.ru 
origin: LOCAL
time_fired: "2024-02-25T16:29:07.414544+00:00"
context:
  id: 01HQGHJHNGX3GNRNBQDBR7AXRX
  parent_id: null
  user_id: 86cc507484e845f7b03f46eeaaab0fa7

Событие: mygas_send_readings_completed - Показания отправлены

После успешного выполнения службы отправки показаний генерируется события mygas_send_readings_completed, со следующими свойствами:

event_type: mygas_send_readings_completed
data:
  device_id: a05df6bea0854e17027c36a906722560
  readings: 1806
  sent: true
  message: Показания счетчика успешно переданы
origin: LOCAL
time_fired: "2024-02-25T16:32:02.808445+00:00"
context:
  id: 01HQGHQW60NNNTZD4GTSN21A8G
  parent_id: null
  user_id: 86cc507484e845f7b03f46eeaaab0fa7

Событие: mygas_*_failed - Запрос к сервису выполнился с ошибкой

В случае выполнения сервиса с ошибкой интеграция генерирует следующие события:

  • mygas_refresh_failed - возникла ошибка при обновлении сведений
  • mygas_get_bill_failed - возникла ошибка при получении счета
  • mygas_send_readings_failed - возникла ошибка при отправке показаний

Ниже пример такого события

event_type: mygas_refresh_failed
data:
  device_id: 326995f8d0468225a1370b42297380c1
  error: "Error description"
origin: LOCAL
time_fired: "2024-02-21T17:18:09.428522+00:00"
context:
  id: 01GYJD548GAG83ZEDVGVCF1WKR
  parent_id: null
  user_id: 386a6cba68ca41a0923d3b94b2710bdc

Автоматизации

Автоматизация

Для отправки показаний и получения счета по расписанию можно создать автоматизации с использованием описанных выше служб, а также автоматизации для отправки уведомлений в Телеграм, и веб интерфейс Home Assistant.

Вызов сервисов по расписанию

Для вызова сервиса по расписанию используется платформа Time с дополнительным условием на дату.

Отправка показаний в Мой Газ

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

Автоматизация

Автоматизация

Автоматизация в формате yaml

alias: Отправить показания по газу
description: Отправить показания по газу
trigger:
  - platform: time
    at: "02:00:00"
condition:
  - condition: template
    value_template: "{{ now().day == 24 }}"
action:
  - alias: "Мой Газ: Отправить показания (Дом)"
    service: mygas.send_readings
    data:
      value: sensor.waterius_9079912_ch0
      device_id: 5dc83c4fd76017381722d554832464c4
  - delay:
      hours: 1
      minutes: 0
      seconds: 0
      milliseconds: 0
  - service: mygas.refresh
    data:
      device_id: 5dc83c4fd76017381722d554832464c4
mode: single

Вы можете указать свою дату для этого скорректируйте строку "{{ now().day == 24 }}", а также можно изменить время для этого в строке at: "02:00:00" укажите нужное время.

Получение счета от Мой Газ

Счет будет запрашиваться 5 числа каждого месяца в 2 часа ночи.

Автоматизация

Автоматизация в формате yaml

alias: Запросить счета за газ
description: ""
trigger:
  - platform: time
    at: "02:00:00"
condition:
  - condition: template
    value_template: "{{ now().day == 5 }}"
action:
  - service: mygas.get_bill
    data:
      device_id: 326995f8d0468225a1370b42297380c1
mode: single

Вы можете указать свою дату для этого скорректируйте строку "{{ now().day == 5 }}", а также можно изменить время для этого в строке at: "01:00:00" укажите нужное время.

Уведомления

Тригером для отправки уведомлений является соответсвующее событие mygas_*_completed.

Уведомление об отправленных показаниях в Телеграм и веб интерфейс Home Assistant

Автоматизация в формате yaml

alias: "Мой Газ: Уведомление об отправленных показаниях"
description: Уведомление об отправленных показаниях в сервис Мой Газ
trigger:
  - platform: event
    event_type: mygas_send_readings_completed
condition: []
action:
  - service: telegram_bot.send_message
    data:
      authentication: digest
      parse_mode: markdown
      title: >-
        Показания для {{
        device_attr(trigger.event.data.device_id,'name_by_user') or
        device_attr(trigger.event.data.device_id, 'name') }} отправлены {{
        now().strftime('%d-%m-%Y %H:%M') }}
      message: "Показания: {{ trigger.event.data.readings }}"
  - service: notify.persistent_notification
    data:
      title: >-
        Показания для {{
        device_attr(trigger.event.data.device_id,'name_by_user') or
        device_attr(trigger.event.data.device_id, 'name') }} отправлены {{
        now().strftime("%d-%m-%Y %H:%M") }}
      message: "Показания: {{ trigger.event.data.readings }}"
mode: single

Результат выполнения - сообщение в Телеграм

Автоматизация

Результат выполнения - уведомление в Home Assistant

Автоматизация

Уведомления о счете за газ

Автоматизация в формате yaml

alias: "Мой Газ: Уведомление о счете за газ"
description: "Уведомление о счете за газ от сервиса Мой Газ"
trigger:
  - platform: event
    event_type: mygas_get_bill_completed
conditions:
  - condition: template
    value_template: "{{ trigger.event.data.url !=none }}"
action:
  # уведомление в Телеграм
  - service: telegram_bot.send_document
    data:
      authentication: digest
      parse_mode: markdown
      url: >-
        {{trigger.event.data.url}}
      caption: >-
        Счет за газ для
        {{device_attr(trigger.event.data.device_id, 'name_by_user') or 
        device_attr(trigger.event.data.device_id, 'name') }}
        за {{trigger.event.data.date}}
  # уведомление в веб-интерфейсе
  - service: notify.persistent_notification
    data:
      message: >-
        Скачать счет для 
        [{{device_attr(trigger.event.data.device_id, 'name_by_user') or 
        device_attr(trigger.event.data.device_id, 'name') }}]({{trigger.event.data.url}})
        за {{trigger.event.data.date}}.

      title: >-
        Счет за газ для
        {{device_attr(trigger.event.data.device_id, 'name_by_user') or 
        device_attr(trigger.event.data.device_id, 'name') }}
        за {{trigger.event.data.date}}

mode: single

Результат выполнения - сообщение в Телеграм

Автоматизация

При отправке оповещения в телеграм передается не временная ссылка на сгенерированный счет, а сам счет.

Результат выполнения - уведомление в Home Assistant

Автоматизация

Автоматизация в формате yaml для получения уведомлений об отправке на электронную почту

alias: "Мой Газ: Уведомление о счете за газ на электронную почту"
description: "Уведомление о счете за газ на электронную почту от сервиса Мой Газ"
trigger:
  - platform: event
    event_type: mygas_get_bill_completed
conditions:
  - condition: template
    value_template: "{{ trigger.event.data.email != none }}"
action:
  # уведомление в Телеграм
  - service: telegram_bot.send_document
    data:
      authentication: digest
      parse_mode: markdown
      message: >-
        Счет за газ для {{device_attr(trigger.event.data.device_id,
        'name_by_user') or  device_attr(trigger.event.data.device_id,
        'name') }} за {{trigger.event.data.date}} отправлен на
        {{trigger.event.data.email}}.
  # уведомление в веб-интерфейсе
  - service: notify.persistent_notification
    data:
      message: >-
        Счет за газ для {{device_attr(trigger.event.data.device_id,
        'name_by_user') or  device_attr(trigger.event.data.device_id,
        'name') }} за {{trigger.event.data.date}} отправлен на
        {{trigger.event.data.email}}.

mode: single

Уведомления об ошибках, возникших в процессе выполнения сервиса

Уведомления об ошибках, возникших в процессе выполнения, в Телеграм и веб интерфейс Home Assistant.

alias: Уведомление об ошибке при выполнения сервиса
description: ""
trigger:
  - platform: event
    event_type: mygas_send_readings_failed
  - platform: event
    event_type: mygas_get_bill_failed
  - platform: event
    event_type: mygas_refresh_failed
condition: [ ]
action:
  # уведомление в Телеграм
  - service: telegram_bot.send_message
    data:
      authentication: digest
      parse_mode: markdown
      title: >-
        {% if trigger.event.event_type == 'mygas_send_readings_failed' %}
        Ошибка при передаче показаний для
        {% elif trigger.event.event_type == 'mygas_get_bill_failed' %}
        Ошибка при получении счета для
        {% elif trigger.event.event_type == 'mygas_refresh_failed' %}
        Ошибка при обновлении информации для
        {% else %}
        Ошибка при выполнении сервиса для
        {% endif %}
        {{device_attr(trigger.event.data.device_id, 'name_by_user') or 
        device_attr(trigger.event.data.device_id, 'name') }}
        от {{ now().strftime('%d-%m-%Y %H:%M')}}
      message: "{{ trigger.event.data.error }}"
  # уведомление в веб-интерфейсе
  - service: notify.persistent_notification
    data:
      title: >-
        {% if trigger.event.event_type == 'mygas_send_readings_failed' %}
        Ошибка при передаче показаний для
        {% elif trigger.event.event_type == 'mygas_get_bill_failed' %}
        Ошибка при получении счета для
        {% elif trigger.event.event_type == 'mygas_refresh_failed' %}
        Ошибка при обновлении информации для
        {% else %}
        Ошибка при выполнении сервиса для
        {% endif %}
        {{device_attr(trigger.event.data.device_id, 'name_by_user') or 
        device_attr(trigger.event.data.device_id, 'name') }} 
        от {{ now().strftime('%d-%m-%Y %H:%M')}}
      message: "{{ trigger.event.data.error }}"

mode: single

Возникли проблемы?

Включите ведение журнала отладки, поместив следующие инструкции в файл configuration.yaml:

logger:
  default: warning
  logs:
    custom_components.mygas: debug
    aiomygas: debug

После возникновения проблемы, пожалуйста, найдите проблему в журнале (/config/home-assistant.log) и создайте запрос на исправление.

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

Эта интеграция использует API Мой Газ Смородина.

About

Интеграция для Home Assistant, поддерживающая сервис Мой Газ Смородина

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages