minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Índice
3. Por que escolher a implantação do Docker?
3. Processo de implantação no Linux
4. Processo de implantação da interface web
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.
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.
(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.
(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.
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).
- 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
Espelho./etc/chirpstack
。unless-stopped
, ou seja, o contêiner será reiniciado automaticamente, a menos que seja interrompido manualmente../configuration/chirpstack
no recipiente/etc/chirpstack
,assim como ./lorawan-devices
no recipiente/opt/lorawan-devices
。postgres
, mosquitto
, redis
Três serviços.MQTT_BROKER_HOST
, REDIS_HOST
, POSTGRESQL_HOST
。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).
- 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
no recipiente/etc/chirpstack-gateway-bridge
。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).
- 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
Espelho.unless-stopped
。chirpstack-gateway-bridge-basicstation-cn470_10.toml
。3001
。./configuration/chirpstack-gateway-bridge
no recipiente/etc/chirpstack-gateway-bridge
。mosquitto
Servir.(4)chirpstack-rest-api
Este é o serviço API REST do 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
Espelho.unless-stopped
。chirpstack:8080
, o endereço de ligação é 0.0.0.0:8090
e ative o modo inseguro.8090
。chirpstack
Servir.(5)postgres
Este é o serviço de banco de dados 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
Espelho.unless-stopped
。./configuration/postgresql/initdb
no recipiente/docker-entrypoint-initdb.d
e monte o volume do Docker postgresqldata
no recipiente/var/lib/postgresql/data
。POSTGRES_PASSWORD
pararoot
。(6)redis
Este é um serviço de banco de dados na memória 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
Espelho.unless-stopped
。redis-server
e especifique a estratégia de salvamento.redisdata
no recipiente/data
。(7)mosquito
Este é o serviço do corretor de mensagens MQTT.
- mosquitto:
- image: eclipse-mosquitto:2
- restart: unless-stopped
- ports:
- - 1883:1883
- volumes:
- - ./configuration/mosquitto/config/:/mosquitto/config/
(8)Volumes
Defina volumes de dados.
- volumes:
- postgresqldata:
- redisdata:
3. Docke-compose é iniciado
sudo docker-compose up -d
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.