ORM для работы с API РосДомофон
Project description
Поддержка и развитие
Проект активно развивается. Вопросы и предложения по улучшению приветствуются через Issues.
rosdomofon.py
Документация росдомофона https://rdba.rosdomofon.com/swagger-ui.html#/
Назначение: Основной модуль для работы с API РосДомофон
Содержит:
- Класс RosDomofonAPI с методами:
authenticate()- авторизация в системеupdate_signup()- обновление статуса заявки регистрацииget_accounts()- получение всех аккаунтовget_account_by_phone()- поиск аккаунта по номеру телефонаcreate_account()- создание нового аккаунтаcreate_flat()- создание квартирыget_entrance_services()- получение услуг подъездаconnect_service()- подключение услугиget_account_connections()- получение подключений аккаунтаget_service_connections()- получение подключений услугиget_abonent_flats()- получение всех квартир абонента с полными адресамиget_entrances()- получение списка подъездов с услугами компании (с фильтрацией по адресу)block_account()/unblock_account()- блокировка/разблокировка аккаунтаblock_connection()/unblock_connection()- блокировка/разблокировка подключенияsend_message()- отправка push-уведомлений (принимает словари или ID)send_message_to_abonent()- упрощенная отправка сообщения по ID абонентаget_abonent_messages()- получение сообщений абонента- Kafka методы:
set_kafka_message_handler()- установка обработчика входящих Kafka сообщенийstart_kafka_consumer()- запуск потребления сообщений из Kafkastop_kafka_consumer()- остановка потребления сообщенийsend_kafka_message()- отправка сообщения через Kafkasend_kafka_message_to_multiple()- групповая отправка через Kafka
Особенности:
- Подробные docstring с примерами использования для каждого метода
- Автоматическое логирование операций через loguru
- Обработка ошибок HTTP запросов
- Импорт моделей из отдельного файла models.py
- Интегрированный Kafka клиент для real-time сообщений
- Контекстный менеджер для автоматического закрытия соединений
kafka_client.py
Назначение: Клиент для работы с Kafka сообщениями РосДомофон
Содержит:
- Класс RosDomofonKafkaClient с методами:
set_message_handler()- установка обработчика входящих сообщенийstart_consuming()- запуск потребления в отдельном потокеstop_consuming()- остановка потребленияsend_message()- отправка сообщения одному абонентуsend_message_to_multiple()- отправка группового сообщенияclose()- закрытие всех соединений
пример получения аккаунта по номеру телефона
from rosdomofon import RosDomofonAPI
api = RosDomofonAPI(
username="user",
password="pass",
)
api.authenticate()
account = api.get_account_by_phone(79308325215)
print(account)
print(account.owner.id) # abonent_id
print(account.id) # account_id
пример получения сообщений
messages = api.get_abonent_messages(abonent_id, channel='support', page=0, size=10)
print(messages)
пример отправки сообщения
api.send_message_to_abonent(abonent_id, 'support', f'вы написали {messages.content[0].message}')
пример получения квартир абонента
# Получить все квартиры абонента
flats = api.get_abonent_flats(1574870)
print(f"Всего квартир: {len(flats)}")
for flat in flats:
print(f"ID квартиры: {flat.id}")
print(f"Квартира {flat.address.flat}, подъезд {flat.address.entrance.number}")
print(f"Адрес: {flat.address.city}, {flat.address.street.name} {flat.address.house.number}")
print(f"Виртуальная: {flat.virtual}")
print(f"Владелец: {flat.owner.id}")
print("---")
пример получения подъездов с услугами
# Получить все подъезды компании
entrances = api.get_entrances()
print(f"Всего подъездов: {entrances.total_elements}")
# Поиск подъездов по адресу с пагинацией
entrances = api.get_entrances(address="Москва, Ленина", page=0, size=10)
for entrance in entrances.content:
print(f"Подъезд {entrance.id}: {entrance.address_string}")
for service in entrance.services:
print(f" - Услуга: {service.name} ({service.type})")
print(f" Камеры: {len(service.cameras)}")
print(f" RDA устройства: {len(service.rdas)}")
print(f" Тариф: {service.tariff}")
Пример использования Kafka
Инициализация с Kafka поддержкой
from rosdomofon.rosdomofon import RosDomofonAPI
api = RosDomofonAPI(
username="user", password="pass",
kafka_bootstrap_servers="kafka.example.com:9092",
company_short_name="SK_SB"
)
Обработка входящих сообщений
def handle_message(message: KafkaIncomingMessage):
print(f"Сообщение от {message.from_abonent.phone}: {message.message}")
api.set_kafka_message_handler(handle_message)
api.start_kafka_consumer()
Отправка через Kafka
api.send_kafka_message(1574870, 79308312233, "Ответ через Kafka")
short name company
для получения short name company нужно получить все аккаунты и найти short name company https://rdba.rosdomofon.com/abonents-service/api/v1/accounts
accounts = api.get_accounts()
for account in accounts:
print(account.company.short_name)
company id
для получения company id нужно получить все аккаунты и найти company id
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rosdomofon-0.1.16.1.tar.gz.
File metadata
- Download URL: rosdomofon-0.1.16.1.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3d86e489d57f40e5363bb6521a8ab4ccaa405e5763b597058e323312a886706
|
|
| MD5 |
9967d258f37f37b8b22aa7acecbc72fb
|
|
| BLAKE2b-256 |
4e9869e220a6b210f50b710eeac661282e47c2f954e301dd7b869ca3511b8fd2
|
Provenance
The following attestation bundles were made for rosdomofon-0.1.16.1.tar.gz:
Publisher:
python-publish.yml on darkClaw921/rosdomofon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rosdomofon-0.1.16.1.tar.gz -
Subject digest:
a3d86e489d57f40e5363bb6521a8ab4ccaa405e5763b597058e323312a886706 - Sigstore transparency entry: 752725930
- Sigstore integration time:
-
Permalink:
darkClaw921/rosdomofon@85c08645a7d5e9a0ba9193062051633ecc0a2669 -
Branch / Tag:
refs/tags/v0.1.16.1 - Owner: https://github.com/darkClaw921
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@85c08645a7d5e9a0ba9193062051633ecc0a2669 -
Trigger Event:
release
-
Statement type:
File details
Details for the file rosdomofon-0.1.16.1-py3-none-any.whl.
File metadata
- Download URL: rosdomofon-0.1.16.1-py3-none-any.whl
- Upload date:
- Size: 31.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e44cb6c9271b6e794f595849101651d23224f71c17e6f37b8aecb2dcf1a511d0
|
|
| MD5 |
f4c101cb1e78ccd277f33adcfcd313f3
|
|
| BLAKE2b-256 |
7f66c50828a46c953322aca8c466411706b1f97cb2e6fcfabd5074ab9cfa0b7d
|
Provenance
The following attestation bundles were made for rosdomofon-0.1.16.1-py3-none-any.whl:
Publisher:
python-publish.yml on darkClaw921/rosdomofon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rosdomofon-0.1.16.1-py3-none-any.whl -
Subject digest:
e44cb6c9271b6e794f595849101651d23224f71c17e6f37b8aecb2dcf1a511d0 - Sigstore transparency entry: 752725986
- Sigstore integration time:
-
Permalink:
darkClaw921/rosdomofon@85c08645a7d5e9a0ba9193062051633ecc0a2669 -
Branch / Tag:
refs/tags/v0.1.16.1 - Owner: https://github.com/darkClaw921
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@85c08645a7d5e9a0ba9193062051633ecc0a2669 -
Trigger Event:
release
-
Statement type: