Skip to content

Определения

Micropython

Micropython - это простая и эффективная реализация языка программирования Python 3, включающая небольшое подмножество стандартной библиотеки Python и оптимизированная для работы на микроконтроллерах и в ограниченных средах.

Fediverse

Fediverse - это способ организации взаимодействия сервер - сервер, обеспечивающий децентрализованную схему распространения и обработки информации.

IoT

Ineternet of Things - это обширная сеть устройств-предметов, подключенных к Интернету и способных взаимодействовать друг c другом.

Git

Git - это бесплатная распределенная система контроля версий с открытым исходным кодом, предназначенная для быстрой и эффективной работы с проектами, от небольших до очень крупных.

Git Commit

Commit или Коммит - это зафиксированное во времени состояние кода или иной байтовой структуры в системе контроля версии Git. Каждый коммит имеет свой уникальный идентификатор и обычно имеет description - текстовое описание изменений, которые в него входят.

Git Tag

Tag или Тег - это коммит, помеченный дополнительным свойством - тегом, обычно тег присваивается стабильным-релизным версиям какой-либо программы.

Git Branch

Branch или Ветка - это набор коммитов, расположенных в хронологическом порядке в системе контроля версии Git.

Gitlab

Gitlab - это веб-инструмент жизненного цикла Git репозиториев от компании GitLab Inc. В данной документации под Gitlab подразумевается не только gitlab.com, но и любой другой Узел Gitlab CE или Gitlab EE

Github

Github - это хостинг Git репозиториев от компании Github Inc.

Pepeunit

Pepeunit - платформа с открытым исходным кодом основанная на приниципах Fediverse и IoT, предоставляющая функционал CI/CD, настройки политик взаимодействия, управления, отслеживания состояния, а также обеспечивающая федеративное взаимодействие между Unit.

Instance

Instance или Узел - полностью работоспособное, настроенное и запущенное веб приложение - способное отвечать на запросы клиентов.

API

Application Programming Interface - это контракт, проедоставляемый программами и описывающий взаимодействие c ними.

REST

REST API - контракт описывающий взаимодействие программы с клиентами через HTTP запросы. Pepeunit Backend использует пакет Pydantic и интерфейс Swagger OpenAPI для предоставления REST API.

GQL

GraphQL API - это язык запросов и серверная среда с открытым исходным кодом, использующая HTTP запросы для обмена информацией с клиентами. Pepeunit Backend использует пакет strawberry-graphql для предоставления GraphQL API.

MQTT

MQTT API - упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный на обмен сообщениями между устройствами по принципу издатель-подпищик. Pepeunit Backend использует пакет fastapi-mqtt как клиент, для взаимодействия c MQTT Broker - EMQX.

OTA

Over The Air - обновление по воздуху, способ доставки и установки новых микропрограм в IoT устройства. Pepeunit поддерживает обновление по OTA через REST и отдаёт три вида архивов:

  • zip для первичной ручной установки на устройство
  • tar для устройств не поддерживающих распаковку gz
  • tgz как основной способ обновления

MQTT Broker

MQTT Broker - это серверное приложение, которое координирует сообщения между издателями и подпищиками MQTT протокола. В Pepeunit главными подпищиками и издателеми можно считать Unit, а главным руководителем взаимодействия - Backend. Pepeunit использует MQTT брокера - EMQX.

ACL List

ACL List - это файл, определяющий правила авторизации для MQTT Broker

Redis

Redis - NoSQL кластерная база данных использующая парадигму key-value

Postgresql

Postgresql - кластерная реляционная база данных с языком запросов SQL.

ChatBot

ChatBot - приложение, позволяющее взаимодействовать с Backend через диалог в чате. Pepeunit Backend использует пакет AioGram как клиент, для взаимодействия с Telegram Bot API.

Frontend

Frontend - веб приложение, доступное для скачивания открытым способом и предназаначенное для обеспечения взаимодействия пользователя c Backend приложением. Pepeunit Frontend Repository

Backend

Backend - приложение размещаемое на сервере, обеспечивающее обработку, хранение и анализ информации, а так же предоставляющее разные API для взаимодействия. Pepeunit Backend Repository

Repo

Repo - это представление Pepeunit о внешнем Git репозитории, например из Gitlab или Github. Данная сущность содержит в себе полный клон репозитория и синхронизирует своё состояние с внешним репозиторием, что позволяет Pepeunit быстро создавать микропрограммы для Unit.

Unit

Unit - это представление о физичеcком IoT устройстве в Pepeunit, данная сущность создаётся на основе Repo и несёт в себе информацию о конкретном физическом IoT устройстве, а так же о версии микропрограммы доступной в Repo

UnitNode

UnitNode - это предстваление о топике в MQTT для Pepeunit, данная сущность описывает точку взаимодействия с Unit. UnitNode может быть двух типов Input и Output. Между UnitNode разных Unit могут быть связи: от одного Output к многим Input.

env_example.json

env_example.json- файл, описывающий переменные окружения нужные дла корректной работы микропрограммы Unit, он создаётся разработчиком Unit и помещается в каждую версию Repo. На основе данного файла и ввода пользователя, Pepeunit может сгенерировать env.json файл для Unit.

env.json

env.json- секретный файл, содержащий переменные окружения нужные дла корректной работы микропрограммы Unit. Именно данный файл отличает ваш Unit от других Unit отстыкованных от одного и того же Repo. Он создаётся владельцем Unit совместно с Pepeunit и хранится в шифрованном виде внутри сущности Unit.

DANGER

Никогда и никому не передавайте env.json файл, любой человек имеющий данный файл, может эмулировать ваше устройство Unit.

schema_example.json

schema_example.json - файл схемы, описывающий MQTT топики нужные Unit. Данный файл создаётся разработчиком Unit и помещается в каждую версию Repo. Благодаря данному файлу Pepeunit создаёт UnitNode сущности, отвечающие за взаимодействие с Unit и регламентирующие политики доступа до топиков Unit. Пример:

json
{
    "input_base_topic": [
        "update/pepeunit",
        "schema_update/pepeunit"
    ],
    "output_base_topic": [
        "state/pepeunit"
    ],
    "input_topic": [
        "input/pepeunit"
    ],
    "output_topic": [
        "output/pepeunit"
    ]
}

schema.json

schema.json - готовый файл схемы для Unit генерируемый Pepeunit, содержит в себе ссылки на UnitNode и базовые топики для взаимодействия с Pepeunit. Пример готовой схемы:

json
{
    "input_base_topic": {
        "update/pepeunit": [
            "example.com/input_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/update/pepeunit"
        ],
        "schema_update/pepeunit": [
            "example.com/input_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/schema_update/pepeunit"
        ]
    },
    "output_base_topic": {
        "state/pepeunit": [
            "example.com/output_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/state/pepeunit"
        ]
    },
    "input_topic": {
        "input/pepeunit": [
            "example.com/dc2d6f5e-90b3-4cdb-91a4-5ae12db1887f/pepeunit",
            "example.com/f06bcaa8-bb00-45ea-aba8-0fc0eba41e08/pepeunit"
        ]
    },
    "output_topic": {
        "output/pepeunit": [
            "example.com/4114a3f8-65c1-4d42-8d1d-481785d0dcca/pepeunit"
        ]
    }
}
  • 5e1a4151-515e-4926-8b8a-5e821713e25e - при этом uuid Unit
  • dc2d6f5e-90b3-4cdb-91a4-5ae12db1887f, f06bcaa8-bb00-45ea-aba8-0fc0eba41e08, 4114a3f8-65c1-4d42-8d1d-481785d0dcca - при этом uuid разных UnitNode
  • input/pepeunit - имеет сразу два топика, это означает что один из этих UnitNode принадлежит к текущему Unit с uuid=5e1a4151-515e-4926-8b8a-5e821713e25e, а второй другому UnitNode