моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Оглавление
3. Почему стоит выбрать развертывание Docker?
3. Процесс развертывания под Linux
4. Процесс развертывания веб-интерфейса
Я использую эту статью под LinuxДокерДля развертывания chirpstack chirpstack используетверсия v4, версия v4 и версия v3 По сравнению с API gRPC были внесены некоторые изменения, и необходимо учитывать совместимость. Но мы используем Docker только для развертывания chirpstack. На самом деле в каталоге и веб-интерфейсе произошли некоторые изменения. Логика конфигурации та же, и мало что изменилось. Если вы используете версию v3, вы можете напрямую спросить меня, если что-то не понимаете.
ChirpStack — это сетевой сервер LoRaWAN с открытым исходным кодом, который можно использовать для настройки частных или общедоступных сетей LoRaWAN. ChirpStack предоставляет веб-интерфейсИспользуется для управления шлюзами, устройствами и приложениями.ChirpStack предоставляет API на основе gRPC, который можно использовать для интеграции или расширения ChirpStack.
(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 хранит данные в памяти, поддерживает эффективные операции чтения и записи и обладает чрезвычайно высокой производительностью.
(1) Упростите процесс развертывания:Как упоминалось выше, ChirpStack состоит из нескольких сервисных компонентов. Docker Compose позволяет нам передавать файл конфигурации (docker-compose.yml
) Определите и запустите несколько контейнеров с помощью одной команды (docker-compose up
), чтобы запустить все службы.
(2) Экологическая изоляция:Каждый сервис chirpstack может работать в независимых контейнерах, избегая конфликтов зависимостей и загрязнения окружающей среды.
(3) Портативность: Используя Docker, мы можем гарантировать, что мы запускаем один и тот же код и конфигурацию в средах разработки, тестирования и производства. Это помогает избежать «экологических проблем», возникающих в различных средах.
(4) Централизованная конфигурация:Все конфигурации сервисов централизованы в одном docker-compose.yml
файлы для удобного управления и контроля версий. Мы можем легко изменить и обновить конфигурацию.
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 (обычно никаких модификаций не требуется).
- chirpstack:
- image: chirpstack/chirpstack:4
- command: -c /etc/chirpstack
- restart: unless-stopped
- volumes:
- - ./configuration/chirpstack:/etc/chirpstack
- - ./lorawan-devices:/opt/lorawan-devices
- depends_on:
- - postgres
- - mosquitto
- - redis
- environment:
- - MQTT_BROKER_HOST=mosquitto
- - REDIS_HOST=redis
- - POSTGRESQL_HOST=postgres
- ports:
- - 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, которую я здесь использую).
- chirpstack-gateway-bridge:
- image: chirpstack/chirpstack-gateway-bridge:4
- restart: unless-stopped
- ports:
- - 1700:1700/udp
- volumes:
- - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
- environment:
- - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/event/{{ .EventType }}
- - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/state/{{ .StateType }}
- - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/command/#
- depends_on:
- - mosquitto
unless-stopped
。1700
。./configuration/chirpstack-gateway-bridge
в контейнер/etc/chirpstack-gateway-bridge
。mosquitto
Служить.(3)chirpstack-шлюз-мост-базовая станция
Это базовая служба станции шлюзового моста ChirpStack (обратите внимание на модификацию командной части).
- chirpstack-gateway-bridge-basicstation:
- image: chirpstack/chirpstack-gateway-bridge:4
- restart: unless-stopped
- command: -c /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge-basicstation-cn470_10.toml
- ports:
- - 3001:3001
- volumes:
- - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
- depends_on:
- - 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.
- chirpstack-rest-api:
- image: chirpstack/chirpstack-rest-api:4
- restart: unless-stopped
- command: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecure
- ports:
- - 8090:8090
- depends_on:
- - chirpstack
chirpstack/chirpstack-rest-api:4
зеркало.unless-stopped
。chirpstack:8080
, адрес привязки 0.0.0.0:8090
и включите небезопасный режим.8090
。chirpstack
Служить.(5)постгрес
Это служба базы данных PostgreSQL.
- postgres:
- image: postgres:14-alpine
- restart: unless-stopped
- volumes:
- - ./configuration/postgresql/initdb:/docker-entrypoint-initdb.d
- - postgresqldata:/var/lib/postgresql/data
- environment:
- - 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 в памяти.
- redis:
- image: redis:7-alpine
- restart: unless-stopped
- command: redis-server --save 300 1 --save 60 100 --appendonly no
- volumes:
- - redisdata:/data
redis:7-alpine
зеркало.unless-stopped
。redis-server
и укажите стратегию сохранения.redisdata
в контейнер/data
。(7)комар
Это служба брокера сообщений MQTT.
- mosquitto:
- image: eclipse-mosquitto:2
- restart: unless-stopped
- ports:
- - 1883:1883
- volumes:
- - ./configuration/mosquitto/config/:/mosquitto/config/
(8)Тома
Определите объемы данных.
- volumes:
- postgresqldata:
- redisdata:
3. Запуск Docke-compose
sudo docker-compose up -d
1. Посетите chirpstack (IP): 8080, пароль учетной записи по умолчанию — admin.
2. Создайте шлюз
Затем дайте шлюзу обычное имя, но помните идентификатор шлюза. Соответствующий идентификатор необходимо изменить в конфигурации шлюза.
3. Добавьте файлы устройства.
Заполните его в соответствии с вашими требованиями.
4. Настройте АС
После добавления игрового приложения по очереди добавляйте устройства и настройки многоадресной рассылки в приложении.
Наконец, запустите шлюз, чтобы проверить, сможет ли шлюз подключиться к облачному серверу и успешно переслать сообщение.