2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Inhaltsverzeichnis
3. Warum sollten Sie sich für die Docker-Bereitstellung entscheiden?
3. Bereitstellungsprozess unter Linux
4. Bereitstellungsprozess der Webschnittstelle
Ich verwende diesen Artikel unter LinuxDockerUm Chirpstack bereitzustellen, verwendet Chirpstackv4-Version, v4-Version und v3-Version Im Vergleich zur gRPC-API wurden einige Änderungen vorgenommen und die Kompatibilität muss berücksichtigt werden. Aber wir verwenden Docker nur zum Bereitstellen von Chirpstack. Tatsächlich gab es einige Änderungen im Verzeichnis und in der Weboberfläche. Die Konfigurationslogik ist dieselbe und es hat sich nicht viel geändert. Wenn Sie die v3-Version verwenden, können Sie mich direkt fragen, wenn Sie etwas nicht verstehen.
ChirpStack ist ein Open-Source-LoRaWAN-Netzwerkserver, der zum Aufbau privater oder öffentlicher LoRaWAN-Netzwerke verwendet werden kann. ChirpStack bietet eine WeboberflächeWird zur Verwaltung von Gateways, Geräten und Anwendungen verwendet.ChirpStack bietet eine gRPC-basierte API, die zur Integration oder Erweiterung von ChirpStack verwendet werden kann.
(1) ChirpStack-Netzwerkserver: NS kurz gesagt, seine Funktion istStellt den ordnungsgemäßen Betrieb des LoRaWAN-Netzwerks sicher und verwaltet die Gerätekommunikation.Das Verantwortlich für die Kernlogik des LoRaWAN-Netzwerks. Es übernimmt den Gerätebeitrittsprozess, die Downlink-Planung, die Geräteaktivitätsverfolgung usw. Es ist auch für die Verarbeitung der vom LoRa-Gateway empfangenen Uplink-Daten und das Senden von Downlink-Daten an das Gateway verantwortlich.
(2)ChirpStack-Anwendungsserver: Abgekürzt als AS, seine Funktion istVerwalten und verarbeiten Sie Daten auf Anwendungsebene und stellen Sie eine Benutzeroberfläche und eine API-Schnittstelle bereit.Das Verantwortlich für die Verarbeitung und Verwaltung von LoRaWAN-Anwendungsschichtdaten. Es ermöglicht Benutzern, Anwendungen, Gerätekonfigurationen und Datendecoder zu definieren. Es bietet außerdem APIs und Webschnittstellen für die Verwaltung von Geräten, die Überwachung des Netzwerkverkehrs, die Datendekodierung und das Senden von Daten auf Anwendungsebene an externe Anwendungen.
(3)ChirpStack Gateway-Brücke:EsFungiert als Middleware zwischen dem Gateway und dem Webserver . Diese Komponente kann das vom LoRa-Gateway übertragene LoRa-Pakettransponderprotokoll in das gemeinsame Datenformat (JSON und Protobuf) des ChirpStack-Netzwerkservers konvertieren.
(4) PostgreSQL: Dies ist ein relationales Open-Source-Datenbankverwaltungssystem fürDauerspeicher Konfigurationsdaten, Geräteinformationen, Gateway-Informationen, Anwendungsdaten usw. von ChirpStack.
(5) Redis: Dies ist normalerweise ein Open-Source-In-Memory-DatenstrukturspeichersystemWird als Datenbank, Cache und Nachrichtenbroker verwendet . ChirpStack verwendet Redis zum Zwischenspeichern und Verarbeiten einiger Echtzeitdaten, um die Systemleistung und Reaktionsgeschwindigkeit zu verbessern.
(6) Mücke:Mosquitto ist ein Proxyserver des MQTT-Protokolls fürVerwaltet die Kommunikation zwischen Geräten und ChirpStack-Komponenten.Es ermöglicht die Nachrichtenübermittlung zwischen dem LoRaWAN-Gateway und dem ChirpStack-Dienst.
Beachten Sie den Unterschied zwischen Postgre SQL und Redis. Postgre SQL speichert Daten basierend auf der Festplatte und unterstützt die dauerhafte Speicherung. Wenn Daten auf der Festplatte gespeichert werden, gehen die Daten auch bei einem Neustart des Systems nicht verloren. Redis speichert Daten speicherbasiert, unterstützt effiziente Lese- und Schreibvorgänge und weist eine extrem hohe Leistung auf.
(1) Vereinfachen Sie den Bereitstellungsprozess:Wie oben erwähnt, besteht ChirpStack aus mehreren Servicekomponenten und ermöglicht uns die Übergabe einer Konfigurationsdatei (.docker-compose.yml
) Definieren und führen Sie mehrere Container mit nur einem Befehl aus (docker-compose up
), um alle Dienste zu starten.
(2) Umweltisolation:Jeder Chirpstack-Dienst kann in unabhängigen Containern ausgeführt werden, wodurch Abhängigkeitskonflikte und Umweltverschmutzung vermieden werden.
(3) Portabilität: Mit Docker können wir sicherstellen, dass wir in Entwicklungs-, Test- und Produktionsumgebungen denselben Code und dieselbe Konfiguration ausführen. Dies hilft, „Umweltprobleme“ zu vermeiden, die in verschiedenen Umgebungen auftreten.
(4) Zentralisierte Konfiguration:Alle Servicekonfigurationen sind zentralisiert docker-compose.yml
Dateien zur einfachen Verwaltung und Versionskontrolle. Wir können die Konfiguration problemlos ändern und aktualisieren.
1. Ziehen Sie den Quellcode von Github
v4-Version: (Die v4-Version wird als nächstes erklärt)
git clone https://github.com/chirpstack/chirpstack-docker.git
v3-Version:
git clone https://github.com/chirpstack/chirpstack-docker/tree/v3
2. Änderndocker-compose.yml
Konfigurationsdatei
Die Datei ist eineMit Docker Compose konfigurierte Multi-Container-Anwendung für die Bereitstellung der ChirpStack IoT-Plattform. Deckt alle wichtigen Komponenten ab, die für ein ChirpStack-System erforderlich sind, um sicherzustellen, dass sie in einem Docker-Container zusammenarbeiten. (Beachten Sie, dass diese Konfigurationsdatei normalerweise nur das gewünschte Frequenzband und den gewünschten Port ändern muss und keine weiteren Änderungen vorgenommen werden müssen.)
(1)Chirpstapel
Dies ist der ChirpStack-Anwendungsserver (im Allgemeinen sind keine Änderungen erforderlich).
- 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
Spiegel./etc/chirpstack
。unless-stopped
Das heißt, der Container wird automatisch neu gestartet, sofern er nicht manuell gestoppt wird../configuration/chirpstack
in den Behälter/etc/chirpstack
,sowie ./lorawan-devices
in den Behälter/opt/lorawan-devices
。postgres
, mosquitto
, redis
Drei Dienste.MQTT_BROKER_HOST
, REDIS_HOST
, POSTGRESQL_HOST
。8080
, den Inhalt in den Behälter geben 8080
Port dem Host zugeordnet8080
Hafen.(2)Chirpstack-Gateway-Brücke
Dies ist der ChirpStack-Gateway-Bridge-Dienst (das cn470_10-Band, das ich hier verwende).
- 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
in den Behälter/etc/chirpstack-gateway-bridge
。mosquitto
Aufschlag.(3)Chirpstack-Gateway-Bridge-Basisstation
Dies ist der grundlegende Stationsdienst der ChirpStack-Gateway-Bridge (beachten Sie die Änderung des Befehlsteils).
- 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
Spiegel.unless-stopped
。chirpstack-gateway-bridge-basicstation-cn470_10.toml
。3001
。./configuration/chirpstack-gateway-bridge
in den Behälter/etc/chirpstack-gateway-bridge
。mosquitto
Aufschlag.(4) Chirpstack-Rest-API
Dies ist der REST-API-Dienst von 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
Spiegel.unless-stopped
。chirpstack:8080
, die verbindliche Adresse ist 0.0.0.0:8090
, und aktivieren Sie den unsicheren Modus.8090
。chirpstack
Aufschlag.(5) postgres
Dies ist der PostgreSQL-Datenbankdienst.
- 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
Spiegel.unless-stopped
。./configuration/postgresql/initdb
in den Behälter/docker-entrypoint-initdb.d
, und mounten Sie das Docker-Volume postgresqldata
in den Behälter/var/lib/postgresql/data
。POSTGRES_PASSWORD
fürroot
。(6) Redis
Dies ist ein Redis-In-Memory-Datenbankdienst.
- 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
Spiegel.unless-stopped
。redis-server
, und geben Sie die Speicherstrategie an.redisdata
in den Behälter/data
。(7) Mücke
Dies ist der MQTT-Nachrichtenbrokerdienst.
- mosquitto:
- image: eclipse-mosquitto:2
- restart: unless-stopped
- ports:
- - 1883:1883
- volumes:
- - ./configuration/mosquitto/config/:/mosquitto/config/
(8) Bände
Datenmengen definieren.
- volumes:
- postgresqldata:
- redisdata:
3. Docke-Compose startet
sudo docker-compose up -d
1. Besuchen Sie Chirpstack (IP): 8080, das Standardkontokennwort ist admin
2. Erstellen Sie ein Gateway
Als nächstes geben Sie dem Gateway normalerweise einen Namen, aber merken Sie sich die Gateway-ID. Die entsprechende ID muss in der Gateway-Konfiguration geändert werden.
3. Gerätedateien hinzufügen
Füllen Sie es entsprechend Ihren eigenen Anforderungen aus.
4. AS konfigurieren
Fügen Sie nach dem Hinzufügen der Play-Anwendung der Reihe nach Geräte und Multicast-Einstellungen in der Anwendung hinzu.
Führen Sie abschließend das Gateway aus, um zu sehen, ob das Gateway eine Verbindung zum Cloud-Server herstellen und die Nachricht erfolgreich weiterleiten kann.