Для работы необходим access_token, который можно получить из COOKIES после авторизации в личном кабинете domru.ru
Пример будет реализован на Google Chrome
- Автоизоваться в личном кабинете https://domru.ru/
- Открыть Google Chrome Dev Tools
- Открыть вкладку Console и ввести внизу следующий код
function getCookie(name) {
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
getCookie('ACCESS_TOKEN')
- В ответ Вы получите 30-значный access_token
Именно этот токен необходимо будет использовать для библиотеки
docker run --name lib_domru -d -p 8080:8080 -e ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -e OPERATOR_ID=2 alexmorbo/domru:latest
docker run --name lib_domru -d -p 8080:8080 -e ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -e OPERATOR_ID=2 alexmorbo/domru:arm32v7
... Где
--name lib_domru
- имя контейнера-p 8080:8080
- порт, по которому будет доступен json api-e ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- токен, полученный ранее-e OPERATOR_ID=x
- идентификатор конечного оператора.
Известные операторы на данный момент:
- 2 - Санкт-Петербург, Интерзет.ДомРу
- 5 - Волгоград
- 8 - Нижний Новгород
- 10 - Ижевск
- 42 - Уфа
host-ip
- IP малины или хост машины, где запущен контейнер, например 192.168.1.20
HTTP GET http://host-ip:8080/
В ответе будет json с следующими параметрами:
accessToken
- текуший accessToken к API domrumemory
- количество памяти, которое использует библотекаfinances
- блок с финансовой информацией от APIcameras
- блок с информацией о камерах, которые доступны через приложение и APIsubscriberPlaces
- блок с информацией о пользователе, доступных домофонахtimers
- массив с информацией о внутренних таймерах
HTTP GET http://host-ip:8080/open/{placeId}/{accessControlId}
Где:
placeId
- идентификатор места, берется изsubscriberPlaces
accessControlId
- идентификатор домофона, берется изsubscriberPlaces
Если у вас всего 1 домофон на учетной записи, то передавать
placeId
иaccessControlId
не требуется
В ответе будет json следующего вида:
{
"status": true,
"errorCode": null,
"errorMessage": null
}
HTTP GET http://host-ip:8080/video/snapshot/{placeId}/{accessControlId}
Где:
placeId
- идентификатор места, берется изsubscriberPlaces
accessControlId
- идентификатор домофона, берется изsubscriberPlaces
Если у вас всего 1 домофон на учетной записи, то передавать
placeId
иaccessControlId
не требуется
В ответе будет image/jpeg с камеры домофона
HTTP GET http://host-ip:8080/video/stream/{placeId}/{accessControlId}
Где:
placeId
- идентификатор места, берется изsubscriberPlaces
accessControlId
- идентификатор домофона, берется изsubscriberPlaces
Если у вас всего 1 домофон на учетной записи, то передавать
placeId
иaccessControlId
не требуется
Ответом от сервиса будет перенаправление на ссылку, по которой можно получить видеопоток с камеры
В HA можно добавить камеру с домофона, а также финансовую информацию и switch для открытия двери.
sensors:
- platform: rest
name: domru_finances
resource: http://host-ip:8080/
value_template: '{{ value_json.finances.balance }}'
scan_interval: 3600
headers:
User-Agent: homeassistant
camera:
- platform: generic
name: domru_domofon
still_image_url: http://host-ip:8080/video/snapshot
stream_source: http://host-ip:8080/video/stream
rest_command:
domru_open_door:
url: 'http://host-ip:8080/open'
- type: picture-glance
title: Домофон
entities:
- entity: script.domru
icon: 'mdi:door-open'
name: Открыть дверь
tap_action:
action: toggle
hold_action:
action: call-service
service: rest_command.domru_open_door
camera_image: camera.domru_domofon
- type: entities
entities:
- sensor.domru_finances