Chirpstack
Chirpstack은 LoraWan 네트워크를 구축하고 관리하는 오픈 소스 소프트웨어이다.
주요 구성은 아래와 같다.
- Chirpstack Gateway Bridge
Lora 게이트웨이와 통신하여 Lora 패킷을 UDP에서 MQTT로 변환하여 네트워크 서버로 전송한다. - Chirpstack Network Server
LoraWan 패킷을 처리하고 디바이스와 게이트웨이 간의 통신을 관리한다. - Chirpstack Application Server
데이터 및 디바이스를 관리하고, MQTT/HTTP 등의 프로토콜을 통해 사용자에게 데이터를 전송한다.
우리는 이 오픈 소스를 활용하여, 개인 LoraWan 인프라를 구축해볼 예정이다!
인프라 구축
일단, 현재 공직 Documentation에서 제공하는 Chirpstack은 3버전과 4버전이 있다.
3버전은 모놀리식 아키텍처이고, 4버전은 MSA로 전환되어 각 구성요소가 독립적으로 배포되고 관리 될 수 있게 바뀌었다.
우리가 구축할 인프라는 복잡한 구성이 필요하지도, 대용량 처리도 필요하지 않기 때문에 간단한 3버전으로 구축한다.
인프라를 구축하는 방법은 Chirpstack3 Documentation(https://www.chirpstack.io/project/) 을 참고하면서 진행한다.
나는, k8s 환경이 로컬 서버에 구축되어 있어 쿠버네티스 설치 기준으로 작성해보겠다.
구성
LoraWan을 구현한 오픈소스 소프트웨어 이기때문에, LoraWan 구성이 그대로 구현되어있다.
아래에서, Chirpstack NetworkServer, Pub/Sub Broker, Chirpstack Application Server, Integration MQTT는 서버에 구축, Chirpstack Gateway는 라즈베리파이에 구축할 예정이다.
구축
1. PostgreSQL, Redis 배포
Chirpstack 에서는 디바이스 및 네트워크 메타데이터, 사용자 정보, 등의 데이터를 저장하기 위해 postrgresql을,
세션 관리, 데이터 큐잉, 캐싱, 이벤트 트리거 작업 등을 위해 redis를 사용한다.
그렇기 때문에, 해당 서비스들을 먼저 배포해주어야 한다.
Application Server와 Network Server 각각 postgresql와 redis를 사용하기에 서로 다른 서비들을 배포해주어야 한다.
하나의 redis나 postgresql에 스키마나 DB를 분리하여 제공해도 되지만,
간단하게 각각 다른(독립적인) redis와 postgresql을 사용하는 구조로 배포해본다.
파일 내용이 조금 많아서, 첨부 파일로 대체한다.
2. Mqtt Broker 배포
Chirpstack 에서 Gateway와 Network 서버 사이의 데이터는 MQTT 통신을 통해 주고받는다.
그렇기 때문에, Network 서버와 Gateway 서버사이의 MQTT를 관리하는 MQTT Broker를 배포하여야 한다.
이를 mqtt-lorawan 이라 칭하고, 아래와 같은 설정으로 배포한다.
그리고 Application 서버와 클라이언트 사이의 데이터 통신은 여러 프로토콜을 지원하는 것을 확인할 수 있다.
HTTP, MQTT, AMQP, KAFKA 등 여러가지가 존재하며 그 중에 하나를 선택하여 클라이언트와 연결하면 될 것이다.
하지만, 일전 경험을 통해 알게 된 사실은, UpEvent를 어플리케이션서버에서 받는 것은 해당 프로토콜 모두 지원하는 듯 하지만,
어플리케이션 서버로 다운이벤트를 전송하는 기능은 AMQP 를 통해 테스트 했을 때 동작하지 않는 것을 확인할 수 있었다.
이에 궁금점이 생겨 Chirpstack Application Server의 코드를 보니(https://github.com/brocaar/chirpstack-application-server/tree/master)
MQTT 부분은 구조체에 Downlink 관련 내용들이 작성되어있는 것에 반해, 다른 프로토콜들의 구조체에는 Downlink 관련 내용들이 작성되어 있지 않는 것으로 보아, 예상컨데 아직 구현이 되어있지 않는 것이 아닌가 생각된다.
그렇기 떄문에, 완전한 Chirpstack을 구성하기 위해 MQTT 프로토콜을 Integration 으로 사용한다.
이를 mqtt-integration 이라 칭하고, 아래와 같은 설정으로 배포한다.
3. Chirpstack Network Server, Application Server 배포
이제 Chirpsatck의 메인인 Network Server와 Application Server 배포를 위한 준비들을 모두 마쳤으니, 해당 서버들을 배포한다.
마무리
아래처럼 chirpstack 네임스페이스에 모든 파드들이 성공적으로 배포되었다면, Chirpstack 서버쪽 인프라 구축은 완료되었다.
이제 앞으로, 로라 게이트웨이 쪽 인프라를 구축하고, 해당 게이트웨이를 Chirpstack 에 등록하는 단계로 진행될 예정이다.
'공부 > LORA' 카테고리의 다른 글
01. LORA란 무엇인가? (0) | 2024.07.19 |
---|