์ฝ์ ํธ๋ํฝ ๋ณด๊ธฐ์์ ์์ ๋ฐ ๋์ฝ๋ฉ๋ ํ์ด๋ก๋ ํ์
as.up.forward
์ ์ด๋ฒคํธ ํ์ด๋ก๋๋ ์ฝ์์์ ํ์ ์ด ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
as.up.data.forward
์๋ frm_payload
(๋ฐ์ดํธ) ๋ฐ decoded_payload
(๊ฐ์ฒด) ํ๋๊ฐ ์์ต๋๋ค. ์ ์๋ฅผ 16์ง์๋ก ๋ณด๊ณ ํ์๋ฅผ ํค/๊ฐ ๊ฐ์ฒด๋ก ๋ณด๊ณ ์ถ์ต๋๋ค(์ฐธ๊ณ : ์ค์ฒฉ๋ ์ ์์). ํ์์. ํ์ ์ด๋ฉด ํ์ด๋ก๋๋ฅผ ๋ค์ ํ์ํ์ญ์์ค. ids.dev_addr
๋ ํ์ํฉ๋๋ค.
as.up.join.forward
์ ๊ฒฝ์ฐ ํ์ ids.join_eui
๋ฐ ids.dev_eui
๋ฅผ ํ์ํฉ๋๋ค.
์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ํ์์ด ์ง์ ๋ ์ค๋ฅ(์์ฑ์ด ์๋ message_format
)๋ฅผ ๋นจ๊ฐ์ ๋๋ ๊ฐ์กฐ ํ์๋ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค. ์ฐธ์กฐ #1967)
๋ฆฌ์กํธ ๋งค์ง
๊ฒํ ๊ฐ๋ฅ
์ฝ๋ํด์ฃผ์ธ์
"ํ์ํ"์ผ๋ก ์ถ๊ฐํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
AWS ์์ฅ์์ v3๋ฅผ ํ๊ฐํ ๋ ๊ฐ์ฅ ๋จผ์ ์์์ฐจ๋ฆฐ ๊ฒ ์ค ํ๋์์ต๋๋ค.
๋ฌผ์ด๋ด์ ์ฃ์กํฉ๋๋ค. ์ธ์ ์ธ์ง ์ ์ ์๋์?
@industrialinternet ๊ด์ฌ์ ๋ณด์ฌ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. 2์ ๋ง์ผ์คํค์ผ๋ก ์ค์ ๋์ด ์์ผ๋ฏ๋ก ์ด๋ฒ ๋ฌ์ ์๋ฃํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์ด ํธ๋ฅผ ๊ตฌ๋ ํ๊ณ ๋งจ ์์ ์๋ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ์ต์ํ ๋ฆด๋ฆฌ์ค์ ๊ฒฝ์ฐ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฒญํ์ฌ ์ธ์ ์ด๋ค ๋ฆด๋ฆฌ์ค์ ๋์ฐฉํ๋์ง ์ ์ ์์ต๋๋ค.
@johanstokking
as.up.forward ์ด๋ฒคํธ ๋ณธ๋ฌธ์ ๊ณ ๋ คํ์ญ์์ค.
์ฌ๊ธฐ์ as.up.data.forward
๋ง์ํ์๋ ๊ฒ ๊ฐ์๋ฐ์?
decoded_payload
๊ฐ์ฒด์ ํฌ๊ธฐ๋ ์ผ๋ง์
๋๊น? ์ด๋ฒคํธ UI์์ ์๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌป์ต๋๋ค.์ฌ๊ธฐ์
as.up.data.forward
๋ง์ํ์๋ ๊ฒ ๊ฐ์๋ฐ์?
์ ์ฐธ, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ as.up.join.forward
์ as.up.data.forward
๋ก ๋๋์๊ณ ์ ๊ฐ ์ธ๊ธํ ๋ชจ๋ ๋ค์ด๋งํฌ ์ด๋ฒคํธ๋ (์์ง) ์ ๋ฌ๋์ง ์์์ต๋๋ค.
- ์ธ๊ธํ ํ๋๊ฐ ๊ฐ ์ด๋ฒคํธ ์ ํ์ ๋ํด ํญ์ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๊น(์ด๋ฒคํธ ์์ ์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ)?
frm_payload
๋ ํญ์ as.up.data.forward
์ ์์ง๋ง decoded_payload
๋ ์ ํ ์ฌํญ์
๋๋ค.as.up.join.forward
์ ์์ต๋๋ค.2. ์ด๋ฒคํธ ์์ ฏ ์ปดํฌ๋ํธ(์ํฐํฐ ๊ฐ์ ํ์ด์ง ์ค ํ๋)์๋ ์ด๋ค ํ๋๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๊น?
๊ณต๊ฐ์ด ์ ์ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๊น? ๋ฐ์ดํฐ ์ ๋งํฌ ๋์ฝ๋ฉ๋ ํ์ด๋ก๋์ ์กฐ์ธ ํ์ฉ DevEUI์ ๋ํด ์๊ฐํฉ๋๋ค.
decoded_payload
๊ฐ์ฒด์ ํฌ๊ธฐ๋ ์ผ๋ง์ ๋๊น? ์ด๋ฒคํธ UI์์ ์๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌป์ต๋๋ค.
์ค์์ ์๋ฅด๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ ํ์ฅํ๋ฉด JSON์ผ๋ก ํ์๋์ด์ผ ํฉ๋๋ค. ์ค์ ๋ก๋ ์๋นํ ์ปค์ง ์ ์์ผ๋ฉฐ ์ด๋ ์ฅ์น ์ ์กฐ์ ์ฒด๋ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
ํ์ง๋ง ๋๋ถ๋ถ์ {"temperature": 21.5, "humidity": 62, "x": -1, "y": 5}
์
๋๋ค.
์ฌ๊ธฐ์์ ์๋ ๋๊ธ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
์๋ ์ํ๊ณผ ์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์ฌ๋๋ค
2์์ "๋ฐ์คํค"์ด ์๋ค๋ ์์์ ๋ฃ๊ฒ ๋์ด ๋ฐ๊ฐ์ต๋๋ค.
V3 ์ฝ์์ ํ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์๋ฏ์ด ์ฌ๊ธฐ์์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฐ์ด๋ ์ ํ์ ๋ง๋๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๋ง์ ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ฐ ๊ด๋ฆฌ
1) ์ ์ฒด Application ๋๋ Node์ ๊ฐ๋ณ์ ์ผ๋ก ํํฅ๋งํฌ ์ ์ก ๊ฐ๋ฅ
2) ์
๋งํฌ ํ์ด๋ก๋ HEX๋ฅผ ํ์ธํ๊ณ ๋ณ๋์ ์ฐฝ์์ ๋์ฝ๋ฉ ๊ฐ๋ฅ
3) ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ํ ๋ฆฌ fx์ ๋ํ ์ผ์ข
์ ๊ณ์ธต ๊ตฌ์กฐ์
๋๋ค. ๋ถ๋ชจ/์์/๋
ธ๋
์์ฒด ์๋ฒ์ ์ฐ๊ฒฐ๋ TTI๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ R&D ๋ฐ ๋ชจ๋ํฐ๋ง์ ํ์ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
์ด์จ๋ - ์ง๊ธ๊น์ง ์ํ์ต๋๋ค. :-)
BR
/ใ
์ค์๋ ์์
ids.join_eui
, ids.dev_eui
๋ฐ ids.dev_addr
, ์
๋งํฌ ๋ฉ์์ง์ ๋ํด ids.dev_addr
๋ฐ uplink_message.frm_payload
์ 16์ง ํ์๋จ์ง ์ผ์ ๋ช ํํํ๊ธฐ ์ํด.
js.join.accept
ns.up.join.forward
ns.up.merge_metadata
as.up.join.receive
as.up.join.forward
์๋ณ์์ ์์: join_eui
, dev_eui
๋ฐ dev_addr
์ ๋งํฌ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋ฉ๋๋ค.
ns.up.merge_metadata
ns.up.data.forward
as.up.data.receive
as.up.data.forward
์ฝ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ณด๊ธฐ๊ฐ ์์ต๋๋ค.
์๋ณ์์ ์์: dev_addr
๋ฐ frm_payload
. ์
๋งํฌ ํ๋ฆ์ ๋๋จธ์ง ์ด๋ฒคํธ์ ๋ํด์๋ dev_addr
๋ฅผ ํ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ์ ๋ณผ ์ ์๋ ๋ฌธ์ ๋ ํนํ ์กฐ์ธ ํ๋ฆ์ as.up.join.forward
์ด๋ฒคํธ์ ๋ํ ๊ณต๊ฐ์ด ๋ง์ง ์๋ค๋ ๊ฒ์
๋๋ค. ๊ฒ๋ค๊ฐ ๊ฐ๋ง์ผ๋ก๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉฐ ๋ ์ด๋ธ( Dev Addr: ....
)์ ์ถ๊ฐํ๋ฉด ๋ ์ ์ ๊ณต๊ฐ์ด ๋จ๊ฒ ๋ฉ๋๋ค.
{
"namespace": "pkg/gatewayserver",
"name": "host_handle",
"message_format": "host `{host}` failed to handle message",
"attributes": {
"host": "cluster"
},
"cause": {
"namespace": "pkg/networkserver",
"name": "device_not_found",
"message_format": "device not found",
"correlation_id": "25407ee7f3cd4894aeeb23fecd4c4071",
"code": 5
},
"code": 5
}
์ฐ๋ฆฌ๋ ๋ณด์ฌ์ค ์ ์์ต๋๋ค
๋๋ ์คํจํ ๊ฐ์
์์ฒญ( ns.up.join.drop
):
ํ์ด๋ก๋ ๊ฒ์ฌ๊ธฐ์๋ ํ์์ด ์ง์ ๋์ง ์์ ์๋ ์ค๋ฅ๊ฐ ์ ์ง๋ฉ๋๋ค. ์ด๊ฒ์ ๋๋ฒ๊น ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
@johanstokking @kschiffer ์ฌ๊ธฐ์ ์ ์ ์ฌํญ์ด ์์ต๋๊น?
์ข์ ์ฒซ๊ฑธ์!
์๋ณ์์ ์์:
join_eui
,dev_eui
๋ฐdev_addr
๋ช ๊ฐ์ง ์๊ฒฌ/์ง๋ฌธ:
dev_addr
์ ๋ํ ์ด์ ๊ฐ๊ณ ๋ชจ๋ ์
๋งํฌ ๋ฉ์์ง์ ๋ํด ์ด์ ์ฑ์ฐ๊ณ ๋ฐ์ํ๋ ์กฐ์ธ์ ์๋ฝํ ์ ์์ต๋๊น?JoinEUI
๋ฐ DevEUI
์ ๊ฐ์ ์์ ํ
์คํธ๋ฅผ JoinEUI ๋ฐ DevEUI ์์ ์ถ๊ฐํฉ๋๋ค.์๋ณ์์ ์์:
dev_addr
๋ฐfrm_payload
.
์ข์ต๋๋ค. ์ฌ๊ธฐ์ FRMPayload
๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ ๋งํฌ ํ๋ฆ์ ๋๋จธ์ง ์ด๋ฒคํธ์ ๋ํด์๋
dev_addr
๋ฅผ ํ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค, ์์ 1๋ฒ ํญ๋ชฉ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋์ํฉ๋๋ค.
์ฌ๊ธฐ์ ๋ณผ ์ ์๋ ๋ฌธ์ ๋ ํนํ ์กฐ์ธ ํ๋ฆ์
as.up.join.forward
์ด๋ฒคํธ์ ๋ํ ๊ณต๊ฐ์ด ๋ง์ง ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฒ๋ค๊ฐ ๊ฐ๋ง์ผ๋ก๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉฐ ๋ ์ด๋ธ(Dev Addr: ....
)์ ์ถ๊ฐํ๋ฉด ๋ ์ ์ ๊ณต๊ฐ์ด ๋จ๊ฒ ๋ฉ๋๋ค.
์ด๋ฒคํธ ํ ์คํธ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ๋ณด๋ค "forward data uplink message" ํ ์คํธ๋ฅผ ์์ด์ฝ(๋๋ ์์ด์ฝ, AS + ์ ๋งํฌ + ๋ฐ์ดํฐ)์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋์ํ๋ฉด @pierrephz ์๊ฒ ์์ด์ฝ ๋์์ธ์ ์์ฒญํ ์ ์์ต๋๋ค. cc @kschiffer
ํ์ด๋ก๋ ๊ฒ์ฌ๊ธฐ์๋ ํ์์ด ์ง์ ๋์ง ์์ ์๋ ์ค๋ฅ๊ฐ ์ ์ง๋ฉ๋๋ค. ์ด๊ฒ์ ๋๋ฒ๊น ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ค๋ฅ์ ๋์
๋ช ๊ฐ์ง ์๊ฐ:
Entity ID
์ด์ด ์ค๋ณต๋๋ฏ๋ก ์ ๊ฑฐํ ์ ์์ต๋๋ค.Entity ID
์ด์ ์กฐ๊ธ ๋ ์ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.link
์์ด์ฝ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.receive uplinke data message
, ๊ทธ๋ฅ receive uplink data
ํ๋ฉด ์ ๋ฉ๋๊น?<SafeInspector />
์ ๋ ์ข์ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ ํ ๋์ด๊ฐ ์ผ๊ด๋๊ฒ ์ ์ง๋๋๋ก ํ์ญ์์ค.frm_payload
๋ฅผ ํ์ดํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค JSON์ผ๋ก ํ์ํ๋ ๊ฒ์ ๊ต์ฅํ ๊ฒ์
๋๋ค(screendesigns ์ฐธ์กฐ). ๋น๋ถ๊ฐ์ ๊ธ๋๊ธ์ด๋ผ๊ณ ์๊ฐํด๋ ๊ด์ฐฎ์ต๋๋ค.dev_addr์ ๋ํ ์ด์ด ์๊ณ ๋ฐ์ํ๋ ๋ชจ๋ ์ ๋งํฌ ๋ฉ์์ง ๋ฐ ๊ฐ์ ์๋ฝ์ ๋ํด ์ด์ ์ฑ์ธ ์ ์์ต๋๊น?
Data
์ด์ ๋์จํ ์์๋ก ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ์ด๋ ๊ฒ์ด ์ด๋ ๊ฒ์ธ์ง ์ ์ ์๋๋ก JoinEUI ๋ฐ DevEUI์ ๊ฐ์ ์์ ํ ์คํธ๋ฅผ JoinEUI ๋ฐ DevEUI ์์ ์ถ๊ฐํฉ๋๋ค.
์. @bafonins , ์ด๊ฒ์ ์ค์ ๋ก ๋ด๊ฐ ์ฌ๋์์ ์๋ฏธํ ๊ฒ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ๋ํด ์ถฉ๋ถํ ๋ช ํํ์ง ๋ชปํด ์ฃ์กํฉ๋๋ค.
์ฐจ๋ผ๋ฆฌ "๋ฐ์ดํฐ ์ ๋งํฌ ๋ฉ์์ง ์ ๋ฌ" ํ ์คํธ๋ฅผ ์์ด์ฝ(๋๋ ์์ด์ฝ, AS + ์ ๋งํฌ + ๋ฐ์ดํฐ)์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์ต๋๋ค.
"๋ฌธ์๋ ์ฒ ๊ฐ ์ด์์ ์์ด์ฝ์ ๋งํฉ๋๋ค" ๐ . ์ด๋ฒคํธ ์ ํ ์ด์ ํ ์คํธ๋ก ์ ์งํ๊ณ ์ถ์ต๋๋ค. ์์ด์ฝ๋ง์ผ๋ก ๋ด์ฉ์ ์ ๋ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ค์์ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ์ฅ์น ๊ณ์ธต์ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ ๊ฐ์ง ํ๋ฉด ๋์์ธ์ ๋๋ค.
๋จ์ผ ์ํฐํฐ(์ต์ข ์ฅ์น, ๊ฒ์ดํธ์จ์ด)์ ๋ฐ์ดํฐ ๋ณด๊ธฐ์์ ์ค๋ณต๋๋ฏ๋ก ์ํฐํฐ ID ์ด์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๐ ์๋ฏธ๊ฐ ์๋ค
๋ค์ํ ์ด๋ฒคํธ, ํนํ ์ฌ๊ธฐ์์ ์ฐธ์ฌ ์ ์ฐจ์ ๊ด๋ จ๋ ์ด๋ฒคํธ์ ๋ํด ๋ ์ธ๋ถํ๋ ์์ด์ฝ์ด ํ์ํฉ๋๋ค.
์กฐ์ธ ํ๋ฆ ๋ฟ๋ง์ด ์๋๋๋ค. MAC ๋ช
๋ น์ ๋ํ ์ฌ์ฉ์ ์ ์ ์์ด์ฝ( ns.mac.*
)์ด ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
์ผ๋ถ ์ด๋ฒคํธ ์ ํ ๋ฉ์์ง๋ (๋ด๊ฐ ๋งํ ์ ์๋ ํ) ๋ถํ์ํ๊ฒ ๊ธธ๋ค. ์๋ฅผ ๋ค์ด ์ ๋งํฌ ๋ฐ์ดํฐ ๋ฉ์์ง๋ฅผ ์์ ํ๋ฉด ์ ๋งํฌ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์์ต๋๊น?
๋์ํฉ๋๋ค. ์ฌ๋ฌ ์ค๋ฅ ์ค๋ช
์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ๋ฟ์
๋๋ค. receive uplink data
๋๋ receive uplink message
์ผ ์ ์์ต๋๋ค. @johanstokking ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
ํ์ฌ ํ์ด๋ก๋ ํ์ ํจ์๋ฅผ ํตํด frm_payload๋ฅผ ํ์ดํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค JSON์ผ๋ก ํ์ํ๋ ๊ฒ์ ๊ต์ฅํ ๊ฒ์ ๋๋ค(screendesigns ์ฐธ์กฐ).
decoded_payload
๋ฅผ ์ง์ ํ์ํ ์ ์์ต๋๋ค. ๋ง์ฃ ? ์
๋งํฌ ๋ฉ์์ง์ ๋ํ ApplicationUp
์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"uplink_message": {
...
"frm_payload": "AQ==",
"decoded_payload": {
"led": "ON"
}
...
}
์ฌ์ฉ์๊ฐ ์ด๋ ๊ฒ์ด ์ด๋ ๊ฒ์ธ์ง ์ ์ ์๋๋ก JoinEUI ๋ฐ DevEUI์ ๊ฐ์ ์์ ํ ์คํธ๋ฅผ JoinEUI ๋ฐ DevEUI ์์ ์ถ๊ฐํฉ๋๋ค.
์. @bafonins , ์ด๊ฒ์ ์ค์ ๋ก ๋ด๊ฐ ์ฌ๋์์ ์๋ฏธํ ๊ฒ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ๋ํด ์ถฉ๋ถํ ๋ช ํํ์ง ์์์ ์ฃ์กํฉ๋๋ค.
๐
์กฐ์ธ ํ๋ฆ ๋ฟ๋ง์ด ์๋๋๋ค. MAC ๋ช ๋ น(ns.mac.*)์ ๋ํ ์ฌ์ฉ์ ์ ์ ์์ด์ฝ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ฌผ๋ก .
๋์ฝ๋ฉ๋_ํ์ด๋ก๋๋ฅผ ์ง์ ํ์ํ ์ ์์ต๋๋ค. ๋ง์ฃ ? ์ ๋งํฌ ๋ฉ์์ง์ ๋ํ ApplicationUp์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ฌผ๋ก ๐คฆโโ
- ์:
receive uplinke data message
, ๊ทธ๋ฅreceive uplink data
ํ๋ฉด ์ ๋ฉ๋๊น?
์. ๊ทธ๋ฌ๋ "์์ " ๋ "์ ๋ฌ" ๋ "๋ณด๋ด๊ธฐ" ๋ฑ์ ์์ด์ฝ์ ๊ฐ์ง ์ ์์ต๋๊น?
์ด๋ฒคํธ ์ ํ ์ด์ ํ ์คํธ๋ก ์ ์งํ๊ณ ์ถ์ต๋๋ค. ์์ด์ฝ๋ง์ผ๋ก ๋ด์ฉ์ ์ ๋ฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ฟ๋ง ์๋๋ผ ๋น์ ์ด ์ ์ํ ๊ฒ์ฒ๋ผ ์ฐ๋ฆฌ๋ ์์ด์ฝ์ผ๋ก ๋์ ๋๋ ๊ฒ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
dev_addr์ ๋ํ ์ด์ด ์๊ณ ๋ฐ์ํ๋ ๋ชจ๋ ์ ๋งํฌ ๋ฉ์์ง ๋ฐ ๊ฐ์ ์๋ฝ์ ๋ํด ์ด์ ์ฑ์ธ ์ ์์ต๋๊น?
Data
์ด์ ๋์จํ ์์๋ก ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์ ๋ ์ด๊ฒ์ด ์ฅ์น ํ์ฑํ(์๋ก์ด DevAddr
๋ฅผ ํ์ํ ์ ์๋ ๊ณณ)๋ฅผ ํฌํจํ์ฌ _๋ชจ๋ _ ์
์คํธ๋ฆผ ๋ฉ์์ง์ ์ผ๋ถ๋ผ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๋์์ธ์์ DevAddr
๊ฐ ์ ๋ ฌ๋์ง ์์์ต๋๋ค(์ค๋ฅธ์ชฝ์ ์์). ๋์จํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ ์ธ์๋ ์ด ๋์์ธ์ด ์ ๋ง ์ข๊ณ ์ ์ฉํด ๋ณด์ ๋๋ค.
์. ๊ทธ๋ฌ๋ "์์ " ๋ "์ ๋ฌ" ๋ "๋ณด๋ด๊ธฐ" ๋ฑ์ ์์ด์ฝ์ ๊ฐ์ง ์ ์์ต๋๊น?
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋๊น์ง ํด์ผ ํ๊ฑฐ๋ ์ ํ ํ์ง ๋ง์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ถ๋ง ์์ด์ฝ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ ํผ๋์ค๋ฌ์ธ ๊ฒ ๊ฐ์์.
๋๋ ์ฌ์ ํ ํญ๋ชฉ๋ณ๋ก ์ด๋ฒคํธ ์ ํ์ ๋ํ๋ด๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด์ผ ํฉ๋๋ค. ๋ด๊ฐ ๋ณธ ๋ฐ๋ก๋ ์คํ ๊ตฌ์ฑ ์์, ํ๋ก์ธ์ค ๋๋ ์ฃผ์ ๋ฐ ๋จ๊ณ(์: ns.up.data.forward
)์ ์ธ ๊ฐ์ง ๋ ์ด์ด๊ฐ ์์ต๋๋ค.
์ด ๋ชจ๋ ์ ๋ณด๋ฅผ ํ๋์ ์์ด์ฝ์ผ๋ก ๋ฒ์ญํ๋ ๊ฒ์ ์ค์ ๋ก ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ์์ด์ฝ์ ์ฌ์ฉํ๊ฑฐ๋ ํญ์ ์ฃผ์ ์ ๊ฐ์ ์ด๋ฒคํธ ์ ํ ๋ ์ด์ด ์ค ํ๋์ ์ง์คํด์ผ ํฉ๋๋ค.
์ธ ๊ฐ์ ์์ด์ฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐฉ๋ฒ์ด ๋ ์ ์์ง๋ง ๋ค์ ์ด๋ฒคํธ ์ ํ ํ ์คํธ๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ง ์์ผ๋ฏ๋ก ๊ฐ๊ฒฉ ๋ฌธ์ ์๋ ์ค์ ๋ก ๋์์ด ๋์ง ์์ง๋ง ์ต์ํ ์ด๋ฒคํธ ํญ๋ชฉ์ ๋ ์ฝ๊ฒ ์ค์บํ ์ ์์ต๋๋ค.
๋ฌธ์ ๋ ์ด๊ฒ์ด ์ฅ์น ํ์ฑํ(์๋ก์ด DevAddr๋ฅผ ํ์ํ ์ ์๋ ๊ณณ)๋ฅผ ํฌํจํ ๋ชจ๋ ์ ์คํธ๋ฆผ ๋ฉ์์ง์ ์ผ๋ถ๋ผ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๋์์ธ์์ DevAddr์ ๋์จํ๊ธฐ ๋๋ฌธ์ ์ ๋ ฌ๋์ง ์์์ต๋๋ค(์ค๋ฅธ์ชฝ์ ์์).
๋ฌผ๋ก . ๊ทธ๋ฌ๋ ๊ท์น์ ๋ฐ๋ผ ์ฅ์น ์ฃผ์๋ฅผ ํญ์ ๋จผ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ์ ์ฉ ์ด์ด ์๋ ๊ฒฝ์ฐ ์ฅ์น ์ฃผ์๋ฅผ ํ์ํ ํ์๊ฐ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ํ ๊ณต๊ฐ์ด ์์ค๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ด๊ฒ์ ์คํ ๊ฐ๋ฅํ ์ํ๋ก ์ ์งํ๊ธฐ ์ํ ์ ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ์งํํ๊ธฐ ์ํด ๋ค๋ฅธ ์ ๋ณด๋ ์ค๋ช ์ด ํ์ํ ๊ฒฝ์ฐ @bafonins ์๊ฒ ์๋ ค์ฃผ์ญ์์ค.
์ธ ๊ฐ์ ์์ด์ฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐฉ๋ฒ์ด ๋ ์ ์์ง๋ง ๋ค์ ์ด๋ฒคํธ ์ ํ ํ ์คํธ๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ง ์์ผ๋ฏ๋ก ๊ฐ๊ฒฉ ๋ฌธ์ ์๋ ์ค์ ๋ก ๋์์ด ๋์ง ์์ง๋ง ์ต์ํ ์ด๋ฒคํธ ํญ๋ชฉ์ ๋ ์ฝ๊ฒ ์ค์บํ ์ ์์ต๋๋ค.
๋ค, ๊ทธ๊ฒ์ด ์ฃผ์ ๋ชฉํ๊ฐ ๋ ๊ฒ์ ๋๋ค.
๊ทธ ๋์ ์๊ด ๊ด๊ณ ID๋ณ๋ก ๊ทธ๋ฃนํํ๋ ๊ฒ๋ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ๊ฒฉ(์์ง)์ ์ฝ๊ฒ ์ค์บํ ์ ์์ต๋๋ค.
๋ฌผ๋ก . ๊ทธ๋ฌ๋ ๊ท์น์ ๋ฐ๋ผ ์ฅ์น ์ฃผ์๋ฅผ ํญ์ ๋จผ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ์ ์ฉ ์ด์ด ์๋ ๊ฒฝ์ฐ ์ฅ์น ์ฃผ์๋ฅผ ํ์ํ ํ์๊ฐ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ํ ๊ณต๊ฐ์ด ์์ค๋ฉ๋๋ค.
ํ์ธ
์ผ๋ถ ์ ๋ฐ์ดํธ:
Entity ID
์ด์ ํ์๋์ง ์์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์๋ง ํด๋นํฉ๋๋ค. ์ด๊ฒ์ ํนํ ์ฅ์น์ ๊ฒฝ์ฐ ์ถ๊ฐ ๊ณต๊ฐ์ ์ ์ฝํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.decoded_payload
๋ฅผ ํ์ํฉ๋๋ค. ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ฐ์ ์ค์ฒฉ ํญ๋ชฉ์ ๊ฑด๋๋๋๋ค(ํ์ด๋ก๋ ๊ฐ์ ์์์ ์ถ๊ฐํ๋ ๊ตฌํ์ ๋ํด ํ์ ์กฐ์น๋ฅผ ์ทจํ๊ฒ ์ต๋๋ค). ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ frm_payload
๋ 16์ง์๋ก ํ์ํฉ๋๋ค.(์ฅ์น ์ด๋ฒคํธ ๋ณด๊ธฐ)
frm_payload
๋ฅผ 16์ง์๋ก ํ์ํฉ๋๋ค. ์ด๊ฒ์ ์ฝ์์ ํตํด ๋ค์ด๋งํฌ๋ฅผ ์์ฝํ๋ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋ ์ ์์ต๋๋ค.@johanstokking ๋ค๋ฅธ๊ฑฐ ์๋์? ๊ฒ์ดํธ์จ์ด ์ด๋ฒคํธ์ ๋ํด ํ์ํ ์ ์๋ ํญ๋ชฉ์ด ์์ต๋๊น( gs.up.receive
, ์๋ฅผ ๋ค์ด frm_payload
f_cnt
f_port
)?
์์ฒญ๋!
๋ช ๊ฐ์ง ์ฌ์ํ ์๊ฒฌ/์ง๋ฌธ;
DevAddr
๋ ํฌํจํฉ๋๋ค.DevAddr
๋ฐ FRMPayload
๋ฅผ ์ฌ์ฉํฉ๋๋ค.{"temperature":21.5,"light":"on"}
๋ฑ. ์ค์ฒฉ๋ ๊ฐ์ด ์์ผ๋ฉด ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค. ์ฆ {"nested":{...},"light":"on"}
ํนํ GS ์ ์คํธ๋ฆผ ์ด๋ฒคํธ์ ๊ฒฝ์ฐ;
raw_payload
์ ๋์ฝ๋ฉํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด GS๋ LoRaWAN๊ณผ (๋ง์) ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค. GS๋ LoRaWAN ์๋ณ์(์กฐ์ธ์ EUI, ์
๋งํฌ์ DevAddr)๋ฅผ ๋์ฝ๋ฉํ๋ฏ๋ก ํํฐ๋ง์ ์ํด ์ด ์คํธ๋ฆผ์ ํ์ํ๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค. ์ ์ฌ์ ์๋ฃจ์
:UplinkMessage
๋ฅผ ๊ฒ์ํ๊ณ ์์ต๋๋ค. UplinkMessage
~๋ฅผ ํฌํจํ๋ DeviceUplinkMessage
์ ๊ฐ์ ํ์์ด์ด์ผ ํฉ๋๋ค.gs.up.forward
์ ์ด๋ฒคํธ ํ์ด๋ก๋๋ nil
์
๋๋ค. ํธ์คํธ ์ด๋ฆ์ผ๋ก ์ proto ๋ฉ์์ง๋ฅผ ์ ์ํ๊ณ map[string]string{}
๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.~ @htdvisser ์ด๋ฒคํธ ํ์ด๋ก๋ ๋ฌธ์ ์ ๋ํ ์กฐ์ธ์ ๋ถํ๋๋ฆฝ๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ ์ง์นจ์์ ๋ค๋ฃจ์ง ์์ต๋๋ค.~
@johanstokking
AS ์ ์คํธ๋ฆผ ์ด๋ฒคํธ์ ๊ฒฝ์ฐ DevAddr๋ ํฌํจํฉ๋๋ค.
๋ฐ๋ผ์ as.up.data.receive
, as.up.data.forward
? as.down.data.receive
๋ฐ as.down.data.forward
๋ ์ด๋ป์ต๋๊น?
ns.up.data.*
์ ๋ํด์๋ ๋์ผํ๊ฒ ํ์ํ๊ณ ์ถ์ต๋๋ค.
์ง๊ธ ์ด๋ฒคํธ ์ด๋ฆ์ด ํ์๋๋์?
์๋์, ์ง๊ธ ๊ทธ๋๋ก ์ ์ฒด ์ด๋ฒคํธ ์ค๋ช ์ ํ์ํฉ๋๋ค.
LoRaWAN ์ฉ์ด DevAddr ๋ฐ FRMPayload๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Device Address
๋ฐ Frame Payload
๋์ ?
๋์ฝ๋ฉ๋ ํ์ด๋ก๋๋ ์ผ๋ฐ์ ์ผ๋ก ํํํ ๊ฐ์ฒด์ ๋๋ค. {"temperature":21.5,"light":"on"} ๋ฑ. ์ค์ฒฉ๋ ๊ฐ์ด ์์ผ๋ฉด ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค. ์ฆ, {"์ค์ฒฉ":{...},"light":"on"}
๋์์ธ์ ๋ฐ๋ฅด๋ฉด ์ฐ๋ฆฌ๋ ๊ฐ์น๋ง์ ๋ณด์ฌ์ค๋๋ค. ๋ฐ๋ผ์ {"temperature":21.5,"light":"on"}
์ ๋ํด [21.5, "on"]
๊ฐ ํ์๋ฉ๋๋ค. ๊ด์ฐฎ๋์?
GS๋ LoRaWAN ์๋ณ์(์กฐ์ธ์ EUI, ์ ๋งํฌ์ DevAddr)๋ฅผ ๋์ฝ๋ฉํ๋ฏ๋ก ํํฐ๋ง์ ์ํด ์ด ์คํธ๋ฆผ์ ํ์ํ๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค.
gs.up.receive
์ ๋ํ ์๋ณ์๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ฐ์
์์ฒญ์ ๊ฒฝ์ฐ ๋ค์์์ EUI๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
"payload": {
"join_request_payload": {
"join_eui": "...",
"dev_eui": "..."
}
}
๊ทธ๋ฆฌ๊ณ ๋ค์์ผ๋ก๋ถํฐ์ ์ ๋งํฌ์ ๋ํ dev addr ํ์:
"payload": {
"mac_payload": {
"f_hdr": {
"dev_addr": "...",
}
}
}
๋ฐ๋ผ์
as.up.data.receive
,as.up.data.forward
?as.down.data.receive
๋ฐas.down.data.forward
๋ ์ด๋ป์ต๋๊น?
ns.up.data.*
์ ๋ํด์๋ ๋์ผํ๊ฒ ํ์ํ๊ณ ์ถ์ต๋๋ค.
์, ์๋ณ์๊ฐ ํ์ด๋ก๋์ ์์ผ๋ฉด ํ์ํ์ญ์์ค.
Device Address
๋ฐFrame Payload
๋์ ?>
๋ค
๋์์ธ์ ๋ฐ๋ฅด๋ฉด ์ฐ๋ฆฌ๋ ๊ฐ์น๋ง์ ๋ณด์ฌ์ค๋๋ค. ๋ฐ๋ผ์
{"temperature":21.5,"light":"on"}
์ ๋ํด[21.5, "on"]
๊ฐ ํ์๋ฉ๋๋ค. ๊ด์ฐฎ๋์?
์๋์. ์ฌ๊ธฐ ์ด์ ๊ฐ ํ์ํ ๊ฒ ๊ฐ์์. ๋ง์ ๊ฐ์ด ์ซ์๋ก ๋์ด ์์ด ํผ๋์ค๋ฝ์ต๋๋ค. ๋ํ ์ด๊ฒ์ ๋งต์ด๊ธฐ ๋๋ฌธ์ ๊ณ ์ ๋ ์์๊ฐ ์์ต๋๋ค(ํค๋ฅผ ์ ๋ ฌํ๊ณ ๊ฐ์ ์ทจํ์ง ์๋ ํ).
gs.up.receive
์ ๋ํ ์๋ณ์๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ฐ์ ์์ฒญ์ ๊ฒฝ์ฐ ๋ค์์์ EUI๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
์, ํ์ง๋ง ํ์ด๋ก๋์ ๊ทธ๊ฒ๋ค์ด ์์ต๋๋ค, ๊ทธ๋ ์ฃ ? ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ํ์ด๋ก๋์ ๋๋ค.
{
"@type": "type.googleapis.com/ttn.lorawan.v3.UplinkMessage",
"raw_payload": "QOYAACeAws8CQ+4LarGLXmIEFQ==",
"settings": {
"data_rate": {
"lora": {
"bandwidth": 125000,
"spreading_factor": 7
}
},
"coding_rate": "4/5",
"frequency": "867900000",
"timestamp": 2986005427,
"time": "2020-04-29T07:57:06Z"
},
"rx_metadata": [
{
"gateway_ids": {
"gateway_id": "kerlink-ifemtocell",
"eui": "7276FF003903007D"
},
"time": "2020-04-29T07:57:06Z",
"timestamp": 2986005427,
"rssi": -28,
"channel_rssi": -28,
"snr": 8,
"uplink_token": "CiAKHgoSa2VybGluay1pZmVtdG9jZWxsEghydv8AOQMAfRCzp+uPCw==",
"channel_index": 4
}
],
"received_at": "2020-04-29T07:57:06.748570190Z",
"correlation_ids": [
"gs:conn:01E6VEV9V14WMAY1DW19BQQPMX",
"gs:uplink:01E72F0YSWJAKBYBJDBXG4CJ4G"
]
}
์, ์๋ณ์๊ฐ ํ์ด๋ก๋์ ์๋ ๊ฒฝ์ฐ ํ์ํฉ๋๋ค.
ํ์ด๋ก๋๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฒคํธ์ identifiers
ํ๋์์ ์๋ณ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
"identifiers": [
{
"device_ids": {
"device_id": "...",
"application_ids": {
"application_id": "...",
},
"dev_eui": "...",
"join_eui": "...",
"dev_addr": "...",
},
},
],
์๋์. ์ฌ๊ธฐ ์ด์ ๊ฐ ํ์ํ ๊ฒ ๊ฐ์์. ๋ง์ ๊ฐ์ด ์ซ์๋ก ๋์ด ์์ด ํผ๋์ค๋ฝ์ต๋๋ค. ๋ํ ์ด๊ฒ์ ๋งต์ด๊ธฐ ๋๋ฌธ์ ๊ณ ์ ๋ ์์๊ฐ ์์ต๋๋ค(ํค๋ฅผ ์ ๋ ฌํ๊ณ ๊ฐ์ ์ทจํ์ง ์๋ ํ).
๐
์, ํ์ง๋ง ํ์ด๋ก๋์ ๊ทธ๊ฒ๋ค์ด ์์ต๋๋ค, ๊ทธ๋ ์ฃ ? ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ํ์ด๋ก๋์ ๋๋ค.
๋ค์์ receive uplink message
- gs.up.receive
์ ๋ํ ๊ฒ์
๋๋ค.
{
"@type": "type.googleapis.com/ttn.lorawan.v3.UplinkMessage",
"raw_payload": "AAEAUAEAy6BYiiAcAAujBAB5X7wJxJ0=",
"payload": {
"m_hdr": {},
"mic": "vAnEnQ==",
"join_request_payload": {
"join_eui": "...",
"dev_eui": "...",
"dev_nonce": "..."
}
},
"settings": {
"data_rate": {
"lora": {
"bandwidth": 125000,
"spreading_factor": 7
}
},
"coding_rate": "4/5",
"frequency": "868300000",
"timestamp": 3115131027,
"time": "2020-04-29T08:13:09.690629005Z"
},
"rx_metadata": [
{
"gateway_ids": {
"gateway_id": "bafonins-ttig",
"eui": "58A0CBFFFE8010D6"
},
"time": "2020-04-29T08:13:09.690629005Z",
"timestamp": 3115131027,
"rssi": -35,
"channel_rssi": -35,
"snr": 8.25,
"uplink_token": "ChsKGQoNYmFmb25pbnMtdHRpZxIIWKDL//6AENYQk8G0zQs="
}
],
"received_at": "2020-04-29T08:13:09.450967669Z",
"correlation_ids": [
"gs:conn:01E7140GJKZ5BKHMC774RV4C11",
"gs:uplink:01E72FYAYB272T9X90MJEZNEAX"
]
}
๋ค, ๋ณด์ฌ์ฃผ์ธ์. ํ์ฌ nil
์ผ ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ๊ณ ๋ คํ์ง๋ง ์์ง ๋ฐ์ํ์ง ์์ ๊ฒฝ์ฐ ํ์ด๋ก๋๋ฅผ ๋์ฝ๋ฉํ๋๋ก GS๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
@johanstokking
join_request_payload
๋ฅผ ์ฌ์ฉํ ์ ์๋ eui์ ํ๋ฆ์ ์ฐธ์ฌ:
๋์ฝ๋ฉ๋ ํ์ด๋ก๋๊ฐ ์๋ ์
๋งํฌ:
์คํจํ ์ด๋ฒคํธ:
AS ์
๋งํฌ/๋ค์ด๋งํฌ ์ด๋ฒคํธ:
๊ฒ์ดํธ์จ์ด ๊ฐ์
์์ฒญ ์ด๋ฒคํธ:
mac_payload
์ ๊ฒ์ดํธ์จ์ด ์
๋งํฌ:
์์ฒญ๋
ํ ๊ฐ์ง ๋ ๋ถํ๋๋ฆฝ๋๋ค. FRMPayload
๊ฐ ๋ฐ์ํ ๋๋ง๋ค FPort
๋ฅผ ์ถ๊ฐํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค์๋ ์์
ids.join_eui
,ids.dev_eui
๋ฐids.dev_addr
, ์ ๋งํฌ ๋ฉ์์ง์ ๋ํดids.dev_addr
๋ฐuplink_message.frm_payload
์ 16์ง ํ์