Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tabla de contenido
3. ¿Por qué elegir la implementación de Docker?
3. Proceso de implementación en Linux
4. Proceso de implementación de la interfaz web
Estoy usando este artículo en Linux.EstibadorPara implementar chirpstack, chirpstack usaversión v4, versión v4 y versión v3 En comparación con la API gRPC, se han realizado algunos cambios y es necesario considerar la compatibilidad. Pero solo usamos Docker para implementar chirpstack. De hecho, ha habido algunos cambios en el directorio y la interfaz web. La lógica de configuración es la misma y no ha cambiado mucho. Si está utilizando la versión v3, puede preguntarme directamente si no entiende nada.
ChirpStack es un servidor de red LoRaWAN de código abierto que se puede utilizar para configurar redes LoRaWAN públicas o privadas. ChirpStack proporciona una interfaz webSe utiliza para administrar puertas de enlace, dispositivos y aplicaciones.ChirpStack proporciona una API basada en gRPC que se puede utilizar para integrar o ampliar ChirpStack.
(1) Servidor de red ChirpStack: NS para abreviar, su función esGarantiza el funcionamiento adecuado de la red LoRaWAN y gestiona la comunicación del dispositivo.Eso Responsable de la lógica central de la red LoRaWAN. Maneja el proceso de unión del dispositivo, la programación del enlace descendente, el seguimiento de la actividad del dispositivo, etc. También es responsable de procesar los datos de enlace ascendente recibidos desde la puerta de enlace LoRa y enviar datos de enlace descendente a la puerta de enlace.
(2) Servidor de aplicaciones ChirpStack: Abreviado como AS, su función esAdministre y procese datos de la capa de aplicación y proporcione una interfaz de usuario y una interfaz API.Eso Responsable del procesamiento y gestión de datos de la capa de aplicación LoRaWAN. Permite a los usuarios definir aplicaciones, configuraciones de dispositivos y decodificadores de datos. También proporciona API e interfaces web para administrar dispositivos, monitorear el tráfico de red, manejar la decodificación de datos y enviar datos de la capa de aplicación a aplicaciones externas.
(3) Puente de enlace ChirpStack:élActúa como middleware entre la puerta de enlace y el servidor web. . Este componente puede convertir el protocolo de reenvío de paquetes LoRa transmitido desde la puerta de enlace LoRa al formato de datos común (JSON y Protobuf) del servidor de red ChirpStack.
(4) PostgreSQL: Este es un sistema de gestión de bases de datos relacionales de código abierto paraalmacenamiento persistente Datos de configuración de ChirpStack, información del dispositivo, información de la puerta de enlace, datos de la aplicación, etc.
(5) Redis: Este es un sistema de almacenamiento de estructura de datos en memoria de código abierto, generalmenteSe utiliza como base de datos, caché y intermediario de mensajes. . ChirpStack utiliza Redis para almacenar en caché y procesar algunos datos en tiempo real para mejorar el rendimiento del sistema y la velocidad de respuesta.
(6) Mosquito:Mosquitto es un servidor proxy del protocolo MQTT paraManeja la comunicación entre dispositivos y componentes de ChirpStack.Permite mensajería entre la puerta de enlace LoRaWAN y el servicio ChirpStack.
Preste atención a la diferencia entre Postgre SQL y Redis. Postgre SQL almacena datos en el disco y admite el almacenamiento persistente. Cuando los datos se almacenan en el disco, no se perderán incluso si se reinicia el sistema y el rendimiento es relativamente lento. Redis almacena datos en función de la memoria, admite operaciones eficientes de lectura y escritura y tiene un rendimiento extremadamente alto.
(1) Simplifique el proceso de implementación:Como se mencionó anteriormente, ChirpStack se compone de múltiples componentes de servicio. Docker Compose nos permite pasar un archivo de configuración (.docker-compose.yml
) Definir y ejecutar múltiples contenedores con un solo comando (docker-compose up
) para iniciar todos los servicios.
(2) Aislamiento ambiental:Cada servicio de chirpstack puede ejecutarse en contenedores independientes, evitando conflictos de dependencia y contaminación ambiental.
(3) Portabilidad: Al utilizar Docker, podemos asegurarnos de ejecutar el mismo código y configuración en entornos de desarrollo, prueba y producción. Esto ayuda a evitar "problemas ambientales" que surgen en diferentes entornos.
(4) Configuración centralizada:Todas las configuraciones de servicio están centralizadas en uno docker-compose.yml
archivos para una fácil gestión y control de versiones. Podemos modificar y actualizar la configuración fácilmente.
1. Extraiga el código fuente de github
Versión v4: (La versión v4 se explicará a continuación)
git clone https://github.com/chirpstack/chirpstack-docker.git
versión v3:
git clone https://github.com/chirpstack/chirpstack-docker/tree/v3
2. Modificardocker-compose.yml
Archivo de configuración
El archivo es unAplicación de contenedores múltiples configurada con Docker Compose para implementar la plataforma ChirpStack IoT. Cubre todos los componentes principales necesarios para que un sistema ChirpStack garantice que funcionen juntos en un contenedor Docker. (Tenga en cuenta que este archivo de configuración generalmente solo necesita modificar la banda de frecuencia y el puerto que desea, y no es necesario realizar otros cambios)
(1) pila de chirridos
Este es el servidor de aplicaciones ChirpStack (generalmente no se requieren modificaciones).
- 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
Espejo./etc/chirpstack
。unless-stopped
, es decir, el contenedor se reiniciará automáticamente a menos que se detenga manualmente../configuration/chirpstack
en el contenedor/etc/chirpstack
,así como ./lorawan-devices
en el contenedor/opt/lorawan-devices
。postgres
, mosquitto
, redis
Tres servicios.MQTT_BROKER_HOST
, REDIS_HOST
, POSTGRESQL_HOST
。8080
, poner el contenido en el recipiente 8080
Puerto asignado al host8080
puerto.(2) Puente de puerta de enlace de Chirpstack
Este es el servicio de puente de puerta de enlace ChirpStack (la banda cn470_10 que uso aquí).
- 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
en el contenedor/etc/chirpstack-gateway-bridge
。mosquitto
Atender.(3) Estación básica de puente de puerta de enlace de Chirpstack
Este es el servicio de estación básico del puente de puerta de enlace ChirpStack (tenga en cuenta la modificación de la parte del comando).
- 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
Espejo.unless-stopped
。chirpstack-gateway-bridge-basicstation-cn470_10.toml
。3001
。./configuration/chirpstack-gateway-bridge
en el contenedor/etc/chirpstack-gateway-bridge
。mosquitto
Atender.(4) API de descanso de Chirpstack
Este es el servicio API REST de 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
Espejo.unless-stopped
。chirpstack:8080
, la dirección vinculante es 0.0.0.0:8090
y habilite el modo inseguro.8090
。chirpstack
Atender.(5) postgres
Este es el servicio de base de datos 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
Espejo.unless-stopped
。./configuration/postgresql/initdb
en el contenedor/docker-entrypoint-initdb.d
y monte el volumen Docker postgresqldata
en el contenedor/var/lib/postgresql/data
。POSTGRES_PASSWORD
pararoot
。(6) redis
Este es un servicio de base de datos en memoria de 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
Espejo.unless-stopped
。redis-server
y especifique la estrategia de guardado.redisdata
en el contenedor/data
。(7) mosquito
Este es el servicio de intermediario de mensajes MQTT.
- mosquitto:
- image: eclipse-mosquitto:2
- restart: unless-stopped
- ports:
- - 1883:1883
- volumes:
- - ./configuration/mosquitto/config/:/mosquitto/config/
(8) Volúmenes
Definir volúmenes de datos.
- volumes:
- postgresqldata:
- redisdata:
3. Se inicia Docke-compose
sudo docker-compose up -d
1. Visite chirpstack (IP): 8080, la contraseña predeterminada de la cuenta es admin
2. Crea una puerta de enlace
A continuación, asigne un nombre a la puerta de enlace normalmente, pero recuerde la ID de la puerta de enlace. La ID correspondiente debe modificarse en la configuración de la puerta de enlace.
3. Agregar archivos de dispositivo
Complételo según sus propios requisitos.
4. Configurar AS
Después de agregar la aplicación de reproducción, agregue dispositivos y configuraciones de multidifusión en la aplicación.
Finalmente, ejecute la puerta de enlace para ver si puede conectarse al servidor en la nube y reenviar el mensaje correctamente.