Post

MQTT ๊ฒ‰ํ•ฅ๊ธฐ๐Ÿ‰

MQTT์˜ ์ดํ•ด

  • Message Queuing Telemetry Transport : ์ง์—ญํ•˜๋ฉด ๋ฉ”์‹œ์ง€ ํ ์›๊ฒฉ ์ธก์ • ์ „์†ก
  • ์›๊ฒฉ ์ œ์–ด, ์›๊ฒฉ ์ธก์ •์„ ์œ„ํ•œ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ
  • ๋ฐœํ–‰, ๊ตฌ๋… ๋ชจ๋ธ ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง• ํ”„๋กœํ† ์ฝœ
  • Facebook messenger๊ฐ€ MQTT๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ๋‹ค.
  • ๊ฒฝ๋Ÿ‰์ด๋ฉฐ ๋ฐฐํ„ฐ๋ฆฌ ์ˆ˜๋ช…๋„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์–ด IoT์—์„œ ๋งŽ์ด ํ™œ์šฉ



MQTT์˜ ํŠน์ง•

  • ์š”๊ตฌ์กฐ๊ฑด
    • ์‹ค์‹œ๊ฐ„ ํ‘ธ์‹œ ์ „์†ก
    • ์ „๋ ฅ์‚ฌ์šฉ ์ตœ์†Œํ™”
    • ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง•
    • ์‹ ๋ขฐ์„ฑ
  • ๊ฒฝ๋Ÿ‰ํ™”
    • ๊ฒฝ๋Ÿ‰ ๋ฉ”์‹œ์ง€ ํฌ๋ฉง
    • 80~100kb ์ •๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ
  • ์œ ์—ฐ์„ฑ, ํ™•์žฅ์„ฑ
    • ์ด๋ฒคํŠธ ๋ฐฉ์‹ (๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž, ๋””๋ฐ”์ด์Šค ์ง€์›)
    • ์‘์šฉ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ํ™•์žฅ ๊ฐ€๋Šฅ
  • ์ƒ์‚ฐ์„ฑ
    • ํƒ์ง€, ์ €์žฅ, ์ „๋‹ฌ, ๋ฐœํ–‰/๊ตฌ๋… ๊ธฐ๋Šฅ ์ œ๊ณต (๋ณ„๋„์˜ ์‘์šฉ ๋กœ์ง ํ•„์š” ์—†์Œ)
    • ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์œผ๋กœ ๊ฐœ๋ฐœ์ž์˜ ํ•™์Šต ์šฉ์ดํ•จ


MQTT์˜ ๊ตฌ์กฐ

  • ๋ฐœํ–‰์ž, ํ† ํ”ฝ, ๋ธŒ๋กœ์ปค, ๊ตฌ๋…์ž๋กœ ๊ตฌ์„ฑ
  • ๋ฐœํ–‰์ž์™€ ๊ตฌ๋…์ž๊ฐ€ ์ง์ ‘ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š๋Š” ๋น„๋™๊ธฐ ๋ฐฉ์‹
  • ๊ตฌ๋…์ž๋Š” ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•ด ๊ด€์‹ฌ ์žˆ๋Š” Topic์„ ๊ตฌ๋… ์„ ์–ธํ•œ๋‹ค.
  • ๋ฐœํ–‰์ž๊ฐ€ Topic์— ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์–ด ๋ธŒ๋กœ์ปค์—๊ฒŒ ๋ณด๋‚ด๋ฉด ๋ธŒ๋กœ์ปค๊ฐ€ ํ•ด๋‹น Topic์„ ๊ตฌ๋…ํ•˜๋Š” ๊ตฌ๋…์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค.



MQTT์˜ ํฌ๋งท

  • ๊ณ ์ • ํ—ค๋”, ๊ฐ€๋ณ€ ํ—ค๋”, ํŽ˜์ด๋กœ๋“œ (= ํ—ค๋”, ํ† ํ”ฝ, ํŽ˜์ด๋กœ๋“œ)๋กœ ๋‚˜๋‰จ
    • ๊ณ ์ • ํ—ค๋” : ๋ฉ”์‹œ์ง€ ํƒ€์ž…(Message Type), ํ”Œ๋ž˜๊ทธ(Flag), QoS ๋ ˆ๋ฒจ, Remaining Length๋ฅผ ์ •์˜
    • ๊ฐ€๋ณ€ ํ—ค๋” : ๊ณ ์ •ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ ์‚ฌ์ด์— ์กด์žฌํ•˜๋ฉฐ ํ”„๋กœํ† ์ฝœ์˜ ์ด๋ฆ„๊ณผ ๋ฒ„์ „, topic ์ด๋ฆ„์„ ํฌํ•จ. ํ† ํ”ฝ ์ด๋ฆ„์€ MQTT PUBLISH ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋˜๋ฉฐ, ํŽ˜์ด๋กœ๋“œ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐœํ–‰ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ฑ„๋„์˜ ์ด๋ฆ„
    • Payload : ๋ฐ์ดํ„ฐ, ์‹ค์ œ ์ „์†ก๋˜๋Š” ๋ฉ”์„ธ์ง€





Topic์˜ ๊ตฌ์กฐ

  • ํ† ํ”ฝ์€ ์Šฌ๋ž˜์‹œ(/)๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด ์ง๊ด€์ ์ด๋ฉฐ, ๋งŽ์€ ์„ผ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ ์šฉํ•˜๋‹ค.
  • ํ† ํ”ฝ์„ ์ด๋ฆ„์œผ๋กœ ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ์ฑ„๋„์„ ๋งŒ๋“ ๋‹ค.
  • bedroom์˜ ์˜จ๋„๊ณ„ ์„ผ์„œ๋ฅผ ์ง€์นญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด house/bedroom/temperature
  • ๋ชจ๋“  ๋ฐฉ์˜ ์˜จ๋„๊ณ„๋ฅผ ์ง€์นญํ•˜๋ ค๋ฉด house/+/temperature (+๋Š” ํ•ด๋‹น ๋ ˆ๋ฒจ ์™€์ผ๋“œ์นด๋“œ)
  • bedroom์˜ ๋ชจ๋“  ์„ผ์„œ๋ฅผ ์ง€์นญํ•˜๋ ค๋ฉด house/bedroom/# (#๋Š” ํ•˜์œ„๋ฅผ ๋ชจ๋‘ ์ง€์นญํ•˜๋Š” ์™€์ผ๋“œ์นด๋“œ)



QoS ๋ ˆ๋ฒจ

  • Quality of Service
  • ๋ฐ˜๋“œ์‹œ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ค‘์š” ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ „๋‹ฌ์„ ๋ณด์žฅ
  • QoS๋Š” ๋ฐœํ–‰์ž์™€ ๊ตฌ๋…์ž ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๋ฐœํ–‰์ž๊ฐ€ ์ง€์ •ํ•œ ์ตœ๋Œ€ QoS ๋ ˆ๋ฒจ์ด ์šฐ์„ ์‹œ๋œ๋‹ค.
  • ๋ฐœํ–‰์ž๊ฐ€ QoS ๋ ˆ๋ฒจ์„ 2๋กœ ์ง€์ •ํ–ˆ๋‹ค๋ฉด ๊ตฌ๋…์ž๋Š” 0, 1, 2 ๋ ˆ๋ฒจ ๋ชจ๋‘ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐœํ–‰์ž๊ฐ€ QoS ๋ ˆ๋ฒจ์„ 0์œผ๋กœ ์ง€์ •ํ–ˆ๋‹ค๋ฉด ๊ตฌ๋…์ž์˜ QoS ๋ ˆ๋ฒจ์— ์ƒ๊ด€์—†์ด 0 ๋ ˆ๋ฒจ์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ฒŒ ๋œ๋‹ค.
  • QoS 0
    • ๋ฐœํ–‰์ž(ํด๋ผ์ด์–ธํŠธ)๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ํ›„ ๊ตฌ๋…์ž์˜ ์ˆ˜์‹  ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€๊ฐ€ ์ตœ๋Œ€ 1๋ฒˆ ์ „๋‹ฌ๋˜๋ฉฐ, ์ „๋‹ฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  • QoS 1
    • ๋ฉ”์‹œ์ง€ ์ „์†ก์ด ์™„๋ฃŒ๋˜๋ฉด ์„œ๋ฒ„๋Š” ๋ฐœํ–‰ ์™„๋ฃŒ ์‘๋‹ต๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰์ž์—๊ฒŒ ์ „์†กํ•˜๊ณ , ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์€ ๋ฐœํ–‰์ž๋Š” ์ „์†ก์ด ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ
    • ๊ตฌ๋…์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ž˜ ๋ฐ›์•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ์„œ๋ฒ„์— ์œ„์ž„ํ•˜๊ณ , ๋ฐœํ–‰์ž๋Š” ์„œ๋ฒ„์˜ PUBACK ๋ฉ”์‹œ์ง€๋งŒ ์ฒดํฌ
    • ๋ฉ”์‹œ์ง€๊ฐ€ ์ตœ์†Œ 1๋ฒˆ ์ „๋‹ฌ๋˜๋ฉฐ, ์ „๋‹ฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€๋งŒ ์ค‘๋ณต ์ „๋‹ฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  • QoS 2
    • ๋ฉ”์‹œ์ง€ ์ „์†ก์ด ์™„๋ฃŒ๋˜๋ฉด ์„œ๋ฒ„๋Š” ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ ‘์ˆ˜๋˜์—ˆ๋‹ค๋Š” PUBREC ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰์ž์—๊ฒŒ ์ „์†ก
    • ๋ฐœํ–‰์ž๋Š” PUBREC ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์„œ๋ฒ„์— ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ๋ณด์žฅ ๋ฐฐ๋‹ฌ์„ ์žฌ์š”์ฒญํ•˜๋Š” PUBREL ์ „์†ก
    • ์ด๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ๊ตฌ๋…์ž๊ฐ€ ๋ฉ”์‹œ์ง€ ํ™•์ธ์„ ํ•œ ํ›„ ๋ฉ”์‹œ์ง€ ์ „์†ก์„ ์™„๋ฃŒํ•˜๋ฉฐ ์ด๋ฅผ ๋ฐœํ–‰์ž์—๊ฒŒ ์•Œ๋ฆผ
    • ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹จ ํ•œ ๋ฒˆ, ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค.







์—ฐ๊ฒฐ ์œ ์‹ค

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์žƒ์—ˆ์„ ๋•Œ ์ด๋ฅผ ๋ณด์ •ํ•˜๊ธฐ ์œ„ํ•œ MQTT ์ž์ฒด ๊ธฐ๋Šฅ

  • Last Will And Testament : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์˜ˆ๊ณ  ์—†์ด ์—ฐ๊ฒฐ์„ ์žƒ์—ˆ์„ ๋•Œ ์ด๋ฒคํŠธ๊ฐ€ ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒ, ์„œ๋ฒ„ ์ธก์—์„œ ์—ฐ๊ฒฐ ์œ ์‹ค ์—ฌ๋ถ€๋ฅผ ์ธ์ง€
  • ์žฅ๊ธฐ ๊ตฌ๋… : ์„œ๋ฒ„์— ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌ๋… ์ •๋ณด ์ €์žฅ๋จ, ์„ธ์…˜ ์ข…๋ฃŒ ํ›„ ์žฌ์ ‘์† ์‹œ์—๋„ ์žฌ์ž‘์—… ์—†์ด ๋ฐœํ–‰/๊ตฌ๋… ์œ ์ง€
  • ํด๋ฆฐ ์„ธ์…˜ : ์—ฐ๊ฒฐ ํ•ด์ œ ํ›„ ๋‹ค์‹œ ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๋•Œ ์ด์ „ ์„ธ์…˜ ์œ ์ง€/์‚ญ์ œ ์„ ํƒ

๋ฉ”์‹œ์ง€ ์‹œํ€€์Šค

  • ๋‹จ๊ธฐ ๊ตฌ๋…
    • ์„ธ์…˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋‚ด์—์„œ ๊ตฌ๋… ์š”์ฒญ ๋ฉ”์‹œ์ง€์™€ ์ข…๋ฃŒ ๋ฉ”์‹œ์ง€๋กœ ๊ตฌ๋… ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์ด๋ฃธ
    • ํ† ํ”ฝ ๋ฉ”์‹œ์ง€๋Š” ๊ตฌ๋… ์ˆ˜๋ช… ์ฃผ๊ธฐ ์•ˆ์—์„œ ์ „์†ก๋œ๋‹ค.
  • ์žฅ๊ธฐ ๊ตฌ๋…
    • ๊ตฌ๋… ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋‚ด์—์„œ ์„ธ์…˜์ด ์ƒ์„ฑ๋˜๊ณ  ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Œ
    • ์„œ๋ฒ„์— ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌ๋… ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋ฏ€๋กœ ์„ธ์…˜ ์ข…๋ฅ˜ ํ›„ ์žฌ์—ฐ๊ฒฐ ์‹œ์—๋„ ์žฌ์ž‘์—… ์—†์ด ๋ฐœํ–‰/๊ตฌ๋… ์œ ์ง€ ๊ฐ€๋Šฅ
  • Kepp Alive
    • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„ค์ •๋œ ์‹œ๊ฐ„(Keep Alive Timer) ์ด์ƒ ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค์ง€ ์•Š์œผ๋ฉด ์—ฐ๊ฒฐ์„ ํ•ด์ง€
    • ์—ฐ๊ฒฐ์ด ํ•ด์ง€๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœํ–‰ ๋ฉ”์‹œ์ง€๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ํ•‘ ๋ฉ”์‹œ์ง€ ์ „์†กํ•˜๊ณ , ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํƒ€์ด๋จธ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด์„œ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋จ
  • Will ๋ฉ”์„ธ์ง€
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ๋•Œ Will ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ธํŒ…ํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ๋ชจ๋“  ๊ด€๋ จ ๊ตฌ๋…์ž์—๊ฒŒ Will ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์•Œ๋ฆผ
    • Will ํ”Œ๋ž˜๊ทธ, Will QoS, Will Retain ๋“ฑ์„ ์„ธํŒ…






MQTT
[Youtube] #4. MQTT - IoT แ„‘แ…ณแ„…แ…ฆแ„‹แ…ตแ†ทแ„‹แ…ฏแ„แ…ณ แ„€แ…ฎแ„Žแ…ฎแ†จ

This post is licensed under CC BY 4.0 by the author.