Удалённое управление оборудованием

Модуль Remote Hardware позволяет удаленно считывать состояние, записывать значения и отслеживать изменения на пинах GPIO узла в сети Meshtastic.


ℹ️ Важная информация по прошивке

Для версий прошивки выше 2.5.3 этот модуль по умолчанию отключен для экономии памяти. Чтобы его использовать, вам потребуется:

  1. Самостоятельно скомпилировать прошивку.
  2. Удалить флаг сборки -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1 в файле platformio.ini.

Обратите внимание: Настройка модуля может быть доступна в графических клиентах, но управление GPIO на данный момент возможно только через Meshtastic Python CLI.


⚠️ Предупреждение о безопасности

Доступ к GPIO фундаментально опасен. Неправильные параметры могут физически повредить или уничтожить ваше устройство.

  • Перед использованием убедитесь, что вы полностью понимаете схему вашего конкретного устройства.
  • Гарантия на такие случаи не распространяется.
  • Используйте на свой страх и риск.

Поддерживаемые операции
  • Запись: Установка любого значения на GPIO.
  • Чтение: Получение текущего состояния любого GPIO.
  • Мониторинг: Получение уведомления по сети, если состояние GPIO изменилось.
    • Примечание: Модуль не фиксирует сверхбыстрые изменения (например, нажатия кнопок). Для таких задач используйте модуль Detection Sensor.
  • Интеграция с MQTT: Результаты чтения или уведомления об изменениях также отправляются через MQTT в формате JSON (если соответствующие функции включены).

Настройка (Setup)

Для работы вам понадобится актуальная библиотека Python:

pip3 install --upgrade meshtastic

Создание защищенного канала

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

Пошаговая процедура через Python CLI:

  1. Подключите локальное устройство через USB.
  2. Включите модуль: meshtastic --set remote_hardware.enabled true
  3. Создайте GPIO-канал: meshtastic --ch-add gpio
  4. Получите ссылку на настройки:Введите meshtastic --info, найдите и скопируйте длинный «Complete URL», содержащий все каналы устройства.
  5. Подключите удаленное устройство (через USB или используя функцию Remote Admin).
  6. Включите модуль на удаленном узле: meshtastic --set remote_hardware.enabled true
  7. Примените настройки каналов (из шага 4): meshtastic --seturl <ваша_ссылка_из_шага_4>

Теперь устройства могут взаимодействовать через канал gpio. Проверьте связь, отправив текстовое сообщение или выполнив команду --nodes.


Маски GPIO

Маска используется для указания того, какими пинами нужно управлять.

  • Для GPIO 1 устанавливается 1-й бит маски (0x2 в шестнадцатеричном виде).
  • Для GPIO 2 — 2-й бит (0x4).
  • И так далее.

Таблица масок (примеры)

GPIOМаска (Hex)GPIOМаска (Hex)
10x2110x800
20x4120x1000
30x8130x2000
40x10210x200000
50x20320x100000000

Использование через Python CLI

Подсказка: Вы можете управлять GPIO даже на локальном устройстве (подключенном по USB), указав его ID в параметре --dest. В этом случае канал gpio не требуется.

1. Запись в GPIO (Запись значения)

Пример: включение GPIO 4 на узле с ID 28979058.

Bash

meshtastic --gpio-wrb 4 1 --dest 28979058

Система ответит: Writing GPIO mask 0x10 with value 0x10…

2. Чтение состояния GPIO

Пример: прочитать состояние GPIO 4 (маска 0x10).

Bash

meshtastic --gpio-rd 0x10 --dest 28979058

Если gpio_value совпадает с маской — пин включен (ON). Если gpio_value=0 — выключен (OFF).

3. Отслеживание изменений (Watch)

Пример: наблюдение за изменениями на GPIO 4.

Bash

meshtastic --gpio-watch 0x10 --dest 28979058

Программа будет выводить GPIOS_CHANGED при каждом изменении состояния, пока вы не нажмете Ctrl+C.


Тестирование (Практический пример)

Чтобы убедиться, что всё работает, можно собрать простую схему с LED-светодиодом.

Что понадобится:

  • 2 устройства Meshtastic.
  • Светодиод (LED) и резистор 220 Ом.
  • Провода и макетная плата (опционально).

Подключение (на удаленном устройстве):

  1. Отключите питание устройства.
  2. Соедините резистор с длинной (положительной) ножкой светодиода.
  3. Подключите второй конец резистора к выбранному GPIO (например, GPIO 21 для TLoraV1).
  4. Соедините короткую (отрицательную) ножку светодиода с пином GND (земля) на устройстве.
  5. Включите питание.

Проверка:

Используйте команду записи для GPIO 21 (маска 0x200000), чтобы зажечь или погасить светодиод.

Вы не можете скопировать содержимое этой страницы