Open Limych opened 4 years ago
Привет А ссылку открытия замка не определил?
Как я писал ранее, для этого надо проводить реверс-инжиниринг того, как работает официальное приложение. На это у меня пока нет времени, прошу извинить.
Я имею ввиду из этого документа
А смысл лепить костыли в контроллер? Их можно сделать и средствами самого Home Assistant. Через automations.
Я предпочитаю сразу сделать всё правильно.
@Sergbmw А у Вас на домофоне какой контроллер стоит? На один или на три выхода? Возможно, понадобится Ваша помощь в сборе данных для реверс-инжиниринга протокола.
судя по докам они исользуют ONVIF для управления. По крайней скачав первую попавшуюся утилиту (https://sourceforge.net/projects/onvifdm/), поддерживающую этот протокол, получилось включить/выключить все три канала на DS06AP
У меня контроллер на 1 выход
Через пакет https://github.com/FalkTannhaeuser/python-onvif-zeep вот так можно включать и выключать каналы реле Почему приходится руками пропихивать wsdl хотя он в пакете приходит не понял пока
from onvif import ONVIFCamera
mycam = ONVIFCamera('192.168.4.18', 80, 'admin', 'admin','/usr/local/lib/python3.5/site-packages/wsdl/')
d = mycam.create_devicemgmt_service()
d.SetRelayOutputState({'RelayOutputToken': 'RelayOutput0', 'LogicalState':'active'})
d.SetRelayOutputState({'RelayOutputToken': 'RelayOutput0', 'LogicalState':'inactive'})
d.SetRelayOutputState({'RelayOutputToken': 'RelayOutput1', 'LogicalState':'active'})
d.SetRelayOutputState({'RelayOutputToken': 'RelayOutput1', 'LogicalState':'inactive'})
d.SetRelayOutputState({'RelayOutputToken': 'RelayOutput2', 'LogicalState':'active'})
d.SetRelayOutputState({'RelayOutputToken': 'RelayOutput2', 'LogicalState':'inactive'})
то же через cli который пакет ставит
onvif-cli devicemgmt SetRelayOutputState "{'RelayOutputToken': 'RelayOutput2', 'LogicalState':'active'}" --user 'admin' --password 'admin' --host '192.168.4.18' --port 80 -w /usr/local/lib/python3.5/site-packages/wsdl/
Можно потихоньку начинать тестировать. Правда, при этом придётся и обновить интеграцию для HA на тестовую версию: https://github.com/Limych/ha-beward/tree/feature/outputs-control
@KonstantinNosov:
судя по докам они исользуют ONVIF для управления. По крайней скачав первую попавшуюся утилиту (https://sourceforge.net/projects/onvifdm/), поддерживающую этот протокол, получилось включить/выключить все три канала на DS06AP
У меня к Вам просьба. У меня одноканальный контроллер домофона, а мне было бы полезно получить логи, как официальное приложение общается с трёхканальным. Не могли бы Вы собрать их на своём домофоне?
Для этого необходимо:
(host ваш_ip) && (host ip_домофона) && http
Могу конечно, но зачем это делать если они стандартный протокол используют... Только что набросал компонент для HA , релюшками можно щелкать прямо из него. Посмотрите, может просто сможете использовать , полноценно писать компонент времни нет а наброском могу поделиться https://www.dropbox.com/s/t6w6lt55b08vnmg/beward_relays.zip?dl=0
в конфигах
switch:
- platform: beward_relays
scan_interval: 5
name: doorbell_relay1
host: 192.168.4.18
username: admin
password: admin
relay: 1
- platform: beward_relays
scan_interval: 5
name: doorbell_relay2
host: 192.168.4.18
username: admin
password: admin
relay: 2
- platform: beward_relays
scan_interval: 5
name: doorbell_relay3
host: 192.168.4.18
username: admin
password: admin
relay: 3
наврал - не могу. Стандартное приложение не видит трех каналов, управляет толкьо первым
Включение первого канала (остальные из стандартного приложения не управляются) https://www.dropbox.com/s/eiph7v212ehkvrx/beward_nc311_relay1_open2.pcapng?dl=0 Пароль сменен на временный так что за безопасность не переживайте
Вот так работает. Проверил
# включить канал 1
curl -X GET "http://admin:admin@192.168.4.18/cgi-bin/alarmout_cgi?channel=0&Output=0&Status=1"
# выключить канал 1
curl -X GET "http://admin:admin@192.168.4.18/cgi-bin/alarmout_cgi?channel=0&Output=0&Status=0"
# включить канал 2
curl -X GET "http://admin:admin@192.168.4.18/cgi-bin/alarmout_cgi?channel=0&Output=1&Status=1"
# выключить канал 2
curl -X GET "http://admin:admin@192.168.4.18/cgi-bin/alarmout_cgi?channel=0&Output=1&Status=0"
# включить канал 3
curl -X GET "http://admin:admin@192.168.4.18/cgi-bin/alarmout_cgi?channel=0&Output=2&Status=1"
# выключить канал 3
curl -X GET "http://admin:admin@192.168.4.18/cgi-bin/alarmout_cgi?channel=0&Output=2&Status=0"
Попробовал ветку feature/outputs-control Пришлось руками собрать py-beward и добавить врапперов в BewardController (не уверен что это правильно, но без этого все валилось т.к. swicth.py пытаестя эту проперть читать/писать)
@property
def output1(self):
return self._device.output1
@output1.setter
def output1(self, state):
self._device.output1 = state
Реле щелкает , но ведет себя как-то странно. Свитч на lovelace прыгает туда-сюда после первого включения. Похоже проблемы с отслеживанием статуса реле...
Еще момент... Вряд ли относится именно к этой ветке но тем не менее: После перезагрузки домофона сенсор нажатия кнопки перестает работать. Наверное подписка на алерты происходит только при старте, ребут железки не отслеживаестя...
а не подскажите линк на вызов http запроса?
Удалось написать модуль для HA? Есть поддержка SIP. Панель умеет отправлять get при нажатии кнопки вызова, я настроил полную интеграцию в loxone.
Ну что есть новости на счет полной интеграции домофона с home assistant? Можно ли уже удаленно открывать замок?
Как я писал в этой теме ещё в ноябре прошлого года, есть тестовая версия кода: https://github.com/Limych/ha-beward/tree/feature/outputs-control Её нужно протестировать. Своими силами мне тестировать банально негде. Ждём-с добровольцев...
Как я писал в этой теме ещё в ноябре прошлого года, есть тестовая версия кода: https://github.com/Limych/ha-beward/tree/feature/outputs-control Её нужно протестировать. Своими силами мне тестировать банально негде. Ждём-с добровольцев...
Инструкцию надо обновить, нет описания как добавить открытие замка
Инструкцию надо обновить, нет описания как добавить открытие замка
Fixed
Hi, With this version I have information:
Invalid config The following integrations and platforms could not be set up:
beward
Please check your config.
In the official version, everything works fine
hi, I have the same problem, after replacing the custom_components/beard files. In the official version, everything works fine
you need to do something else besides updating the files in custom_components/beward?
Hi, someone has successfully run the version with outputs-control?
Ругается на ошибку beward 1.1
Ругается на ошибку beward 1.1
Без конкретики (логов ошибки) я ничем не смогу помочь.
Setup failed for beward: Requirements for beward not found: ['beward~=1.1']. 14:18:23 – setup.py (ERROR) Unable to install package beward~=1.1: ERROR: Could not find a version that satisfies the requirement beward~=1.1 (from versions: 0.0.1, 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.8.1, 0.9.0, 0.10.0, 0.11.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6) ERROR: No matching distribution found for beward~=1.1 14:18:23 – util/package.py (ERROR)
Могу удаленный доступ организовать, для изучения проблемы
Могу удаленный доступ организовать, для изучения проблемы
у вас та же проблема?
2020-04-07 10:29:00 ERROR (SyncWorker_12) [homeassistant.util.package] Unable to install package beward~=1.1: Could not find a version that satisfies the requirement beward~=1.1 (from versions: 0.0.1, 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.8.1, 0.9.0, 0.10.0, 0.11.0, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6) No matching distribution found for beward~=1.1 2020-04-07 10:29:00 ERROR (MainThread) [homeassistant.setup] Setup failed for beward: Requirements for beward not found: ['beward~=1.1'].
и тишина...
Нужно ждать, когда автору станет это очень нужно или интересно :).
Дело не в интересе или нужностях. Есть задача выжить, есть обязательства перед людьми. Всё прочее, увы, на «когда время будет». Перед вами у меня нет обязательств, потому, извините, этот проект относится к третьей группе. Ничего личного.
PS. Для нетерпеливых все исходники я выложил. 😉
Андрей, я это и имел виду. Вам спасибо, из за тот функционал, который сейчас работает!
I've remake library and HA integration. There are new version of library in PyPi repository for testing purposes: 1.1.0-beta
Known bugs:
Я собрал щит для сада в который входит 3-канальный контроллер. Устанавливать буду чрез пару месяцев, а пока оно лежит в собранном и подключенном виде на столе, в HA тоже зведено. Самое время его помучить - потерять натсройки или еще что-то не жалко и бегать на улицу не надо чтобы что-то сделать. Так что, обращайтесь.
попробовал обновиться на ветку feature/outputs-control
HA разваливатся. Весь лог завален эксепшнами
Apr 11 15:40:18 hass-01 hass[31077]: pkg_resources.extern.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'eta'"
Apr 11 15:40:18 hass-01 hass[31077]: During handling of the above exception, another exception occurred:
Apr 11 15:40:18 hass-01 hass[31077]: Traceback (most recent call last):
Apr 11 15:40:18 hass-01 hass[31077]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/util/package.py", line 37, in is_installed
Apr 11 15:40:18 hass-01 hass[31077]: req = pkg_resources.Requirement.parse(package)
Apr 11 15:40:18 hass-01 hass[31077]: File "/srv/home-assistant/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3148, in parse
Apr 11 15:40:18 hass-01 hass[31077]: req, = parse_requirements(s)
Apr 11 15:40:18 hass-01 hass[31077]: File "/srv/home-assistant/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3094, in parse_requirements
Apr 11 15:40:18 hass-01 hass[31077]: yield Requirement(line)
Apr 11 15:40:18 hass-01 hass[31077]: File "/srv/home-assistant/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3103, in __init__
Apr 11 15:40:18 hass-01 hass[31077]: raise RequirementParseError(str(e))
прописал в манифесте
"requirements": [
"beward==1.1.0b0"
]
вместо
"requirements": [
"beward~=1.1-beta"
]
Запустилось, но при этом не может настроить switch'и для оутпутов
Apr 11 16:53:48 hass-01 hass[26451]: 2020-04-11 16:53:48 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Apr 11 16:53:48 hass-01 hass[26451]: Traceback (most recent call last):
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 434, in _async_add_entity
Apr 11 16:53:48 hass-01 hass[26451]: await entity.async_update_ha_state()
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 284, in async_update_ha_state
Apr 11 16:53:48 hass-01 hass[26451]: self._async_write_ha_state()
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 320, in _async_write_ha_state
Apr 11 16:53:48 hass-01 hass[26451]: state = self.state
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 602, in state
Apr 11 16:53:48 hass-01 hass[26451]: return STATE_ON if self.is_on else STATE_OFF
Apr 11 16:53:48 hass-01 hass[26451]: File "/home/homeassistant/.homeassistant/custom_components/beward/switch.py", line 69, in is_on
Apr 11 16:53:48 hass-01 hass[26451]: return getattr(self._device, self._switch_id)
Apr 11 16:53:48 hass-01 hass[26451]: AttributeError: 'BewardController' object has no attribute 'output3'
Apr 11 16:53:48 hass-01 hass[26451]: 2020-04-11 16:53:48 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Apr 11 16:53:48 hass-01 hass[26451]: Traceback (most recent call last):
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 434, in _async_add_entity
Apr 11 16:53:48 hass-01 hass[26451]: await entity.async_update_ha_state()
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 284, in async_update_ha_state
Apr 11 16:53:48 hass-01 hass[26451]: self._async_write_ha_state()
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 320, in _async_write_ha_state
Apr 11 16:53:48 hass-01 hass[26451]: state = self.state
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 602, in state
Apr 11 16:53:48 hass-01 hass[26451]: return STATE_ON if self.is_on else STATE_OFF
Apr 11 16:53:48 hass-01 hass[26451]: File "/home/homeassistant/.homeassistant/custom_components/beward/switch.py", line 69, in is_on
Apr 11 16:53:48 hass-01 hass[26451]: return getattr(self._device, self._switch_id)
Apr 11 16:53:48 hass-01 hass[26451]: AttributeError: 'BewardController' object has no attribute 'output1'
Apr 11 16:53:48 hass-01 hass[26451]: 2020-04-11 16:53:48 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Apr 11 16:53:48 hass-01 hass[26451]: Traceback (most recent call last):
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 434, in _async_add_entity
Apr 11 16:53:48 hass-01 hass[26451]: await entity.async_update_ha_state()
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 284, in async_update_ha_state
Apr 11 16:53:48 hass-01 hass[26451]: self._async_write_ha_state()
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 320, in _async_write_ha_state
Apr 11 16:53:48 hass-01 hass[26451]: state = self.state
Apr 11 16:53:48 hass-01 hass[26451]: File "/srv/home-assistant/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 602, in state
Apr 11 16:53:48 hass-01 hass[26451]: return STATE_ON if self.is_on else STATE_OFF
Apr 11 16:53:48 hass-01 hass[26451]: File "/home/homeassistant/.homeassistant/custom_components/beward/switch.py", line 69, in is_on
Apr 11 16:53:48 hass-01 hass[26451]: return getattr(self._device, self._switch_id)
Apr 11 16:53:48 hass-01 hass[26451]: AttributeError: 'BewardController' object has no attribute 'output2'
Кофнифиг
beward:
- host: 192.168.4.18
username: admin
password: [SKIPPED]
name: doorbell
cameras:
- live
- last_motion
- last_ding
binary_sensors:
- motion
- online
- ding
sensors:
- last_activity
- last_motion
- last_ding
switches:
- output1
- output2
- output3
У меня так и не получилось запустить данную сборку... :(
У меня так и не получилось запустить данную сборку... :(
Да, возможно, что есть ошибки. У меня сейчас крайне мало свободного времени, а тут надо серьёзно разбираться. Извините…
Попробовал последнюю сборку. После прописывания даже самой простой конфигурации в файл beward:
Файл const.py не должен быть сокращён. Его последняя правка была 1,5 года назад: https://github.com/Limych/py-beward/commits/feature/outputs-control/beward/const.py
Да, прошу простить. Я перепутал с веткой https://github.com/Limych/ha-beward/tree/feature/outputs-control все что писал выше касалось её ......
Да, прошу простить. Я перепутал с веткой https://github.com/Limych/ha-beward/tree/feature/outputs-control все что писал выше касалось её ......
как я и писал выше, файл const.py давно не изменялся ни в одной из веток. Изменения в нём скорее технические, вызванные тем, что файл был автоматически отформатирован через black. В этом легко убедиться, посмотрем историю правок: https://github.com/Limych/ha-beward/commit/252dfbc367af991c21c44e5fef984bbd17b4b519#diff-6acc7d6f16258f15ae31c06e2db13d15
файл const.py давно не изменялся ни в одной из веток
Я возможно туплю.... Перехожу в тестовую ветку https://github.com/Limych/ha-beward/tree/feature/outputs-control Скачиваю тестовый компонент со switches. заменяю в НА. При проверке конфигурации вечно крутящееся колесо проверки. Смотрю этот файл https://github.com/Limych/ha-beward/blob/feature/outputs-control/custom_components/beward/const.py там всего 38 строчек... В этом же файле https://github.com/Limych/ha-beward/blob/master/custom_components/beward/const.py 81 строчка. На каком этапе я допускаю ошибку ?
Хм... Ни на каком — это я был неправ, утверждая, что const.py ни в одной из веток давно не изменялся. Прошу извинить склеротика... :) Изменения были в плане переноса из других файлов в одну кучу констант CAMERAS, BINARY_SENSORS и SENSORS. Они и создали дополнительный объём. Но это не должно никак влиять на результат в данном случае.
UPD И, да, файл, получается, был не сокращён, а расширен... ;)
UPD И, да, файл, получается, был не сокращён, а расширен... ;)
Получается из за этого тестовая сборка не работает ?
Add ability to control outputs on doorbell controller.