Об этом проекте
SIMUT (Sistema Integrado de Monitoramento Universal e Telemetria) — это IoT-прошивка для Raspberry Pi Pico W, которая отслеживает температуру, влажность и давление на 16 датчиках и работает с сетью или без неё. Из одного дерева исходников собираются три публикуемых устройства: монитор с сенсорной панелью (TFT 320×240), монитор с символьным ЖК-дисплеем (16×2, alpha) и батарейный логгер, уходящий в спящий режим между измерениями (Air, экспериментальный).
У них общее ядро: бинарная история на устройстве и аварийные сигналы по каждому каналу; 32 учётные записи пользователей с 13 битами разрешений; встроенный веб-интерфейс; телеметрия по HTTP(S) или MQTT(S), с отдельной линией для аварийных сигналов; Home Assistant MQTT Discovery, конечная точка Prometheus /metrics и удалённый syslog (RFC 5424); OTA-обновления и последовательная консоль.
Статус проекта: текущий релиз v2.8.0 (2026-09-30). SIMUT вышел из беты с v2.7.0, по измерениям: 8,18 ч непрерывной работы с 0 перезагрузок и 6 из 6 OTA-обновлений без потерь. В v2.8.0 конфигурация сохраняется, если обновление прервано на полпути, а пользовательский формат телеметрии позволяет отправлять Content-Type, ожидаемый сервером. Публикуемые образы: три образа, каждый в виде .uf2 и .bin: release (TFT-сенсорная панель), alpha (ЖК 16×2 с Bluetooth-консолью) и air (безголовый батарейный логгер). Вместе с ними поставляются языковые пакеты pt-BR и es-ES и манифест OTA. Зрелость: release стабильный; alpha опубликован и протестирован на стенде; air экспериментальный. Каждый pull request прогоняет 426 хостовых тестовых случаев в 8 наборах, 60 с фаззинга и статического анализа и собирает все шесть образов прошивки с холодного кэша.
Известные ограничения задокументированы: OTA переформатирует файловую систему (Wi-Fi, учётные записи и слоты датчиков переносятся; история, файлы калибровки и языковые пакеты — нет); один слот прошивки и нет отката; необъяснимые сбросы появлялись трижды на стендовом образе; простаивающие соединения могут разрывать потоки; чанковые ответы иногда ломаются; сохранение списка пользователей перезагружает устройство; курсор телеметрии — это одна временная метка; не является сертифицированным метрологическим прибором.
Почему SIMUT: автономность с дисплеем, регулируемые среды (аудиторский след, RBAC пользователей), холодовая цепь (датчики до −50 °C), работа офлайн, OTA-обновления, безопасность (HMAC-SHA256, 13-битный RBAC, блокировки, опциональный HTTPS), Home Assistant, метрики Prometheus, удалённый журнал аудита. Типичные сценарии использования: лаборатории, аптеки, банки крови, хранение вакцин, пищевые холодовые цепи.
Архитектура: двухъядерная (Core 0 — основной цикл, Core 1 — цикл дисплея), с AppManager, SensorManager, WebManager, TelemetryManager, CommandManager, StorageManager, NetworkManager на Core 0; DisplayManager, TouchPriority, DMA-рендерер канвы, Themes, i18n на Core 1. Аппаратные интерфейсы: SPI к ILI9341 TFT 320×240 + XPT2046 Touch (alpha: HD44780 16×2 LCD; Air: без дисплея); GP0–GP15 к 16 универсальным слотам датчиков (DS18B20 1-Wire, DHT22, BMP280/BME280 I2C); последовательная консоль USB CDC (+ Bluetooth на alpha/Air); WiFi (CYW43439) к серверу HTTP(S) + телеметрия.
Ключевые возможности:
- Измерения и аварийные сигналы: 16 универсальных слотов датчиков, каналы температуры/влажности/давления, калибровочные смещения и кривые для каждого датчика, конвейер датчиков с нулевым доверием (проверка ROM DS18B20, гистерезис ошибок, отбраковка выхода за диапазон), аварийные сигналы по каждому каналу с нижними/верхними пределами, авария неисправности, 120 с тишины, глобальное отключение звука, мелодии зуммера, окна обслуживания до 30 дней.
- Сенсорная панель (release): ILI9341 320×240, дашборд, графики истории с полосой min/max, статистика, календарь, настройки; идентификация на панели с 32 учётными записями, каждая с PIN, настраиваемая политика PIN, клавиатура пересобирается после каждого нажатия, блокировка по учётной записи; администрирование на стекле; жесты верхней панели; быстрый путь DMA-рендеринга; безопасная зона 4 px; темы (до 8 загружаются из LittleFS, 11 поставляются); звуковая система с 6 мелодиями на класс.
- Символьный ЖК (alpha): показания циклически перебирают каждый активный слот и канал каждые 3 с, крупные цифры, точка доступа настройки показывает адрес/SSID/ключ, Bluetooth-консоль, количество ожидающей телеметрии.
- Веб-интерфейс: 11 страниц со сжатием gzip, светлая/тёмная темы, файловый менеджер, многопользовательские сессии с истечением после 15 минут простоя; живое зеркало панели (release) с 213 мс на кадр; изменения классифицируются с пробным прогоном (Test/Apply now/Save and restart); перезапуск без сохранения; версия на странице входа; сканирование Wi-Fi; графики истории и экспорт CSV в браузере; HTTP API с 62 маршрутами.
- Телеметрия и интеграции: четыре транспорта (HTTP, HTTPS, MQTT, MQTTS), полезные нагрузки в JSON/CSV/пользовательском шаблоне, TLS 1.2 с проверкой сертификата; пакетирование по количеству (t_int минимальный размер пакета, t_bat максимальный на запрос, адаптивный размер пакета); отдельная линия аварийных сигналов со своей очередью и подтверждением; Home Assistant MQTT Discovery, Prometheus /metrics, удалённый syslog; хуки парка (заголовки X-SIMUT-*, служба mDNS _simut._tcp, Bearer-токены, настраиваемый источник CORS).
- Сеть и время: Wi-Fi с лестницей повторов (5 с с удвоением до 120 с), скрытые SSID, статический IP, два DNS-сервера, пользовательский NTP или ручные часы, настраиваемый веб-порт; точка доступа настройки (WPA2, ключ на устройство, captive portal по адресу http://192.168.4.1) с пятью способами входа; откат повторов NTP от 20 с до 15 мин с переходом на pool.ntp.org.
- Хранение и история: компактная бинарная история (V5) с кодированием delta + anchor по 5,38 байта на запись (~116 дней в файловой системе 1 МБ), блоки из 60 записей с CRC, открытый блок сохраняется после каждой записи, самый старый день удаляется после заполнения на 86%; конфигурация с проверкой CRC32, записывается во временный файл и переименовывается с откатом на .bak, секреты обфусцированы; журнал событий 2 × 800 записей и 155 кодов событий.
- Безопасность: 32 учётные записи, 13 битов разрешений, никто не может выдать бит, которым не обладает; пароли HMAC-SHA256 5000 раундов с 8-байтовой аппаратно-случайной солью и привязанным к плате перцем; заводски новый блок генерирует случайный 8-символьный пароль администратора, один раз печатаемый в USB-консоль; ограничения перебора (блокировка входа 2–300 с на клиента, троттлинг по IP, экспоненциальная блокировка Bluetooth-консоли); сессии с cookie HttpOnly SameSite=Strict или Bearer-токеном; загрузки отклоняют обход пути, процентное кодирование, управляющие байты, зарезервированные имена; опциональный HTTPS (release) с установкой сертификата; аудиты закрыты, последняя находка V-09 исправлена в v2.7.0.
- Устойчивость и форензика: аутопсия сбоя при каждой загрузке (scratch-регистры сторожевого таймера называют зависший модуль), дисциплина флеш-памяти на двух ядрах (Core 1 приостанавливается вокруг записей во флеш), сторожевой таймер обслуживается вокруг операций файловой системы.
- Обновления, резервное копирование и восстановление: OTA с веб-страницы (только администратор, образ проверяется перед фиксацией), резервное копирование и восстановление всей файловой системы с проверкой CRC32 и привязкой к чипу, руководство по восстановлению с путями BOOTSEL, picotool и 1200 bps.
- SIMUT Air (экспериментальный): два режима (M0 активный, M1 цикл сна), радио только когда есть ожидающие записи, пин определения зарядного устройства, полная консоль.
- Интернационализация: 3 языка интерфейса (английский встроен, португальский pt-BR и испанский es-ES в виде пакетов .lng).
Быстрый старт: предварительные требования PlatformIO Core 6.x, опционально zopfli, Raspberry Pi Pico W; сборка через pio run -e pico_w_release, прошивка через pio run -e pico_w_release -t upload, только при первой прошивке загрузить данные LittleFS через uploadfs (предупреждение: переформатирует раздел). Готовые релизы поставляются файлами .uf2 и .bin. Первая загрузка: получить пароль администратора из последовательной консоли USB, подключиться к сети через точку доступа настройки или команды консоли, открыть веб-интерфейс, добавить датчики, настроить на сенсорной панели.
Аппаратное обеспечение: Raspberry Pi Pico W (RP2040 двухъядерный), ILI9341 TFT 320×240 (SPI DMA) или HD44780 16×2 LCD, резистивный сенсор XPT2046, 16 универсальных слотов датчиков на GP0–GP15, пассивный пьезоизлучатель (управляется PIO), 2 МБ внутренней флеш-памяти (1 МБ прошивка + 1 МБ LittleFS). Доступна для скачивания разводка печатной платы SIMUT (KiCad).
Документация включает руководство по подключению, руководство по восстановлению, заметки по безопасности и конфигуратор сборки для пользовательских образов.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.