Найти в Дзене

Программируем умный дом на JS и TS: фреймворк Мирта

Профессиональные инструменты позволяют разработчику сосредоточиться на творчестве, а не на технических деталях. Цель Мирты — открыть мир Wiren Board для каждого, кто увлечён программированием. О том, как начать работу с Миртой, было рассказано в предыдущей статье: Сегодня мы рассмотрим ключевые улучшения, которые произошли за последние полгода активной разработки. Утилита за секунды создаёт готовую к работе среду разработки, беря на себя всю рутину: от инициализации репозитория и настройки TypeScript до установки всех необходимых зависимостей и конфигурации процесса сборки. Запуск мастера создания проектов, как и прежде, осуществляется консольной командой pnpm create mirta Интерфейс стал компактнее и теперь поддерживает многоуровневые меню. В будущем планируется добавление различных шаблонов, которые станут наглядными «живыми» примерами автоматизаций — готовым кодом, который можно протестировать, отладить или сразу задеплоить на контроллер в пару кликов, чтобы увидеть его в работе. Шаб
Оглавление

Профессиональные инструменты позволяют разработчику сосредоточиться на творчестве, а не на технических деталях. Цель Мирты — открыть мир Wiren Board для каждого, кто увлечён программированием.

О том, как начать работу с Миртой, было рассказано в предыдущей статье:

Сегодня мы рассмотрим ключевые улучшения, которые произошли за последние полгода активной разработки.

Мастер создания проектов

Утилита за секунды создаёт готовую к работе среду разработки, беря на себя всю рутину: от инициализации репозитория и настройки TypeScript до установки всех необходимых зависимостей и конфигурации процесса сборки.

Запуск мастера создания проектов, как и прежде, осуществляется консольной командой

pnpm create mirta

Интерфейс стал компактнее и теперь поддерживает многоуровневые меню. В будущем планируется добавление различных шаблонов, которые станут наглядными «живыми» примерами автоматизаций — готовым кодом, который можно протестировать, отладить или сразу задеплоить на контроллер в пару кликов, чтобы увидеть его в работе.

Обновлённый интерфейс мастера создания проектов
Обновлённый интерфейс мастера создания проектов
Шаблоны и конфигурации мастера регулярно обновляются, чтобы вы всегда работали с актуальными лучшими практиками.

Начните с простого скрипта, выбрав тип проекта «Классический», либо сразу проектируйте масштабируемое решение на базе монорепозитория — тип «Моно».

Следующим шагом система предложит задействовать расширенные возможности шаблонов:

  • Примеры использования: образцы кода и подробные комментарии в конфигурации деплоя для быстрого старта.
  • ESLint: статический анализатор кода, который помогает находить ошибки и неточности ещё до запуска скрипта.
  • Vitest: поддержка модульного тестирования и локальной отладки с использованием точек останова (breakpoints).
  • SSH: упрощённая настройка подключения к вашему контроллеру для быстрого деплоя файлов.
  • GitHub: готовые конфигурации CI/CD-процессов, которые будут автоматически тестировать и собирать ваш код в GitHub (для тестирования необходимо также выбрать опцию Vitest).

Вам достаточно сделать выбор — программа задаст ещё несколько уточняющих вопросов и автоматически подготовит всё это к работе.

Шаблон NPM-пакета

Также доступен шаблон для NPM-пакетов: в категории «Моно» выберите «Пакет», если хотите легко и быстро поделиться своими разработками с сообществом.

Шаблон «Пакет» включает два проекта: сам модуль для публикации в NPM и проект с примером использования, для удобной отладки.

Модуль подключён к демо-проекту как зависимость, что позволяет сразу задеплоить его на тестовый контроллер и проверить работу в реальных условиях.

После публикации демонстрационный проект становится живой документацией — наглядным примером использования вашего модуля.

Хотите реальный пример? Без проблем, @mirta/chatbot создан средствами фреймворка, на основе шаблона «Пакет».

Это чат-бот для любых проектов Мирты, позволяющий управлять контроллером умного дома прямо из Telegram. К нему мы ещё вернёмся позднее, а пока ссылка на отдельный репозиторий:

GitHub - wb-mirta/chatbot: 💬 Smart home control right in your chat

Чтобы добавить в свой проект - просто выполните в терминале VSCode команду

pnpm add @mirta/chatbot

Ваши разработки могут распространяться точно так же и без лишних усилий — вы пишете код, фреймворк помогает комплексно протестировать, сформировать файл со списком изменений и опубликовать пакет с автоматическим добавлением информации о происхождении (provenance).

Всё это предоставляется полностью бесплатно. Если вам понадобится помощь с настройкой или возникнут вопросы, присоединяйтесь к закрытому чату Mirta Guild для подписчиков на Boosty. Наше сообщество всегда готово помочь дельным советом — все мы пишем автоматизации по-разному: под Windows, Linux и MacOS.

wihome - Автоматизации на основе оборудования Wiren Board

Хранилище состояний Mirta Store

Концепция управления состоянием, вдохновлённая Pinia и адаптированная для среды Wiren Board, получила дальнейшее развитие. Ранее она уже рассматривалась подробно:

Теперь хранилище поддерживает геттеры и действия, а также защищено от ошибок повторного использования идентификаторов. При создании классического проекта можно выбрать вариант шаблона, в котором показана работа с Mirta Store.

Техническая документация доступна в репозитории:

core/packages/mirta-store/README.ru.md at latest · wb-mirta/core

Пример реального использования в проектах на основе Мирты - всё тот же @mirta/chatbot

chatbot/packages/chatbot/src/store at latest · wb-mirta/chatbot

Геттеры (Getters) — для вычисляемых значений. Позволяют хранить в состоянии только базовые данные (например, count: 5), а производные значения (например, double: 10) вычислять на лету, избегая дублирования и риска расхождения данных в разных скриптах.

Действия (Actions) — для логики изменения состояния. Позволяют объединить сложную последовательность изменений состояния и побочных эффектов (например, валидацию, логирование) в одну переиспользуемую функцию. Это делает код чище и предотвращает ошибки при ручном обновлении нескольких полей.

Утилита деплоя

Прежде отправка файлов на контроллер в проектах Мирты была задачей «со звёздочкой» — в конфигурации package.json формировалась команда wb:deploy, основанная на сложном синтаксисе rsync. Ранние упоминания настройки деплоя можно найти в начальных статьях, ещё до появления фреймворка:

Команда mirta deploy входит в состав пакета @mirta/cli — он по умолчанию подключен во все создаваемые проекты и заменяет прежний скрипт wb:deploy.

Параметры деплоя задаются через файл конфигурации mirta.config.json, одинаковый и для классических проектов, и для монорепозиториев.

Техническое описание команды доступно в репозитории:

github.com

Тема деплоя довольно объёмная и требует подготовки системы (для Windows - установки WSL2, для MacOS - rsync через Brew), поэтому ей посвящена отдельная статья:

Интеграция с ИИ-ассистентами

В настоящее время прорабатывается специальный контекст, который позволит ассистентам мгновенно вникать в суть вашего проекта, давать точные и полезные советы по программированию автоматизаций или настройке фреймворка.