Edge-home-orchestration-go: [DataStorage] ์บ์‹œ์—์„œ ์žฅ์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์— ๋งŒ๋“  2021๋…„ 06์›” 08์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: lf-edge/edge-home-orchestration-go

๋ฒ„๊ทธ ์„ค๋ช…
edge-orchestration์ด ์žฅ์น˜ ๊ตฌ์„ฑ์„ edgex์— ์ฒ˜์Œ ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ edge-orchestration์ด ์บ์‹œ์—์„œ ์žฅ์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์žฌ๋ถ€ํŒ… ํ›„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

  1. redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์šฐ๊ธฐ
  2. DataStorage ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์‹คํ–‰
  3. Int ๊ฐ’ ์—…๋กœ๋“œ ์ธก๋ฉด์—์„œ API ํ˜ธ์ถœ

์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์—์„œ ๋กœ๊ทธ

level=INFO ts=2021-06-08T11:09:41.747141457Z app=datastorage source=config.go:193 msg="Loaded configuration from ./res/configuration.toml"

level=INFO ts=2021-06-08T11:09:41.748290804Z app=datastorage source=config.go:304 msg="Using local configuration from file (0 envVars overrides applied)"
level=INFO ts=2021-06-08T11:09:41.748336679Z app=datastorage source=httpserver.go:99 msg="Web server starting (127.0.0.1:49986)"
level=INFO ts=2021-06-08T11:09:41.748393149Z app=datastorage source=init.go:144 msg="Check Metadata service's status by ping..."
level=INFO ts=2021-06-08T11:09:41.748528479Z app=datastorage source=init.go:144 msg="Check Data service's status by ping..."
level=INFO ts=2021-06-08T11:09:41.749614627Z app=datastorage source=init.go:68 msg="Service clients initialize successful."
level=INFO ts=2021-06-08T11:09:41.750747311Z app=datastorage source=service.go:207 msg="Addressable datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.751916563Z app=datastorage source=service.go:153 msg="Trying to find DeviceService: datastorage"
level=INFO ts=2021-06-08T11:09:41.752643978Z app=datastorage source=service.go:157 msg="DeviceService datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.754344754Z app=datastorage source=service.go:169 msg="New DeviceService Id: 6faac9ac-6ec1-41ee-8661-927954bb7ea1"
INFO[2021-06-08T11:09:41Z]storagedriver.go:43 Initialize [storagedriver] Device service intialize started
level=DEBUG ts=2021-06-08T11:09:41.75790956Z app=datastorage source=restrouter.go:119 route=/api/v1/resource/{deviceName}/{resourceName} methods=[POST] msg="Route added"
level=INFO ts=2021-06-08T11:09:41.757963324Z app=datastorage source=storagehandler.go:66 msg="Route /api/v1/resource/{deviceName}/{resourceName} added."
level=INFO ts=2021-06-08T11:09:41.759800964Z app=datastorage source=restrouter.go:75 msg="Registering v2 routes..."
level=DEBUG ts=2021-06-08T11:09:41.76021791Z app=datastorage source=profiles.go:47 msg="created absolute path for loading pre-defined Device Profiles: /edge-orchestration/res"
level=DEBUG ts=2021-06-08T11:09:41.76330122Z app=datastorage source=profiles.go:172 msg="Getting EnableValueDescriptorManagement configuration value from Core Metadata"
level=DEBUG ts=2021-06-08T11:09:41.763993203Z app=datastorage source=devices.go:29 msg="Loading pre-define Devices from configuration"
level=DEBUG ts=2021-06-08T11:09:41.764037017Z app=datastorage source=devices.go:35 msg="Device datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.764581907Z app=datastorage source=devices.go:75 msg="Adding Device: {\"origin\":1623150581764,\"description\":\"RESTful Device\",\"name\":\"datastorage\",\"adminState\":\"UNLOCKED\",\"operatingState\":\"ENABLED\",\"protocols\":{\"other\":{}},\"labels\":[\"rest\",\"json\"],\"service\":{\"origin\":1623150581751,\"id\":\"6faac9ac-6ec1-41ee-8661-927954bb7ea1\",\"name\":\"datastorage\",\"operatingState\":\"ENABLED\",\"addressable\":{\"origin\":1623150581749,\"id\":\"7b016ca7-5b53-4aa3-88e5-6f4a0b484271\",\"name\":\"datastorage\",\"protocol\":\"HTTP\",\"method\":\"POST\",\"address\":\"127.0.0.1\",\"port\":49986,\"path\":\"/api/v1/callback\",\"baseURL\":\"http://127.0.0.1:49986\",\"url\":\"http://127.0.0.1:49986/api/v1/callback\"},\"adminState\":\"UNLOCKED\"},\"profile\":{\"description\":\"REST Device\",\"id\":\"3b356db4-fe39-4dc4-bd25-8bebef5e15ce\",\"name\":\"datastorage\",\"manufacturer\":\"Home Edge\",\"model\":\"Home Edge\",\"labels\":[\"rest\",\"json\",\"numeric\",\"float\",\"int\"],\"deviceResources\":[{\"description\":\"json\",\"name\":\"json\",\"properties\":{\"value\":{\"type\":\"String\",\"readWrite\":\"RW\",\"mediaType\":\"application/json\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"name\":\"int\",\"properties\":{\"value\":{\"type\":\"Int64\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"float\",\"name\":\"float\",\"properties\":{\"value\":{\"type\":\"Float64\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"jpeg\",\"name\":\"jpeg\",\"properties\":{\"value\":{\"type\":\"Binary\",\"readWrite\":\"RW\",\"mediaType\":\"image/jpeg\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"png\",\"name\":\"png\",\"properties\":{\"value\":{\"type\":\"Binary\",\"readWrite\":\"RW\",\"mediaType\":\"image/png\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"string\",\"name\":\"string\",\"properties\":{\"value\":{\"type\":\"String\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}}]}}"
level=INFO ts=2021-06-08T11:09:41.766971106Z app=datastorage source=autodiscovery.go:32 msg="AutoDiscovery stopped: disabled by configuration"
level=INFO ts=2021-06-08T11:09:41.767031297Z app=datastorage source=autodiscovery.go:37 msg="AutoDiscovery stopped: interval error in configuration"
level=INFO ts=2021-06-08T11:09:41.76706353Z app=datastorage source=autodiscovery.go:41 msg="AutoDiscovery stopped: ProtocolDiscovery not implemented"
level=INFO ts=2021-06-08T11:09:41.767094873Z app=datastorage source=message.go:50 msg="Service dependencies resolved..."
level=INFO ts=2021-06-08T11:09:41.767156624Z app=datastorage source=message.go:51 msg="Starting datastorage to be replaced by makefile "
level=INFO ts=2021-06-08T11:09:41.767182718Z app=datastorage source=message.go:58 msg="Service started in: 20.913936ms"


level=DEBUG ts=2021-06-08T11:09:51.973581107Z app=datastorage source=storagehandler.go:84 msg="Received POST for Device=datastorage Resource=int"
level=INFO ts=2021-06-08T11:09:51.973670443Z app=datastorage source=manageddevices.go:71 msg="Device datastorage cannot be found in cache"
level=ERROR ts=2021-06-08T11:09:51.973714012Z app=datastorage source=storagehandler.go:88 msg="Incoming reading ignored. Device 'datastorage' not found"

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ(๋‹ค์Œ ์ •๋ณด๋ฅผ ์™„๋ฃŒํ•˜์‹ญ์‹œ์˜ค):

  • ํŽŒ์›จ์–ด ๋ฒ„์ „: Ubuntu 20.04
  • ํ•˜๋“œ์›จ์–ด: x86-64
  • ์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฆด๋ฆฌ์Šค: ์ฝ”์ฝ”๋„›
bug help wanted high priority

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

.๊ฒ€์ƒ‰์–ด {
๋ฐฐ๊ฒฝ์ƒ‰: #ffee94
}
NS {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}
TD {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}
๋ฆฌ {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}
์‹ ์ฒด {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; FONT-FAMILY: Arial, Arial
}

NS {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}


์•ˆ๋…• ํ”ผํ„ฐ,

์ด ๋ฌธ์ œ๋Š” EdgeX ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Cloud Tsai์™€ ๋…ผ์˜ํ•œ ํ›„ ์ž˜๋ชป๋œ IP ์ฃผ์†Œ ์‚ฌ์šฉ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” coredata๊ฐ€ ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์–ด ์บ์‹œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ปดํ“จํ„ฐ์˜ ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธํ•œ ๋Œ€๋กœ docker0 IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋ฌธ์ œ๋Š” ํƒœ์™„์ด ํ•œ ์žฅ์น˜์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” EdgeX์™€ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์žฅ์น˜์—์„œ ์‹คํ–‰๋˜๋Š” Edge-Orchestration์— ๋Œ€ํ•ด ์•„์ฃผ ์ž˜ ์–ธ๊ธ‰ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์บ์‹œ ๋ฌธ์ œ์™€ ์ƒ๊ด€์—†์ด ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ์„ค์ •์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ping docker(alpine)๋กœ ๋น„์Šทํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
๋‹ˆํˆฌ

---------- ์›๋ณธ ๋ฉ”์‹œ์ง€ ------
๋ณด๋‚ธ ์‚ฌ๋žŒ : Peter Moonki @ . >๋‚ ์งœ : 2021-09-07 07:46 (GMT+5:30)์ œ๋ชฉ : Re: [lf-edge/edge-home-orchestration-go] [DataStorage]๊ฐ€ ์บ์‹œ์—์„œ ์žฅ์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(#312).๋ฐ›๋Š” ์‚ฌ๋žŒ : * @ . >
CC : Nitu Sajjanlal @ . >, @ .* >

@nitu-s-gupta ์šฐ๋ฆฌ ์š”์ฒญ์˜ ๊ทผ๊ฑฐ๊ฐ€ EdgeX์˜ ๊ธฐ์กด device-sdk-go์™€ ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— EdgeX์—์„œ ์š”์ฒญํ•˜๋Š” ๋Œ€์‹  HomeEdge์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
โ€”๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ด๋ฉ”์ผ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ๊ตฌ๋…์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.iOS ๋˜๋Š” Android์šฉ GitHub Mobile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋™ ์ค‘์— ์•Œ๋ฆผ์„ ๋ถ„๋ฅ˜ํ•˜์‹ญ์‹œ์˜ค.

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

์•ˆ๋…•ํ•˜์„ธ์š” @t25kim ,

๋ฒ„๊ทธ๋ฅผ ๋ณต์ œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ :

  1. YAML ํ”„๋กœํ•„์˜ ์ด๋ฆ„์„ ์ˆ˜์ •ํ•˜๋ฉด
  2. ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์žฅ์น˜ ์ด๋ฆ„ ํŽธ์ง‘

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

์•ˆ๋…•ํ•˜์„ธ์š” @t25kim ,

๋ฒ„๊ทธ๋ฅผ ๋ณต์ œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ :

  1. YAML ํ”„๋กœํ•„์˜ ์ด๋ฆ„์„ ์ˆ˜์ •ํ•˜๋ฉด
  2. ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์žฅ์น˜ ์ด๋ฆ„ ํŽธ์ง‘

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

@sun-sharma ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
EdgeX v2.0.0์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. PR #326์œผ๋กœ โ€‹โ€‹ํ…Œ์ŠคํŠธํ•ด ๋ณด์„ธ์š”.

์ด ๋ฌธ์ œ๋Š” EdgeX ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ด๋ฏธ ์žˆ๋Š” ์žฅ์น˜๊ฐ€ ์บ์‹œ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”๊ฐ€๋œ ์žฅ์น˜๋Š” ์บ์‹œ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์žฌ๋ถ€ํŒ… ํ›„์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. device-rest.go๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ–‰๋™์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. edgex ํŒŒ์šด๋“œ๋ฆฌ์˜ device-sdk์—์„œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ™•์ธํ•œ ํŒŒ์ผ(/internal/provision/devices.go)์€ edgexfoundry์ธ ๊ฒฝ์šฐ ์žฅ์น˜ SDK์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜ ์‹œ์ž‘ ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” EdgeX ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ด๋ฏธ ์žˆ๋Š” ์žฅ์น˜๊ฐ€ ์บ์‹œ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”๊ฐ€๋œ ์žฅ์น˜๋Š” ์บ์‹œ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์žฌ๋ถ€ํŒ… ํ›„์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. device-rest.go๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ–‰๋™์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. edgex ํŒŒ์šด๋“œ๋ฆฌ์˜ device-sdk์—์„œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ™•์ธํ•œ ํŒŒ์ผ(/internal/provision/devices.go)์€ edgexfoundry์ธ ๊ฒฝ์šฐ ์žฅ์น˜ SDK์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜ ์‹œ์ž‘ ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

@nitu-s-gupta ์ €์™€ ํ•จ๊ป˜ EdgeX์— ์ ‘๊ทผํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ์š”? ๐Ÿ˜„

์ด ๋ฌธ์ œ๋Š” EdgeX ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ด๋ฏธ ์žˆ๋Š” ์žฅ์น˜๊ฐ€ ์บ์‹œ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”๊ฐ€๋œ ์žฅ์น˜๋Š” ์บ์‹œ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์žฌ๋ถ€ํŒ… ํ›„์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. device-rest.go๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ–‰๋™์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. edgex ํŒŒ์šด๋“œ๋ฆฌ์˜ device-sdk์—์„œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ™•์ธํ•œ ํŒŒ์ผ(/internal/provision/devices.go)์€ edgexfoundry์ธ ๊ฒฝ์šฐ ์žฅ์น˜ SDK์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜ ์‹œ์ž‘ ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋…ธ๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด edgex-metadata๋Š” ์บ์‹œ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ์„œ๋น„์Šค์— ์š”์ฒญ (๊ฐ€์ด๋“œ๊ฐ€ ์ž˜๋ชป๋จ)์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ edgex-metadata๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น REST API๋ฅผ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€์— ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์บ์‹œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

edgex-๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ

curl http://localhost:48081/api/v1/device
[{"created":1629351516733,"modified":1629351516733,"origin":1629351516731,"description":"RESTful Device","id":"774deba4-5469-4c38-8c2a-93a0f3c08252","name":"edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2",

CURL ์š”์ฒญ

$ curl -X 'POST' ' http://localhost :49986/api/v1/callback' -H 'accept: / ' -H '์ฝ˜ํ…์ธ  ์œ ํ˜•: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/json' -d '{"์œ ํ˜•":"DEVICE ","id":"774deba4-5469-4c38-8c2a-93a0f3c08252"}'

์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋กœ๊ทธ

INFO[2021-08-19T06:01:36Z]discovery.go:577 func1
level=INFO ts=2021-08-19T06:02:25.506828567Z app=datastorage source=device.go:72 msg="Added device: edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
INFO[2021-08-19T06:02:25Z]storagedriver.go:73 AddDevice [storagedriver] Device has been successfully added!!!!!! edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2
level=DEBUG ts=2021-08-19T06:02:25.50692288Z app=datastorage source=device.go:82 msg="Invoked driver.AddDevice callback for edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
level=DEBUG ts=2021-08-19T06:02:25.50693632Z app=datastorage source=device.go:89 msg="Handler - starting AutoEvents for device edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"

edgex๊ฐ€ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๋ฌด์—‡์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๊นŒ? (์ด ๋ฌธ์ œ๋ฅผ edgex์— ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค ํ˜‘์—…์— ์ข‹์Šต๋‹ˆ๋‹ค.

@t25kim device sdk์˜ edgex github์— ์ด์Šˆ๋ฅผ ์˜ฌ๋ ค์„œ ์—…๋ฐ์ดํŠธ ํ•ด๋ณด๋Š”๊ฑด ์–ด๋–จ๊นŒ์š”? API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์•Œ์•„์ฐจ๋ฆฐ ๋˜ ํ•˜๋‚˜์˜ ์‚ฌ์‹ค์€ ์šฐ๋ฆฌ๊ฐ€ ์ฝœ๋ฐฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” storagedriver์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž‘์—… ๋˜๋Š” ๋‹จ๊ณ„๊ฐ€ ๊ฑฐ๊ธฐ์— ํฌํ•จ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ๋„ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” EdgeX ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ด๋ฏธ ์žˆ๋Š” ์žฅ์น˜๊ฐ€ ์บ์‹œ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”๊ฐ€๋œ ์žฅ์น˜๋Š” ์บ์‹œ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์žฌ๋ถ€ํŒ… ํ›„์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. device-rest.go๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ–‰๋™์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. edgex ํŒŒ์šด๋“œ๋ฆฌ์˜ device-sdk์—์„œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ™•์ธํ•œ ํŒŒ์ผ(/internal/provision/devices.go)์€ edgexfoundry์ธ ๊ฒฝ์šฐ ์žฅ์น˜ SDK์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜ ์‹œ์ž‘ ์‹œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋…ธ๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด edgex-metadata๋Š” ์บ์‹œ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ์„œ๋น„์Šค์— ์š”์ฒญ (๊ฐ€์ด๋“œ๊ฐ€ ์ž˜๋ชป๋จ)์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ edgex-metadata๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น REST API๋ฅผ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€์— ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์บ์‹œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

edgex-๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ

curl http://localhost:48081/api/v1/device
[{"created":1629351516733,"modified":1629351516733,"origin":1629351516731,"description":"RESTful Device","id":"774deba4-5469-4c38-8c2a-93a0f3c08252","name":"edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2",

CURL ์š”์ฒญ

$ curl -X 'POST' ' http://localhost :49986/api/v1/callback' -H '์ˆ˜๋ฝ: _/_' -H '์ฝ˜ํ…์ธ  ์œ ํ˜•: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/json' -d '{"์œ ํ˜•": "์žฅ์น˜","id":"774deba4-5469-4c38-8c2a-93a0f3c08252"}'

์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋กœ๊ทธ

INFO[2021-08-19T06:01:36Z]discovery.go:577 func1
level=INFO ts=2021-08-19T06:02:25.506828567Z app=datastorage source=device.go:72 msg="Added device: edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
INFO[2021-08-19T06:02:25Z]storagedriver.go:73 AddDevice [storagedriver] Device has been successfully added!!!!!! edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2
level=DEBUG ts=2021-08-19T06:02:25.50692288Z app=datastorage source=device.go:82 msg="Invoked driver.AddDevice callback for edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
level=DEBUG ts=2021-08-19T06:02:25.50693632Z app=datastorage source=device.go:89 msg="Handler - starting AutoEvents for device edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"

edgex๊ฐ€ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๋ฌด์—‡์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๊นŒ? (์ด ๋ฌธ์ œ๋ฅผ edgex์— ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค ํ˜‘์—…์— ์ข‹์Šต๋‹ˆ๋‹ค.

@jpwhitemn ์•ˆ๋…•ํ•˜์„ธ์š”, EdgeX Foundry์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. EdgeX ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด ์ฃผ์ œ๋ฅผ ๋…ผ์˜ ๋ฐ/๋˜๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ ํ•ฉํ•œ ์‚ฌ๋žŒ์„ ์†Œ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๐Ÿ˜„

์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก device sdk์˜ edgex github์—์„œ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์•Œ์•„์ฐจ๋ฆฐ ๋˜ ํ•˜๋‚˜์˜ ์‚ฌ์‹ค์€ ์šฐ๋ฆฌ๊ฐ€ ์ฝœ๋ฐฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” storagedriver์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž‘์—… ๋˜๋Š” ๋‹จ๊ณ„๊ฐ€ ๊ฑฐ๊ธฐ์— ํฌํ•จ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ๋„ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ edgex์™€ ๊ณต์œ ํ•˜๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ home edge d-release ์ด์ „์— edgex์— ํŒจ์น˜๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด Edge Orchestration์—์„œ ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜์ž.

.๊ฒ€์ƒ‰์–ด {
๋ฐฐ๊ฒฝ์ƒ‰: #ffee94
}
NS {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}
TD {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}
๋ฆฌ {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}
์‹ ์ฒด {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; FONT-FAMILY: Arial, Arial
}

NS {
๊ธ€๊ผด ํฌ๊ธฐ: 10pt; ์—ฌ๋ฐฑ-ํ•˜๋‹จ: 5px; FONT-FAMILY: Arial, Arial; ์—ฌ๋ฐฑ-์ƒ๋‹จ: 5px
}


์•ˆ๋…• ํ”ผํ„ฐ,

์ด ๋ฌธ์ œ๋Š” EdgeX ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Cloud Tsai์™€ ๋…ผ์˜ํ•œ ํ›„ ์ž˜๋ชป๋œ IP ์ฃผ์†Œ ์‚ฌ์šฉ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” coredata๊ฐ€ ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์–ด ์บ์‹œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ์ปดํ“จํ„ฐ์˜ ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธํ•œ ๋Œ€๋กœ docker0 IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋ฌธ์ œ๋Š” ํƒœ์™„์ด ํ•œ ์žฅ์น˜์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” EdgeX์™€ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์žฅ์น˜์—์„œ ์‹คํ–‰๋˜๋Š” Edge-Orchestration์— ๋Œ€ํ•ด ์•„์ฃผ ์ž˜ ์–ธ๊ธ‰ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์บ์‹œ ๋ฌธ์ œ์™€ ์ƒ๊ด€์—†์ด ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ์„ค์ •์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ping docker(alpine)๋กœ ๋น„์Šทํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—์ง€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
๋‹ˆํˆฌ

---------- ์›๋ณธ ๋ฉ”์‹œ์ง€ ------
๋ณด๋‚ธ ์‚ฌ๋žŒ : Peter Moonki @ . >๋‚ ์งœ : 2021-09-07 07:46 (GMT+5:30)์ œ๋ชฉ : Re: [lf-edge/edge-home-orchestration-go] [DataStorage]๊ฐ€ ์บ์‹œ์—์„œ ์žฅ์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(#312).๋ฐ›๋Š” ์‚ฌ๋žŒ : * @ . >
CC : Nitu Sajjanlal @ . >, @ .* >

@nitu-s-gupta ์šฐ๋ฆฌ ์š”์ฒญ์˜ ๊ทผ๊ฑฐ๊ฐ€ EdgeX์˜ ๊ธฐ์กด device-sdk-go์™€ ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— EdgeX์—์„œ ์š”์ฒญํ•˜๋Š” ๋Œ€์‹  HomeEdge์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
โ€”๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ด๋ฉ”์ผ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ๊ตฌ๋…์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.iOS ๋˜๋Š” Android์šฉ GitHub Mobile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋™ ์ค‘์— ์•Œ๋ฆผ์„ ๋ถ„๋ฅ˜ํ•˜์‹ญ์‹œ์˜ค.

์นœ์ ˆํ•œ ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @nitu-s-gupta ๐Ÿ˜„

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