Обмен технологиями

Развертывание chirpstack с помощью Docker под Linux

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Оглавление

Введение

2. Чирпстек

1. Что такое чирпстек?

2. компонент чирпстека

3. Почему стоит выбрать развертывание Docker?

3. Процесс развертывания под Linux

4. Процесс развертывания веб-интерфейса


Введение

Я использую эту статью под LinuxДокерДля развертывания chirpstack chirpstack используетверсия v4, версия v4 и версия v3 По сравнению с API gRPC были внесены некоторые изменения, и необходимо учитывать совместимость. Но мы используем Docker только для развертывания chirpstack. На самом деле в каталоге и веб-интерфейсе произошли некоторые изменения. Логика конфигурации та же, и мало что изменилось. Если вы используете версию v3, вы можете напрямую спросить меня, если что-то не понимаете.

2. Чирпстек

1. Что такое чирпстек?

ChirpStack — это сетевой сервер LoRaWAN с открытым исходным кодом, который можно использовать для настройки частных или общедоступных сетей LoRaWAN. ChirpStack предоставляет веб-интерфейсИспользуется для управления шлюзами, устройствами и приложениями.ChirpStack предоставляет API на основе gRPC, который можно использовать для интеграции или расширения ChirpStack.

2. компонент чирпстека

(1)Сетевой сервер ChirpStack: Для краткости NS, его функцияОбеспечивает правильную работу сети LoRaWAN и управляет связью устройств.Что Отвечает за основную логику сети LoRaWAN. Он управляет процессом присоединения устройства, планированием нисходящей линии связи, отслеживанием активности устройства и т. д. Он также отвечает за обработку данных восходящей линии связи, полученных от шлюза LoRa, и отправку данных нисходящей линии связи на шлюз.

(2)Сервер приложений ChirpStack: Сокращенно AS, его функцияУправляйте и обрабатывайте данные уровня приложения, а также предоставляйте пользовательский интерфейс и интерфейс API.Что Отвечает за обработку и управление данными уровня приложения LoRaWAN. Он позволяет пользователям определять приложения, конфигурации устройств и декодеры данных. Он также предоставляет API и веб-интерфейсы для управления устройствами, мониторинга сетевого трафика, обработки декодирования данных и отправки данных прикладного уровня во внешние приложения.

(3)Шлюзовой мост ChirpStack:этоДействует как промежуточное программное обеспечение между шлюзом и веб-сервером. . Этот компонент может конвертировать протокол транспондера пакетов LoRa, передаваемый от шлюза LoRa, в общий формат данных (JSON и Protobuf) сетевого сервера ChirpStack.

(4)PostgreSQL: Это система управления реляционными базами данных с открытым исходным кодом дляпостоянного хранения Данные конфигурации ChirpStack, информация об устройстве, информация о шлюзе, данные приложения и т. д.

(5)Редис: это система хранения структуры данных в памяти с открытым исходным кодом, обычноИспользуется в качестве базы данных, кэша и брокера сообщений. . ChirpStack использует Redis для кэширования и обработки некоторых данных в реальном времени, чтобы повысить производительность системы и скорость ответа.

(6)Комар:Mosquitto — прокси-сервер протокола MQTT дляУправляет связью между устройствами и компонентами ChirpStack.Он позволяет обмениваться сообщениями между шлюзом LoRaWAN и службой ChirpStack.

Обратите внимание на разницу между Postgre SQL и Redis. Postgre SQL хранит данные на диске и поддерживает постоянное хранилище. Когда данные хранятся на диске, данные не будут потеряны, даже если система будет перезагружена, а производительность будет относительно низкой. Redis хранит данные в памяти, поддерживает эффективные операции чтения и записи и обладает чрезвычайно высокой производительностью.

3. Почему стоит выбрать развертывание Docker?

(1) Упростите процесс развертывания:Как упоминалось выше, ChirpStack состоит из нескольких сервисных компонентов. Docker Compose позволяет нам передавать файл конфигурации (docker-compose.yml) Определите и запустите несколько контейнеров с помощью одной команды (docker-compose up), чтобы запустить все службы.

(2) Экологическая изоляция:Каждый сервис chirpstack может работать в независимых контейнерах, избегая конфликтов зависимостей и загрязнения окружающей среды.

(3) Портативность: Используя Docker, мы можем гарантировать, что мы запускаем один и тот же код и конфигурацию в средах разработки, тестирования и производства. Это помогает избежать «экологических проблем», возникающих в различных средах.

(4) Централизованная конфигурация:Все конфигурации сервисов централизованы в одном docker-compose.yml файлы для удобного управления и контроля версий. Мы можем легко изменить и обновить конфигурацию.

3. Процесс развертывания под Linux

1. Извлеките исходный код из github.

Версия v4: (Версия v4 будет описана далее)

git clone https://github.com/chirpstack/chirpstack-docker.git

версия v3:

git clone https://github.com/chirpstack/chirpstack-docker/tree/v3

2. Изменитьdocker-compose.yml Конфигурационный файл

Файл представляет собойМногоконтейнерное приложение, настроенное с помощью Docker Compose для развертывания платформы ChirpStack IoT. Охватывает все основные компоненты, необходимые для системы ChirpStack, чтобы гарантировать их совместную работу в контейнере Docker. (Обратите внимание, что в этом файле конфигурации обычно требуется только изменить нужный вам диапазон частот и порт, и никаких других изменений вносить не требуется)

(1)чирпстек

Это сервер приложений ChirpStack (обычно никаких модификаций не требуется).

  1. chirpstack:
  2. image: chirpstack/chirpstack:4
  3. command: -c /etc/chirpstack
  4. restart: unless-stopped
  5. volumes:
  6. - ./configuration/chirpstack:/etc/chirpstack
  7. - ./lorawan-devices:/opt/lorawan-devices
  8. depends_on:
  9. - postgres
  10. - mosquitto
  11. - redis
  12. environment:
  13. - MQTT_BROKER_HOST=mosquitto
  14. - REDIS_HOST=redis
  15. - POSTGRESQL_HOST=postgres
  16. ports:
  17. - 8080:8080
  • изображение: использовать chirpstack/chirpstack:4 зеркало.
  • команда: укажите путь к файлу конфигурации как /etc/chirpstack
  • перезапустить: установить unless-stopped, то есть контейнер автоматически перезапустится, если его не остановить вручную.
  • тома: смонтировать локальный каталог ./configuration/chirpstack в контейнер/etc/chirpstack,а также ./lorawan-devices в контейнер/opt/lorawan-devices
  • зависит_он: зависимость postgres, mosquitto, redis Три услуги.
  • среда: установите переменные среды, включая MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • порты: открытые порты 8080, поместите содержимое в контейнер 8080 Порт, сопоставленный с хостом8080 порт.

(2)chirpstack-шлюз-мост

Это служба шлюзового моста ChirpStack (полоса cn470_10, которую я здесь использую).

  1. chirpstack-gateway-bridge:
  2. image: chirpstack/chirpstack-gateway-bridge:4
  3. restart: unless-stopped
  4. ports:
  5. - 1700:1700/udp
  6. volumes:
  7. - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
  8. environment:
  9. - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/event/{{ .EventType }}
  10. - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/state/{{ .StateType }}
  11. - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/command/#
  12. depends_on:
  13. - mosquitto
  • начало: установлено в unless-stopped
  • порты: открыть порты UDP. 1700
  • тома: смонтировать локальный каталог ./configuration/chirpstack-gateway-bridge в контейнер/etc/chirpstack-gateway-bridge
  • среда: установите переменные среды и укажите шаблон темы MQTT.
  • зависит_он: зависимость mosquitto Служить.

(3)chirpstack-шлюз-мост-базовая станция

Это базовая служба станции шлюзового моста ChirpStack (обратите внимание на модификацию командной части).

  1. chirpstack-gateway-bridge-basicstation:
  2. image: chirpstack/chirpstack-gateway-bridge:4
  3. restart: unless-stopped
  4. command: -c /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge-basicstation-cn470_10.toml
  5. ports:
  6. - 3001:3001
  7. volumes:
  8. - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
  9. depends_on:
  10. - mosquitto
  • изображение: использовать chirpstack/chirpstack-gateway-bridge:4 зеркало.
  • перезапустить: установить unless-stopped
  • команда: использовать файл конфигурации chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • порты: открытые порты 3001
  • тома: смонтировать локальный каталог ./configuration/chirpstack-gateway-bridge в контейнер/etc/chirpstack-gateway-bridge
  • зависит_он: зависимость mosquitto Служить.

(4)chirpstack-rest-api

Это сервис REST API ChirpStack.

  1. chirpstack-rest-api:
  2. image: chirpstack/chirpstack-rest-api:4
  3. restart: unless-stopped
  4. command: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecure
  5. ports:
  6. - 8090:8090
  7. depends_on:
  8. - chirpstack
  • изображение: использовать chirpstack/chirpstack-rest-api:4 зеркало.
  • перезапустить: установить unless-stopped
  • Команда: укажите сервер ChirpStack как chirpstack:8080, адрес привязки 0.0.0.0:8090и включите небезопасный режим.
  • порты: открытые порты 8090
  • зависит_он: зависимость chirpstack Служить.

(5)постгрес

Это служба базы данных PostgreSQL.

  1. postgres:
  2. image: postgres:14-alpine
  3. restart: unless-stopped
  4. volumes:
  5. - ./configuration/postgresql/initdb:/docker-entrypoint-initdb.d
  6. - postgresqldata:/var/lib/postgresql/data
  7. environment:
  8. - POSTGRES_PASSWORD=root
  • изображение: использовать postgres:14-alpine зеркало.
  • перезапустить: установить unless-stopped
  • тома: смонтировать локальный каталог ./configuration/postgresql/initdb в контейнер/docker-entrypoint-initdb.dи смонтируйте том Docker postgresqldata в контейнер/var/lib/postgresql/data
  • среда: установить переменные среды POSTGRES_PASSWORD дляroot

(6)редис

Это служба базы данных Redis в памяти.

  1. redis:
  2. image: redis:7-alpine
  3. restart: unless-stopped
  4. command: redis-server --save 300 1 --save 60 100 --appendonly no
  5. volumes:
  6. - redisdata:/data
  • изображение: использовать redis:7-alpine зеркало.
  • перезапустить: установить unless-stopped
  • команда: запустить redis-serverи укажите стратегию сохранения.
  • тома: монтировать тома Docker redisdata в контейнер/data

(7)комар

Это служба брокера сообщений MQTT.

  1. mosquitto:
  2. image: eclipse-mosquitto:2
  3. restart: unless-stopped
  4. ports:
  5. - 1883:1883
  6. volumes:
  7. - ./configuration/mosquitto/config/:/mosquitto/config/

(8)Тома

Определите объемы данных.

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata: используется для хранения данных PostgreSQL.
  • redisdata: используется для хранения данных Redis.

3. Запуск Docke-compose

sudo docker-compose up -d

4. Процесс развертывания веб-интерфейса

1. Посетите chirpstack (IP): 8080, пароль учетной записи по умолчанию — admin.

2. Создайте шлюз

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

3. Добавьте файлы устройства.

Заполните его в соответствии с вашими требованиями.

4. Настройте АС

После добавления игрового приложения по очереди добавляйте устройства и настройки многоадресной рассылки в приложении.

 

Наконец, запустите шлюз, чтобы проверить, сможет ли шлюз подключиться к облачному серверу и успешно переслать сообщение.