MicroPython (ESP32)

Пример использования

# main.py
import network
import time
import _thread  # Многопоточность
import esp32  # Доступ к функциям ESP32 (например, температура чипа)

# Импорт клиентской библиотеки MicroComm для ESP32
from microcomm_esp32 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="12eba392-cd68-4433-a7a4-d5f2472d6255",  # Уникальный ID устройства (узнайте в личном кабинете)
    debug=True  # Выводит подробные логи (удобно при настройке)
)


# --- Регистрация команды: WRITE_MESSAGE ---
@mc.register_command(
    name="WRITE_MESSAGE",  # Имя команды
    description="Написать сообщение",  # Описание команды
    param_specs={  # Описание ожидаемых параметров
        "message": {
            "type": "str",
            "required": True,
            "description": "Текст сообщения для вывода"
        }
    },
)
def write_message(execution):
    message = execution.params.get("message")
    if not message:
        execution.error("Не указан параметр 'message'")  # Отправляем ошибку
        return

    print(f"Your message: {message}")
    execution.success(payload={
        "your_extra_data": "hello world"  # Можно вернуть данные
    })


# --- Регистрация команды: TEST_ERROR ---
@mc.register_command("TEST_ERROR", "Тест ошибки")
def error(execution):
    x += 1  # Ошибка: переменная x не определена
    execution.success()  # Этот код не выполнится


# --- Регистрация команды: GET_TEMP ---
@mc.register_command("GET_TEMP", "Возвращает температуру процессора")
def temp(execution):
    # Чтение температуры с встроенного сенсора ESP32 (в градусах Цельсия)
    temp = esp32.mcu_temperature()
    execution.success(payload={
        "temp": temp,  # Отправляем значение
    })


# --- Запуск программы ---
connect_wifi()  # Подключаемся к Wi-Fi

# Запускаем цикл обмена данными с сервером в отдельном потоке
# Это позволяет устройству одновременно слушать команды и выполнять свою логику
_thread.start_new_thread(mc.exchange_data_loop, ())

# Основной цикл устройства (может выполнять свои задачи)
while True:
    print("Main loop")
    time.sleep(5)  # Например, опрос датчиков, управление реле и т.д.