Lorawan-stack: ์ฝ˜์†” ํŠธ๋ž˜ํ”ฝ ๋ณด๊ธฐ์— ๊ฐ€์ž… ์š”์ฒญ, ์—…๋งํฌ ๋ฐ ์˜ค๋ฅ˜ ํ‘œ์‹œ

์— ๋งŒ๋“  2020๋…„ 02์›” 07์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: TheThingsNetwork/lorawan-stack

์š”์•ฝ

์ฝ˜์†” ํŠธ๋ž˜ํ”ฝ ๋ณด๊ธฐ์—์„œ ์›์‹œ ๋ฐ ๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ ํ‘œ์‹œ

์™œ ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

  • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ
  • V2 ์ฝ˜์†”๊ณผ ๊ธฐ๋Šฅ ์ผ์น˜

์ด๋ฏธ ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ง€๊ธˆ ๋ฌด์—‡์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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)

์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?

๋ฆฌ์•กํŠธ ๋งค์ง

์ด ์ž‘์—…์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๊ณ  Pull Request๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฒ€ํ†  ๊ฐ€๋Šฅ

์ฝ”๋””ํ•ด์ฃผ์„ธ์š”

console in progress uweb

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ค‘์š”๋„ ์ˆœ์„œ

  1. ๊ฐ€์ž… ์š”์ฒญ์—์„œ ids.join_eui , ids.dev_eui ๋ฐ ids.dev_addr , ์—…๋งํฌ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ids.dev_addr ๋ฐ uplink_message.frm_payload ์˜ 16์ง„ ํ‘œ์‹œ
  2. ํ˜•์‹ํ™”๋œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€(์˜ˆ: ์†์„ฑ ์ฑ„์šฐ๊ธฐ)
  3. ๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ JSON ํ‘œ์‹œ

๋ชจ๋“  26 ๋Œ“๊ธ€

"ํ•„์ˆ˜ํ’ˆ"์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
AWS ์‹œ์žฅ์—์„œ v3๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„์ฐจ๋ฆฐ ๊ฒƒ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.
๋ฌผ์–ด๋ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”?

@industrialinternet ๊ด€์‹ฌ์„ ๋ณด์—ฌ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 2์›” ๋งˆ์ผ์Šคํ†ค์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฒˆ ๋‹ฌ์— ์™„๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ์ด ํ˜ธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ๋งจ ์œ„์— ์žˆ๋Š” ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ตœ์†Œํ•œ ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‹œ์ฒญํ•˜์—ฌ ์–ธ์ œ ์–ด๋–ค ๋ฆด๋ฆฌ์Šค์— ๋„์ฐฉํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@johanstokking

as.up.forward ์ด๋ฒคํŠธ ๋ณธ๋ฌธ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๊ธฐ์„œ as.up.data.forward ๋ง์”€ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

  1. ์–ธ๊ธ‰ํ•œ ํ•„๋“œ๊ฐ€ ๊ฐ ์ด๋ฒคํŠธ ์œ ํ˜•์— ๋Œ€ํ•ด ํ•ญ์ƒ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ(์ด๋ฒคํŠธ ์ž‘์—…์ด ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ)?
  2. ์ด๋ฒคํŠธ ์œ„์ ฏ ๊ตฌ์„ฑ ์š”์†Œ(์—”ํ‹ฐํ‹ฐ ๊ฐœ์š” ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜)์—๋Š” ์–ด๋–ค ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
    Screenshot 2020-02-10 at 15 35 28
  3. decoded_payload ๊ฐœ์ฒด์˜ ํฌ๊ธฐ๋Š” ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ? ์ด๋ฒคํŠธ UI์—์„œ ์ž˜๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌป์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ as.up.data.forward ๋ง์”€ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

์•„ ์ฐธ, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ as.up.join.forward ์™€ as.up.data.forward ๋กœ ๋‚˜๋ˆ„์—ˆ๊ณ  ์ œ๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋‹ค์šด๋งํฌ ์ด๋ฒคํŠธ๋Š” (์•„์ง) ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  1. ์–ธ๊ธ‰ํ•œ ํ•„๋“œ๊ฐ€ ๊ฐ ์ด๋ฒคํŠธ ์œ ํ˜•์— ๋Œ€ํ•ด ํ•ญ์ƒ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ(์ด๋ฒคํŠธ ์ž‘์—…์ด ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ)?
  • frm_payload ๋Š” ํ•ญ์ƒ as.up.data.forward ์— ์žˆ์ง€๋งŒ decoded_payload ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
  • ์žฅ์น˜ ์‹๋ณ„์ž๋Š” ํ•ญ์ƒ as.up.join.forward ์— ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ด๋ฒคํŠธ ์œ„์ ฏ ์ปดํฌ๋„ŒํŠธ(์—”ํ‹ฐํ‹ฐ ๊ฐœ์š” ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜)์—๋Š” ์–ด๋–ค ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ณต๊ฐ„์ด ์ ์€ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๋ฐ์ดํ„ฐ ์—…๋งํฌ ๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ์™€ ์กฐ์ธ ํ—ˆ์šฉ DevEUI์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  1. 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
/ใ…

์ค‘์š”๋„ ์ˆœ์„œ

  1. ๊ฐ€์ž… ์š”์ฒญ์—์„œ ids.join_eui , ids.dev_eui ๋ฐ ids.dev_addr , ์—…๋งํฌ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ids.dev_addr ๋ฐ uplink_message.frm_payload ์˜ 16์ง„ ํ‘œ์‹œ
  2. ํ˜•์‹ํ™”๋œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€(์˜ˆ: ์†์„ฑ ์ฑ„์šฐ๊ธฐ)
  3. ๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ JSON ํ‘œ์‹œ

๋‹จ์ง€ ์ผ์„ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด.

  • ์กฐ์ธ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
  1. js.join.accept
  2. ns.up.join.forward
  3. ns.up.merge_metadata
  4. as.up.join.receive
  5. as.up.join.forward
    ์ฝ˜์†”์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

join-flow-otaa

์‹๋ณ„์ž์˜ ์ˆœ์„œ: join_eui , dev_eui ๋ฐ dev_addr

์—…๋งํฌ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ns.up.merge_metadata
  2. ns.up.data.forward
  3. as.up.data.receive
  4. as.up.data.forward

์ฝ˜์†”์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

uplink-flow-otaa

์‹๋ณ„์ž์˜ ์ˆœ์„œ: 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
}

์šฐ๋ฆฌ๋Š” ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
Screenshot 2020-03-24 at 17 21 33

๋˜๋Š” ์‹คํŒจํ•œ ๊ฐ€์ž… ์š”์ฒญ( ns.up.join.drop ):
Screenshot 2020-03-24 at 17 36 08

ํŽ˜์ด๋กœ๋“œ ๊ฒ€์‚ฌ๊ธฐ์—๋Š” ํ˜•์‹์ด ์ง€์ •๋˜์ง€ ์•Š์€ ์›๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋””๋ฒ„๊น…์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ ํ‘œ์‹œ - ๋‚˜์ค‘์„ ์œ„ํ•ด

@johanstokking @kschiffer ์—ฌ๊ธฐ์— ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ข‹์€ ์ฒซ๊ฑธ์Œ!

์‹๋ณ„์ž์˜ ์ˆœ์„œ: join_eui , dev_eui ๋ฐ dev_addr

๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ/์งˆ๋ฌธ:

  1. dev_addr ์— ๋Œ€ํ•œ ์—ด์„ ๊ฐ–๊ณ  ๋ชจ๋“  ์—…๋งํฌ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ์—ด์„ ์ฑ„์šฐ๊ณ  ๋ฐœ์ƒํ•˜๋Š” ์กฐ์ธ์„ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  2. ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋Š ๊ฒƒ์ด ์–ด๋Š ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก JoinEUI ๋ฐ DevEUI ์™€ ๊ฐ™์€ ์ž‘์€ ํ…์ŠคํŠธ๋ฅผ JoinEUI ๋ฐ DevEUI ์•ž์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์‹๋ณ„์ž๋ฅผ ํ‘œ์‹œํ•˜๋ฏ€๋กœ ๋งŽ์€ ํ–‰์— ๋Œ€ํ•ด ๋™์ผํ•œ ์‹๋ณ„์ž(JS/NS/AS)๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‚˜์ค‘์— ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ง์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ผ๋ถ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ์ผ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ(์˜ˆ: JS ์ „์šฉ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์‹๋ณ„์ž๋ฅผ ํ™•์ธํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‹๋ณ„์ž์˜ ์ˆœ์„œ: 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 ์—ด์„ ์กฐ๊ธˆ ๋” ์ถ•์†Œํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ, ํŠนํžˆ ์—ฌ๊ธฐ์—์„œ ์ฐธ์—ฌ ์ ˆ์ฐจ์™€ ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ๋” ์„ธ๋ถ„ํ™”๋œ ์•„์ด์ฝ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์žฌ๋ฃŒ ์•„์ด์ฝ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ ์ ˆํ•œ ์•„์ด์ฝ˜์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ ์  ๋” ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณง ์ž์ฒด ์•„์ด์ฝ˜ ์„ธํŠธ๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. cc @pierrephz )

    • ์ฐธ์—ฌ ๊ด€๋ จ ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ ๋‹น๋ถ„๊ฐ„ link ์•„์ด์ฝ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • (์œ„์ ฏ์ด ์•„๋‹Œ) ์ด๋ฒคํŠธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๊ฐ€๋กœ ์Šคํฌ๋กค์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ์ด๋ฒคํŠธ ์œ ํ˜• ๋ฉ”์‹œ์ง€๋Š” (๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ) ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ธธ๋‹ค, ์˜ˆ๋ฅผ ๋“ค์–ด receive uplinke data message , ๊ทธ๋ƒฅ receive uplink data ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๊นŒ?
  • <SafeInspector /> ์˜ ๋” ์ข์€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ ํ–‰ ๋†’์ด๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€๋˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.
  • ํ˜„์žฌ ํŽ˜์ด๋กœ๋“œ ํ˜•์‹ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด frm_payload ๋ฅผ ํŒŒ์ดํ”„ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ค„ JSON์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(screendesigns ์ฐธ์กฐ). ๋‹น๋ถ„๊ฐ„์€ ๊ธˆ๋„๊ธˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

dev_addr์— ๋Œ€ํ•œ ์—ด์ด ์žˆ๊ณ  ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์—…๋งํฌ ๋ฉ”์‹œ์ง€ ๋ฐ ๊ฐ€์ž… ์ˆ˜๋ฝ์— ๋Œ€ํ•ด ์—ด์„ ์ฑ„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Data ์—ด์— ๋Š์Šจํ•œ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋Š ๊ฒƒ์ด ์–ด๋Š ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก JoinEUI ๋ฐ DevEUI์™€ ๊ฐ™์€ ์ž‘์€ ํ…์ŠคํŠธ๋ฅผ JoinEUI ๋ฐ DevEUI ์•ž์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ. @bafonins , ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ ์Šฌ๋ž™์—์„œ ์˜๋ฏธํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•˜์ง€ ๋ชปํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ฐจ๋ผ๋ฆฌ "๋ฐ์ดํ„ฐ ์—…๋งํฌ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ" ํ…์ŠคํŠธ๋ฅผ ์•„์ด์ฝ˜(๋˜๋Š” ์•„์ด์ฝ˜, AS + ์—…๋งํฌ + ๋ฐ์ดํ„ฐ)์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

"๋ฌธ์ž๋Š” ์ฒœ ๊ฐœ ์ด์ƒ์˜ ์•„์ด์ฝ˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค" ๐Ÿ˜…. ์ด๋ฒคํŠธ ์œ ํ˜• ์—ด์„ ํ…์ŠคํŠธ๋กœ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•„์ด์ฝ˜๋งŒ์œผ๋กœ ๋‚ด์šฉ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์žฅ์น˜ ๊ณ„์ธต์— ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‘ ๊ฐ€์ง€ ํ™”๋ฉด ๋””์ž์ธ์ž…๋‹ˆ๋‹ค.

Overview Copy
Singe Application Copy

๋‹จ์ผ ์—”ํ„ฐํ‹ฐ(์ตœ์ข… ์žฅ์น˜, ๊ฒŒ์ดํŠธ์›จ์ด)์˜ ๋ฐ์ดํ„ฐ ๋ณด๊ธฐ์—์„œ ์ค‘๋ณต๋˜๋ฏ€๋กœ ์—”ํ„ฐํ‹ฐ 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์€ ๋Š์Šจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์˜ค๋ฅธ์ชฝ์— ์žˆ์Œ).

๋ฌผ๋ก . ๊ทธ๋Ÿฌ๋‚˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ํ•ญ์ƒ ๋จผ์ € ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์šฉ ์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ œ ์ œ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ง€๊ธˆ์€ ์•„์ด์ฝ˜๊ณผ ์ด๋ฒคํŠธ ์œ ํ˜• ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ์ง€์ง€ ๋ง๊ณ  ๋ณ„๋„์˜ PR๋กœ ๋งŒ๋‚ฉ์‹œ๋‹ค.
  • ์ด๋ฒคํŠธ ์œ ํ˜•์˜ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋Š์Šจํ•œ ์š”์†Œ์™€ ํ•จ๊ป˜ ์œ ์—ฐํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ์—ด ์‚ฌ์šฉ

์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์ •๋ณด๋‚˜ ์„ค๋ช…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ @bafonins ์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์„ธ ๊ฐœ์˜ ์•„์ด์ฝ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์‹œ ์ด๋ฒคํŠธ ์œ ํ˜• ํ…์ŠคํŠธ๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ„๊ฒฉ ๋ฌธ์ œ์—๋Š” ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์ง€๋งŒ ์ตœ์†Œํ•œ ์ด๋ฒคํŠธ ํ•ญ๋ชฉ์„ ๋” ์‰ฝ๊ฒŒ ์Šค์บ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๊ทธ๊ฒƒ์ด ์ฃผ์š” ๋ชฉํ‘œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ ์ƒ๊ด€ ๊ด€๊ณ„ ID๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ„๊ฒฉ(์ˆ˜์ง)์„ ์‰ฝ๊ฒŒ ์Šค์บ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก . ๊ทธ๋Ÿฌ๋‚˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ํ•ญ์ƒ ๋จผ์ € ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์šฉ ์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

ํ™•์ธ

์ผ๋ถ€ ์—…๋ฐ์ดํŠธ:

  1. ์žฅ์น˜, ๊ฒŒ์ดํŠธ์›จ์ด ๋ฐ ์กฐ์ง ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ Entity ID ์—ด์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋งŒ ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŠนํžˆ ์žฅ์น˜์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  2. ์˜ค๋ฅ˜ ์ด๋ฒคํŠธ:

Screenshot 2020-04-28 at 19 45 21

  1. ์ผ๋ฐ˜ ๊ฐ’ ๋ชฉ๋ก์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ decoded_payload ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์™€ ๊ฐ™์€ ์ค‘์ฒฉ ํ•ญ๋ชฉ์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค(ํŽ˜์ด๋กœ๋“œ ๊ฐ’์— ์ƒ‰์ƒ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ตฌํ˜„์— ๋Œ€ํ•ด ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค). ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ frm_payload ๋„ 16์ง„์ˆ˜๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

Screenshot 2020-04-28 at 19 45 57

  1. ๋‹ค์Œ์€ ์กฐ์ธ ํ๋ฆ„์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.
    (์‘์šฉ ์ด๋ฒคํŠธ ๋ณด๊ธฐ)

Screenshot 2020-04-28 at 19 46 30

(์žฅ์น˜ ์ด๋ฒคํŠธ ๋ณด๊ธฐ)

Screenshot 2020-04-28 at 19 46 49

  1. AS ๋‹ค์šด๋งํฌ ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ frm_payload ๋ฅผ 16์ง„์ˆ˜๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฝ˜์†”์„ ํ†ตํ•ด ๋‹ค์šด๋งํฌ๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Screenshot 2020-04-28 at 20 18 04

@johanstokking ๋‹ค๋ฅธ๊ฑฐ ์—†๋‚˜์š”? ๊ฒŒ์ดํŠธ์›จ์ด ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ( gs.up.receive , ์˜ˆ๋ฅผ ๋“ค์–ด frm_payload f_cnt f_port )?

์—„์ฒญ๋‚œ!

๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ์˜๊ฒฌ/์งˆ๋ฌธ;

  • AS ์—…์ŠคํŠธ๋ฆผ ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ DevAddr ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€๊ธˆ ์ด๋ฒคํŠธ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋‚˜์š”?
  • LoRaWAN ์šฉ์–ด DevAddr ๋ฐ FRMPayload ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ‰ํ‰ํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. {"temperature":21.5,"light":"on"} ๋“ฑ. ์ค‘์ฒฉ๋œ ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ฑด๋„ˆ๋›ฐ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰ {"nested":{...},"light":"on"}

ํŠนํžˆ GS ์—…์ŠคํŠธ๋ฆผ ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ;

  • ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” LoRaWAN raw_payload ์„ ๋””์ฝ”๋”ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด GS๋Š” LoRaWAN๊ณผ (๋งŽ์€) ๊ด€๋ จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. GS๋Š” LoRaWAN ์‹๋ณ„์ž(์กฐ์ธ์˜ EUI, ์—…๋งํฌ์˜ DevAddr)๋ฅผ ๋””์ฝ”๋”ฉํ•˜๋ฏ€๋กœ ํ•„ํ„ฐ๋ง์„ ์œ„ํ•ด ์ด ์ŠคํŠธ๋ฆผ์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์žฌ์  ์†”๋ฃจ์…˜:

    • ~๊ฐ€๋‚œํ•œ ์‚ฌ๋žŒ์˜ ํ•ด๊ฒฐ์ฑ…; ์ด๊ฒƒ์€ ๋ทฐ์–ด(์ฝ˜์†”)์— ๋งก๊ธฐ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ V2 ์ฝ˜์†”์—์„œ๋„ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ฝ˜์†”์— LoRaWAN ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค~

    • ~์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์˜ ์‹๋ณ„์ž๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ UplinkMessage ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. UplinkMessage ~๋ฅผ ํฌํ•จํ•˜๋Š” DeviceUplinkMessage ์™€ ๊ฐ™์€ ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์•„์ง ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํŽ˜์ด๋กœ๋“œ ๋””์ฝ”๋”ฉ(Basic Station์€ PHYPayload๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰)

  • ํ˜„์žฌ GS ์ „๋‹ฌ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ(์˜ˆ: NS ๋ฐ ํŒจํ‚ท ๋ธŒ๋กœ์ปค)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์ „๋‹ฌ ์ด๋ฒคํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 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์˜ ํ๋ฆ„์— ์ฐธ์—ฌ:
Screenshot 2020-05-03 at 19 41 26

๋””์ฝ”๋”ฉ๋œ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ์žˆ๋Š” ์—…๋งํฌ:
Screenshot 2020-05-03 at 19 29 59

์‹คํŒจํ•œ ์ด๋ฒคํŠธ:
Screenshot 2020-05-03 at 19 30 10

AS ์—…๋งํฌ/๋‹ค์šด๋งํฌ ์ด๋ฒคํŠธ:
Screenshot 2020-05-03 at 19 34 02

๊ฒŒ์ดํŠธ์›จ์ด ๊ฐ€์ž… ์š”์ฒญ ์ด๋ฒคํŠธ:
Screenshot 2020-05-03 at 19 36 51

mac_payload ์˜ ๊ฒŒ์ดํŠธ์›จ์ด ์—…๋งํฌ:
Screenshot 2020-05-03 at 19 37 28

์—„์ฒญ๋‚œ

ํ•œ ๊ฐ€์ง€ ๋” ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. FRMPayload ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค FPort ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰