Condivisione della tecnologia

Distribuzione di chirpstack utilizzando Docker sotto Linux

2024-07-12

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

Sommario

I. Introduzione

2. Chirpstack

1. Cos'è il ChirpStack?

2. componente chirpstack

3. Perché scegliere la distribuzione Docker?

3. Processo di distribuzione sotto Linux

4. Processo di distribuzione dell'interfaccia Web


I. Introduzione

Sto usando questo articolo sotto LinuxPortarePer distribuire chirpstack, utilizza chirpstackversione v4, versione v4 e versione v3 Rispetto all'API gRPC sono state apportate alcune modifiche ed è necessario considerare la compatibilità. Ma utilizziamo Docker solo per distribuire chirpstack. In effetti, ci sono stati alcuni cambiamenti nella directory e nell'interfaccia web. La logica di configurazione è la stessa e non è cambiato molto. Se utilizzi la versione v3, puoi chiedermelo direttamente se non capisci nulla.

2. Chirpstack

1. Cos'è il ChirpStack?

ChirpStack è un server di rete LoRaWAN open source che può essere utilizzato per configurare reti LoRaWAN private o pubbliche. ChirpStack fornisce un'interfaccia webUtilizzato per gestire gateway, dispositivi e applicazioni.ChirpStack fornisce un'API basata su gRPC che può essere utilizzata per integrare o estendere ChirpStack.

2. componente chirpstack

(1)Server di rete ChirpStack: NS in breve, la sua funzione èGarantisce il corretto funzionamento della rete LoRaWAN e gestisce la comunicazione dei dispositivi.Quello Responsabile della logica centrale della rete LoRaWAN. Gestisce il processo di unione del dispositivo, la pianificazione del downlink, il monitoraggio dell'attività del dispositivo, ecc. È inoltre responsabile dell'elaborazione dei dati di uplink ricevuti dal gateway LoRa e dell'invio dei dati di downlink al gateway.

(2)Server applicativo ChirpStack: Abbreviato come AS, la sua funzione èGestire ed elaborare i dati del livello di applicazione e fornire l'interfaccia utente e l'interfaccia API.Quello Responsabile dell'elaborazione e della gestione dei dati del livello applicativo LoRaWAN. Consente agli utenti di definire applicazioni, configurazioni di dispositivi e decodificatori di dati. Fornisce inoltre API e interfacce Web per la gestione dei dispositivi, il monitoraggio del traffico di rete, la gestione della decodifica dei dati e l'invio di dati a livello di applicazione ad applicazioni esterne.

(3) Ponte gateway ChirpStack:EssoFunge da middleware tra il gateway e il server web . Questo componente può convertire il protocollo di inoltro dei pacchetti LoRa trasmesso dal gateway LoRa nel formato dati comune (JSON e Protobuf) del server di rete ChirpStack.

(4)PostgreSQL: Questo è un sistema di gestione di database relazionali open source permemorizzazione persistente I dati di configurazione di ChirpStack, le informazioni sul dispositivo, le informazioni sul gateway, i dati dell'applicazione, ecc.

(5)Redis: Di solito si tratta di un sistema di archiviazione della struttura dei dati in memoria open sourceUtilizzato come database, cache e broker di messaggi . ChirpStack utilizza Redis per memorizzare nella cache ed elaborare alcuni dati in tempo reale per migliorare le prestazioni del sistema e la velocità di risposta.

(6) Zanzara:Mosquitto è un server proxy del protocollo MQTT perGestisce la comunicazione tra dispositivi e componenti ChirpStack.Consente la messaggistica tra il gateway LoRaWAN e il servizio ChirpStack.

Presta attenzione alla differenza tra Postgre SQL e Redis. Postgre SQL archivia i dati in base al disco e supporta l'archiviazione persistente. Quando i dati vengono archiviati su disco, i dati non andranno persi anche se il sistema viene riavviato e le prestazioni sono relativamente lente. Redis archivia i dati in base alla memoria, supporta operazioni di lettura e scrittura efficienti e offre prestazioni estremamente elevate.

3. Perché scegliere la distribuzione Docker?

(1) Semplificare il processo di distribuzione:Come accennato in precedenza, ChirpStack è composto da più componenti del servizio Docker Compose ci consente di passare un file di configurazione (.docker-compose.yml) Definisci ed esegui più contenitori con un solo comando (docker-compose up) per avviare tutti i servizi.

(2) Isolamento ambientale:Ogni servizio di chirpstack può essere eseguito in contenitori indipendenti, evitando conflitti di dipendenza e inquinamento ambientale.

(3) Portabilità: Utilizzando Docker, possiamo garantire di eseguire lo stesso codice e la stessa configurazione negli ambienti di sviluppo, test e produzione. Ciò aiuta a evitare "problemi ambientali" che sorgono in ambienti diversi.

(4) Configurazione centralizzata:Tutte le configurazioni del servizio sono centralizzate in una docker-compose.yml file per una facile gestione e controllo della versione. Possiamo facilmente modificare e aggiornare la configurazione.

3. Processo di distribuzione sotto Linux

1. Estrai il codice sorgente da github

Versione v4: (La versione v4 verrà spiegata di seguito)

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

versione v3:

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

2. Modificadocker-compose.yml File di configurazione

Il file è unApplicazione multi-contenitore configurata utilizzando Docker Compose per la distribuzione della piattaforma IoT ChirpStack. Copre tutti i componenti principali necessari per un sistema ChirpStack per garantire che funzionino insieme in un contenitore Docker. (Nota che questo file di configurazione di solito richiede solo di modificare la banda di frequenza e la porta desiderate e non è necessario apportare altre modifiche)

(1) pila di chips

Questo è il server delle applicazioni ChirpStack (generalmente non sono necessarie modifiche).

  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
  • immagine: utilizzare chirpstack/chirpstack:4 Specchio.
  • comando: Specificare il percorso del file di configurazione come /etc/chirpstack
  • riavvio: impostato su unless-stopped, ovvero il contenitore si riavvierà automaticamente a meno che non venga interrotto manualmente.
  • volumi: monta la directory locale ./configuration/chirpstack nel contenitore/etc/chirpstack,così come ./lorawan-devices nel contenitore/opt/lorawan-devices
  • dipende_da: dipendenza postgres, mosquitto, redis Tre servizi.
  • ambiente: imposta le variabili di ambiente, incluso MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • porti: porti esposti 8080, mettere il contenuto nel contenitore 8080 Porta mappata sull'host8080 porta.

(2) ponte gateway chirpstack

Questo è il servizio bridge gateway ChirpStack (la banda cn470_10 che utilizzo qui).

  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
  • estart: impostato su unless-stopped
  • porte: espone le porte UDP 1700
  • volumi: monta la directory locale ./configuration/chirpstack-gateway-bridge nel contenitore/etc/chirpstack-gateway-bridge
  • ambiente: imposta le variabili di ambiente e specifica il modello di argomento MQTT.
  • dipende_da: dipendenza mosquitto Servire.

(3) chirpstack-gateway-bridge-basicstation

Questo è il servizio base della stazione del gateway bridge ChirpStack (notare la modifica della parte di comando).

  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
  • immagine: utilizzare chirpstack/chirpstack-gateway-bridge:4 Specchio.
  • riavvio: impostato su unless-stopped
  • comando: usa il file di configurazione chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • porti: porti esposti 3001
  • volumi: monta la directory locale ./configuration/chirpstack-gateway-bridge nel contenitore/etc/chirpstack-gateway-bridge
  • dipende_da: dipendenza mosquitto Servire.

(4) chirpstack-rest-api

Questo è il servizio API REST di 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
  • immagine: utilizzare chirpstack/chirpstack-rest-api:4 Specchio.
  • riavvio: impostato su unless-stopped
  • comando: Specificare il server ChirpStack come chirpstack:8080, l'indirizzo vincolante è 0.0.0.0:8090e attiva la modalità non sicura.
  • porti: porti esposti 8090
  • dipende_da: dipendenza chirpstack Servire.

(5)Postgres

Questo è il servizio di database 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
  • immagine: utilizzare postgres:14-alpine Specchio.
  • riavvio: impostato su unless-stopped
  • volumi: monta la directory locale ./configuration/postgresql/initdb nel contenitore/docker-entrypoint-initdb.de montare il volume Docker postgresqldata nel contenitore/var/lib/postgresql/data
  • ambiente: imposta le variabili di ambiente POSTGRES_PASSWORD perroot

(6) rosso

Questo è un servizio di database in memoria 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
  • immagine: utilizzare redis:7-alpine Specchio.
  • riavvio: impostato su unless-stopped
  • comando: corri redis-servere specificare la strategia di salvataggio.
  • volumi: montare i volumi Docker redisdata nel contenitore/data

(7) zanzara

Questo è il servizio di broker di messaggi 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)Volumi

Definire i volumi di dati.

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata: utilizzato per archiviare dati PostgreSQL.
  • redisdata: utilizzato per archiviare i dati Redis.

3. Viene avviata la composizione Docke

sudo docker-compose up -d

4. Processo di distribuzione dell'interfaccia Web

1. Visita chirpstack (IP): 8080, la password dell'account predefinita è admin

2. Creare un gateway

Successivamente, dai normalmente un nome al gateway, ma ricorda l'ID del gateway. L'ID corrispondente deve essere modificato nella configurazione del gateway.

3. Aggiungi file del dispositivo

Compilalo secondo le tue esigenze.

4. Configurare l'AS

Dopo aver aggiunto l'applicazione di riproduzione, aggiungere a turno i dispositivi e le impostazioni multicast nell'applicazione.

 

Infine, esegui il gateway per vedere se il gateway può connettersi al server cloud e inoltrare correttamente il messaggio.