Readme и его основные элементы
WARNING
Readme - самый важный элемент вашего репозитория и будущих Unit, от того как вы его заполните будет зависеть лёгкость эксплуатации Unit другими людьми. Старайтесь заполнить каждый из пунктов содержищихся в данном разделе.
Пример стандартного заполнения readme для различных Unit:
Description
Когда другие Пользователи Pepeunit переходят по ссылке на репозиторий, они первым делом захотят прочитать описание будущего Unit. Опишите в данном пункте функциональные возможности устройства, желательно просто привести возможности по пунктам, чтобы читать было проще.
Пример легко читаемого функционального описания
- Регулирует обороты вентилятора в зависимости от температуры, чем больше температура тем больше обороты.
- Публикует текущую температуру и скважность.
- Позволяет включить вентилятор на
Nсекунд по команде.
Пример тяжело читаемого описания:
Аппаратно-программный комплекс предназначен для управления вентиляционным узлом с учетом термодинамических параметров окружающей среды. Система реализует интеллектуальную адаптацию вращательных характеристик вентилятора: повышение температуры приводит к пропорциональному увеличению частоты вращения устройства, обеспечивая эффективное охлаждение. Одновременно предусмотрена возможность публикации телеметрических данных, включая текущие значения температурного показателя и коэффициента скважности, что осуществляется посредством стандартизированных протоколов передачи данных. Кроме того, комплекс поддерживает функционал кратковременной активации вентилятора, позволяя включать его на заданный интервал времени N секунд по внешним управляющим командам. Такое решение обеспечивает высокоадаптивное управление тепловыми процессами и возможность интеграции в сложные инфраструктурные системы.
Software platform
Укажите программную платформу на основе которой работает данное устройстве, здесь Пользователи будут ожидать увидеть язык программирования или фреймворк на основе которого был создан Unit, желательно указывать версию.
Примеры
Python v3.11Micropython v1.24.1GO v1.23.4Vue v3.5.13React v19.0C++ v23- ...
Firmware format
Чтобы Пользователи могли быстро понять Компилируемый ваш Unit или Интерпритируемый добавьте в данном пункте один из двух возможных вариантов:
- Интерпритируемый
- Компилируемый
Данный параметр при создании Repo в Pepeunit влияет на первую установку и способ доставки программных обновлений
Hardware platform
Здесь указывается тип физических устройств на которые Пользователи могут ориентироваться при создании физического Unit
Примеры
esp32(требуется >= 1МБflashпамяти)PC-Linux,Mac,WinRpi 3B+
Required physical components
Опишите какие физические компаненты потребуются, чтобы воспроизвести Unit. Данный пункт облегчает Пользователям поиск номенклатуры материалов для закупок.
Пример
- Микроконтроллер
esp32 PWM4pinвентилятор, напримерFFB1212EH- Датчик температуры
DS18B20 1хрезистор4.7кОм- Провода
Operating Scheme
Пользователи ожидают увидеть в данном пункте схемы работы Unit, это могут быть электрические схемы, схема работы топиков или схема подключения нескольких Unit к Pepeunit. Видя схему Пользователю легче понять как работает ваш Unit и воспроизвести его.
WARNING
Ввиду того что картинки достаточно большие по размеру, а объём пространства репозитория будет нарастать с каждым новым изменением. Гораздо проще воспользоваться внешними хостингами картинок, которые позволяют получить статическую ссылку на изображение.
Пример вставки картинки в md
Эта же картинка но уже с рендером

3D Models
Укажите здесь ссылки на 3D модели элементов Unit в различных форматах, чтобы Пользователи могли распечатать их на 3D принтерах. Отдавайте приоритет формату stl, т.к. он может быть использован в любой программе трассировки 3D печати.
Physical IO
Данный пункт актуален только для Unit на основе микроконтроллеров, так как здесь нужно описать какие физические IO пины используются.
Пример
machine.Pin(0)настроен на отдачуPWMсигнала c частотой10000Гци разрешением16битmachine.Pin(4)настроен на получение цифрового значения температуры от датчикаDS18B20
env_example.json
Отобразите env_example.json. Это нужно для опытных Пользователей - по переменным окружения можно оценить возможности настройки Unit. Подробное описание структуры env_example.json.
Пример
{
"WIFI_SSID": "My_Perfect_Wifi_SSID",
"WIFI_PASS": "Strong_Password",
"PUBLISH_SEND_INTERVAL": 10,
"DUTY_MIN": 8192,
"DUTY_MAX": 65535,
"TEMP_MIN": 30,
"TEMP_MAX": 60,
"PEPEUNIT_URL": "unit.example.com",
"PEPEUNIT_APP_PREFIX": "/pepeunit",
"PEPEUNIT_API_ACTUAL_PREFIX": "/api/v1",
"HTTP_TYPE": "https",
"MQTT_URL": "emqx.example.com",
"MQTT_PORT": 1883,
"PEPEUNIT_TOKEN": "jwt_token",
"SYNC_ENCRYPT_KEY": "32_bit_encrypt_key",
"SECRET_KEY": "32_bit_secret_key",
"PING_INTERVAL": 30,
"STATE_SEND_INTERVAL": 300
}Env variable assignment
Опишите какие переменные, отличные от стандартных, вы добавили в env_example.json. Чем подробнее тем лучше.
Пример
WIFI_SSID- имя сетиWiFiв которой будет работать устройствоWIFI_PASS- пароль от сетиWiFIв которой будет работать устройствоPUBLISH_SEND_INTERVAL- частота публикации данных вcurrent_fan_speed_percentage/pepeunitиcurrent_temp/pepeunitуказывать нужно в секундахDUTY_MIN- минимальная скважностьPWM 16bit, которую можно установитьDUTY_MAX- максимальная скважностьPWM 16bit, которую можно установитьTEMP_MIN- температура в градусах цельсия, ниже которой скважность будетDUTY_MINTEMP_MAX- температура в градусах цельсия, выше которой скважность будет соответствоватьDUTY_MAX
schema_example.json
Отобразите schema_example.json . Это нужно для опытных Пользователей - по данной схеме можно очень быстро оценить, что может Unit. Подробное описание структуры schema_example.json.
Пример
{
"input_base_topic": [
"update/pepeunit",
"schema_update/pepeunit"
],
"output_base_topic": [
"state/pepeunit"
],
"input_topic": [
"set_fan_state/pepeunit"
],
"output_topic": [
"current_fan_speed_percentage/pepeunit",
"current_temp/pepeunit"
]
}Assignment of Device Topics
Опишите какие форматы данных отдают ваши Output и какие форматы принимают Input. Постарайтесь добавить примеры.
Пример
inputset_fan_state/pepeunit- принимает в качестве значенияjson-{"sleep": 15, "duty": 65535}, гдеsleepсообщаяет в течении скольки секунд вентилятор будет включен со скважностьюdutyoutputcurrent_fan_speed_percentage/pepeunit- текущее значение скважности в текстовом формате -8192outputcurrent_temp/pepeunit- текущая температура в текстовом формате -27.5
Work algorithm
Расскижите о логике работы вашего Unit, возможно другие Пользователи захотят внести вклад и им будет гораздо проще, если они будут знать подробности о том как работают различные режимы вашего Unit.
Пример
Алгоритм работы с момента нажатия кнопки включения:
- Подключение к
WiFI - Инициализация датчика
DS18B20 - Подключение к
MQTT Брокеру - Каждые
PUBLISH_SEND_INTERVALсекунд публикуются сообщения вcurrent_fan_speed_percentage/pepeunitиcurrent_temp/pepeunit - Каждую секунду температура линейно преобразуется в скважность выхода, по следующему алгоритму:python
def convert_temp_to_duty(x) -> int: temp_min = settings.TEMP_MIN temp_max = settings.TEMP_MAX duty_min = settings.DUTY_MIN duty_max = settings.DUTY_MAX if x < temp_min: return 8192 if x > temp_max: return 65532 y = ((x - temp_min) * (duty_max - duty_min)) / (temp_max - temp_min) + duty_min return int(round(y))
Алгоритм работы в момент получения сообщения из set_fan_state/pepeunit
- Устройство получает сообщение формата
{"sleep": 15, "duty": 65535} - Устанавливается скважность равная
duty - Устойство засыпает на
sleepсекунд