interactive-sim

Скрипт Python interactiveSim.py использует нативное Linux-приложение Meshtastic для симуляции нескольких экземпляров программного обеспечения устройства. Эти экземпляры общаются через TCP с помощью скрипта, имитируя чип LoRa. Симулятор пересылает сообщения от отправителя всем узлам в пределах досягаемости на основе их симулированных позиций и выбранной модели затухания (см. Модель затухания). Примечание: Столкновения пакетов пока не симулируются.

Использование

  1. Клонируйте или скачайте репозиторий и перейдите в папку Meshtasticator.
  2. (Необязательно) Создайте виртуальную среду.
  3. Установите зависимости:

bash pip install -r requirements.txt

Симулятор запускает нативное Linux-приложение прошивки Meshtastic. Вы можете использовать либо PlatformIO, либо Docker для запуска прошивки:

Использование PlatformIO

Выберите 'native' и нажмите 'build'. Найдите сгенерированный бинарный файл, вероятно, в firmware/.pio/build/native/.

Скопируйте файл program в директорию, где вы будете запускать скрипт Python, или укажите путь как аргумент с -p:

python3 interactiveSim.py 3 -p /home/User/Meshtastic-device/.pio/build/native/program

Использование Docker

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

Убедитесь, что установлен Docker SDK для Python:

pip3 install docker

Убедитесь, что демон Docker или приложение Desktop запущено. Используйте аргумент -d для запуска симулятора:

python3 interactiveSim.py 3 -d

Запуск симулятора

Для запуска интерактивного симулятора:

python3 interactiveSim.py [nrNodes] [-p <full-path-to-program>]

Примечание к конфигурации

Команды во время симуляции

После запуска симуляции вы можете выдавать команды (или использовать предопределённый скрипт) для отправки сообщений между узлами. Используйте plot для визуализации маршрутов сообщений и статистики времени в эфире:

График маршрута 2

Список команд

Использование со скриптом

Измените секцию try в interactiveSim.py, чтобы предопределить сообщения. Запустите симулятор с аргументом -s:

python3 interactiveSim.py 3 -s

Советы и хитрости

  1. Ускорение обмена NodeInfo:
    Отключите определённые модули, удалив new NodeInfoModule() из src/modules/Modules.cpp в прошивке.

  2. Сохранение и перезагрузка конфигураций:
    После симуляции конфигурации узлов сохраняются. Вы можете перезапустить тот же сценарий с помощью:

bash python3 interactiveSim.py --from-file

Измените файл out/nodeConfig.yaml, чтобы скорректировать конфигурации перед перезагрузкой.

  1. Использование Python CLI:
    Вы можете вызывать функции из класса Node через sim.getNodeById(<id>) в interactiveSim.py. Пример:

python node.setURL('<YOUR_URL>')

Модель затухания

Симулятор оценивает распространение сигнала с использованием модели затухания. Это приближение физической среды, поэтому оно может быть не на 100% точным. Доступные модели:

Вы можете изменить модель затухания и конфигурацию области в lib/config.py. Настройки LoRa остаются по умолчанию Meshtastic, если не изменены во время размещения узлов.