2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Table des matières
3. Pourquoi choisir le déploiement Docker ?
3. Processus de déploiement sous Linux
4. Processus de déploiement de l'interface Web
J'utilise cet article sous LinuxDockerPour déployer chirpstack, chirpstack utiliseversion 4, version v4 et version 3 Par rapport à l'API gRPC, certaines modifications ont été apportées et la compatibilité doit être prise en compte. Mais nous utilisons uniquement Docker pour déployer chirpstack. En fait, il y a eu quelques changements dans le répertoire et l'interface Web. La logique de configuration est la même et peu de choses ont changé. Si vous utilisez la version v3, vous pouvez me demander directement si vous ne comprenez rien.
ChirpStack est un serveur réseau LoRaWAN open source qui peut être utilisé pour configurer des réseaux LoRaWAN privés ou publics. ChirpStack fournit une interface WebUtilisé pour gérer les passerelles, les appareils et les applications.ChirpStack fournit une API basée sur gRPC qui peut être utilisée pour intégrer ou étendre ChirpStack.
(1) Serveur réseau ChirpStack : NS pour faire court, sa fonction estAssure le bon fonctionnement du réseau LoRaWAN et gère les communications des appareils.Que Responsable de la logique de base du réseau LoRaWAN. Il gère le processus de connexion des appareils, la planification des liaisons descendantes, le suivi de l'activité des appareils, etc. Il est également responsable du traitement des données de liaison montante reçues de la passerelle LoRa et de l'envoi des données de liaison descendante à la passerelle.
(2)Serveur d'applications ChirpStack: Abrégé en AS, sa fonction estGérer et traiter les données de la couche application et fournir une interface utilisateur et une interface API.Que Responsable du traitement et de la gestion des données de la couche application LoRaWAN. Il permet aux utilisateurs de définir des applications, des configurations d'appareils et des décodeurs de données. Il fournit également des API et des interfaces Web pour gérer les appareils, surveiller le trafic réseau, gérer le décodage des données et envoyer les données de la couche application à des applications externes.
(3)Pont de passerelle ChirpStack:ilAgit comme un middleware entre la passerelle et le serveur Web . Ce composant peut convertir le protocole du transpondeur de paquets LoRa transmis depuis la passerelle LoRa au format de données commun (JSON et Protobuf) du serveur réseau ChirpStack.
(4)PostgreSQL: Il s'agit d'un système de gestion de base de données relationnelle open source pourstockage persistant Données de configuration de ChirpStack, informations sur l'appareil, informations sur la passerelle, données d'application, etc.
(5) Redis: Il s'agit d'un système de stockage de structure de données en mémoire open source, généralementUtilisé comme base de données, cache et courtier de messages . ChirpStack utilise Redis pour mettre en cache et traiter certaines données en temps réel afin d'améliorer les performances du système et la vitesse de réponse.
(6)Moustique:Mosquitto est un serveur proxy du protocole MQTT pourGère la communication entre les appareils et les composants ChirpStack.Il permet la messagerie entre la passerelle LoRaWAN et le service ChirpStack.
Faites attention à la différence entre Postgre SQL et Redis. Postgre SQL stocke les données sur le disque et prend en charge le stockage persistant lorsque les données sont stockées sur le disque, les données ne seront pas perdues même si le système est redémarré et les performances sont relativement lentes. Redis stocke les données basées sur la mémoire, prend en charge des opérations de lecture et d'écriture efficaces et offre des performances extrêmement élevées.
(1) Simplifiez le processus de déploiement :Comme mentionné ci-dessus, ChirpStack est composé de plusieurs composants de service Docker Compose nous permet de transmettre un fichier de configuration (docker-compose.yml
) Définissez et exécutez plusieurs conteneurs avec une seule commande (docker-compose up
) pour démarrer tous les services.
(2) Isolement environnemental :Chaque service de chirpstack peut fonctionner dans des conteneurs indépendants, évitant ainsi les conflits de dépendance et la pollution de l'environnement.
(3) Portabilité : Grâce à Docker, nous pouvons garantir que nous exécutons le même code et la même configuration dans les environnements de développement, de test et de production. Cela permet d'éviter les « problèmes environnementaux » qui surviennent dans différents environnements.
(4) Configuration centralisée :Toutes les configurations de services sont centralisées en un seul docker-compose.yml
fichiers pour une gestion et un contrôle de version faciles. Nous pouvons facilement modifier et mettre à jour la configuration.
1. Extrayez le code source de github
Version v4 : (La version v4 sera expliquée ensuite)
git clone https://github.com/chirpstack/chirpstack-docker.git
version v3 :
git clone https://github.com/chirpstack/chirpstack-docker/tree/v3
2. Modifierdocker-compose.yml
Fichier de configuration
Le fichier est unApplication multi-conteneurs configurée à l'aide de Docker Compose pour le déploiement de la plateforme IoT ChirpStack. Couvre tous les principaux composants nécessaires à un système ChirpStack pour garantir qu'ils fonctionnent ensemble dans un conteneur Docker. (Notez que ce fichier de configuration n'a généralement besoin que de modifier la bande de fréquence et le port souhaités, et aucune autre modification n'est nécessaire)
(1) pile de chirps
Il s'agit du serveur d'applications ChirpStack (généralement aucune modification n'est requise).
- 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
Miroir./etc/chirpstack
。unless-stopped
, c'est-à-dire que le conteneur redémarrera automatiquement à moins qu'il ne soit arrêté manuellement../configuration/chirpstack
dans le conteneur/etc/chirpstack
,ainsi que ./lorawan-devices
dans le conteneur/opt/lorawan-devices
。postgres
, mosquitto
, redis
Trois prestations.MQTT_BROKER_HOST
, REDIS_HOST
, POSTGRESQL_HOST
。8080
, mettez le contenu dans le récipient 8080
Port mappé à l'hôte8080
port.(2) passerelle-chirpstack
Il s'agit du service de pont de passerelle ChirpStack (la bande cn470_10 que j'utilise ici).
- 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
dans le conteneur/etc/chirpstack-gateway-bridge
。mosquitto
Servir.(3)chirpstack-passerelle-pont-station-de-base
Il s'agit du service station de base du pont passerelle ChirpStack (notez la modification de la partie commande).
- 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
Miroir.unless-stopped
。chirpstack-gateway-bridge-basicstation-cn470_10.toml
。3001
。./configuration/chirpstack-gateway-bridge
dans le conteneur/etc/chirpstack-gateway-bridge
。mosquitto
Servir.(4)API de repos de chirpstack
Il s'agit du service 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
Miroir.unless-stopped
。chirpstack:8080
, l'adresse de liaison est 0.0.0.0:8090
et activez le mode non sécurisé.8090
。chirpstack
Servir.(5)postgres
Il s'agit du service de base de données 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
Miroir.unless-stopped
。./configuration/postgresql/initdb
dans le conteneur/docker-entrypoint-initdb.d
, et montez le volume Docker postgresqldata
dans le conteneur/var/lib/postgresql/data
。POSTGRES_PASSWORD
pourroot
。(6) redis
Il s'agit d'un service de base de données en mémoire 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
Miroir.unless-stopped
。redis-server
et spécifiez la stratégie de sauvegarde.redisdata
dans le conteneur/data
。(7)moustique
Il s'agit du service de courtier de messages MQTT.
- mosquitto:
- image: eclipse-mosquitto:2
- restart: unless-stopped
- ports:
- - 1883:1883
- volumes:
- - ./configuration/mosquitto/config/:/mosquitto/config/
(8)Volumes
Définir les volumes de données.
- volumes:
- postgresqldata:
- redisdata:
3. Docke-compose démarre
sudo docker-compose up -d
1. Visitez chirpstack (IP) : 8080, le mot de passe du compte par défaut est admin
2. Créez une passerelle
Ensuite, donnez normalement un nom à la passerelle, mais n'oubliez pas l'ID de la passerelle. L'ID correspondant doit être modifié dans la configuration de la passerelle.
3. Ajouter des fichiers de périphérique
Remplissez-le selon vos propres besoins.
4. Configurer AS
Après avoir ajouté l'application Play, ajoutez tour à tour les appareils et les paramètres de multidiffusion dans l'application.
Enfin, exécutez la passerelle pour voir si la passerelle peut se connecter au serveur cloud et transférer avec succès le message.