Skip to content

Flahhhh/zatomis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zatomis

Python Version License

Zatomis — это open-source микрофреймворк, разработанный специально для проекта SKIJ.net. Он обеспечивает эффективную работу клиент-серверных ресурсов в LoRa-Mesh сетях.

На данный момент взаимодействие с аппаратной частью осуществляется через Meshtastic, но архитектура позволяет изменять это в будущем.

Философия "Микро": Мы стремимся обеспечить лишь необходимый для работы функционал с максимальной возможностью расширения. Работа с БД, валидация данных и другой специфический функционал реализуется разработчиком конкретного ресурса, а не разработчиком фреймворка.

🚀 Возможности

  • Асинхронность и фоновые воркеры: Эффективная обработка задач без блокировки основного потока.
  • Двухсторонний механизм автоматической пагинации: Удобная работа с большими объемами данных.
  • Поддержка разных интерфейсов: Serial (USB), TCP (сеть), BLE (Bluetooth).
  • Гибкая обработка ответов: Различные типы ответов сервера.
  • Минимализм: Отсутствие навязанных зависимостей (БД, валидация), полная свобода архитектуры.

📋 Требования

  • Python: версии >= 3.8
  • Обязательная библиотека: meshtastic версии 2.7.7
  • Опционально: Остальные зависимости указаны в requirements.txt

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

1. Клонирование репозитория

git clone https://github.com/Flahhhh/zatomis
cd zatomis

Для внесения изменений в ядро фреймворка рекомендуется создать форк репозитория.

2. Настройка виртуальной среды

Рекомендуется использовать venv:

Создание среды:

python -m venv venv

Активация среды:

  • Windows:
    venv\Scripts\activate
  • Linux/macOS:
    source venv/bin/activate

3. Установка зависимостей

pip install -r requirements.txt

4. Настройка интерфейса

Zatomis поддерживает три способа подключения к радиомодему. Настройка производится при инициализации приложения в 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. По умолчанию используется тот же интерфейс.

5. Запуск проекта

python app.py

Теперь фреймворк готов принимать и обрабатывать запросы из LoRa-сети. Для остановки нажмите Ctrl+C.

🏗 Архитектура проекта

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

  1. Zatomis: Ядро приложения, инициализация и управление.
  2. Router: Маршрутизация запросов к контроллер-функциям.
  3. Request: Класс входящего запроса и его данных.
  4. Response: Класс ответа сервера и его форматы.

Структура минимального приложения

  • app.py — точка входа, инициализация Zatomis.
  • urls.py — карта маршрутов.
  • Контроллеры — функции обработки логики.

📚 Документация

Более подробная информация доступна в разделах:

(РАЗДЕЛ В РАЗРАБОТКЕ)

🤝 Дополнение и расширение

Фреймворк позволяет легко расширять функционал:

  • Интеграция с БД: Использование SQLAlchemy, сессии, генераторы.
  • Логирование и отладка: Встроенные механизмы.
  • Безопасность: Примеры добавления аутентификации и валидации данных.

📄 Лицензия

Open-source проект.


Разработано для сообщества SKIJ.net

About

Данный репозиторий содержит фреймворк(zatomis) и реализацию ресурс-сервера на нём

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages