Zatomis — это open-source микрофреймворк, разработанный специально для проекта SKIJ.net. Он обеспечивает эффективную работу клиент-серверных ресурсов в LoRa-Mesh сетях.
На данный момент взаимодействие с аппаратной частью осуществляется через Meshtastic, но архитектура позволяет изменять это в будущем.
Философия "Микро": Мы стремимся обеспечить лишь необходимый для работы функционал с максимальной возможностью расширения. Работа с БД, валидация данных и другой специфический функционал реализуется разработчиком конкретного ресурса, а не разработчиком фреймворка.
- Асинхронность и фоновые воркеры: Эффективная обработка задач без блокировки основного потока.
- Двухсторонний механизм автоматической пагинации: Удобная работа с большими объемами данных.
- Поддержка разных интерфейсов: Serial (USB), TCP (сеть), BLE (Bluetooth).
- Гибкая обработка ответов: Различные типы ответов сервера.
- Минимализм: Отсутствие навязанных зависимостей (БД, валидация), полная свобода архитектуры.
- Python: версии >= 3.8
- Обязательная библиотека:
meshtasticверсии 2.7.7 - Опционально: Остальные зависимости указаны в
requirements.txt
git clone https://github.com/Flahhhh/zatomis
cd zatomisДля внесения изменений в ядро фреймворка рекомендуется создать форк репозитория.
Рекомендуется использовать venv:
Создание среды:
python -m venv venvАктивация среды:
- Windows:
venv\Scripts\activate
- Linux/macOS:
source venv/bin/activate
pip install -r requirements.txtZatomis поддерживает три способа подключения к радиомодему. Настройка производится при инициализации приложения в app.py.
Примеры конфигурации:
from zatomis import Zatomis
# 1. Serial (USB) – например, '/dev/ttyUSB0' или 'COM3'
app = Zatomis(receive_interface=("serial", "/dev/ttyUSB0"))
# 2. TCP – IP-адрес и порт (например, 192.168.1.100:4403)
app = Zatomis(receive_interface=("tcp", "192.168.1.100:4403"))
# 3. BLE – Bluetooth-адрес устройства
app = Zatomis(receive_interface=("ble", "AA:BB:CC:DD:EE:FF"))Примечание: Если интерфейс для отправки сообщений должен отличаться от принимающего, можно указать второй аргумент
send_interface. По умолчанию используется тот же интерфейс.
python app.pyТеперь фреймворк готов принимать и обрабатывать запросы из LoRa-сети. Для остановки нажмите Ctrl+C.
Основные компоненты фреймворка:
- Zatomis: Ядро приложения, инициализация и управление.
- Router: Маршрутизация запросов к контроллер-функциям.
- Request: Класс входящего запроса и его данных.
- Response: Класс ответа сервера и его форматы.
app.py— точка входа, инициализация Zatomis.urls.py— карта маршрутов.- Контроллеры — функции обработки логики.
Более подробная информация доступна в разделах:
- Учебник (Создание приложения, интерфейсы, контроллеры)
- Класс Request и форматы данных
- Класс Response и виды ответов
- Интеграция с БД (SQLAlchemy)
- Низкоуровневая работа с Meshtastic
(РАЗДЕЛ В РАЗРАБОТКЕ)
Фреймворк позволяет легко расширять функционал:
- Интеграция с БД: Использование SQLAlchemy, сессии, генераторы.
- Логирование и отладка: Встроенные механизмы.
- Безопасность: Примеры добавления аутентификации и валидации данных.
Open-source проект.
Разработано для сообщества SKIJ.net