Comments (32)
да атрибут добавить не сложно. думаю сделаю и переводить в предполагаемое сосотояние тоже.
вот думаю зарелиить master ветку....
from sauresha.
UPD на https://api.saures.ru/doc/1.0/meter/control опубликовано, что нужно отправлять command = activate|deactivate, но в ЛК шлется именно open|close|clear
from sauresha.
@volshebniks Удалось ли взглянуть? Можем надеяться на реализацию?
from sauresha.
О! Если получится, то было бы суперски-афигенно!!! ;)
from sauresha.
На данный момент реализация добавлена в master версию. К сожалению я не могу полноценной протестировать, так как у меня нет таких кранов, а demo кабинет возвращает ошибку "Недостаточно прав" при попытке управлять краном.
Если можете поставьте master версию. Обратите внимание что настройка компонента стала вообще другой.
минимально достаточно так в configuration.yaml. Из всех других мест настройки удалить.
sauresha:
email: !secret saures_login
password: !secret saures_pass
from sauresha.
sauresha:
email: !secret saures_login
password: !secret saures_pass
при такой настройке
binary_sensor_xxx - False
sensor.sauresha_ххх - unknown
from sauresha.
sauresha:
email: !secret saures_login
password: !secret saures_passпри такой настройке binary_sensor_xxx - False sensor.sauresha_ххх - unknown
А что в логах? Логин и пароль свой точно правильно указали?
Заранее большое спасибо за ответ.
from sauresha.
Где смотреть логи?
Логин/пароль правильные
Состояние: False
В Атрибутах:
friendly_name: Датчик протечки Кухня
condition: Ошибок нет
sn:
type: Датчик
meter_id: 59325
input: 5
last_update_time: 2022-05-15T20:31:32.497573
next_update_time: 2022-05-15T20:32:32.497585
icon: mdi:alarm-check
from sauresha.
логи ваш сервер/config/logs
Датчик протечки Кухня - имя датчика соответсвует вашему?
from sauresha.
2022-05-15 20:30:30 WARNING (SyncWorker_10) [custom_components.sauresha.api] ID flat: далее адрес и ID flat
Да, имя датчика соответствует, другие датчики тоже с именем в Атрибутах.
from sauresha.
а ошибки связаннные с компонентом есть в логе?
from sauresha.
нет, больше нет ошибок.
у сенсоров (счетчиков) состояние (расход воды) появилось
from sauresha.
а switch созданных не появилось? - для кранов
from sauresha.
switch появился
from sauresha.
switch появился
а пробовали его включить/выключить - на кран это как то влияет? ошибки поле этого в логе есть?
from sauresha.
никак не влияет, ошибок нет, состояние всё время "off"
from sauresha.
Обновился и снес весь конфиг сенсоров и бинарных сенсоров, которые использовал раньше.
Сейчас только две строки с логином и паролем во всей конфигурации, как написали выше.
Итого имею:
- в логах при старте ha имею только 4 WARN сообщения с ID flat, ошибок нет
- в HA появились все мои
- датчики протечки - как бинарный сенсор,
- краны (каналы состояния) - как сенсор, показывает 1 или 0 (1=закрыт, 0=открыт)
- счетчики - как сенсор
- кран (канал управления) - как выключатель,
поведение этого выключателя, отвечающего за канал управления кранами, нужно осмыслить, т.к. его поведение не привычно для тех, кто привык пользоваться быстро реагирующими устройствами:
- нажатие на выключатель (включение) в HA - ставит в очередь задачу на закрытие кранов в ЛК Саурес, при этом выключатель визуально переводится из состояние выкл в состояние вкл на время выполнение запроса по АПИ и возвращается через секунду в исходное состояние.
- в лк сайурес после этого действия появляется информация о запланированном закрытии кранов и указывается время расчетного выхода на связь контроллера
- когда из ЛК Саурес команда в очередной сеанс связи долетает до кранов, те закрываются
- контроллер детектит изменение состояния кранов и выгружает свое новое состояние в ЛК Саурес,
- в ЛК Суарес пропадает информация о запланированном закрытии на канале управления кранами и сам канал переходит в состояние закрыт, каналы состояния кранов показывают состояние закрыт.
- только на следующий после этого момента апдейт HA переводит состояние выключателя во включено.
from sauresha.
@Gimlir - замечательно. спасибо большое. значит все же работает.
релиз новой версии компонента скорее всего - будет с настройкой через GUI Home Assistant.
подумаю - что еще можно изменить.
К сожалению Saures банит - если опрашивать их сервер часто и это вносит существенные корективы :(
from sauresha.
в HA появились все мои
датчики протечки - как бинарный сенсор
а состояние какое? у меня по-прежнему - "False"
from sauresha.
@volshebniks поймал баг с невозможностью отмены поставленной в очередь задачи по закрытию (открытию).
Из за того, как реагирует switch на клик (см. я описал пошагово выше) в интерфейсе HA не возможно отменить закрытие (открытие) до того, как оно фактически случилось.
Если попытаться вызвать принудительно сервис - тоже не получится. Вот пример сценария:
- исходное состояние, выключатель HA из интеграции в состоянии on, краны фактически закрыты, в ЛК Саурес канал управления в состоянии Закрытие.
- нажимаем на выключатель HA чтобы выключить его (открыть краны)
- на секунду выключатель переключается в off и тут же возвращается в on, в ЛК Саурес канал управления все так же в состоянии Закрытие, но есть запланированное открытие, краны фактически закрыты
- теперь мы хотим отменить запланированное открытие. вызываем в явном виде сервис HA switch.turn_on для выключетеля интеграции - в логах получаем
2022-05-16 17:45:19 ERROR (SyncWorker_5) [custom_components.sauresha.api] Ошибка выполнения комманды - command: activate ,meter_id: *****, ошибка: Неверная команда.
- вызываем в явном виде сервис HA switch.turn_off - никакой активности в логах и ЛК Саурес
from sauresha.
релиз новой версии компонента скорее всего - будет с настройкой через GUI Home Assistant.
Как сейчас можно снизить частоту обращений к серверу саурес? вижу, что по умолчанию идет интервал 10 мин, я ранее использовал 1 час.
Такой синтаксис проканает?
sauresha:
email: ***
password: ***
scan_interval:
minutes: 60
from sauresha.
в HA появились все мои
датчики протечки - как бинарный сенсора состояние какое? у меня по-прежнему - "False"
Все верно, у меня так же. False в бинарном сенсоре HA эквивалентно состоянию Неактивен в ЛК Саурес эквивалентно отсутствию протечки.
from sauresha.
@volshebniks, я еще один баг поймал. Оказывается, я поторопился сказать, что после фактического изменения положения кранов следующий апдейт данных по апи принесет смену статуса выключателю.
Этого не происходит, хотя дата прошлого и следующего обновления данных в атрибутах показывают, что апдейт состоялся, сотояние свича не меняется. То же самое и с бинарными сенсорами, которые показывают состояние кранов по каналу состояния.
При этом перезапуск HA приводит к корректному считыванию статусов, выключатель приходит в синхронизированное с ЛК Саурес состояние, бинарные сенсоры тоже
from sauresha.
да проблему обновления - я уже тоже словил. буду разбираться
from sauresha.
выложил в master новую версию. полностью всё переделал. это еще скорее всего не конечная версия.
настройка только через GUI. старые настройки нужно удалить. из релизной версии настройки из yaml конвертятся в GUI.
from sauresha.
поставил версию из hacs из master, пока застрял на сохранении логина через GUI, см issue #27
from sauresha.
@volshebniks
Новая версия из master по состоянию на #32 создает объект switch, но при попытке вызова сервисов включения и выключения для этого выключателя
2022-06-07 17:21:28 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140672299931632] 'SauresHA' object has no attribute 'get_switches'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 192, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1636, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1673, in _execute_service
await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
await self.hass.helpers.service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 668, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 949, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 705, in _handle_entity_call
await result
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1011, in async_turn_off
await self.hass.async_add_executor_job(ft.partial(self.turn_off, **kwargs))
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/sauresha/entity.py", line 504, in turn_off
self.controller.get_switches(self.flat_id, True)
AttributeError: 'SauresHA' object has no attribute 'get_switches'
2022-06-07 17:21:31 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140672299931632] 'SauresHA' object has no attribute 'get_switches'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 192, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1636, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1673, in _execute_service
await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
await self.hass.helpers.service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 668, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 949, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 705, in _handle_entity_call
await result
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1003, in async_turn_on
await self.hass.async_add_executor_job(ft.partial(self.turn_on, **kwargs))
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/sauresha/entity.py", line 499, in turn_on
self.controller.get_switches(self.flat_id, True)
AttributeError: 'SauresHA' object has no attribute 'get_switches'
from sauresha.
Новая версия из master по состоянию на #32 создает объект switch, но при попытке вызова сервисов включения и выключения для этого выключателя
Спасибо вам огромное - за тестирование!!!
Поправил. Должно работать.
from sauresha.
Обновился, выключатель крана создался в выключенном состоянии, как и положено, нажал включить (выключатель в UI как и раньше дернулся во включенное состояние и вернулся назад в выключенное). Команда на сервер саурес ушла, краны закрылись. Буду ждать как отобразится состояние выключателя после следующего обновления данных интеграцией.
ЗЫ @volshebniks не могли бы вы сопровождать исправления при выгрузке в репозиторий как раньше тегами с номером релиза, а то без них HACS не дает обновляться с версии master на нее же (не понимает, что комиты добавились) и уж очень много действий для применения каждого исправления приходится проделывать (удалять все интеграции, репозиторий и запись о кастомном репозитории и возвращать все в обратном порядке)
from sauresha.
Результаты тестов:
- Проблема с обновлением статуса свича управления кранами и бинарных сенсоров статуса крана сохранилась. При очередном обновлении данных по АПИ состояние объектов в HA не меняется, не смотря на то, что все другие сенсоры обновляются и показывают новые значения (счетчики воды например). При перезапуске НА, как и прежде, верный статус бинарных сенсоров и свича восстанавливается.
- Когда канал управления кранами находится в состоянии Закрытие и свич в НА включен - нажатие на свич для выключения приводит к выводу ошибки в GUI HA
при этом команда на открытие по АПИ уходит и в ЛК Саурес регистрируется задание на открытие.
в логе НА
2022-06-09 11:53:56 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140702374451520] 'SauresHA' object has no attribute 'async_get_switchess'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 192, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1636, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1673, in _execute_service
await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
await self.hass.helpers.service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 668, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 949, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 705, in _handle_entity_call
await result
File "/config/custom_components/sauresha/entity.py", line 545, in async_turn_off
await self.controller.async_get_switchess(self.flat_id, True)
AttributeError: 'SauresHA' object has no attribute 'async_get_switchess'
from sauresha.
поправил + сделал проверку на то что статус крана = открыто или закрыто. если что то другое - по крайней мере падать не должно
from sauresha.
Спасибо за оперативное реагирование :)
Есть мысли, как реализовать корректное отображение статуса свича в промежутке времени, когда в системе зарегистрирована ожидающая своего исполнения команда для канала управления краном?
Я подумал, может быть при создании объектов, если создаем объект свича для крана - то создавать в пару к нему сенсор "Ожидающая команда управления" со статусом "Нет ожидающих команд", "Ожидается открытие", "Ожидается закрытие" и атрибутом "Время ожидаемого исполнения" (или эти статусы и время можно в атрибуты самого свича поместить, чтобы на плодить сущности).
При наличии такого доп объекта или атрибутов можно было бы после клика на свиче менять состояние сенсора\атрибута, а состояние свича заранее переводить в ожидаемое состояние - тогда пользователь будет видеть интуитивное понятную реакцию на свое действие: кликнул на свич закрыть - свич переключился и остался в своем новом положении - сенсор\атрибут показал что зарегистрирована команда и мы ждем ее исполнения.
Когда по апи придет новое состояние кранов и пропадет информация о ждущей задаче открытия - сенсор\атрибут вернуть в состояние по умолчанию а свич останется включенным.
Что думаете о такой логике?
from sauresha.
Related Issues (20)
- Сменить тип устройства на binary sensor для каналов типа "Состояние крана" HOT 4
- Не появляется в интеграциях в GUI HOT 2
- Состояние бинарного сенсора и свича крана не обновляется HOT 1
- Нет аддона в списке интеграций, доступных к установке HOT 1
- Перестал обновляться контроллер в НА HOT 12
- Не работает управление краном, куча ошибок в логах HOT 6
- Как добавить сенсор в HA? HOT 7
- Поддержка добавления счетчиков воды на экран Energy в HA 2022.11+ HOT 1
- Добавить заряд батареи контроллера и WiFi сигнал. HOT 3
- Предупреждение в логе HA после обновления на 2023.2 HOT 13
- [Errno 104] Connection reset by peer HOT 4
- планируется ли обновление интеграции под актуальную версию HA? HOT 9
- Статус False у датчиков протечки
- Работа с контроллером версии 8 HOT 1
- Ошибка Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://api.saures.ru/1.0/login') HOT 20
- Перестали обновляться датчики HOT 24
- Кроме самих контроллеров ничего более не отображается HOT 4
- Объединить показания двух-зонного счетчика э/э HOT 2
- ошибка 104
- некорректные показания электросчетчика HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sauresha.