Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

Вебсокет-клиент для обмена данными с сервером. Работает на raspberry pi. Он использует данные, полученные от различных датчиков, и передает их через вебсокет. Код написан на языке Python и использует асинхронные функции для обработки данных.

Основные файлы проекта

  • homepp/__main__.py
  • homepp/custom_logger.py
  • homepp/sensors.py
  • homepp/websocket_client.py

Установка и запуск

Настройка окружения

В идеале все должно работать в venv'e

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Создайте файл .env в директории с venv и добавьте следующие переменные:

WEBSOCKET_URL=ваш_url_вебсокета
# deprecated
HARDWARE_KEY=ваш_ключ_оборудования

Запуск

Для запуска можно выполнить команду:

python3 homepp

Описание файлов

__main__.py

Основной файл проекта, содержащий точку входа и главную асинхронную функцию для работы с вебсокетом.

Основные функции:

  • main(): Основная функция, которая подключается к вебсокету и запускает отправку и получение данных.
  • send_data(websocket): Функция для отправки данных с датчиков на сервер.
  • receive_data(websocket): Функция для получения данных от сервера и их логирования.

custom_logger.py

Модуль для настройки логирования. Создает логгер, который пишет логи в файл и выводит их в консоль.

Основные функции:

  • setup_logger(): Настраивает логгер с выводом в файл и консоль.

sensors.py

Модуль для работы с датчиками. Читает данные с датчиков и преобразует их в удобный для передачи формат.

Основные функции:

  • convert_hex_to_float(hex_string): Конвертирует шестнадцатеричное значение в число с плавающей точкой.
  • read_sensor_data(): Асинхронная функция для чтения данных с датчиков и их парсинга.
  • parse_received_data(received_frame): Парсит полученные данные в структуру словаря.

websocket_client.py

Модуль для работы с вебсокетом. Содержит функции для подключения, отправки и получения данных через вебсокет.

Основные функции:

  • connect_websocket(url, key): Подключается к вебсокету с указанным URL и ключом оборудования.
  • send_data(websocket, data): Отправляет данные на сервер через вебсокет.
  • receive_data(websocket): Получает данные с сервера через вебсокет.

Пример работы

Пример данных с датчика

Пример полученных (декодированных) данных с датчика:

Все опечатки по типу leack - продиктованы разработчиком бекенда

{
    "ContollersLeackMessangesData": {
        "type": 16,
        "number": 1,
        "status": 0,
        "charge": 255,
        "temperature_MK": 0,
        "controlerleack": {
            "leack": 31
        }
    }
}

Логирование

Пример логов при запуске и работе клиента:

2024-05-19 12:00:00,000 - __main__ - INFO - Starting websocket client
2024-05-19 12:00:00,123 - custom_logger - INFO - Connected to websocket
2024-05-19 12:00:01,456 - __main__ - INFO - Sending data via websocket: {"sensor_data": ...}
2024-05-19 12:00:02,789 - __main__ - INFO - Received data from server: {"server_response": ...}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages