Установка
- Скачайте последнюю версию библиотеки для MicroPython из репозитория: microcomm-micropython на GitHub
- В файле
main.pyпередайтеuuidсозданного устройства в классMicrocommClient - Загрузите на ваше устройство файлы
microcomm_client.pyиmain.py - Запустите файл
main.py
После подключения, перейдите на страницу устройства на сайте и попробуйте отправлять команды через форму.
Пример использования
# main.py
import _thread
import esp32
import network
import time
# Импорт клиентской библиотеки MicroComm для ESP32
from microcomm import MicrocommClient
# --- Настройки Wi-Fi ---
WIFI_SSID = "" # Имя вашей Wi-Fi точки
WIFI_PASSWORD = "" # Пароль точки доступа
# Функция подключения к Wi-Fi
def connect_wifi():
sta_if = network.WLAN(network.STA_IF) # Режим клиента (не точка доступа)
if not sta_if.isconnected():
print("Connecting to Wi-Fi...")
sta_if.active(True) # Включаем Wi-Fi
sta_if.connect(WIFI_SSID, WIFI_PASSWORD) # Подключаемся
while not sta_if.isconnected():
pass # Ждём подключения
print("Connected to Wi-Fi")
print("Network config:", sta_if.ifconfig()) # Показываем IP-адрес
# --- Инициализация MicroComm Client ---
mc = MicrocommClient(
uuid="", # UUID вашего устройства (узнайте в личном кабинете)
debug=True # Выводит подробные логи (удобно при настройке)
)
# --- Регистрация команды: WRITE_MESSAGE ---
@mc.register_command(
name="WRITE_MESSAGE", # Имя команды
description="Написать сообщение", # Описание команды
param_specs={ # Описание ожидаемых параметров
"message": {
"type": "str",
"required": True,
"description": "Текст сообщения для вывода",
"default": "Hello, World!",
}
},
)
def write_message(execution):
message = execution.params.get("message")
if not message:
execution.error("Не указан параметр 'message'") # Отправляем ошибку
return
print(f"Your message: {message}")
execution.success({
"your_data": [1, 2, 3] # Можно вернуть свои данные
})
# --- Регистрация команды: TEST_ERROR ---
@mc.register_command("TEST_ERROR", "Тест ошибки")
def test_error(execution):
x += 1 # Ошибка: переменная x не определена
execution.success() # Этот код не выполнится
# --- Регистрация команды: GET_TEMP ---
@mc.register_command("GET_TEMP", "Возвращает температуру процессора")
def get_temp(execution):
# Чтение температуры с встроенного сенсора ESP32 (в градусах Цельсия)
temp = esp32.mcu_temperature()
execution.success({
"temp": temp, # Отправляем значение
})
# --- Запуск программы ---
connect_wifi() # Подключаемся к Wi-Fi
# Запускаем цикл обмена данными с сервером в отдельном потоке
# Это позволяет устройству одновременно слушать команды и выполнять свою логику
_thread.start_new_thread(mc.exchange_data_loop, ())
# Основной цикл устройства (может выполнять свои задачи)
# Например, опрос датчиков, управление реле и т.д.
counter = 1
while True:
print(f"Main loop #{counter}")
mc.log_info(f"Сообщение #{counter} из основного цикла", payload={
"your_data": {
"counter": counter
}
})
counter += 1
time.sleep(30)
Отправка логов
Для отправки логов используйте соответствующий метод в зависимости от уровня важности:
mc.log_info("Текст лога", payload={"your_data": "hello world!"})
Доступные уровни логирования
mc.log_debug— отладочная информацияmc.log_info— общие сведения о работеmc.log_warning— предупрежденияmc.log_error— ошибкиmc.log_critical— критические сбои
Каждый метод принимает:
- обязательный аргумент message (строка),
- необязательные аргументы payload (словарь с дополнительными данными) и label (метка для фильтрации).
Описание параметров команды
При регистрации команды с помощью декоратора передаётся аргумент param_specs.
Он предназначен для описания ожидаемых параметров команды.
Основная цель — напомнить самому себе, какие параметры принимает команда.
param_specs — это документация «встроенной помощи», которая делает работу с командами прозрачной и удобной.
Поддерживаемые поля спецификации
type
* Тип: str
* Описание: Тип параметра. Поддерживаемые значения: 'str', 'int', 'float', 'bool', 'list', 'dict'.
required
* Тип: bool
* Описание: Определяет, является ли параметр обязательным. По умолчанию: False.
description
* Тип: str
* Описание: Человекочитаемое пояснение назначения параметра. По умолчанию: 'Без описания'.
default
* Тип: любой
* Описание: Значение по умолчанию. Используется для автозаполнения в интерфейсе.
min_value / max_value
* Тип: number
* Описание: Ограничения для числовых значений (int, float).
min_length / max_length
* Тип: int
* Описание: Ограничения длины для строк или списков.
choices
* Тип: list
* Описание: Список допустимых значений (например: ["on", "off"]).
pattern
* Тип: str
* Описание: Регулярное выражение (в виде строки) для валидации строк.
example
* Тип: любой
* Описание: Пример значения (отображается в подсказке).
💡 Все поля необязательные, но чем подробнее вы опишете параметр — тем удобнее будет работать с командой.
Пример описания параметров команды
"param_specs": {
"mode": {
"type": "str",
"required": True,
"description": "Режим энергопотребления",
"choices": ["eco", "normal", "turbo"],
"example": "turbo"
},
"timeout": {
"type": "int",
"required": False,
"description": "Таймаут отключения в секундах",
"min_value": 10,
"max_value": 600,
"default": 60,
"example": 120
},
"name": {
"type": "str",
"required": False,
"description": "Пользовательское имя устройства",
"min_length": 1,
"max_length": 32,
"pattern": "^[a-zA-Z0-9_]+$",
"default": "device_01"
}
}