본문 바로가기
Computer Science/CS 지식

[Thinksboard] Platform Integrations 이해하기

by rnasterofmysea 2025. 5. 16.
728x90
반응형

Platform Integrations

  • 센서 장치별로 나눠서 데이터를 분할하는 데이터 파이프라인을 구출 할 수 있다.
  • 받은 데이터를 처리해서 외부 플랫폼으로 특정 포맷으로 전송할 수 있다.

 

참고 문헌

Platform Integrations

 

Platform Integrations

Platform Integrations Documentation

thingsboard.io

 

주요 내용

> Converter type:

    Uplink: 디바이스 → thinksboard

    Donwlink: thinksboard → 서드파티 및 외부 플랫폼

    Intergration Type: Uplink, Downlink 의 통신 방식

    Advanced decoding paramters: 이 리스트에 추가된 key들은 metadata에서 추출한 값이 기존 device attribute telemetry     없는 경우에만 저장됩니다.

 

 

Main decoding configuration에서 할 수 있는 것

 

1. Payload 해석 (Decoding)

  • payload는 바이너리 혹은 문자열 등 다양한 형식으로 수신됩니다.
  • 이를 decodeToString(payload) 또는 decodeToJson(payload)로 해석 가능.

 

var payloadStr = decodeToString(payload); // 문자열로 해석

var data = decodeToJson(payload);         // JSON으로 해석

 


2. 디바이스 정보 정의

  • ThingsBoard에 등록할 deviceName, deviceType 지정

 

var deviceName = "Sensor-" + metadata.devEUI;

var deviceType = "temperature-sensor";

 


3. 속성(attributes) 및 텔레메트리(telemetry) 데이터 지정

 

 

var attributes = {

    model: "T1000",

    version: "1.0"

};

 

var telemetry = {

    temperature: data.temp,

    humidity: data.hum

};

4. 결과 객체 반환

  • 반환 형식은 아래 구조여야 함:

 

return {

    deviceName: deviceName,

    deviceType: deviceType,

    attributes: attributes,

    telemetry: telemetry

};

 

또는, assetNameassetType을 쓸 수도 있음 (자산 자동 생성 시)


5. metadata 기반 조건 분기 처리

  • metadata에는 포트 번호, LoRa App ID, device EUI 등 외부 정보가 담겨 있어, 다양한 포맷 분기 처리 가능
if (metadata.port === 2) {

    // port 2이면 습도 센서로 해석

}

 


대표적인 유즈케이스 예시

Use case 동작 내용
LoRaWAN 포트별 디코딩 metadata.port로 포맷 분기
장치별 디코딩 metadata.devEUI deviceName 구성
다양한 형식 처리 payload base64, HEX, JSON일 때 대응
여러 값 동시 저장 온도, 습도, 배터리 값을 telemetry로 저장

 

센서 장치별로 나눠서 데이터를 분할하는 데이터 파이프라인을 구출 할 수 있다.

 

 

ThingsBoard PE Edge

 “Edge는 현장에 설치하는 미니 ThingsBoard 서버이며, 중앙 서버(Cloud/PE)와 자동으로 동기화되도록 구성합니다.”

1. [중앙 서버]에서 Edge 등록

  1. ThingsBoard PE(서버) 로그인
  2. 왼쪽 메뉴에서 Edge → + 버튼
  3. Edge 이름, 설명 입력 후 저장
  4. 생성되면 Access Token 확인 가능 → Edge 장비에서 이 토큰 사용

📌 여기서 생성된 Edge대기 중상태이며, 아직 연결은 안 되어 있음.


2. [현장] ThingsBoard Edge 설치

  1. Ubuntu 서버나 장비에 다음 명령으로 Edge 설치:
# GPG 키 및 repo 추가

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

echo "deb <https://repo.thingsboard.io/deb/> stable main" | sudo tee /etc/apt/sources.list.d/thingsboard.list

sudo apt update

 

# 설치

sudo apt install thingsboard-edge

 

1. 설정 파일 열기:

 

sudo nano /etc/thingsboard-edge/conf/thingsboard-edge.conf

 

2. 아래 항목 수정:

 

cloud.rpc.host=<<중앙 서버 IP>>

cloud.rpc.port=7070

cloud.rpc.enabled=true

cloud.rpc.access_token=<<중앙에서 복사한 엣지 Access Token>>

 

3. 실행:

 

sudo service thingsboard-edge start

 

4. 로그 확인:

 

sudo journalctl -u thingsboard-edge -f

 

☑ Edge가 중앙 서버에 연결되면 상태가 "ONLINE"으로 바뀜

3. Edge에서 장치(Device) 생성/운영

현장 Edge UI (http://localhost:8080) 접속 후:

  1. 로그인 (기본: tenant@thingsboard.org / tenant)
  2. 장치(Device) 생성
  3. 텔레메트리 테스트 전송
  4. 알람, Rule Chain 구성 가능

💡 이후 해당 정보는 자동으로 중앙 서버에 동기화됨!


4. [중앙 서버]에서 Edge 확인 및 관리

  1. 중앙 서버의 Edge 메뉴에서 상태가 "ONLINE"으로 보임
  2. 해당 Edge를 클릭하면:

5. Edge Rule Chain 배포하는 방법

  1. 중앙 서버에서 Rule Chain 생성
  2. 해당 Rule Chain Edge "배포(assign)":

 


Rule Chains → 원하는 Rule Chain → |||| → Assign to Edge

 

💡 배포된 Rule Chain Edge에서 로컬로 실행됨


 

6. 실제 활용 예시

예시 동작 흐름
CO2 센서 → Edge 센서 → Edge MQTT 전송 → Edge에서 Rule Chain으로 알람 발생중앙 서버에 알람 동기화
공장 A의 모든 장치 → Edge A 현장 장치들은 인터넷 없어도 Edge A에서 계속 동작 가능
현장 대시보드 Edge UI에서 실시간 현장 모니터링 가능 + 중앙에서도 동기화된 화면 제공

운영 팁

항목
데이터 손실 방지 Edge는 자체 DB로 일시 저장 후 재전송 (오프라인 중에도 안전)
현장 테스트 로컬 대시보드로 장치 상태 확인 가능
업데이트 중앙에서 Rule Chain, 장치 구성 변경 후 Edge에 배포 가능

 

728x90
반응형