Skip to main content

ORM для работы с API РосДомофон

Project description

PyPI - Downloads Socket Badge

Поддержка и развитие

Проект активно развивается. Вопросы и предложения по улучшению приветствуются через 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() - запуск потребления сообщений из Kafka
      • stop_kafka_consumer() - остановка потребления сообщений
      • send_kafka_message() - отправка сообщения через Kafka
      • send_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rosdomofon-0.1.10.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rosdomofon-0.1.10-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file rosdomofon-0.1.10.tar.gz.

File metadata

  • Download URL: rosdomofon-0.1.10.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rosdomofon-0.1.10.tar.gz
Algorithm Hash digest
SHA256 5607a4c56ff2a6b4aee5572ce02d69ab15b45ea5d31be444262bcb74773214a6
MD5 f66d5fd755cd9218481091b0f2d32833
BLAKE2b-256 a8e22991755e6624c491eeef7f4907d70080659c1c40a13ed897aa8925c821f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rosdomofon-0.1.10.tar.gz:

Publisher: python-publish.yml on darkClaw921/rosdomofon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rosdomofon-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: rosdomofon-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rosdomofon-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 3965b91507bcd448d17c51baa02baea2c12d3d33111994c8df5e1fda67a733af
MD5 498e459fb4edde6c715b8f7549103195
BLAKE2b-256 db720380d4fc0593acbab0738cda682bc7f18232fc43a7a3b5a78cd1740b16ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for rosdomofon-0.1.10-py3-none-any.whl:

Publisher: python-publish.yml on darkClaw921/rosdomofon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page