๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IoT ๐Ÿ /Homebridge

Homebridge ์ „๊ธฐ๋งคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘, ๋ธ”๋ฃจํˆฌ์Šค ํŒจํ‚ท ๋ถ„์„ - 1

by GeekSean 2025. 12. 7.
๋ฐ˜์‘ํ˜•

[IoT ๐Ÿ /Homebridge] - Homebridge ์ „๊ธฐ๋งคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘, ๋ธ”๋ฃจํˆฌ์Šค ํŒจํ‚ท ๋ถ„์„ - 1

[IoT ๐Ÿ /Homebridge] - [JS] Homebridge ์ „๊ธฐ๋งคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘, ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌํ˜„ - 2

 

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๋ธ”๋ฃจํˆฌ์Šค ํ•™์Šต์˜ ๋ชฉ์ ์œผ๋กœ,

ํ†ต์‹  ์ค‘์ธ ํŒจํ‚ท์„ ์Šค๋‹ˆํ•‘ํ•ด ๋ถ„์„ํ•˜๋Š” ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์„ ์‹œ๋„ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ „์ฒด ์ฝ”๋“œ๋Š” ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ณ , ๊ณผ์ •์˜ ์ผ๋ถ€๋งŒ ๊ณต์œ ๋ฅผ ํ•˜๊ฒ ๋‹ค.

 

ํ”„๋กœ์ ํŠธ์˜ ์ตœ์ข… ๋ชฉํ‘œ๋Š”, ๊ตฌํ˜• ์ „๊ธฐ๋งคํŠธ๋ฅผ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์™€ ๋ธ”๋ฃจํˆฌ์Šค ํ†ต์‹ ์„ ์‹œ์ผœ

Homebridge ์„œ๋ฒ„์—์„œ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‹ค์ œ๋กœ ์–ด๋–ค ํŒจํ‚ท์œผ๋กœ ์ „๊ธฐ๋งคํŠธ๋ฅผ ์ œ์–ดํ•˜๋Š”์ง€ ๋กœ๊ทธ๋ฅผ ์ถ”์ถœํ•ด๋‚ด์•ผ ํ•œ๋‹ค.

์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ Android ํฐ์˜ ๋ธ”๋ฃจํˆฌ์Šค HCI ์Šค๋ˆ• ๊ธฐ๋ก์„ ์ด์šฉ ํ•  ๊ฒƒ์ด๋‹ค.

 

 

๋ธ”๋ฃจํˆฌ์Šค

 

์ž‘์—…์— ์•ž์„œ ๋ธ”๋ฃจํˆฌ์Šค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ๋ธ”๋ฃจํˆฌ์Šค ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌ์กฐ์ด๋‹ค.

https://ieeexplore.ieee.org/document/9301323

 

๊ทธ์ค‘ ์ด๋ฒˆ ๊ฐœ๋ฐœ์—์„œ ์“ฐ์ผ ๋ ˆ์ด์–ด์™€ ์—ญํ• ์„ ๊ฐ„๋‹จํžˆ ํ‘œ๋กœ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

Layer ์—ญํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ์˜ ์—ญํ• 
GAP
๋‹ค๋ฅธ ์žฅ์น˜๋ฅผ ๋ฐœ๊ฒฌ ๋ฐ ์—ฐ๊ฒฐ ์„ค์ •
์ „๊ธฐ๋งคํŠธ ํ˜ธ์ถœ ๋ฐ ํƒ์ƒ‰, ๋ฌด์„  ๋งํฌ ์„ค์ •
GATT
์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ™”, ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์ •์˜
์—ฐ๊ฒฐ ๋ฐ ์ œ์–ด ํŠน์„ฑ(UUID) ํ˜ธ์ถœ (์‹ค์ œ ํŒจํ‚ท ๊ตฌ์กฐํ™”)
SMP
BLE ํ†ต์‹ ์˜ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ ˆ์ฐจ ์ •์˜
-
ATT
GATT์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์“ฐ๊ณ , ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ํ†ต์‹  ์ ˆ์ฐจ ๋ฐ ํ˜•์‹์„ ์ •์˜
ํŠน์„ฑ(UUID)์— ๊ณ ์œ ๋ฒˆํ˜ธ ํ• ๋‹น, ์ „๊ธฐ๋งคํŠธ ํ˜„์žฌ ์ƒํƒœ notification ์ˆ˜์‹ 
L2CAP
GATT์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํŒจํ‚ท์˜ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋…ผ๋ฆฌ์  ์ฑ„๋„ ์ œ๊ณต
-
LL
์žฅ์น˜๊ฐ„์˜ ๋งํฌ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์œ ์ง€
Homebridge ์„œ๋ฒ„์™€ ์ „๊ธฐ๋งคํŠธ ๊ฐ„์˜ connect
PHY
์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌด์„  ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ „์†กํ•˜๋Š” ๋ ˆ์ด์–ด
-

 

 

ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ์ฐพ๊ธฐ

 

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ,

๋‚ด๊ฐ€ ์ œ์–ดํ•  ์—ฐ๊ฒฐ, ์˜จ๋„, ํƒ€์ด๋จธ์˜ ํŒจํ‚ท ์ „์†ก์‹œ ์‚ฌ์šฉ๋˜๋Š” ํŠน์„ฑ์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

nRF Connect ์•ฑ์„ ์ด์šฉํ•˜์—ฌ ์ œ์–ด์šฉ ํŠน์„ฑ(UUID)์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘์‹œ ๋””๋ฐ”์ด์Šค๋ฅผ ์ง์ ‘ ์ง€์ •ํ•ด ์ค„ ๊ฒƒ์ด๋ฏ€๋กœ

๊ธฐ๊ธฐ์˜ MAC ์ฃผ์†Œ๋„ ๋”ฐ๋กœ ๋ฉ”๋ชจํ•ด๋‘์—ˆ๋‹ค.

 

 

๋ธ”๋ฃจํˆฌ์Šค HCI ์Šค๋ˆ„ํ”„

 

์ด์ œ ์ œ์–ด์šฉ UUID์— ์–ด๋–ค ํŒจํ‚ท์ด ๋‹ด๊ฒจ์ ธ ์ œ์–ด๋ฅผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ด์•ผ ํ•œ๋‹ค.

 

Android ๊ธฐ๊ธฐ์˜ ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ๋ฅผ ์ผœ๊ณ , ๋ธ”๋ฃจํˆฌ์Šค HCI ์Šค๋ˆ„ํ”„ ๋กœ๊ทธ ์‚ฌ์šฉ

์‹ค์ œ ๋งคํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์˜จ๋„ ์กฐ์ ˆ๋„ ์ „๋ถ€ ์‹œ๋„ํ•˜๊ณ , ํƒ€์ด๋จธ ์กฐ์ ˆ๋„ ์‹œ๋„ ํ•ด๋ณด๋ฉฐ

๋ธ”๋ฃจํˆฌ์Šค๋กœ ํŒจํ‚ท์„ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ๋ก์„ ๋‚จ๊ฒจ์ฃผ์—ˆ๋‹ค.

 

๊ทธํ›„, ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ(์ „์ฒด) ์ „์†ก์œผ๋กœ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ณ ,

์••์ถ•๋œ ๋ฆฌํฌํŠธ ํŒŒ์ผ ์•ˆ์˜ bluetooth ํด๋”์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. (๊ธฐ๊ธฐ๋งˆ๋‹ค ์ƒ์ด)

 

๊ทธ๋ ‡๊ฒŒ ๋ฐ›์•„์˜จ ๋กœ๊ทธ๋Š” PC์—์„œ Wireshark ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ถ„์„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

https://www.wireshark.org/download.html

 

Wireshark • Go Deep | Download

Wireshark: The world's most popular network protocol analyzer

www.wireshark.org

 

ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ ค๋ณด๋‹ˆ, ๊ทธ ์งง์€ ์‹œ๊ฐ„์— ๋กœ๊ทธ๊ฐ€ 3์ฒœ์—ฌ๊ฐœ ์”ฉ์ด๋‚˜ ์ฐํ˜”๋‹ค.

๋กœ๊ทธ๋“ค์„ ์ญ‰ ๋ณด๋ฉด์„œ ์‹ค์ œ ์ „๊ธฐ๋งคํŠธ์™€ ํ†ต์‹ ํ•œ ๋กœ๊ทธ๋ฅผ ์ฐพ์•„์„œ ๋ถ„์„์„ ์‹œ์ž‘ํ–ˆ๋‹ค.

์˜จ๋„ ์ œ์–ด๋‚˜, ํƒ€์ด๋จธ ์ œ์–ด๋กœ ์˜์‹ฌ๋˜๋Š” ํŒจํ‚ท๋“ค์„ ์‹น ๋‹ค ๋ฉ”๋ชจ๋ฅผ ํ•ด ๋‘์—ˆ๋‹ค.

 

 

ํŒจํ‚ท ๋ถ„์„

 

์ด์ œ ํŒจํ‚ท ์ˆ˜์ง‘์„ ์ „๋ถ€ ๋งˆ์ณค๊ณ , ๋ชจ๋“  ๋™์ž‘์˜ ํŒจํ‚ท์„ ์•Œ์•„ ๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋‹ค์Œ์€ ํŒจํ‚ท์˜ ๊ทœ์น™์„ฑ์„ ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค.

์˜จ๋„์™€ ํƒ€์ด๋จธ ํŒจํ‚ท์€ ์ง๊ด€์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ ๋˜์–ด ์žˆ์—ˆ๊ณ ,

[data, checksum, data, checksum] ํŒจํ„ด์œผ๋กœ ๋‘ ์Œ์”ฉ ์ง์ง€์–ด์ ธ์„œ ๋‚˜์™”๋‹ค.

 

$Checksum=0xFF-DataByte$โ€‹

checksum ๊ทœ์น™์€ ์ „์†กํŒจํ‚ท๊ณผ ์ฒดํฌ์„ฌ ํ•ฉ์‚ฐ์‹œ 255(0xFF)๊ฐ€ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ฒŒํ•˜๋Š”

1์˜ ๋ณด์ˆ˜ ํ•ฉ์‚ฐ(One's complement sum)์„ ์ด์šฉํ•œ ๊ฒƒ ๊ฐ™์•˜๋‹ค.

๋”ฐ๋ผ์„œ ์ œ์–ด ํŒจํ‚ท์ด 01~10์ผ์‹œ, ์ฒดํฌ์„ฌ์€ FE~F5๋กœ ์—ญ์ˆœ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

Homebridge ์„œ๋ฒ„ ๋ธ”๋ฃจํˆฌ์Šค ์„ค์ •

 

์ด๋กœ์จ, ์‹ค์ œ ๋ธ”๋ฃจํˆฌ์Šค๋กœ ๋ณด๋‚ผ payload ๊ทœ์น™์€ ์™„์„ฑ ๋˜์—ˆ๋‹ค.

Homebridge ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค๊ธฐ ์ „์—, ์„œ๋ฒ„์˜ ๋ธ”๋ฃจํˆฌ์Šค ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

ํ•„์ž์˜ Homebridge ์„œ๋ฒ„๋Š” ๋ฆฌ๋ˆ…์Šค ์ด๋ฏ€๋กœ, ๋ฆฌ๋ˆ…์Šค ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

 

๋จผ์ €, ์‚ฌ์šฉํ•  ๋ธ”๋ฃจํˆฌ์Šค ๋ชจ๋“ˆ์„ ์„ค์น˜ ํ•œ ๋’ค,

sudo apt install bluetooth bluez libbluetooth-dev libudev-dev
 

 

which node ๋ช…๋ น์–ด๋กœ node.js๊ฐ€ ์‹ค์ œ ์„ค์น˜๋œ ๊ฒฝ๋กœ๋กœ

๋ธ”๋ฃจํˆฌ์Šค ๊ถŒํ•œ ์„ค์ •์„ ํ•„์ˆ˜์ ์œผ๋กœ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

sudo setcap cap_net_raw+eip /usr/bin/node
 

 

 

์ด์ œ, ๋ชจ๋“  ์„ค์ •์€ ๋งˆ์ณค๋‹ค.

๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์—์„œ ์‹ค์ œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌํ˜„ ํ›„,

์ „๊ธฐ๋งคํŠธ์˜ ์ œ์–ด ๋ถ€๋ถ„์„ ํ™ˆ๋ธŒ๋ฆฟ์ง€ ์•…์„ธ์„œ๋ฆฌ์— ๋งคํ•‘ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

์›๋ณธ ๊ฒŒ์‹œ๊ธ€

https://blog.naver.com/101artspace/224052655237

 

Homebridge ์ „๊ธฐ๋งคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘, ๋ธ”๋ฃจํˆฌ์Šค ํŒจํ‚ท ๋ถ„์„ - 1

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๋ธ”๋ฃจํˆฌ์Šค ํ•™์Šต์˜ ๋ชฉ์ ์œผ๋กœ, ํ†ต์‹  ์ค‘์ธ ํŒจํ‚ท์„ ์Šค๋‹ˆํ•‘ํ•ด ๋ถ„์„ํ•˜๋Š” ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์„ ์‹œ...

blog.naver.com

๋ฐ˜์‘ํ˜•