Найти в Дзене
Поддержите автораПеревод на любую сумму
Закреплено автором
Умный дом с проводами
Правила wb-rules и Мирта: мастер настройки проекта
131 · 5 месяцев назад
Почему статьи появляются редко? 🚀 Сейчас основное внимание уделено развитию фреймворка «Мирта» - средству для комфортной разработки сценариев управления умными домами на основе оборудования Wiren Board. Используется современный синтаксис JavaScript и TypeScript (стандарта ESNext), ESLint и Vitest, различные интеграции с ИИ-ассистентами. Этот инструмент создан для всех, кто испытывает интерес к программированию и стремится эффективно реализовывать свои проекты. Цель текущей работы: - Сделать разработку максимально простой и интуитивной. - Реализовать новые функциональные возможности. - Подготовить детальную документацию и оказывать поддержку начинающим разработчикам. Новые статьи выйдут позже, но они обязательно будут насыщенными и интересными, поскольку основаны на реальных практиках и проверенных технологиях. Если вы хотите следить за динамичным процессом и первыми узнавать новости, заглядывайте на страницу Boosty - подписчикам доступен отдельный телеграм-чат, где можно обсудить применение фреймворка и получить совет по разработке скриптов автоматизации. Спасибо за понимание и желание развиваться вместе с нами!
2 месяца назад
Правила wb-rules и Мирта: мастер настройки проекта
Пройдя от самых основ и вникая в каждую строчку конфигураций, по материалам прошлых статей мы получили шаблон для комфортной разработки правил wb-rules на TypeScript: Очевидно, что подобный процесс хорош с позиции обучения. Тем не менее, сейчас в проекте много вспомогательного кода, который используется только на этапе разработки. Да и вместо программирования правил приходится интенсивно разбираться с многочисленными настройками. Можно ли это упростить? Безусловно. Если Node.js у вас ещё не установлен,...
131 читали · 5 месяцев назад
Правила wb-rules и Мирта: хранилище состояний
Дальнейшее развитие проекта на TypeScript привело к появлению фреймворка под названием «Мирта» - постепенно добавляются различные модули, расширяющие стандартные возможности wb-rules. Здесь и симулятор запуска на контроллере для юнит-тестов, и расширение устройств готовыми плагинами, и вспомогательные механизмы вроде debounce и throttle для предотвращения избыточных вызовов функций. Использование проверенных паттернов и подходов улучшает качество кода и облегчает сопровождение. Поскольку базовая функциональность уже реализована, можно быстрее создавать новые проекты...
6 месяцев назад
Правила wb-rules и парадигма EDP: пользовательские события
Создавать правила можно разными способами. Поначалу кажется, что самое простое решение — поместить всё в один файл внутри папки wb-rules. Код перед глазами, всё чётко и последовательно. Казалось бы, что может пойти не так? Сложности возникают по мере добавления функционала. Сначала это defineRule, затем объявления виртуальных устройств и подписка на топики MQTT, а позже появляется объёмная логика сценарного взаимодействия. Код становится трудным для восприятия, ведь чтобы сложить полную картину происходящего, требуется вникнуть в каждую деталь...
6 месяцев назад
Правила wb-rules и ESLint Stylistic: дальше без Prettier
Однажды познакомившись с программированием, требуется постоянно следить за изменениями, чтобы оставаться в теме происходящего - множество людей по всему миру без устали вносят корректировки в общедоступные инструменты. Меняются конфигурации, устаревают руководства, обновляются подходы к разработке. При подготовке статьи с примерами правил wb-rules, пришлось бороться с Prettier - он упрямо переносил тело инструкций if, else, while и for в одну линию: if (index !== -1) callbacks.splice(index, 1) Разработчикам, не привыкшим к такой записи, будет сложно воспринимать коды...
6 месяцев назад
Правила wb-rules: дальше без Babel
Первое улучшение, предложенное и внедрённое участником сообщества Github. Ваш вклад в этот открытый проект помогает другим разработчикам создавать удивительные вещи, спасибо за это! Хитрость заключается в более тонкой настройке тандема TypeScrtipt и Rollup, приводящего итоговый код к формату, который понимает движок правил wb-rules на контроллере Wirenboard. Если вы пропустили прошлый выпуск, в нём подробно рассказывалось об использовании переменных окружения dotenv: Новые установки открывают возможность...
6 месяцев назад
Правила wb-rules и dotenv: переменные окружения
Переменные окружения - это все те строковые константы, которые раньше были зашиты прямо в код. Сегодня мы вынесем их в отдельный текстовый файл и оформим построчно в виде пар «ключ-значение». Чтобы стало ещё интереснее, научимся собирать проект в вариантах development и production. Первый используется для отладки и экспериментов, а второй - серьёзный, компактный и максимально эффективный. Разумеется, разные варианты сборки потребуют переключения между разными наборами строковых значений. И обновлённая система умеет делать это буквально по щелчку пальцев...
7 месяцев назад
Правила wb-rules и Rollup: удаляем лишний код
Деление проекта на правила и модули позволяет сформировать в модулях набор функций на все случаи жизни, охватив большинство типовых ситуаций. Если покрыть этот набор юнит-тестами, то можно в любой момент времени гарантировать, что ни один алгоритм не отклонился от своего изначального замысла: Обычно пожелания клиента задействуют лишь часть возможностей, поэтому при установке правил на контроллер многие модули остаются не у дел - кто-то решил обойтись без многоканальных счётчиков электроэнергии, а кому-то достаточно автоматизаций, ориентированных на управление освещением...
7 месяцев назад
Правила wb-rules и Jest: добавляем юнит-тесты
Когда нужно создавать тесты? Программист пишет код, представляя ситуации его использования. Все эти ситуации должны быть зафиксированы в тестах. Внутренняя структура функции не проверяется - мы оперируем только значениями на входе и выходе, по принципу «чёрного ящика». Достаточное количество тестов на все сомнительные ситуации в коде позволяет утверждать, что после очередных правок алгоритм будет работать чётко и без отклонений от замысла. В ином случае, система просто не позволит собрать и залить сломанный код на контроллер...
7 месяцев назад
Правила wb-rules и ESLint: статический анализ кода
Продолжая совершенствовать созданный по материалам прошлых статей проект правил для контроллера Wirenboard, добавим в него поддержку статического анализа кода. Ранее мы освоили разработку правил на языке TypeScript: Перед этим подготовили контроллер к работе с Visual Studio Code: Чтобы защитить себя от случайного удаления важных системных файлов, запретили подключения от имени пользователя root: Выявить ошибки, уязвимости и нарушения стандартов программирования прямо в процессе написания правил wb-rules позволяют статические анализаторы кода, также называемые линтерами...
7 месяцев назад
Правила wb-rules 2.0: пишем на TypeScript без ограничений
Подготовительный этап пройдён - редактор Visual Studio Code установлен, проект на рабочем компьютере создан, а синхронизация с контроллером через утилиту rsync завершилась успехом. Так было в статье из прошлого выпуска: Сегодня речь пойдёт о самих правилах wb-rules, с концепцией которых можно ознакомиться в официальном репозитории Wiren Board на GitHub: В классическом варианте действуют стандартные ограничения ECMAScript 5 (ES5). Однако, нам так не нравится, прочь условности: добавим типизацию, поддержку конструкций const и let, лямбда-выражений, красивого и понятного динамического импорта...
7 месяцев назад
Правила wb-rules: перед началом
Фундамент безопасности заложен и теперь пришло время узнать о профессиональном подходе к разработке сценариев управления умным домом с помощью правил на языке JavaScript. О том, что из себя представляет движок правил wb-rules, можно прочесть в статье компании Wirenboard: Существует множество способов ввода правил. Например, через веб-интерфейс или прямой доступ к каталогам посредством удалённого подключения. В большинстве случаев, их будет достаточно. Предполагается, что дорогой читатель уже успел ознакомиться с официальными обучающими видео: Мы же пойдём по более сложному пути...
135 читали · 7 месяцев назад