Coder Social home page Coder Social logo

sauresha's Introduction

SauresHA

hacs_badge GitHub release (latest by date) GitHub Release Date GitHub

Maintenance GitHub issues

Donate Donate

Пожертвование на развитие проекта Яндекс.Деньги

Update 1: Начиная с версии 0.3:

  • сделан переход на новое клиентское API
  • добавлена необязательная настройка для sensor - scan_interval. Время обновления в минутах. По умолчанию = 10 минут.
  • из-за перехода появились новые атрибуты у сенсоров.

Update 2: версия 0.3.5:

  • уменьшено количество вызово API
  • ускорена первоначальная инициализация модуля
  • сделан переход на асинхронные методы
  • исправлена ошибка с заднием своего scan_interval
  • исправлена ошибка связанная с наличием русских букв в серийных номерах
  • на стороне Saures явно починили кеширование для нового API

Update 3: версия 0.3.8:

  • вернул синхронные вызовы

Update 4: Начиная с версии 0.5:

  • Существенно сокращено кол-во обращений к серверу Saures, для предотвращения блокировки.
    Рекомендую в настройках указать:
  scan_interval:
    minutes: 30

Иначе могут быть блокировки в будущем.

Update 5: Начиная с версии 0.6:

  • значительно изменен механизм настройки
  • можно задавать свои мена для всего
  • можно в настройках делать ссылки на !secret
  • добавил в manifest, version

Update 6: Начиная с версии 1.0:

  • полностью переработан код для минимизации обращений к серверу Saures
  • внедрен асинхронный режим работы
  • Добавлено управление кранами
  • настройка через GUI

Содержание

Для связи: [email protected]

Интеграция котроллеров Saures c Home Assistant

Описание

В настоящее время поддерживаются следующие типы устройств от Saurus

  1. Счетчик холодной воды (м³) = sensor в Home Assistant
  2. Счетчик горячей воды (м³) = sensor в Home Assistant
  3. Счетчик газа (м³) = sensor в Home Assistant
  4. Датчик протечки (0 – нет протечки, 1 - протечка) = binary_sensor в Home Assistant
  5. Датчик температуры (градусы) = sensor в Home Assistant
  6. Электро-шаровой кран управление (0 – открыться, 1 - закрыться) - поддерживается, switch в Home Assistant
  7. Счетчик тепла (кВт*ч) = sensor в Home Assistant
  8. Счетчик электричества (кВт*ч) (в том числе многотарифные) = sensor в Home Assistant
  9. Сухой контакт (0 – деактивирован, 1 – активирован) = binary_sensor в Home Assistant
  10. Электро-шаровой кран состояние (0 – не подключен модуль, 1 – неизвестное состояние, 2 – открыт, 3 - закрыт) = sensor в Home Assistant
  11. Непосредственно сами контроллеры = sensor в Home Assistant

Установка

Ручная установка

  1. Добавляем компонент в Home Assistant Распаковываем архив. Папку sauresha берем целиком и копируем в custom_components.
  2. Осуществляем конфигурацию компонента в Home Assistant через GUI.
  3. Перезагружаем HA

HACS установка

  1. Убедитесь, что HACS уже устновлен.
  2. Перейдите на закладку SETTINGS
  3. Введите https://github.com/volshebniks/sauresha и выберите категорию Integration, нажмите Сохранить
  4. Новый репозиторий Integration Saures controllers with HA будет добавлен на закладке Integration
  5. Устновите SauresHA из него
  6. Осуществляем конфигурацию компонента в Home Assistant через GUI.
  7. Перезапустите HA.

План развития проекта

  • Добавить проект в HACS
  • Сделать сенсоры для счетчиков с показаниями за день/месяц/год
  • Добавить управление кранами
  • Сделать pallete для Node-Red
  • Сделать полноценную интеграцию с Home Assistant (добавляется в раздел интеграции)

Credits

Большое спасибо следующим организациям и проектам, работа которых имеет важное значение для развития проекта:

Нет их пока :)


Пожертвование на развитие проекта Яндекс.Деньги

sauresha's People

Contributors

alexobukhoff avatar gimlir avatar volshebniks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

sauresha's Issues

Как добавить сенсор в HA?

Добрый день!
Спасибо за Вашу работу, но никак не могу добавить сенсор в HA. Я начинающий пользователь, не могли бы Вы расписать более подробно тот процесс?

Error adding entities for domain sensor with platform sauresha

Вот такое в логах и сенсоры хол и гор воды не появляются. Сам контроллер нормально

Logger: homeassistant.components.sensor
Source: helpers/entity_platform.py:569 
Integration: Sensor (documentation, issues) 
First occurred: 11:06:22 (2 occurrences) 
Last logged: 11:06:23

Error adding entities for domain sensor with platform sauresha
Error while setting up sauresha platform for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 569, in _async_add_entity
    raise HomeAssistantError(f"Invalid entity ID: {entity.entity_id}")
homeassistant.exceptions.HomeAssistantError: Invalid entity ID: sensor.sauresha_

Объединить показания двух-зонного счетчика э/э

стоит счетчик с разделением Т1 Т2 - день/ночь меня по умолчанию

  • общее показание
  1. ВОПРОС
    подскажите, как объединить показатель, чтобы в НА только общий расход э/э показывал?
    я в прошлый раз делал, по-моему в классе объединял показания (плюсовал), сейчас что-то не пойму, где этот параметр

вот тут надо заменить?

    if len(self.values) == 2:
        self.value = "{0}/{1}".format(self.values[0], self.values[1])
        self.t1 = self.values[0] + self.values[1]
        self.t2 = "-"
        self.t3 = "-"
        self.t4 = "-"

код оригинальный:

class SauresSensor:
def init(self, data):
self.data = data
self.name = data.get("meter_name")
self.type_number = data.get("type", {}).get("number")
self.type = data.get("type", {}).get("name")
self.state = data.get("state", {}).get("name")
self.sn = data.get("sn")
self.value = data.get("value")
self.meter_id = data.get("meter_id")
self.input = data.get("input")
self.approve_dt = data.get("approve_dt")

    self.values = data.get("vals", [])

    if len(self.values) == 2:
        self.value = "{0}/{1}".format(self.values[0], self.values[1])
        self.t1 = self.values[0]
        self.t2 = self.values[1]
        self.t3 = "-"
        self.t4 = "-"
    elif len(self.values) == 3:
        self.value = "{0}/{1}/{2}".format(
            self.values[0], self.values[1], self.values[2]
        )
        self.t1 = self.values[0]
        self.t2 = self.values[1]
        self.t3 = self.values[2]
        self.t4 = "-" 
  1. еще ВОПРОС
    и подскажите, в каком разделе период обновления датчиков задается?

API ERROR during Auth process при использовании подчеркивания в имени binary_sensor

Получаю вот такие ошибки в логе, если name в binary_sensor состоит из нескольких слов с символом '_' в качестве разделителя

лог

homeassistant  | 2021-12-23 16:09:00 ERROR (SyncWorker_0) [custom_components.sauresha.binary_sensor] API ERROR during Auth process
homeassistant  | 2021-12-23 16:09:01 ERROR (SyncWorker_5) [custom_components.sauresha.binary_sensor] API ERROR during Auth process
homeassistant  | 2021-12-23 16:09:02 ERROR (SyncWorker_3) [custom_components.sauresha.binary_sensor] API ERROR during Auth process
homeassistant  | 2021-12-23 16:09:02 ERROR (SyncWorker_2) [custom_components.sauresha.binary_sensor] API ERROR during Auth process
homeassistant  | 2021-12-23 16:09:03 ERROR (SyncWorker_4) [custom_components.sauresha.binary_sensor] API ERROR during Auth process
homeassistant  | 2021-12-23 16:09:03 ERROR (SyncWorker_2) [custom_components.sauresha.binary_sensor] API ERROR during Auth process

При этом все датчики в HA создаются и имеют статус False

если name задать латинницей только буквами - все работает.

не работает

    !secret sensor_saures_valve_status_cold:
      name: cold_valve

работает

    !secret sensor_saures_valve_status_cold:
      name: coldvalve

No 'version' key in the manifest

Новые требования HA с версии 2021.3.0.
Добавьте пожалуйста version в манифест компонента.

No 'version' key in the manifest file for custom integration 'sauresha'. This will not be allowed in a future version of Home Assistant. Please report this to the maintainer of 'sauresha'

планируется ли обновление интеграции под актуальную версию HA?

Уважаемый автор, планируется ли обновление интеграции под актуальную версию HA?
возможно ли это в ближайшей перспективе? или нужно искать альтернативные варианты интеграции в УД?

PS очень хочется надеятся на то что вы сможете адаптировать ваш плагин под новую версию. Спасибо за ваш труд

Не обновляется сенсор электросчетчика

Поставил Ваш компонент SauresHA, сенсор электросчетчика появился, но обновляется только при перезагрузке сервера НА.
В логах появилась вот такая ошибка:
Logger: homeassistant
Source: custom_components/sauresha/sauresha.py:101
First occurred: 11:42:58 (1 occurrences)
Last logged: 11:42:58

Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/sauresha/sensor.py", line 258, in refresh
self.update()
File "/config/custom_components/sauresha/sensor.py", line 304, in update
self._state = self.fetch_state()
File "/config/custom_components/sauresha/sensor.py", line 272, in fetch_state
my_controller = self.current_controller_info
File "/config/custom_components/sauresha/sensor.py", line 230, in current_controller_info
return self.controller.get_controller(self.flat_id, self.serial_number)
File "/config/custom_components/sauresha/sauresha.py", line 109, in get_controller
controllers = self.get_controllers(flat_id)
File "/config/custom_components/sauresha/sauresha.py", line 101, in get_controllers
self._sensors = controllers
UnboundLocalError: local variable 'controllers' referenced before assignment

Warning after update Homeassistant 2021.12.0

Hi, I got warnings after update homeassitant 2021.12.0:

2021-12-19 22:24:48 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.sauresha_water_cold_toilet (<class 'custom_components.sauresha.sensor.SauresSensor'>) implements device_state_attributes. Please report it to the custom component author.
2021-12-19 22:24:48 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.sauresha_water_hot_toilet (<class 'custom_components.sauresha.sensor.SauresSensor'>) implements device_state_attributes. Please report it to the custom component author.

INFO: device_state_attributes has been deprecated and replaced with extra_state_attributes in 2021.12.0b1

Error doing job: Future exception was never retrieved

Hello, when I install "flat: 0", then everything is fine, but the description indicates how to get flat
ID flat: *********, Алексеева, 115 : 13520

When I install "flat: 13520", then everything collapses. prescribe flat:0 ?

Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/sauresha/sensor.py", line 298, in refresh
self.update()
File "/config/custom_components/sauresha/sensor.py", line 344, in update
self._state = self.fetch_state()
File "/config/custom_components/sauresha/sensor.py", line 312, in fetch_state
my_controller = self.current_controller_info
File "/config/custom_components/sauresha/sensor.py", line 266, in current_controller_info
return self.controller.get_controller(self.flat_id, self.serial_number)
File "/config/custom_components/sauresha/sauresha.py", line 113, in get_controller
controllers = self.get_controllers(flat_id)
File "/config/custom_components/sauresha/sauresha.py", line 105, in get_controllers
self._sensors = controllers
UnboundLocalError: local variable 'controllers' referenced before assignment

Обрыв датчика

Приветствую. Предложу небольшое улучшение.

Кроме состояний "Ошибок нет" и "Протечка", в бинарных датчиках присутствует третье состояние: "Обрыв".

Правильнее в таком случае переводить значение датчика в True, чтобы привлечь внимание к неисправности.
obryv
.

Не работает управление краном, куча ошибок в логах

множество раз перестанавливал, стоит мастер версия, в блоках куча предупреждений, кран так и не заработал
подобные проблемы на протяжении месяца думал я что то делаю не так и обновлял и перестанавливал НА последняя версия и НА кор тоже
Снимок экрана 2022-09-22 в 18 51 08
Снимок экрана 2022-09-22 в 18 53 09
Снимок экрана 2022-09-22 в 18 53 20
Снимок экрана 2022-09-22 в 18 54 04

Error doing job: Task exception was never retrieved

И снова не все гладко в королевстве =)
Совершенно неожиданно лог стал заваливаться однотипными сообщениями:
image
Спустя пару минут после перезагрузка HA:
image

Возможно что то поломалось на стороне API сауреса, но было б, наверное, хорошо как то это отлавливать =)

некорректные показания электросчетчика

HA: последняя (2024.2.01)
SauresHA: последняя
Контроллер R4 (hw 4.1, fw 4.4.5)
Электросчетчик: Меркурий 230 (три фазы, два тарифа день/ночь)

Суть проблемы:
На закладке "Энергия" добавил электросчетчик в качестве источника информации о потреблении электричества из сети. Показаний нет. Истории нет. В настройках этого раздела HA пишет об ошибке:

У объекта нечисловое состояние
Следующие объекты имеют состояния, которые не распознаются как число:
sensor.saures_merkurii_230 (55091.662/23770.541)

При этом на пользовательской вкладке добавил две карточки для атрибутов T1 и T2 этого же счетчика. И с ними все хорошо - и ошибок нет, и графики рисует.

Причина в том, что с объекта "сенсор" приезжает два значения с точкой в качестве разделителя целой и дробной части, а в атрибутах - как положено, через запятую. Наверное, правильно было-бы привести сложить значения атрибутов Т1, Т2, Т3 и Т4 и в качестве значения сенсора выдавать итоговую сумму с корректным разделителем целой и дробной частей, либо округленное до ближайшего целого.

ошибка 104

[Errno 104] Connection reset by peer вновь появилась эта ошибка, интеграция не может получить данные с сервера Сауреса
Подскажите возможно ли это починить?

2 контроллера, 4 счетчика...

Как правильно прописать в конфи.ямл и сек.ямл два контроллера и 4 счетчика? В мануале нет... Контроллеры в объектах видятся, а вот из счетчиков вижу только два по ванной. Похоже, связано с тем, что счетчиков на кухне в серийнике в начале два нуля:
00ХХХХХ

UPD: Да, дело в нолях. Убрал в ЛК саурес, все заработало

Сейчас прописано

  • platform: sauresha
    email: ХХХХХmail.ru
    password: ХХХХХХ
    flat_id: ХХХХХ
    controllers:
    !secret saures_controller_id1:
    name: Kuhn
    !secret saures_controller_id2:
    name: Vann
    counters:
    !secret saures_controller_cold1:
    name: Cold_kuhn
    !secret saures_controller_hot1:
    name: Hot_kuhn
    !secret saures_controller_cold2:
    name: Cold_vann
    !secret saures_controller_hot2:
    name: Hot_vann
    scan_interval:
    minutes: 240

В сек

saures_controller_id1: ХХХХХ
saures_controller_cold1: ХХХХХ
saures_controller_hot1: ХХХХХ
saures_controller_id2: ХХХХХ
saures_controller_cold2: ХХХХХ
saures_controller_hot2: ХХХХХХ

Перестали обновляться датчики

После обновления Homeassistant 2023.9.3 отвалилась интеграция SauresHA, после обновления интеграции она вроде как ожила, но перестали обновляться датчики. Вернее они обновляются только при перезагрузке Homeassistant.

После обновления 0.4.0

По счетчикам воды все заработало, электричество не показывает.
Это единственное что в логах нашел:
03
Атрибуты старые, еще позавчерашние.
04

Ошибки создания устройств типа binary_sensor и switch

Тестирую на версии из ветки master по состоянию на 8642a44

Интеграцию установил, вбил логин и пароль через GUI.
После первого рестарта HA интеграция нашла квартиру и все устройства, но не все смогла создать как объекты в HA.

2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Scan_interval = 1:00:00
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14488
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14488
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14489
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14489
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14490
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14490
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start sn: 4245208
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish sn: 4245208
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14486
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14486
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14487
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14487
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14492
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14492
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14493
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14493
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Start meter_id: 14491
2022-06-03 13:26:39 WARNING (MainThread) [custom_components.sauresha.entity] Update Finish meter_id: 14491
2022-06-03 13:26:39 ERROR (MainThread) [homeassistant.components.binary_sensor] Error adding entities for domain binary_sensor with platform sauresha
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 534, in _async_add_entity
entity.entity_id = entry.entity_id
AttributeError: can't set attribute
2022-06-03 13:26:39 ERROR (MainThread) [homeassistant.components.switch] Error adding entities for domain switch with platform sauresha
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 534, in _async_add_entity
entity.entity_id = entry.entity_id
AttributeError: can't set attribute
2022-06-03 13:26:39 ERROR (MainThread) [homeassistant.components.binary_sensor] Error while setting up sauresha platform for binary_sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 257, in _async_setup_platform
await asyncio.gather(*pending)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 534, in _async_add_entity
entity.entity_id = entry.entity_id
AttributeError: can't set attribute
2022-06-03 13:26:39 ERROR (MainThread) [homeassistant.components.switch] Error while setting up sauresha platform for switch
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 257, in _async_setup_platform
await asyncio.gather(*pending)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 382, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 534, in _async_add_entity
entity.entity_id = entry.entity_id
AttributeError: can't set attribute

канал управления краном и каналы датчиков протечки видны как отсутствующие
image
image
image
image
Сам контроллер saures создался как сенсор вообще без какого-либо имени.

Не появляется в интеграциях в GUI

После установки через HACS компонент виден в нем, но отсутствует в списке кнопки "добавить" в интеграциях.
Пробовал версии 0.6.5 и 1.0.0 - результат одинаков.
HASS, разумеется, перезапускал.
Ошибок в логе нет.
HASS 2022.6.2

UnboundLocalError: local variable 'controllers' referenced before assignment

Иногда получаю в логе вот такую ошибку, видимо из-за того, что не удается загрузить данные из облака Сауреса

2021-06-30 16:07:20 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/sauresha/sensor.py", line 298, in refresh
    self.update()
  File "/config/custom_components/sauresha/sensor.py", line 344, in update
    self._state = self.fetch_state()
  File "/config/custom_components/sauresha/sensor.py", line 312, in fetch_state
    my_controller = self.current_controller_info
  File "/config/custom_components/sauresha/sensor.py", line 266, in current_controller_info
    return self.controller.get_controller(self.flat_id, self.serial_number)
  File "/config/custom_components/sauresha/sauresha.py", line 113, in get_controller
    controllers = self.get_controllers(flat_id)
  File "/config/custom_components/sauresha/sauresha.py", line 105, in get_controllers
    self._sensors = controllers
UnboundLocalError: local variable 'controllers' referenced before assignment

Конфиг:

- platform: sauresha
  email: !secret sensor_saures_email
  password: !secret sensor_saures_password
  flat_id: !secret sensor_saures_flat_id
  controllers:
    !secret sensor_saures_controller_sn_electricity:
      name: saures_electricity
    !secret sensor_saures_controller_sn_water:
      name: saures_water
  counters:
    !secret sensor_saures_counter_sn_cold:
      name: cold_water
    !secret sensor_saures_counter_sn_hot:
      name: hot_water
    !secret sensor_saures_counter_sn_electricity:
      name: electricity
  scan_interval:
    minutes: 60

Версия компонента: 0.6.1
Версия HA: 2021.6.6

Недоступны данные saures meters сконфигурированных как binary sensor

К контроллеру Saures R2 4.0 (прошивка 4.4.3) подключено 2 счетчика, 3 датчика протечки и 2 крана гидролока (на 3 прота - 2 порта на состояние каждого из кранов и 1 порт на управление обоими кранами сразу в параллель).

Данные контроллера и счетчиков получаю, но данные бинарных сенсоров - недоступно.
В HA объекты создались, но выглядят вот так
image

Интеграция версии 0.6.2 установлена ручным способом, HA версии 2021.12.3 в докер контейнере установлен по оф. мануалу HA

конфиг sensor

- platform: sauresha
  email: !secret sensor_saures_email
  password: !secret sensor_saures_password
  flat_id: !secret sensor_saures_flat_id
  controllers:
    !secret sensor_saures_controller_sn_water:
      name: Controller_Saures
  counters:
    !secret sensor_saures_counter_sn_cold:
      name: Cold_water
    !secret sensor_saures_counter_sn_hot:
      name: Hot_water
  scan_interval:
    minutes: 60

конфиг binary_sensor

- platform: sauresha
  email: !secret sensor_saures_email
  password: !secret sensor_saures_password
  flat_id: !secret sensor_saures_flat_id
  scan_interval:
    minutes: 60
  counters:
    !secret sensor_saures_leak_1:
      name: leak1
    !secret sensor_saures_leak_2:
      name: leak2
    !secret sensor_saures_leak_3:
      name: leak3
    !secret sensor_saures_valve_status_hot:
      name: hot_valve
    !secret sensor_saures_valve_status_cold:
      name: cold_valve

оба ссылаются на общий secrets

sensor_saures_email: "a**********e"
sensor_saures_password: "***********"
sensor_saures_flat_id: *****3
sensor_saures_controller_sn_water: ******08
sensor_saures_counter_sn_hot: ******81
sensor_saures_counter_sn_cold: ******92
sensor_saures_leak_1: ***88
sensor_saures_leak_2: ***89
sensor_saures_leak_3: ***90
sensor_saures_valve_status_hot: ***92
sensor_saures_valve_status_cold: ***93

в логе HA нет никаких сообщений

если перехватить ответы API в родном ЛК Saures, то информация по датчикам протечки и кранам там отдается в таком виде:
запрос вида
https://api.saures.ru/1.0/object/meters?sid=***********&id=*****3&date=2021-12-23T23:59:59
ответ

{
	"data": {
		"sensors": [
			{
				"sn": "******08",
				"name": "",
				"active": true,
				"ssid": "Wi-Fi: *********",
				"hardware": "4.0",
				"firmware": "4.4.3",
				"new_firmware": "",
				"bat": 50,
				"local_ip": "192.168.******",
				"check_hours": 48,
				"check_period_display": "1 час",
				"last_connection": "2021-12-23T01:31:32",
				"last_connection_warning": null,
				"lic_channels": null,
				"requests": 11272,
				"rssi": "-60",
				"log": 60,
				"scan": 5,
				"vol": 200,
				"readout_dt": "2021-12-23T01:00:00",
				"request_dt": "2021-12-23T01:31:32",
				"cap_state": false,
				"power_supply": false,
				"nbiot": false,
				"meters": [
					{
						"meter_id": ***86,
						"meter_name": "Счетчик Горячая",
						"input": 1,
						"approve_dt": "2025-07-12",
						"eirc_num": "*****81",
						"sn": "******81",
						"type": {
							"name": "Горячая вода",
							"number": 2
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "м³",
						"vals": [
							122.161
						]
					},
					{
						"meter_id": ****87,
						"meter_name": "Счетчик Холодная",
						"input": 2,
						"approve_dt": "2025-07-12",
						"eirc_num": "*****92",
						"sn": "******92",
						"type": {
							"name": "Холодная вода",
							"number": 1
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "м³",
						"vals": [
							266.803
						]
					},
					{
						"meter_id": *****88,
						"meter_name": "Протечка Ванная",
						"input": 3,
						"approve_dt": null,
						"eirc_num": "",
						"sn": "",
						"type": {
							"name": "Датчик",
							"number": 9
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "",
						"vals": [
							0
						],
						"active_text": "Активен",
						"passive_text": "Неактивен"
					},
					{
						"meter_id": *****89,
						"meter_name": "Протечка Кухня",
						"input": 4,
						"approve_dt": null,
						"eirc_num": "",
						"sn": "",
						"type": {
							"name": "Датчик",
							"number": 9
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "",
						"vals": [
							0
						],
						"active_text": "Активен",
						"passive_text": "Неактивен"
					},
					{
						"meter_id": *****90,
						"meter_name": "Протечка сантехшкаф",
						"input": 5,
						"approve_dt": null,
						"eirc_num": "",
						"sn": "",
						"type": {
							"name": "Датчик",
							"number": 9
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "",
						"vals": [
							0
						],
						"active_text": "Активен",
						"passive_text": "Неактивен"
					},
					{
						"meter_id": *****91,
						"meter_name": "Краны управление",
						"input": 6,
						"approve_dt": null,
						"eirc_num": "",
						"sn": "",
						"type": {
							"name": "Кран/реле",
							"number": 6
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "",
						"vals": [
							0
						],
						"active_text": "Закрытие",
						"passive_text": "Открытие"
					},
					{
						"meter_id": ******92,
						"meter_name": "Кран Горячая",
						"input": 7,
						"approve_dt": null,
						"eirc_num": "",
						"sn": "",
						"type": {
							"name": "Состояние крана",
							"number": 10
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "",
						"vals": [
							0
						],
						"active_text": "Закрыт",
						"passive_text": "Открыт"
					},
					{
						"meter_id": *****93,
						"meter_name": "Кран Холодная",
						"input": 8,
						"approve_dt": null,
						"eirc_num": "",
						"sn": "",
						"type": {
							"name": "Состояние крана",
							"number": 10
						},
						"state": {
							"name": "Ошибок нет",
							"number": 0
						},
						"unit": "",
						"vals": [
							0
						],
						"active_text": "Закрыт",
						"passive_text": "Открыт"
					}
				]
			}
		]
	}
}

окончания идентификаторов для удобства сравнения с конфигом оставил

Буду признателен за подсказку, в какую сторону копать?

Поддержка добавления счетчиков воды на экран Energy в HA 2022.11+

в HA 2022.11 добавили поддержку учета воды на странице Energy. Счетчики воды, создаваемые интеграцией не возможно пока добавить там из-за отсутствия класса устройства (см home-assistant/home-assistant.io#24801 (comment))
Создал PR #45, прошу принять

Добавить поддержку контроллера R2 4.5

Некоторое время назад вышла новая ревизия R2, которая имеет версию железа 4.5.
При попытке определить название контроллера компонент падает.

Возможно стоит добавить какое то название по умолчанию для неизвестных ревизий?

Возможность задавать собственное имя для создаваемых сущностей

Добрый день! Во-первых, хочу выразить большую благодарность за создание компонента!

Но есть один feature request к нему: сейчас компонент всегда создает сущности для счетчиков и контроллеров на основании их серийных номеров. И, если в конфиге, можно указать серийные номера из файла secrets, то при использовании созданных сущностей в автоматизациях или template сенсорах, приходится указывать серийные номера уже вне файла secrets.

Все это приводит к тому, что при попытке выложить свои конфиги HA в общий доступ (что достаточно распространено среди пользователей HA), всему миру также будут доступны серийники счетчиков и контроллеров.

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

counters_sn:
  - sn: 123456
    name: cold_water

Состояние бинарного сенсора и свича крана не обновляется

Вынес отдельный баг из обсуждения #21
При очередном обновлении данных по АПИ состояние объектов бинарного сенсора состояния крана и свича крана в HA не меняется, не смотря на то, что все другие сенсоры обновляются и показывают новые значения (счетчики воды например). При перезапуске НА, как и прежде, верный статус бинарных сенсоров и свича восстанавливается.

Видится только один датчик под номером 8 .

В контроллере использовано 6 датчиков
1-2 счетчики воды
3-4 - пустые
5 - контакт закрытия гидролока
6 - датчик наличия 220в
7- Датчик тембературы
8- контакт аларма гидролока

Расширение настроено так
##############################
sensor:

  • platform: sauresha
    email: !secret saures_login
    password: !secret saures_password
    flat_id: XXXX
    scan_interval:
    minutes: 60
    counters_sn:
    • 000001
    • 000002
    • 000007
      controllers_sn:
    • 84XXXXXXXXXX

##############################

binary_sensor:

  • platform: sauresha
    email: !secret saures_login
    password: !secret saures_password
    flat_id: XXXX
    counters_sn:
    • 000005
    • 000006
    • 000008
      ##############################

В Home assistant видится и получает данные только датчик под номером 8 и сам контроллер и его статус
все остальные не видятся и не получают данные , в логе пусто .

https://a.radikal.ru/a20/2102/68/da584049425b.png

подскажите где ошибка и куда смотреть ?

Сменить тип устройства на binary sensor для каналов типа "Состояние крана"

image
Для такого вида канала, получаемого с контроллера Саурес и его данных Закрыто\Открыто больше подходит binary sensor.
Сейчас Открыто = 0, предлагаю сконвертировать в binary sensor c device class opening: on means open, off means closed (https://www.home-assistant.io/integrations/binary_sensor/)

не получается сконфигурировать сенсоры и бинарные сенсоры одновременно

сам компонент сконфигурирован, в интерфейсе ХА видна информация о контроллере, счетчиках, но как только создается файл конфигурации (и перезапускается ХА) бинарных сенсоров (датчики протечки), то становятся нормально видны только они, со своими статусами, а ранее сконфигурированные сенсоры переходят в "Unknown". файл конфига бинарных сенсоров удаляю, перезапускаю ХА, все опять в порядке: контроллер и счетчики отображаются, как положено
sensors.yaml

- platform: sauresha
  email: !secret saures_uid
  password: !secret saures_pwd
  flat_id: !secret saures_flt
  scan_interval:
          minutes: 60
  controllers:
          FAFAFAFAFAFA:
                  name: SauresR5
  counters:
          20-123456:
                  name: hot_water_cntr
          20-654321:
                  name: cold_water_cntr

bin_sensors.yaml

- platform: sauresha
  email: !secret saures_uid
  password: !secret saures_pwd
  flat_id: !secret saures_flt
  counters:
          211111:
                  name: ""
          222222:
                  name: ""
          233333:
                  name: ""

Проблемы во время загрузки HA начиная с версии 0.3.5

Начиная с версии 0.3.5 (в вплоть до 0.3.7) при загрузке HA появляется большое кол-во ошибок в других компонентах:
image
Если откатиться на 0.2.3 все эти ошибки магических образом пропадают.
Где-то что-то пошло не так... =)

Нет аддона в списке интеграций, доступных к установке

Прошу помощи.

Установил аддон через HACS, пытаюсь добавить интеграцию через UI, но её нет в списке. Перезагружал HA, очищал кэш, пробовал с других браузеров - то же самое. Переустанавливал через HACS тоже без результата.

В логах HA только одна запись:

2022-09-04 13:14:38.946 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration sauresha which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

Версия 0.6.5
Версия HA 2022.08.5

Спасибо!

Реализация управления кранами: пример обмена по API

Очень хотелось бы получить возможность управления кранами. Хочу помочь продвинуться в этом направлении.
Увидел в комментариях других issues, что в предоставленных документах по API от Saures не было про управление кранами. Выкладываю свой пример команд на открытие и закрытие, взятый в ЛК потребителя из браузера.

Выход, подключенный к управляющему каналу кранов в классификации Saures - Тип: Кран/реле, тип цифрой: 6, в списке meters выгдядит как:

{
		"meter_id": ***91,    #обязательный
		"meter_name": "Краны управление",
		"input": 6,
		"approve_dt": null,
		"eirc_num": "",
		"sn": "*******8-6",    #опциональный, может отсутствовать
		"type": {
			"name": "Кран/реле",
			"number": 6
		},
		"state": {
			"name": "Ошибок нет",
			"number": 0
		},
		"unit": "",
		"vals": [
			0                       <===текущее состояние управляющего сигнала = открыть (соотв. 1 = закрыть)
		],
		"active_text": "Закрытие",
		"passive_text": "Открытие"
	}
}

если в системе зарегистрирована ожидающая своего исполнения команда для канала этого типа, то она видна в ответе на запрос /object/meters между vals и active_text как command:

...
		"vals": [
			0
		],
		"command": {
			"type": "close",
			"description": "закрытие 27.12 в 12:35"
		},
		"active_text": "Закрытие",
		"passive_text": "Открытие"
...

Управление
Запрос заголовки

POST /1.0/meter/control HTTP/1.1
Host: api.saures.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Content-Length: 62
Origin: https://lk.saures.ru
Connection: keep-alive
Referer: https://lk.saures.ru/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Pragma: no-cache
Cache-Control: no-cache

POST Data для открытия

sid=a3c5****-****-****-****-**********1c
id=****91                           # id здесь совпадает с meter_id, не (!) sn канала, куда заведен провод управления кранами
command=open

и закрытия

sid=59ce25c4-55c0-44d3-a0ab-8920efb8e2aa
id=***91
command=close

Ответ, заголовки

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: User-Agent,Keep-Alive,Content-Type
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 142
Content-Type: application/json; charset=utf-8
Strict-Transport-Security: max-age=31536000
Date: Mon, 27 Dec 2021 06:45:51 GMT

ответ тело (так как открытие происходит не в realtime, а в момент выхода контроллера на связь в следующий раз, сервер возвращает ориентировочное время этого ожидаемого выхода, выход и закрытие в это время может и не случиться)

{"status": "ok", "errors": [], "data": {"type": "open", "description": "\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 27.12 \u0432 10:34"}}

и на закрытие

{"status": "ok", "errors": [], "data": {"type": "close", "description": "\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 27.12 \u0432 12:35"}}

image

ответ при просроченной сессии авторизации

{"status": "bad", "errors": [{"name": "WrongSIDException", "msg": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 sid"}], "data": {}}

Отмена задания открытия:
если передумали открывать кран до того запланированного времени, когда ожидаем, что оно выполнится

POST /1.0/meter/control HTTP/1.1
Host: api.saures.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Content-Length: 63
Origin: https://lk.saures.ru
Connection: keep-alive
Referer: https://lk.saures.ru/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Pragma: no-cache
Cache-Control: no-cache
sid=a3c5****-****-****-****-**********1c
id=***91
command=clear

ответ

{"status": "ok", "errors": [], "data": {}}

Логика, зашитая во фронтенде ЛК Саурес при нажатии на кнопку отправки команды закрытия(открытия): запрос GET на /objects/meters для проверки текущего состояния и наличия уже ожидающей команды, запрос POST на /meter/control с командой и снова GET на /objects/meters для проверки взятия команды в очередь.

Перестал обновляться контроллер в НА

Автоматизация перестала работать на 2022.9.*
Последнее успешное соединение до обновления НА - 11.09.22
В настройках обновление каждые 120 минут. Сам контроллер на сервер данные 100% шлет, скрин прикладываю.

Эта ошибка возникла в кастомной интеграции.

Logger: homeassistant
Source: custom_components/sauresha/sauresha.py:105
Integration: sauresha (documentation)
First occurred: 13 сентября 2022 г., 23:26:56 (6 occurrences)
Last logged: 09:26:56

Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/sauresha/sensor.py", line 306, in refresh
self.update()
File "/config/custom_components/sauresha/sensor.py", line 352, in update
self._state = self.fetch_state()
File "/config/custom_components/sauresha/sensor.py", line 320, in fetch_state
my_controller = self.current_controller_info
File "/config/custom_components/sauresha/sensor.py", line 274, in current_controller_info
return self.controller.get_controller(self.flat_id, self.serial_number)
File "/config/custom_components/sauresha/sauresha.py", line 113, in get_controller
controllers = self.get_controllers(flat_id)
File "/config/custom_components/sauresha/sauresha.py", line 105, in get_controllers
self._sensors = controllers
UnboundLocalError: local variable 'controllers' referenced before assignment

Screenshot_20220913-224645
Screenshot_20220913-224135__01

Баг обработки логина при настройке через GUI

при попытке использовать адрес почты (логин) вида хххх@yyyy.name при настройке через GUI получаю ошибку
image
в логах

2022-06-01 15:27:59 ERROR (MainThread) [homeassistant.setup] Error during setup of component sauresha
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/setup.py", line 235, in _async_setup_component
result = await task
File "/config/custom_components/sauresha/__init__.py", line 39, in async_setup
yaml_email: str = user_cfg[CONF_EMAIL]
KeyError: 'email'

при этом использование адреса почты вида хххх@gmail.com к такой ошибке не приводит, конфигурация сохраняется нормально и интеграция загружается в НА нормально. В логах вижу, что интеграция успешно пытается в этим логином авторизоваться по АПИ ([custom_components.sauresha.api] Неправильный email или пароль).

Поправьте, плиз, валидацию адреса email. Часто встречаю такой кейс, когда домен первого уровня длиннее 3 символов не проходит проверки всяческими регулярками.

Документация по API

У вас наверняка есть какая-то документация по API. Официальная или в виде Swagger или что-то подобное. Нельзя ли и ее выложить сюда? По старому API и по новому?

[Errno 104] Connection reset by peer

This error originated from a custom integration.

Logger: custom_components.sauresha.api
Source: custom_components/sauresha/api.py:309
Integration: SauresHA (documentation, issues)
First occurred: 08:28:47 (1 occurrences)
Last logged: 08:28:47

[Errno 104] Connection reset by peer

Ошибка Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://api.saures.ru/1.0/login')

После обновления Home Assistant до версии 2023.9.3 перестала работать интеграция sauresha и контролер вместе с датчиками стали недоступными. Если удалить записи в интеграции и попытаться добавить по новой, то не добавляется. Логин и пароль 100% верны, так как я могу зайти с этими же данные в облачный Saures. Как исправить?

image

В логах получаю такое сообщение

Logger: custom_components.sauresha.api
Source: custom_components/sauresha/api.py:309
Integration: SauresHA ([documentation](https://github.com/volshebniks/sauresha), [issues](https://github.com/volshebniks/sauresha/issues))
First occurred: 22:16:41 (1 occurrences)
Last logged: 22:16:41

0, message='Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://api.saures.ru/1.0/login')

Home Assistant 2023.9.3
Supervisor 2023.09.2
Operating System 10.5
Пользовательский интерфейс 20230911.0 - latest

Sauresha версии 1.0.1

AttributeError: 'NodeListClass' object has no attribute 'items'

Ошибка возникает при старте HA и, как следствие, далее с интерграцией ничего не происходит независимо от того, что прописано (или, наоборот, не прописано) в конфигах

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 250, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/sauresha/sensor.py", line 91, in setup_platform
    for key, value in conf_counters.items():
AttributeError: 'NodeListClass' object has no attribute 'items'

Версия компонента 0.6.1 (установлен через HACS)
Версия ХА 2021.7.1

Работа с контроллером версии 8

Для работы с новыми NB IoT контроллерами версии 8, в api.py надо добавить:

def get_controller_name(self, version_id):
return {
version_id == "1.3"
or version_id == "1.4"
or version_id == "1.5": "счетчик C1",
version_id == "3.1" or version_id == "3.2": "контроллер R1(до 2017)",
version_id == "3.4": "контроллер R1 8 (2017-2018)",
version_id == "3.5": "контроллер R1 4 (после 2018))",
version_id == "4.0": "контроллер R2",
version_id == "4.1": "контроллер R4",
version_id == "6.3": "контроллер R5",
version_id == "7.2": "контроллер R6",
version_id == "8.2": "контроллер R7(до 2020)",
version_id == "8.3": "контроллер R7(после 2020)",
version_id == "9.1": "контроллер R8(после 2022)",
}[True]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.