Обычно Meshtastic используют как мессенджер. Я применил его как резервный канал связи с удаленным объектом. 

Задача простая: есть дача с регулярно отключаемым мобильным интернетом. При этом нужно получать алармы от автоматики дачи. И иметь возможность минимального управления оборудованием, например, проверить состояние бойлера, выключить свет или посмотреть температуру в помещении. 

И я сделал это. Как – читайте ниже.

Что такое Meshtastic

Meshtastic — это открытый проект, который строит децентрализованную mesh-сеть для обмена сообщениями по радиоканалу LoRa, без использования сотовой связи и интернета.

Узлы сети — это недорогие устройства на базе ESP32 с LoRa-модулем. Они обмениваются короткими сообщениями как напрямую, так и ретранслируют их друг через друга.

Основные свойства:

  • работает в нелицензируемых диапазонах LoRa (433/868/915 МГц — зависит от региона);

  • передает небольшие пакеты данных;

  • поддерживает сквозное шифрование;

  • маршрутизация сообщений производится автоматически;

  • радиомодули LoRA подключаются к телефону или ПК по Bluetooth, Wi-Fi или USB.

Итого: Meshtastic — это такая «народная» сеть для передачи данных. Главный недостаток — очень низкая пропускная способность. Сеть подходит только для редких коротких сообщений и простой телеметрии. 

Оборудование, которое я использовал
Оборудование, которое я использовал

С чего всё началось

В Казани уже работает сеть Meshtastic, именно ее я и решил использовать. 

Стенд собрал на Wiren Board 8.5 с Meshtastic-узлом, состоящим из Pro Micro на базе nRF52840 и LoRa-модулем SX1262. Все это размещено на даче.

На контроллере поднял отдельный сервис, который общается с Meshtastic-узлом через serial/API и сохраняет сообщения в локальную базу данных SQLite.  

В моей конфигурации сообщения проходили примерно 50 км. При маршруте в три хопа команда доходила до объекта за 10–15 секунд. 

Сначала я просто переключал реле, управляющие освещением и бойлером. Затем добавил чтение температуры воздуха. Обмен данными происходил стабильно. 

Но у такого канала есть серьезные ограничения. Задержки непредсказуемы: они зависят от рельефа, размещения нод и загрузки сети. Иногда пакет не доходит вовсе, поэтому каждую команду нужно подтверждать. 

Ну и не обойтись без защиты: контроллер принимает команды только от доверенной ноды. 

Для задач, требующих гарантированного времени реакции, такой канал не подходит. Но как резерв для управления дачей — вполне рабочий вариант. 

Как это работает

Путь команды выглядит так:

  • Телефон, через подключенный по Bluetooth Meshtastic-узел, отправляет сообщение в mesh-сеть;

  • сервис на Wiren Board принимает сообщение через CLI или API (по serial) и разбирает его как текстовую команду, если источник доверенный;

  • сообщение сохраняется в SQLite;

  • команда публикуется в MQTT и обрабатывается правилами на Wiren Board;

  • после выполнения команды контроллер отправляет подтверждение отправителю.

Я создал набор текстовых команд, которые сервис умеет обрабатывать:

  • включи бойлер;

  • выключи бойлер;

  • включи свет;

  • выключи свет;

  • включи режим охраны;

  • статус.

Сервис сравнивает текст входящего сообщения с этим списком и при совпадении выполняет необходимые действия (собирает необходимые данные, пакует в пакет и т.д.).

Дополнительные фото
Конфигурация переменных
Конфигурация переменных
Окно с чатом
Окно с чатом

Спойлер: конфигурационные файлы

Сам проект описан подробно на https://github.com/VolkMicro/WB-Meshtastic-control

Основными файлами конфигурации являются controls.yaml и rules.yaml :

controls.yaml

controls.yaml описывает сущности объекта: бойлер, свет, температуру и другие параметры. Это человекочитаемый слой поверх MQTT-топиков Wiren Board.

controls:
  boiler:
    title: "Бойлер"
    type: switch
    command_topic: "/devices/<device>/controls/<control>/on"
    state_topic: "/devices/<device>/controls/<control>"
    payload_on: "1"
    payload_off: "0"

  light:
    title: "Свет"
    type: switch
    command_topic: "/devices/<device>/controls/<control>/on"
    state_topic: "/devices/<device>/controls/<control>"
    payload_on: "1"
    payload_off: "0"

  room_temperature:
    title: "Температура помещения"
    type: sensor
    state_topic: "/devices/<device>/controls/<control>"
    unit: "°C"

Здесь <device> и <control> — это идентификаторы устройств и контролов в MQTT.

Такой слой убирает жесткую привязку к длинным топикам. В правилах я использую короткие имена (boiler, light, room_temperature), а не строки вида /devices/....

rules.yaml

rules.yaml описывает, как сервис реагирует на входящие сообщения.

trusted_sources:
  - "<meshtastic_node_id>"

rules:
  - name: "Включить бойлер"
    match:
      text:
        - "включи бойлер"
    action:
      type: set_control
      control: boiler
      value: true

  - name: "Выключить бойлер"
    match:
      text:
        - "выключи бойлер"
    action:
      type: set_control
      control: boiler
      value: false

  - name: "Запрос статуса"
    match:
      text:
        - "статус"
    action:
      type: send_status

Сервис проверяет источник сообщения (по ID ноды Meshtastic), ищет совпадение по тексту и выполняет соответствующее действие. 

Заключение

При таком мобильном интернете, как сейчас, приходится искать резервные каналы связи. Один из вариантов — mesh-сеть Meshtastic, которую можно использовать не только для общения.

Если на объекте стоит ПЛК на Linux (например, Wiren Board), то предложенный проект решает эту задачу.

Такой подход не заменяет основной канал связи, но как резерв для простых команд и получения статуса он работает.

Комментарии (16)


  1. YMA
    14.05.2026 07:12

    Попробовал на вкус - meshcore понравился больше ;) То же железо, но организованнее. Можно на даче свой репитер поставить, поднять повыше направленную антенну на репитер в городе - и получить кардинальное ускорение обмена сообщениями и меньшие потери пакетов.

    Заодно и соседям развлечение будет.


    1. MicroVolk Автор
      14.05.2026 07:12

      Планирую на нее переделать проект, почти достроили сеть до меня. Ну и жду новую Яги антенну.


      1. YMA
        14.05.2026 07:12

        Достройки сети можно не ждать - LoRA реально дальнобойная штука. :)

        При нахождении на юге СПб сообщения часто принимаю от репитера с Беговой (это север города, около 20 км по прямой). Причем у меня антенна не направленная, просто клон Gizont 40 см.


        1. MicroVolk Автор
          14.05.2026 07:12

          Удивительно дальнобойная да. У меня первый хоп виден где то в 25 км.


    1. ub9obe
      14.05.2026 07:12

      То, что мешкор организованнее, это обманчиво (или намеренная манипуляция): это те же самые люди, что купили платку, приклеили её в окну балкона с штатной неэффективной спиралькой и прошили репитером...


      1. MicroVolk Автор
        14.05.2026 07:12

        У мешкора , насколько я понял, есть гарантированная доставка пакетов, хотя эту теорию ещё нужно проверить на практике.


        1. YMA
          14.05.2026 07:12

          Как я понял схему работы системы - только между репитерами, что тоже неплохо.


        1. ub9obe
          14.05.2026 07:12

          А аналог store&forward (для запроса с репитера пропущенных сообщений) есть?


          1. YMA
            14.05.2026 07:12

            Отдельная роль - Room Server называется. Плюс есть что-то типа BBS, у нас собираются развернуть для пробы.


            1. ub9obe
              14.05.2026 07:12

              Сервер комнаты, это не то пальто. Это просто отдельный выделенный чат, куда попадаешь при заходе на этот комнатный сервер, и даже без разделения на топики. Накой разработчики мешкора для каждой роли лепят отдельную прошивку (читай ещё одно устройство), мне не понятно...


              1. YMA
                14.05.2026 07:12

                Упрт. :) Это из той же оперы, зачем при попытке повторной отправки (если я не увидел ретрансляций и подозреваю, что сообщение в сеть не ушло) обновлять timestamp. В итоге дедупликация не срабатывает и коллеги видят несколько повторов.


      1. YMA
        14.05.2026 07:12

        Он объективно организованнее - есть выделенные роли, есть маршрутизация, есть организованная выдача кодов для репитеров, чтобы бороться с повторами.

        Мышастик тоже хорош, но для своей ниши - толпы спортсменов на природе или поисковой группы, где все равны и беспорядочно перемещаются. И где 7 хопов должно бы хватить для всех ;)

        А в крупном городе, когда участников становится больше 2000, он начинает захлебываться в паразитном трафике. Если же переходить на профили побыстрее - начинает теряться связность сети :(


        1. ub9obe
          14.05.2026 07:12

          Значит таки манипуляция, хорошо... Ролей в мештастике больше и на ретрансляцию можно влиять гибче назначая эти роли (или крутя настройки в рамках роли), и маршрутизация тоже есть, и с повторами методики борьбы тоже есть. Про 7 хопов смехотворно, про это все всегда пишут, читайте документацию на мештастик.

          Мешкор хорош, когда вам нужен голый текст и всё. Если нужна мультисервисная (читаем количество портов/сервисов) сеть, альтернативы нет.


          1. YMA
            14.05.2026 07:12

            Ролей в мештастике больше и на ретрансляцию можно влиять гибче назначая эти роли (или крутя настройки в рамках роли)

            Чтобы коллективно крутить настройки, выстраивая сеть (расставляя Mute, фаворитов...) - нужны сознательные участники. Не знаю, как в N-ске, но у нас в СПб перейти с LF на MF уже полгода не могут. Мешкор на SF7 перешел легче, поскольку реповодов меньше. А остальным пришлось это просто принять.

            Если нужна мультисервисная (читаем количество портов/сервисов) сеть, альтернативы нет.

            А толку в этом всем богатстве, если пакеты бродят по району и сдыхают, исчерпав хопы? И прохождение сообщения в чате с севера на юг СПб считается чуть ли не знамением свыше? :) При этом в чате мешкора народ свободно общается по всему городу, маршрут можно посмотреть, просто ткнув по сообщению.

            И это у меня еще положение весьма неплохое - высокий этаж и открытый вид на город. Тот же Кронштадт (~40 км) директом слышал в мышастике. То есть дело не в ноде/антенне и не в дворе-колодце.

            Просто систему пытаются не по назначению использовать.


            1. ub9obe
              14.05.2026 07:12

              Не знаю, как в N-ске, но у нас в СПб перейти с LF на MF уже полгода не могут.

              За 2 недели объявили переход, писали объявление каждый день в группе, писали каждый день в самой сети, объясняли зачем. В назначенную дату (на 8 марта переезжали), перенастроилось процентов 60-70, остальные донастраивались ещё пару недель. С народными массами надо работать ;)

              А толку в этом всем богатстве, если пакеты бродят по району и сдыхают, исчерпав хопы?

              Опять же, работа с народными массами. Тех кто в подвале в муте, кто повыше в роутер. И роутеры друг друга в избранное, в результате сообщения по городу ходят с потерей одного двух прыжков.

              Ну и антенны (а не их стоковые макеты) надо продвигать...


  1. Arhammon
    14.05.2026 07:12

    При таком мобильном интернете, как сейчас, приходится искать резервные каналы связи.

    Когда то и обычный интернет был Неуловимым Джо...