Compartilhamento de tecnologia

Implantando chirpstack usando Docker no Linux

2024-07-12

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

Índice

I. Introdução

2. Pilha de chirp

1. O que é chirpstack?

2. componente chirpstack

3. Por que escolher a implantação do Docker?

3. Processo de implantação no Linux

4. Processo de implantação da interface web


I. Introdução

Estou usando este artigo no LinuxEstivadorPara implantar o chirpstack, o chirpstack usaversão v4, versão v4 e versão v3 Em comparação com a API gRPC, algumas alterações foram feitas e a compatibilidade precisa ser considerada. Mas usamos o Docker apenas para implantar o chirpstack. Na verdade, houve algumas mudanças no diretório e na interface da web. A lógica de configuração é a mesma e não mudou muito. Se você estiver usando a versão v3, pode me perguntar diretamente se não entender nada.

2. Pilha de chirp

1. O que é chirpstack?

ChirpStack é um servidor de rede LoRaWAN de código aberto que pode ser usado para configurar redes LoRaWAN públicas ou privadas. ChirpStack fornece uma interface webUsado para gerenciar gateways, dispositivos e aplicativos.ChirpStack fornece uma API baseada em gRPC que pode ser usada para integrar ou estender o ChirpStack.

2. componente chirpstack

(1)Servidor de rede ChirpStack: NS resumidamente, sua função éGarante a operação adequada da rede LoRaWAN e gerencia as comunicações dos dispositivos.Que Responsável pela lógica central da rede LoRaWAN. Ele lida com o processo de adesão de dispositivos, agendamento de downlink, rastreamento de atividades de dispositivos, etc. Ele também é responsável por processar os dados de uplink recebidos do gateway LoRa e enviar dados de downlink para o gateway.

(2)Servidor de aplicativos ChirpStack: Abreviado como AS, sua função éGerencie e processe dados da camada de aplicativo e forneça interface de usuário e interface API.Que Responsável pelo processamento e gerenciamento de dados da camada de aplicação LoRaWAN. Permite aos usuários definir aplicações, configurações de dispositivos e decodificadores de dados. Ele também fornece APIs e interfaces web para gerenciar dispositivos, monitorar o tráfego de rede, lidar com a decodificação de dados e enviar dados da camada de aplicativo para aplicativos externos.

(3)Ponte de gateway ChirpStack:istoAtua como um middleware entre o gateway e o servidor web . Este componente pode converter o protocolo transponder de pacote LoRa transmitido do gateway LoRa no formato de dados comum (JSON e Protobuf) do servidor de rede ChirpStack.

(4)PostgreSQL: Este é um sistema de gerenciamento de banco de dados relacional de código aberto paraarmazenamento persistente Dados de configuração do ChirpStack, informações do dispositivo, informações do gateway, dados do aplicativo, etc.

(5)Redis: Este é um sistema de armazenamento de estrutura de dados na memória de código aberto, geralmenteUsado como banco de dados, cache e corretor de mensagens . ChirpStack usa Redis para armazenar em cache e processar alguns dados em tempo real para melhorar o desempenho do sistema e a velocidade de resposta.

(6)Mosquito:Mosquitto é um servidor proxy do protocolo MQTT paraLida com a comunicação entre dispositivos e componentes ChirpStack.Ele permite mensagens entre o gateway LoRaWAN e o serviço ChirpStack.

Preste atenção à diferença entre Postgre SQL e Redis SQL armazena dados com base em disco e suporta armazenamento persistente. Quando os dados são armazenados em disco, os dados não serão perdidos mesmo se o sistema for reiniciado e o desempenho for relativamente lento. O Redis armazena dados com base na memória, oferece suporte a operações eficientes de leitura e gravação e possui desempenho extremamente alto.

3. Por que escolher a implantação do Docker?

(1) Simplifique o processo de implantação:Conforme mencionado acima, o ChirpStack é composto por vários componentes de serviço. O Docker Compose nos permite passar um arquivo de configuração (.docker-compose.yml) Defina e execute vários contêineres com apenas um comando (docker-compose up) para iniciar todos os serviços.

(2) Isolamento ambiental:Cada serviço do chirpstack pode rodar em containers independentes, evitando conflitos de dependência e poluição ambiental.

(3) Portabilidade: Usando o Docker, podemos garantir que executaremos o mesmo código e configuração em ambientes de desenvolvimento, teste e produção. Isto ajuda a evitar “problemas ambientais” que surgem em diferentes ambientes.

(4) Configuração centralizada:Todas as configurações de serviço são centralizadas em um docker-compose.yml arquivos para fácil gerenciamento e controle de versão. Podemos modificar e atualizar facilmente a configuração.

3. Processo de implantação no Linux

1. Extraia o código-fonte do github

Versão v4: (A versão v4 será explicada a seguir)

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

versão v3:

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

2. Modificardocker-compose.yml Arquivo de configuração

O arquivo é umAplicativo multicontêiner configurado usando Docker Compose para implantação da plataforma ChirpStack IoT. Abrange todos os principais componentes necessários para um sistema ChirpStack para garantir que funcionem juntos em um contêiner Docker. (Observe que este arquivo de configuração geralmente só precisa modificar a banda de frequência e a porta desejada e nenhuma outra alteração precisa ser feita)

(1)pilha de chirp

Este é o servidor de aplicativos ChirpStack (geralmente nenhuma modificação é necessária).

  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
  • imagem: uso chirpstack/chirpstack:4 Espelho.
  • comando: Especifique o caminho do arquivo de configuração como /etc/chirpstack
  • reiniciar: definir como unless-stopped, ou seja, o contêiner será reiniciado automaticamente, a menos que seja interrompido manualmente.
  • volumes: monte o diretório local ./configuration/chirpstack no recipiente/etc/chirpstack,assim como ./lorawan-devices no recipiente/opt/lorawan-devices
  • depende_on: dependência postgres, mosquitto, redis Três serviços.
  • ambiente: defina variáveis ​​de ambiente, incluindo MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • portas: portas expostas 8080, coloque o conteúdo no recipiente 8080 Porta mapeada para hospedar8080 porta.

(2)chirpstack-gateway-ponte

Este é o serviço de ponte de gateway ChirpStack (a banda cn470_10 que uso aqui).

  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: definido como unless-stopped
  • portas: exponha as portas UDP 1700
  • volumes: monte o diretório local ./configuration/chirpstack-gateway-bridge no recipiente/etc/chirpstack-gateway-bridge
  • ambiente: defina variáveis ​​de ambiente e especifique o modelo de tópico MQTT.
  • depende_on: dependência mosquitto Servir.

(3)chirpstack-gateway-ponte-estação básica

Este é o serviço básico da estação da ponte de gateway ChirpStack (observe a modificação da parte do 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
  • imagem: uso chirpstack/chirpstack-gateway-bridge:4 Espelho.
  • reiniciar: definir como unless-stopped
  • comando: usar arquivo de configuração chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • portas: portas expostas 3001
  • volumes: monte o diretório local ./configuration/chirpstack-gateway-bridge no recipiente/etc/chirpstack-gateway-bridge
  • depende_on: dependência mosquitto Servir.

(4)chirpstack-rest-api

Este é o serviço API REST do 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
  • imagem: uso chirpstack/chirpstack-rest-api:4 Espelho.
  • reiniciar: definir como unless-stopped
  • comando: Especifique o servidor ChirpStack como chirpstack:8080, o endereço de ligação é 0.0.0.0:8090e ative o modo inseguro.
  • portas: portas expostas 8090
  • depende_on: dependência chirpstack Servir.

(5)postgres

Este é o serviço de banco de dados 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
  • imagem: uso postgres:14-alpine Espelho.
  • reiniciar: definir como unless-stopped
  • volumes: monte o diretório local ./configuration/postgresql/initdb no recipiente/docker-entrypoint-initdb.de monte o volume do Docker postgresqldata no recipiente/var/lib/postgresql/data
  • ambiente: definir variáveis ​​de ambiente POSTGRES_PASSWORD pararoot

(6)redis

Este é um serviço de banco de dados na memória 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
  • imagem: uso redis:7-alpine Espelho.
  • reiniciar: definir como unless-stopped
  • comando: executar redis-servere especifique a estratégia de salvamento.
  • volumes: Montar volumes do Docker redisdata no recipiente/data

(7)mosquito

Este é o serviço do corretor de mensagens 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)Volumes

Defina volumes de dados.

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata: usado para armazenar dados PostgreSQL.
  • redisdata: usado para armazenar dados do Redis.

3. Docke-compose é iniciado

sudo docker-compose up -d

4. Processo de implantação da interface web

1. Visite chirpstack (IP): 8080, a senha da conta padrão é admin

2. Crie um gateway

Em seguida, dê um nome ao gateway normalmente, mas lembre-se do ID do gateway. O ID correspondente precisa ser modificado na configuração do gateway.

3. Adicione arquivos de dispositivo

Preencha-o de acordo com suas próprias necessidades.

4. Configurar AS

Depois de adicionar o aplicativo de reprodução, adicione dispositivos e configurações de multicast no aplicativo.

 

Por fim, execute o gateway para ver se ele pode se conectar ao servidor em nuvem e encaminhar a mensagem com êxito.