Wiznet makers

Sunny_

Published July 16, 2026 ©

140 UCC

3 WCC

0 VAR

0 Contests

0 Followers

0 Following

Original Link

Fluidity

IOT Data Aggregator

COMPONENTS
PROJECT DESCRIPTION

PROJECT DESCRIPTION

Fluidity는 여러 장치에서 발생하는 Serial 및 UDP 데이터를 하나의 서버로 수집하고, 웹 대시보드와 터미널 화면에서 실시간으로 확인할 수 있도록 만든 오픈소스 IoT 데이터 통합 플랫폼입니다.

센서, 출입문 접점, 통신 장비와 같은 분산 장치의 데이터를 중앙에서 모니터링할 수 있으며, 단순 데이터 표시뿐만 아니라 장치의 Heartbeat가 중단되거나 특정 이벤트가 반복될 때 알림을 발생시키는 기능도 제공합니다.

현재 실제 운용 사례에서는 여러 지역에 분산된 Sierra Radio Systems Controller의 통신 데이터를 수집하고 상태를 감시하는 용도로 활용되고 있습니다. 그러나 데이터 형식이 특정 장비에 제한되지 않아 산업용 시리얼 장치, 센서 노드, 출입 감지 장치 등에도 확장할 수 있습니다.

Sierra Radio Systems Controller

KEY FEATURES

Multi-device Data Aggregation

하나의 Agent가 여러 Serial 장치와 UDP 장치의 데이터를 동시에 수집할 수 있습니다.

Real-time Monitoring

SSE를 이용하여 데이터가 들어오는 즉시 웹 대시보드와 터미널에 표시합니다.

Device Liveness Monitoring

주기적인 Heartbeat를 이용하여 장치가 정상적으로 동작하고 있는지 확인할 수 있습니다.

Event-based Alerting

장치 통신 중단이나 특정 이벤트 발생 시 외부 알림 프로그램을 실행할 수 있습니다.

Offline Local Operation

외부 CDN이나 Cloud Service 없이 로컬 LAN 내부에서 전체 시스템을 운영할 수 있습니다.

Extensible Plugin Structure

Serial 장치와 데이터 형식에 맞는 Collector 및 표시 Plugin을 추가할 수 있습니다.

Hardware-independent Architecture

W5500 기반 AVR뿐만 아니라 ESP32, M5Stack, ARM, Linux 및 MicroPython 장치를 동일한 데이터 수집 시스템에 연결할 수 있습니다.SYSTEM ARCHITECTURE

Fluidity는 다음과 같은 구성 요소로 이루어집니다.

1. Device

현장 장치는 센서값이나 장치 상태를 Serial 또는 UDP 방식으로 전송합니다.

프로젝트에는 다음과 같은 장치 예제가 포함되어 있습니다.

  • Arduino/AVR + W5500 또는 W5100 Ethernet Shield
  • ESP32 및 M5Stack
  • ARM 기반 마이크로컨트롤러
  • MicroPython 및 CircuitPython 장치
  • 일반 Serial 통신 장비

2. Fluidity Agent

Agent는 현장 장치와 Fluidity 서버 사이에서 게이트웨이 역할을 합니다.

Serial Port, Log File 및 UDP Packet을 수집하고, 수신된 데이터를 검증한 뒤 HTTPS와 API Key를 이용해 Web Service로 전달합니다.

마이크로컨트롤러는 복잡한 TLS, JSON 또는 HTTP 통신을 직접 처리하지 않고 작은 Binary UDP Packet만 전송하면 됩니다. 보안 연결과 데이터 변환은 Agent가 담당하므로 메모리와 처리 성능이 제한된 8-bit MCU에서도 사용할 수 있습니다.

3. Web Service

Fluidity

Web Service는 Agent에서 전달받은 데이터를 FIFO 방식의 실시간 데이터 버퍼에 저장합니다.

이후 Server-Sent Events, 즉 SSE를 사용하여 연결된 웹 대시보드와 터미널 클라이언트에 데이터를 실시간으로 전송합니다.

4. Dashboard and TUI

사용자는 웹 브라우저 또는 터미널 기반 인터페이스에서 장치별 데이터를 확인할 수 있습니다.

각 장치는 Site 이름으로 구분되며 다음 정보를 확인할 수 있습니다.

  • 센서 및 장치 상태
  • 장치별 실시간 데이터
  • 마지막 데이터 수신 상태
  • 장치 연결 여부
  • 데이터 필터링
  • 간단한 추세 표시
  • 데이터 종류에 따른 Syntax Highlighting

인터넷 CDN과 같은 외부 서비스에 의존하지 않기 때문에 모든 구성 요소를 인터넷 연결 없이 로컬 네트워크에서 독립적으로 운용할 수도 있습니다.

5. Watcher

Watcher는 Fluidity의 실시간 데이터 스트림을 별도로 감시하는 프로그램입니다.

설정된 문자열이나 이벤트 패턴을 확인하고 다음과 같은 상황에서 외부 알림 프로그램을 실행할 수 있습니다.

  • 장치 Heartbeat 중단
  • 특정 오류 메시지 발생
  • 동일 이벤트의 비정상적인 반복
  • 장치의 통신 두절
  • 센서 상태 변화

Watcher가 Web Service와 독립적으로 동작하기 때문에 모니터링 대상과 분리된 장애 감시 시스템을 구성할 수 있습니다.

HOW IT WORKS

전체 데이터 흐름은 다음과 같습니다.

W5500 Device → UDP → Fluidity Agent → HTTPS → Web Service → SSE → Web Dashboard / TUI

현장 마이크로컨트롤러는 센서값과 장치 정보를 Fluidity 전용 Binary Packet으로 구성합니다.

Packet에는 다음 정보가 포함됩니다.

  • Site Name
  • Plugin Name
  • Device Description
  • Device Sequence Number
  • Timestamp
  • 최대 4개의 데이터 필드
  • 데이터 표시 스타일
  • 선택적 인증 정보

장치는 이 Packet을 UDP로 Agent의 기본 Port인 17996번으로 전송합니다. Agent는 Packet의 크기, Magic Number, 데이터 형식 및 인증 정보를 검사한 후 일반 Fluidity 데이터로 변환합니다.

ROLE OF WIZNET W5500

이 프로젝트에서 W5500은 AVR 기반 마이크로컨트롤러에 안정적인 유선 Ethernet 통신 기능을 제공합니다.

Arduino Uno와 같은 8-bit MCU는 메모리와 처리 성능이 제한적이기 때문에 TLS, HTTP, JSON 등의 네트워크 기능을 모두 직접 처리하기 어렵습니다.

Fluidity는 이러한 문제를 해결하기 위해 W5500 장치에서는 작은 UDP Packet만 전송하고, 복잡한 HTTPS 연결과 인증은 상위 Agent가 처리하는 구조를 사용합니다.

따라서 W5500은 다음 역할을 담당합니다.

  • AVR 장치의 유선 네트워크 연결
  • UDP Telemetry Packet 전송
  • DHCP 및 Static IP 연결
  • Wi-Fi가 불안정한 장소에서의 안정적인 장치 연결
  • 기존 센서 및 접점 장치의 IP 네트워크 전환

W5500의 Hardware TCP/IP Stack을 활용하므로 MCU가 네트워크 프로토콜을 소프트웨어로 모두 처리할 필요가 없으며, 저사양 MCU에서도 지속적인 상태 보고와 Heartbeat 전송을 구현할 수 있습니다.

LIGHTWEIGHT UDP PROTOCOL

Fluidity는 마이크로컨트롤러의 부담을 줄이기 위해 자체적으로 정의한 Packed Binary Struct를 사용합니다.

일반적인 JSON 기반 IoT Packet보다 크기가 작으며, Field 1개를 사용하는 Compact Packet은 약 103Byte로 구성할 수 있습니다.

Signed Packet도 최대 약 237Byte이므로 Arduino Uno의 2KB SRAM 환경에서도 사용할 수 있도록 설계되었습니다.

이 통신 방식은 다음과 같은 특징을 가집니다.

  • JSON Parsing 불필요
  • MQTT Broker 불필요
  • Device-side TLS 불필요
  • 작은 메모리 사용량
  • 낮은 네트워크 Overhead
  • 단방향 Telemetry에 최적화
  • Packet 손실을 허용하는 실시간 모니터링 구조

Fluidity는 장치 제어나 Guaranteed Delivery가 필요한 시스템보다는 센서 데이터, 상태 정보 및 Heartbeat를 빠르게 수집하는 용도에 적합합니다. 프로젝트에서도 TCP, MQTT, CoAP 및 DTLS는 현재 범위에 포함하지 않는다고 명시하고 있습니다.

POSSIBLE APPLICATIONS

Fluidity는 다음과 같은 시스템에 활용할 수 있습니다.

  • 산업용 장비 상태 모니터링
  • 공장 내 Serial 장치 통합
  • 출입문 및 Gate 상태 감시
  • 통신 장비 Heartbeat 모니터링
  • 원격 기지국 상태 확인
  • 온도·습도·환경 센서 수집
  • 서버 및 장비 Log 통합
  • 농업 및 온실 센서 네트워크
  • 로컬 네트워크 기반 설비 모니터링
  • 레거시 AVR 장치의 Ethernet IoT 전환

CONCLUSION

Fluidity는 단순한 센서 예제가 아니라 장치 데이터 수집, Protocol Gateway, 실시간 서버, 웹 대시보드, 터미널 클라이언트 및 장애 알림 기능을 하나의 시스템으로 구성한 오픈소스 IoT 모니터링 플랫폼입니다.

특히 W5500 기반 Arduino 및 AVR 장치는 복잡한 IoT Protocol을 직접 구현하지 않고도 작은 UDP Packet만으로 시스템에 참여할 수 있습니다.

W5500의 안정적인 유선 Ethernet 연결과 Fluidity Agent의 Protocol 변환 구조를 결합함으로써, 저사양 마이크로컨트롤러부터 다수의 산업용 장치까지 하나의 중앙 모니터링 환경으로 통합할 수 있다는 점이 이 프로젝트의 핵심 가치입니다.

Documents
Comments Write