Симулятор iDryer¶
Виртуальная сушилка филамента — полная копия реального устройства, только в браузере. Идеально для знакомства с системой, тестирования и разработки.
Ссылка: sim.idryer.org
Зачем нужен симулятор¶
Представьте, что у вас на столе стоит сушилка iDryer. Она:
- Показывает температуру и влажность внутри камеры
- Взвешивает катушку и отслеживает расход филамента
- Читает RFID-метки и автоматически определяет материал
- Сушит по выбранному пресету или вашим настройкам
- Отправляет все данные в облако
Симулятор делает ровно то же самое — только виртуально. Можно:
- ✅ Попробовать систему до покупки реального устройства
- ✅ Научиться работать с порталом
- ✅ Разрабатывать и отлаживать интеграции
Как всё работает¶
Точно как настоящая сушилка¶
Симулятор проходит тот же путь, что и реальное устройство:
- Первое включение — устройство не знает своего владельца
- PIN-код на экране — 8 цифр, действует 10 минут
- Привязка в портале — вводите PIN, даёте имя
- Готово! — устройство ваше, можно управлять
После привязки симулятор подключается к серверу через WebSocket — точно так же, как физическая сушилка подключается через WiFi.
Интерфейс симулятора¶
Панель Configuration¶
Настройки подключения:
| Поле | Описание |
|---|---|
| API Server URL | Адрес сервера (по умолчанию http://localhost:3000, на проде — https://api.idryer.org) |
| Device ID | Уникальный идентификатор — появится автоматически после привязки |
| Device Token | Секретный ключ устройства — как пароль, только для машин |
| RFID Tag | Эмуляция RFID-метки на катушке |
| Initial Weight | Начальный вес филамента в граммах |
Статусная строка¶
Показывает текущее состояние:
- Mode: Normal / Claiming — обычный режим или ожидание привязки
- Device: Connected / Not Connected — есть ли связь с сервером
Control Panel¶
Управление режимами работы — как кнопки на реальной сушилке:
| Кнопка | Что делает |
|---|---|
| IDLE | Режим ожидания — вентиляторы выключены, просто мониторинг |
| START DRYING | Запуск сушки — нагрев до заданной температуры, таймер |
| STORAGE | Режим хранения — поддержание низкой влажности без активного нагрева |
Текущие показатели¶
Живые данные с «датчиков»:
- Status — текущий режим (IDLE, DRYING, STORAGE)
- Temperature — температура в камере, °C
- Humidity — относительная влажность, %
- Heater Power — мощность нагревателя, 0-100%
- Fan Status — вентиляторы ON/OFF
- Weight — вес на весах, граммы
- Current RFID — какая метка(катушка) сейчас в камере
Real-time Monitoring¶
Живой график с историей — температура, влажность, мощность нагревателя. Как в реальном устройстве с экраном.
Telemetry Log¶
Сырые данные для отладки — что именно симулятор отправляет на сервер.
Привязка устройства¶
Шаг 1: Запуск режима Claiming¶
Нажмите «Start Claiming» — симулятор переходит в режим ожидания владельца.
Появляется панель с PIN-кодом:
┌────────────────────────────────┐
│ PIN CODE: 12345678 │
│ Expires in: 09:45 (10 min) │
│ Enter PIN in the web portal: │
│ Devices → Add Device │
└────────────────────────────────┘
Это то, что показывает экран реальной сушилки при первом включении.
Кнопки: - Copy PIN — скопировать код в буфер обмена - Refresh PIN — запросить новый код (старый аннулируется) - Cancel Claiming — отменить и вернуться в обычный режим
Шаг 2: Привязка в портале¶
- Откройте portal.idryer.org (или локальный сервер)
- Войдите в аккаунт
- Перейдите Устройства → нажмите «Добавить устройство»
- Введите PIN-код (8 цифр с экрана симулятора)
- Придумайте название: «Тестовая сушилка», «Симулятор #1» и т.п.
- Нажмите «Добавить»
Шаг 3: Магия происходит¶
В момент нажатия «Добавить» сервер:
- Проверяет PIN — он должен существовать и не быть просроченным
- Находит устройство, которое этот PIN запросило
- Привязывает устройство к вашему аккаунту
- Удаляет PIN — его больше нельзя использовать
Симулятор мгновенно узнаёт об этом:
- Получает свой Device ID и Token
- Автоматически переключается в Normal Mode
- Подключается к WebSocket для обмена данными в реальном времени
Данные сохраняются
Device ID и Token записываются в localStorage браузера. При следующем открытии sim.idryer.org симулятор подключится автоматически — не нужно проходить привязку заново.
но если это потребуется, всегда можно скопировать нужные данные со страницы устройства.
Про безопасность PIN-кода¶
- 10 минут жизни — после этого PIN аннулируется
- Одноразовый — использовал и забыл, повторно не сработает
- 8 цифр — 100 миллионов комбинаций, подобрать нереально за 10 минут
Это тот же протокол безопасности, что и в реальных устройствах.
Эмуляция катушек с RFID¶
Одна из главных фишек iDryer — автоматическое распознавание катушек по RFID-меткам.
Выбор RFID-метки¶
В выпадающем списке «RFID Tag»:
| Опция | Что происходит |
|---|---|
| ❌ No RFID Tag | Катушки нет — камера пустая |
| 🟢 PLA Green | Известная метка — катушка уже в системе, подхватится автоматически |
| 🧪 Test New #1, #2, #3 | Новые метки — создадут «непривязанную катушку» |
| 🔴 PLA Red, ⚫ ABS Black... | Разные тестовые материалы |
Сценарий: новая катушка¶
- Выберите Test New #1 (или любую тестовую метку)
- Симулятор отправляет эту метку в телеметрии
- В портале на Dashboard появляется предупреждение: «Обнаружена неизвестная RFID-метка»
- Нажмите «Привязать RFID метку»
- Выберите катушку из списка (или создайте новую)
- Готово — теперь при установке этой катушки система её узнает!
Это точная копия реального сценария: вставили новую катушку с RFID-меткой → сушилка её не знает → привязываете через портал → всё работает.
Физика симуляции¶
Симулятор не просто показывает случайные числа — он имитирует реальные физические процессы:
| Параметр | Поведение | Как в реальности |
|---|---|---|
| Температура | +1°C каждые ~7.5 секунд при нагреве | ТЭН греет камеру постепенно |
| Вес филамента | -1 грамм каждые 15 секунд при сушке | Влага испаряется, катушка легчает |
| Влажность | Реалистичные кривые снижения | Чем горячее — тем суше |
| Мощность нагревателя | Автоматическая регулировка | ПИД-контроллер поддерживает температуру |
Это позволяет тестировать логику пресетов, отслеживание веса и другие функции — всё будет работать почти как на реальном устройстве.
Quick Actions¶
Кнопки быстрого доступа вверху интерфейса:
| Кнопка | Действие |
|---|---|
| Reset All | Полный сброс — очистка localStorage, все данные устройства удаляются |
| Open Portal | Открыть портал в новой вкладке |
| Instructions | Показать/скрыть встроенную инструкцию |
Консольный запуск¶
Для автоматизации и CI/CD есть консольная версия симулятора.
Режим Claiming¶
С RFID-меткой и начальным весом:
Режим Normal (уже привязанное устройство)¶
Device ID и Token берутся со страницы устройства в портале → раздел «Device Token (для симулятора)».
Типичные проблемы¶
«Invalid PIN code»¶
- PIN истёк (прошло больше 10 минут)
- PIN уже использован
- Опечатка при вводе
Решение: нажмите Refresh PIN для генерации нового кода.
Устройство показывает Disconnected¶
- Сервер недоступен — проверьте API Server URL
- Токен невалидный — попробуйте Reset All и повторную привязку
- Браузер заблокировал WebSocket — проверьте консоль разработчика
Телеметрия не обновляется в портале¶
- Проверьте индикатор Connected в симуляторе
- Проверьте чип Connected/Disconnected на Dashboard портала
- Обновите страницу портала
После Reset All нужно заново привязывать¶
Это ожидаемое поведение — Reset All удаляет все данные устройства из браузера. Как если бы вы сбросили реальную сушилку к заводским настройкам.
Для разработчиков¶
Исходники¶
Код симулятора: simulator/ (Node.js + vanilla JS для веб-версии)
Переменные окружения¶
WebSocket события¶
Симулятор использует Socket.IO и поддерживает все события реального устройства:
authenticate— аутентификация по токенуtelemetry— отправка телеметрии каждые 2-5 секундcommand— получение команд от портала (START_DRYING, STOP и т.д.)status— обновление статуса устройства