Skip to content

๐Ÿ† [๋Œ€์ƒ์ž‘] ์ž„๋ฒ ๋””๋“œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฝ์ง„๋Œ€ํšŒ webOS๋ถ€๋ฌธ ๋ฐฉํŒŒ์ œํŒ€ - Delivery ๊ธฐ๋Šฅ

Notifications You must be signed in to change notification settings

webOS-KOSS/Delivery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Delivery

Delivery

์†Œ๊ฐœ

ํŒฌ๋ฐ๋ฏน ์ดํ›„ ํ˜„๊ด€ ์•ž์— ํƒ๋ฐฐ๋ฅผ ๋†“๊ณ  ๊ฐ€๋Š” ๋น„๋Œ€๋ฉด ๋ฐฐ๋‹ฌ ์„œ๋น„์Šค๊ฐ€ ์ผ์ƒํ™” ๋˜๋ฉด์„œ, ๋„๋‚œ์— ์ทจ์•ฝํ•œ ํƒ๋ฐฐ ๋ถ„์‹ค๋ฌผ์ด ์ ์ฐจ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ๋ˆ„๊ฐ€ ์–ธ์ œ ํ›”์ณ๊ฐ”๋Š”์ง€ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์„ ํŠน์ •ํ•˜์ง€ ๋ชปํ•ด ๋ถ„์‹ค๋œ ํƒ๋ฐฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์›”ํŒจ๋“œ์™€ ์—ฐ๋™๋˜๋Š” ํ˜„๊ด€ ์นด๋ฉ”๋ผ๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ๋ฐฐ๊ฐ€ ์˜จ ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋žŒ์„ ๋ณด๋‚ด ๊ฑฐ์ฃผ์ž์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค๋ฉด ํƒ๋ฐฐ ๋ถ„์‹ค์— ๋Œ€ํ•œ ๊ฑฑ์ •๊ณผ ํƒ๋ฐฐ ๋„๋‚œ ์œ„ํ—˜์„ ํ•ด์†Œ๋  ๊ฒƒ์ด๋‹ค.

Home ++ ์›”ํŒจ๋“œ์˜ ๋ฐฐ๋‹ฌ ๋„๋‚œ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์€ ํ˜„๊ด€ ์บ ์„ ํ†ตํ•ด ํƒ๋ฐฐ๊ฐ€ ์ธ์ง€๋˜๋ฉด ๋…นํ™”๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ์•Œ๋ฆผ์„ ๋ณด๋‚ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ํƒ๋ฐฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ๋…นํ™”๋ฅผ ์ข…๋ฃŒํ•˜๊ณ , Alert ์•Œ๋ฆผ์„ ๋ณด๋‚ด์–ด ๋ณธ์ธ์ด ์ˆ˜๋ นํ•˜์˜€๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋ณธ์ธ์ด ์ˆ˜๋ นํ•œ ๊ฒƒ์ด ๋งž๋‹ค๋ฉด, ์˜์ƒ์„ ์‚ญ์ œํ•˜๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ์˜์ƒ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ํƒ๋ฐฐ ๋„๋‚œ์˜ ๊ฒฝ์œ„๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

System Architecture

SystemArchitecture

Flow Chart

FlowChart

๊ธฐ์ˆ  ์†Œ๊ฐœ

AWS EC2(ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„):

  • ๋ณด์•ˆ ๊ทธ๋ฃน์˜ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์—์„œ 8000ํฌํŠธ๋ฅผ ๊ฐœ๋ฐฉํ•˜์—ฌ ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ํ•˜์˜€๋‹ค.

  • Express.js(์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ / ํŒŒ์ผ ์„œ๋ฒ„)
    • ๋…นํ™”ํ•œ ์˜์ƒ์„ package/๋กœ POST ์š”์ฒญ์„ ๋ณด๋ƒ„์œผ๋กœ์จ ์—…๋กœ๋“œํ•œ๋‹ค.
    • ์—…๋กœ๋“œ๋œ ์˜์ƒ์„ package/<ํŒŒ์ผ๋ช…>์œผ๋กœ GET ์š”์ฒญ์„ ๋ณด๋ƒ„์œผ๋กœ์จ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์—…๋กœ๋“œ๋œ ์˜์ƒ ์ค‘ ํ•„์š”์—†๋Š” ์˜์ƒ์„ package/<ํŒŒ์ผ๋ช…>์œผ๋กœ DELETE ์š”์ฒญ์„ ๋ณด๋ƒ„์œผ๋กœ์จ ์‚ญ์ œํ•œ๋‹ค.
    • ๋…นํ™”ํ•œ ์˜์ƒ๋“ค์˜ ๋ชฉ๋ก์„ vidlist/๋กœ GET ์š”์ฒญ์„ ๋ณด๋ƒ„์œผ๋กœ์จ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Request.JS ๋ชจ๋“ˆ์„ ํ†ตํ•ด ์›”ํŒจ๋“œ์—๊ฒŒ ๋ฐ›์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณธ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

webOS(์›”ํŒจ๋“œ):

  • ENACT(com.delivery.app)
    • LogPanel์—์„œ๋Š” ํƒ๋ฐฐ๊ฐ€ ๋ช‡ ์‹œ์— ๋„์ฐฉํ–ˆ๊ณ , ๋ช‡ ์‹œ์— ์ˆ˜๋ น์„ ํ–ˆ๋Š”์ง€๋ฅผ DB8์„ ์กฐํšŒํ•˜๋Š” ์„œ๋น„์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.
    • VidoePanel์—์„œ๋Š” enact์˜ Changable์„ ์‚ฌ์šฉํ•˜์—ฌ VideoList ๋‚ด ์˜์ƒ ๋ชฉ๋ก ์ค‘ ํ•˜๋‚˜๋ฅผ ํด๋ฆญํ•˜๋ฉด Video์—์„œ ํ•ด๋‹น ์˜์ƒ์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.
    • RoutablePanels๋กœ LogPanel๊ณผ VideoPanel ๊ฐ„์— ์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

  • Node.JS(com.delivery.app.service)
    • com.webos.service.db ์˜ LS2 API๋“ค์„ ํ™œ์šฉํ•˜์—ฌ DB8์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • init service: putKind -> putPermission -> find์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ DB8์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ ๋ฐ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€์ ธ์™€ ์•ฑ์— ์ „๋‹ฌํ•œ๋‹ค.
    • getVids service: node Module ์ค‘์— ํ•˜๋‚˜์ธ Request.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ EC2์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ / ํŒŒ์ผ ์„œ๋ฒ„์— GET Method๋ฅผ ํ†ตํ•ด Body๋ฅผ parseํ•˜์—ฌ video์˜ list๋ฅผ ํ™•๋ณดํ•˜์—ฌ, Enact์— ๋ณด๋‚ด UI์— ์–ด๋–ค ์˜์ƒ์ด ์กด์žฌํ•˜๋Š”์ง€ ๋ฐ˜์˜๋˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.
    • delVid service: node Module ์ค‘์— ํ•˜๋‚˜์ธ Request.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ EC2์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ / ํŒŒ์ผ ์„œ๋ฒ„์— delete Method๋ฅผ ํ†ตํ•ด ์˜์ƒ์„ ์ง€์šฐ๋„๋ก ํ•˜์˜€๋‹ค.
    • loop service: delivery/arrived topic๊ณผ delivery/received topic์„ subscribeํ•˜์—ฌ ํ˜„๊ด€์˜ Raspbian์œผ๋กœ๋ถ€ํ„ฐ ํƒ๋ฐฐ๊ฐ€ ์ธ์ง€๋˜๊ณ , ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ com.webos.service.tts/speak ์™€ com.webos.notification/createToast ์•Œ๋ฆผ์„ ํ†ตํ•ด ์›”ํŒจ๋“œ์— ํ‘œ๊ธฐํ•ด์คŒ๊ณผ ๋™์‹œ์— DB8์— ๋ฐ์ดํ„ฐ๋ฅผ Putํ•˜์—ฌ Log์— ๋„์šธ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•˜์˜€๋‹ค. ํŠนํžˆ, delivery/received topic์— ์ˆ˜๋ น ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ com.webos.notification/createAlert ๋ฅผ ๋‚ด์žฅ node module ์ค‘ ํ•˜๋‚˜์ธ Child Process๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Yes์™€ No๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๋‹ค. ๋งŒ์•ฝ Yes๋ฅผ ์„ ํƒํ•œ๋‹ค๋ฉด delVid service๊ฐ€ ์‹คํ–‰๋˜๊ณ , No๋ฅผ ์„ ํƒํ•œ๋‹ค๋ฉด getVids service๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•˜์˜€๋‹ค.

Raspbian OS(ํ˜„๊ด€):

  • Python(YOLOv5)
    • detect.py๊ฐ€ ์ƒ์‹œ ํ˜„๊ด€ ์•ž ํƒ๋ฐฐ ์ƒ์ž์˜ ์œ ๋ฌด๋ฅผ ๊ฐ์‹œํ•œ๋‹ค.
    • upload.py๊ฐ€ ์„œ๋ฒ„์— ์˜์ƒ ์—…๋กœ๋“œ ์š”์ฒญ์„ ์ค€๋‹ค.
    • ํƒ๋ฐฐ ์ƒ์ž๋ผ๊ณ  ์ธ์‹๋œ ๊ฐ์ฒด์˜ ๊ฐœ์ˆ˜๊ฐ€ 30ํ”„๋ ˆ์ž„ ์ด์ƒ ๋™์ผํ•  ๋•Œ ํƒ๋ฐฐ๊ฐ€ ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํƒ๋ฐฐ ์ƒ์ž๋ผ๊ณ  ์ธ์‹๋œ ๊ฐ์ฒด๊ฐ€ 30ํ”„๋ ˆ์ž„ ์ด์ƒ 0๊ฐœ์ผ ๋•Œ ํƒ๋ฐฐ ์ƒ์ž๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
    • ํƒ๋ฐฐ ๋„์ฐฉํ•˜๋ฉด ๋…นํ™”๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , mqtt๋กœ ์›”ํŒจ๋“œ์—๊ฒŒ ๋„์ฐฉํ•œ ์‚ฌ์‹ค์„ ์•Œ๋ฆฐ๋‹ค. ํƒ๋ฐฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ๋…นํ™”๋ฅผ ์ข…๋ฃŒํ•˜๊ณ , mqtt๋กœ ์›”ํŒจ๋“œ์—๊ฒŒ ์ด ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๊ณ , ํ•ด๋‹น ์˜์ƒ์„ ์„œ๋ฒ„์— ์—…๋กœ๋“œ ํ•œ๋‹ค. ํ•ด๋‹น ์˜์ƒ์„ ์—…๋กœ๋“œํ•˜๋ฉด ๋กœ์ปฌ์— ์žˆ๋˜ ์˜์ƒ์€ ์ง€์šด๋‹ค.

๊ฐœ๋ฐœํ™˜๊ฒฝ ๋ฐ ๊ฐœ๋ฐœ์–ธ์–ด

  • ์šด์˜์ฒด์ œ : Windows 11, Ubuntu 20.04.5 LTS, webOS 2.18.0, Raspbian OS
  • ๋””๋ฐ”์ด์Šค ๊ตฌ์„ฑ : Raspberry Pi 4B 2EA
  • IDE : Visual Studio Code
  • ๊ฐœ๋ฐœ ์–ธ์–ด : Enact, Node.JS, Python
  • package manager : npm, requirements.txt(python)

Quick Start

ares-setup-device์—์„œ default๋ฅผ ์ž์‹ ์ด ์„ค์น˜ํ•  webOS์˜ IP๋กœ ์„ค์ •ํ•˜์„ธ์š”.

source wallpad.setup.sh

์žฅ์•  ์š”์ธ

  1. LS2 API ์ค‘์—์„œ com.webos.notification/createAlert API๋Š” 3rd party์•ฑ์—์„œ์˜ ์ ‘๊ทผ์„ ํ—ˆ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
    --> ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ node์˜ ๋‚ด์žฅ ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜์ธ Child Process๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘์ ์œผ๋กœ webOS์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ์šฐํšŒํ•˜์—ฌ createAlert API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  2. Enact ์•ฑ์ด ๋กœ์ปฌ์—์„œ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๋˜๋Š” ์˜์ƒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
    --> ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋ฒ„๋ฅผ EC2์— ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•ด์„œ ์™ธ๋ถ€์˜ ์˜์ƒ์„ URL์„ ํ†ตํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๋‹ค.

About

๐Ÿ† [๋Œ€์ƒ์ž‘] ์ž„๋ฒ ๋””๋“œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฝ์ง„๋Œ€ํšŒ webOS๋ถ€๋ฌธ ๋ฐฉํŒŒ์ œํŒ€ - Delivery ๊ธฐ๋Šฅ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published