Meshtastic — это проект с открытым исходным кодом, который позволяет создавать децентрализованные ячеистые (mesh) радио-сети для обмена сообщениями (текст, геоданные, данные с датчиков, параметры оборудования и др.). Meshtastic в качестве транспорта использует радио с LoRa модуляцией, за счет чего можно получить большие расстояния связи (до десятка километров при прямой видимости). Сеть использует один общий канал (Channel 0) и позволяет создавать до 7 частных (Private) каналов, данные в которых шифруются.
В настоящий момент в СПб я вижу более 300 узлов в сети. На карте отображаются те узлы, кто публикует "свои" координаты.

Итак, мы хотим использовать сеть Meshtastic для доставки сообщения от одного узла (удаленного) до другого (локального). Пусть удаленный узел публикует в сеть данные с датчика (температура, влажность, атм.давление).
Эти данные публикуются бродкастом в Meshtastic в Channel 0 (Primary).
Локальный узел так же подключен к Mechtastic и к домашнему WiFi. В настройках нужно разрешить передавать данные в MQTT, задать имя корневого топика (например mshn) и указать адрес брокера.
В свойствах основного канала на локальном узле проверить что включен Uplink

В HOMEd создаем кастомное устройство, ставим галочку Real
Exposes: temperature, humidity, pressure
В Bindings (JSON object) пишем (xxx поменять на User ID своей ноды, которая публикует данные в MQTT, nnn - заменить на Node Number своего удаленного узла, или например чей-то номер 3582842371 - который сегодня передает данные со своих датчиков). Если не делать фильтрацию по Node Number, то будем получать данные со всех узлов кто публикует датчики.
{
"humidity": {
"inPattern": "{{ json.payload.relative_humidity if json.from == 'nnn' else NULL}}",
"inTopic": "mshn/2/json/LongFast/xxx"
},
"pressure": {
"inPattern": "{{ json.payload.barometric_pressure if json.from == 'nnn' else NULL}}",
"inTopic": "mshn/2/json/LongFast/xxx"
},
"temperature": {
"inPattern": "{{ json.payload.temperature if json.from == 'nnn' else NULL }}",
"inTopic": "mshn/2/json/LongFast/xxx"
}
}
При получении данных с удаленного узла получим их в HOMEd
(интервал публикации данных телеметрии задается от 30 минут, поэтому для отладки лучше использовать MQTT Explorer)

Если хотим обмениваться Private данными, то создаем свой канал, например MyCh.
В Custom создаем Exposes: сообщение
{
"сообщение": {
"inPattern": "{{ json.payload.text }}",
"inTopic": "mshn/2/json/MyCh/xxx_User ID своей ноды"
}
}
Отправляем сообщение с удаленного узла в приватном канале MyCh

Получаем его в HOMEd
