---
title: "micro bacnet bridge"
url: "https://maker.wiznet.io/Lihan__/projects/micro-bacnet-bridge/"
markdown_url: "https://maker.wiznet.io/Lihan__/projects/micro-bacnet-bridge/md"
type: "UCC: User Created Content"
author: "fishloa"
author_url: "https://github.com/fishloa/micro-bacnet-bridge"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "fishloa"
original_url: "https://github.com/fishloa/micro-bacnet-bridge"
published: "2026-03-20"
language: "en"
likes: 0
views: 286
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# micro bacnet bridge

> BACnet MS/TP to BACnet/IP bridge running on WIZnet W5500-EVB-Pico-PoE (RP2040) or W5500-EVB-Pico2 (RP2350).

Original author: fishloa (source: https://github.com/fishloa/micro-bacnet-bridge)

## Article

## 01 — 이 프로젝트는 무엇인가?

빌딩 자동화 시스템(BAS)에는 오래된 문제가 있습니다. 건물 안의 냉난방기, 환기 팬, 조명, 화재 경보기들은 **BACnet MS/TP**라는 프로토콜로 통신합니다. RS-485 시리얼 케이블로 연결되는 이 프로토콜은 수십 년 된 레거시 표준입니다.

반면 현대 건물 관리 소프트웨어와 클라우드 시스템은 **BACnet/IP**를 씁니다. 이더넷 기반의 현대적 프로토콜입니다.

이 두 프로토콜은 서로 직접 통신하지 못합니다. 그 사이를 잇는 브릿지 장비가 필요한데, 상용 BACnet 브릿지는 수백만 원을 호가합니다.

이 프로젝트는 **WIZnet W5500-EVB-Pico** 보드 하나로 그 브릿지를 구현합니다. PoE 지원 RJ45 케이블 하나만 꽂으면 전원과 네트워크가 동시에 해결됩니다.

---

## 02 — 시스템은 어떻게 동작하나?

![](https://maker.wiznet.io/upload/ckeditor5/1005916983%5F1774268698%2Epng)

```plaintext
[BACnet MS/TP 기기들]
  냉난방기 / 환기팬 / 조명 / 화재경보기
    ↕  RS-485 시리얼 (SP3485 트랜시버)
[W5500-EVB-Pico 브릿지]
  Core 1 (C) : MS/TP 마스터 FSM
  Core 0 (Rust) : 이더넷 + 모든 네트워크 서비스
    ↕  W5500 유선 이더넷 (PoE)
[BACnet/IP 네트워크]
  건물 관리 소프트웨어 / SCADA / Home Assistant
```

이 브릿지의 핵심 설계는 **듀얼코어 분리**입니다. RP2040/RP2350의 두 개 코어를 각각 다른 역할로 완전히 분리했습니다.

**Core 1 (C언어 / bacnet-stack)** RS-485 위의 MS/TP 마스터로 동작합니다. 현장 기기들과 직접 통신하며 포인트 값을 읽고 씁니다.

**Core 0 (Rust / embassy-rs)** W5500으로 BACnet/IP, HTTP, MQTT, mDNS, SNMP, NTP, Syslog를 동시에 처리합니다. 두 코어는 공유 링 버퍼와 스핀락으로 데이터를 주고받습니다.

![](https://maker.wiznet.io/upload/ckeditor5/1005916983%5F1774269374%2Epng)

**폴리글랏 프로그래밍** - 각 목적에 가장 적합한 언어를 선택해 조합하는 방식

정밀도(C): 수십 년간 검증된 C 라이브러리로 마이크로초(ms) 단위의 까다로운 MS/TP 통신 타이밍을 완벽하게 보장합니다.

보안성(Rust): 해킹이나 버그에 취약한 외부 네트워크(IP) 영역을 Rust로 방어하여 시스템 전체의 안정성을 극대화합니다.

효율성: 기존 자산(C 스택)은 그대로 쓰면서, 최신 기술(Rust 비동기)을 결합해 수백만 원짜리 장비급 성능을 단돈 만 원대 보드로 구현합니다.

---

## 03 — 왜 W5500-EVB-Pico인가?

### 🔷 PoE — 케이블 하나로 전원 + 네트워크

건물 자동화 현장에서 별도 전원 공급은 번거롭습니다. 천장 위, 덕트 옆, 전기실 구석에 설치되는 브릿지 장치에 전원 콘센트를 따로 연결하기 어렵습니다. W5500-EVB-Pico-PoE는 RJ45 케이블 하나로 802.3af PoE 전원과 이더넷을 동시에 공급받습니다. 설치가 극적으로 단순해집니다.

### 🔷 W5500 하드웨어 TCP/IP 스택

BACnet/IP는 UDP 47808 포트를 사용하는 실시간 프로토콜입니다. RP2040의 소프트웨어 TCP/IP 스택으로 처리하면 MS/TP 마스터 타이밍에 영향을 줄 수 있습니다. W5500의 하드웨어 스택이 네트워크 처리를 MCU에서 분리해 실시간성을 보장합니다.

### 🔷 듀얼코어 — MS/TP 타이밍을 지키기 위해

MS/TP 프로토콜은 토큰 패싱 방식으로 마이크로초 단위 타이밍이 중요합니다. 네트워크 처리와 같은 코어에서 실행하면 타이밍이 깨집니다. Core 1 전체를 MS/TP 전용으로 격리한 설계가 이 문제를 해결합니다.

|  | 소프트웨어 TCP/IP + 단일 코어 | W5500 + 듀얼코어 분리 |
| --- | --- | --- |
| MS/TP 타이밍 | 간섭 가능 | 격리 보장 |
| PoE 지원 | 별도 전원 필요 | RJ45 하나로 해결 |
| 네트워크 부하 | MCU 점유 | 하드웨어 오프로드 |

---

## 04 — 핵심 구성 요소

### 🏗️ W5500-EVB-Pico-PoE / W5500-EVB-Pico2

WIZnet이 만든 RP2040/RP2350 기반 개발 보드입니다. W5500 이더넷 칩과 802.3af PoE 회로가 내장되어 있습니다. RS-485 트랜시버(SP3485)를 UART1에 연결하면 MS/TP 마스터로 동작합니다.

### 🦀 Rust + embassy-rs (Core 0)

비동기 임베디드 프레임워크 embassy-rs로 작성된 Core 0 펌웨어입니다. BACnet/IP, HTTP 서버, MQTT, mDNS, SNMP, NTP, Syslog, OTA 업데이트를 단일 비동기 런타임에서 동시 처리합니다. `bridge-core` 라이브러리는 `no_std` 환경에서 호스트(Mac/Linux)에서도 테스트 가능하도록 설계되어 287개 단위 테스트를 포함합니다.

### ⚙️ C + bacnet-stack (Core 1)

검증된 오픈소스 BACnet C 라이브러리를 Core 1에서 실행합니다. MS/TP 마스터 FSM이 RS-485 위에서 현장 기기들과 직접 통신합니다.

### 🖥️ SvelteKit 웹 대시보드

브라우저에서 접속하는 실시간 관리 UI입니다. Server-Sent Events(SSE)로 포인트 값이 실시간으로 업데이트되고, 변경된 값은 초록색으로 깜빡입니다. 포인트 쓰기, 스케일/오프셋 설정, MQTT Home Assistant 연동까지 웹에서 모두 처리합니다.

### 📡 MQTT + Home Assistant 자동 발견

포인트 값을 MQTT로 발행하고 Home Assistant 자동 발견 프로토콜을 지원합니다. 설정한 prefix로 토픽이 자동 생성되어 HA에서 즉시 엔티티로 나타납니다.

---

## 05 — 지원하는 네트워크 서비스

이 브릿지 하나가 제공하는 서비스 목록이 인상적입니다.

| 서비스 | 포트 | 용도 |
| --- | --- | --- |
| BACnet/IP | UDP 47808 | MS/TP ↔ BACnet/IP 브릿지 |
| HTTP | 80 | 웹 대시보드 + REST API |
| MQTT | 1883 | 포인트 값 발행 + HA 연동 |
| mDNS | 5353 | `bacnet-bridge.local` 자동 발견 |
| SNMP v2c | 161 | 네트워크 모니터링 시스템 연동 |
| NTP | - | 시간 동기화 |
| Syslog | - | 중앙 로그 서버로 로그 전송 |
| OTA | HTTP | 펌웨어 무선 업데이트 |

---

## 06 — 응용 시나리오

### 01. 중소형 빌딩 — 레거시 BAS를 클라우드로 연결

수십 년 된 MS/TP 기반 냉난방 제어 시스템을 교체하지 않고 BACnet/IP 네트워크에 연결합니다. 기존 설비를 그대로 두고 현대적인 건물 관리 소프트웨어에서 모니터링·제어할 수 있습니다. `#레거시통합` `#건물자동화` `#HVAC`

### 02. 스마트홈 고급형 — Home Assistant로 상업용 HVAC 제어

상업용 HVAC 장비의 **BACnet MS/TP를 Home Assistant에 연결**합니다. MQTT 자동 발견으로 온도, 습도, 팬 속도, 밸브 상태가 HA 엔티티로 자동 등록됩니다. `#HomeAssistant` `#스마트홈` `#HVAC`

### 03. 데이터센터 — 냉각 시스템 실시간 모니터링

서버실 냉각 장비의 BACnet 포인트를 SNMP와 MQTT로 동시에 노출합니다. 기존 네트워크 모니터링 인프라(Zabbix, Grafana)와 바로 연동할 수 있습니다. `#데이터센터` `#냉각모니터링` `#SNMP`

### 04. 병원 / 제약 시설 — 환경 데이터 이력 관리

청정실, 수술실, 약품 보관실의 온도·습도·기압 포인트를 실시간으로 수집하고 MQTT로 데이터베이스에 저장합니다. 규제 기관 제출용 환경 데이터 이력을 자동으로 구축합니다. `#병원` `#청정실` `#규제준수`

### 05. 빌딩 에너지 관리 — 소비 패턴 분석

조명, 냉난방, 환기 장비의 BACnet 포인트를 MQTT로 수집해 에너지 소비 패턴을 분석합니다. PoE 단일 케이블로 각 층에 브릿지를 설치하면 층별 에너지 모니터링이 가능합니다. `#에너지관리` `#스마트빌딩` `#탄소중립`

---

## 07 — 확장 경로

| 단계 | 내용 | 현황 |
| --- | --- | --- |
| 기본 브릿지 | MS/TP ↔ BACnet/IP 양방향 변환 | ✅ 완료 |
| 웹 대시보드 | SSE 실시간 업데이트, 포인트 쓰기 | ✅ 완료 |
| MQTT + HA | Home Assistant 자동 발견 | ✅ 완료 |
| OTA 업데이트 | HTTP로 펌웨어 무선 업데이트 | ✅ 완료 |
| Pico2 지원 | RP2350 (150MHz, 520KB RAM) | ✅ 완료 |
| SNMP / Syslog | 엔터프라이즈 모니터링 연동 | ✅ 완료 |
| BACnet COV | Change-of-Value 구독 | 🔲 예정 |
| TLS/HTTPS | 보안 통신 | 🔲 가능성 있음 |

---

## 결론

> **수백만 원짜리 상용 BACnet 브릿지를 WIZnet 보드 하나가 대체한다.**

건물 자동화 현장의 오래된 문제 — MS/TP와 BACnet/IP의 단절 — 를 PoE 한 줄로 해결합니다. Rust의 메모리 안전성과 embassy-rs의 비동기 런타임, 검증된 C bacnet-stack의 조합으로 엔터프라이즈급 안정성을 추구합니다. 287개 단위 테스트가 이를 뒷받침합니다.

클라우드 의존성이 없습니다. 모든 기능이 로컬에서 동작합니다.

- ✅ BACnet MS/TP ↔ BACnet/IP 양방향 브릿지

- ✅ PoE — RJ45 하나로 전원 + 네트워크

- ✅ 듀얼코어 분리로 MS/TP 타이밍 보장

- ✅ MQTT + Home Assistant 자동 발견

- ✅ SNMP, Syslog, mDNS, NTP, OTA 내장

- ✅ 287개 단위 테스트 포함 오픈소스 공개

- ✅ 클라우드 없는 완전 로컬 동작

---

## Q&A

**Q. BACnet이란 무엇인가요?** BACnet(Building Automation and Control Networks)은 건물 자동화 시스템을 위한 통신 표준 프로토콜입니다. ASHRAE와 ISO에서 표준화했으며 냉난방공조, 조명, 화재 경보, 엘리베이터 등 다양한 건물 설비 제어에 사용됩니다.

**Q. BACnet MS/TP와 BACnet/IP의 차이는 무엇인가요?** BACnet MS/TP는 RS-485 시리얼 케이블 위에서 동작하는 구형 프로토콜로 현장 기기 간 저속 통신에 사용됩니다. BACnet/IP는 이더넷 UDP 위에서 동작하는 현대적 프로토콜로 건물 관리 소프트웨어와 클라우드 시스템에서 주로 사용합니다. 두 프로토콜은 직접 호환되지 않아 브릿지가 필요합니다.

**Q. PoE란 무엇이고 왜 중요한가요?** PoE(Power over Ethernet)는 이더넷 케이블로 전원을 함께 공급하는 기술입니다. 건물 자동화 현장에서 브릿지 장치를 설치할 때 별도 전원 콘센트가 필요 없어 설치 비용과 복잡성을 크게 줄입니다. W5500-EVB-Pico-PoE는 802.3af 표준을 지원합니다.

**Q. 왜 Rust로 작성했나요?** 임베디드 환경에서 메모리 안전성을 컴파일 타임에 보장하기 위해서입니다. C로 작성된 MS/TP 스택과 Rust로 작성된 네트워크 스택을 듀얼코어로 분리해 각 언어의 강점을 활용했습니다. `bridge-core` 라이브러리는 하드웨어 없이 호스트에서 287개 단위 테스트를 실행할 수 있습니다.

**Q. Home Assistant와 어떻게 연동하나요?** MQTT 브로커를 통해 연동합니다. 이 브릿지는 BACnet 포인트 값을 MQTT로 발행하고 Home Assistant의 자동 발견 프로토콜을 지원합니다. 설정한 prefix로 토픽이 자동 생성되어 HA에서 별도 설정 없이 엔티티로 등록됩니다.

**Q. 클라우드 연결이 필요한가요?** 아닙니다. 모든 기능이 로컬 네트워크에서 완전히 동작합니다. 인터넷 연결 없이 웹 대시보드, MQTT, BACnet/IP 브릿지 모든 기능을 사용할 수 있습니다.

**Q. 어떤 하드웨어가 필요한가요?** WIZnet W5500-EVB-Pico-PoE(RP2040) 또는 W5500-EVB-Pico2(RP2350) 보드와 SP3485 RS-485 트랜시버가 필요합니다. PoE 지원 이더넷 스위치 또는 PoE 인젝터도 필요합니다.

---

Source: https://maker.wiznet.io/Lihan__/projects/micro-bacnet-bridge/
