https://gall.dcinside.com/mgallery/board/view/?id=smartthings&no=9731
๋ฃจํด ์์ฑ ์ด์์คํดํธ์ ๊ฐ๋ ์ ๋ํด ์ดํด๋ดค์. ์ด์ ํ ๋ฐ ๋ ๋ค์ด๊ฐ์, ๋ฃจํด ์์ฑ ์ด์์คํดํธ๊ฐ ์ด๋ป๊ฒ ์ฌ๋์ ๋ง์ ๋ฃจํด์ผ๋ก ๋ฐ๊ฟ๋ด๋์ง ๊ทธ ๋ด๋ถ ๊ณผ์ ์ ์์๋ณด๋ ค๊ณ ํจ.
์ค๋งํธ์ฑ์ค์ ๋ฃจํด ์์ฑ ์ด์์คํดํธ์ ์ ์ฒด์ ์ธ ๋ฃจํด ์์ฑ ํ์ดํ๋ผ์ธ์ด ๋ชจ๋ ๋ฐํ์ง ๊ฒ์ ์๋์ง๋ง
๋ฃจํด์์ฑ ์ด์์คํดํธ ์์์ ์ค๋งํธ์ฑ์ค์ ์๋ฃ๊ฐ ์ด๋ป๊ฒ ๋ฐ์์ง๊ณ , ๋ฐ๋๋ ์ง๋ ์ ์ ์๊ธฐ ๋๋ฌธ์
๊ธ ์์์ ์์ ๋ฃจํด ์์ฑ ์ด์์คํดํธ์ ํ์ดํ๋ผ์ธ์ ๊ฐ๋จํ๊ฒ ์์ฝํ์๋ฉด ๋ค์๊ณผ ๊ฐ์
1๋จ๊ณ)ย ๋จผ์ ์ค๋งํธ์ฑ์ค์ ๋ฑ๋ก๋ ์ ์ ์ ๊ณ์ ์ ์ ๋ณด๋ฅผ ํ์ ํ๋ค (๊ธฐ๊ธฐ ๋ชฉ๋ก, ์์น ์ ๋ณด, ์๊ฐ๋, ๋ ์จ ๋ฑ)ย
2๋จ๊ณ) ์ค๋งํธ์ฑ์ค ์์ ์ ์ ์ ๊ณ์ ์ ์ ๋ณด๋ ์์ฐ์ด๋ก ๋ง๋ค์ด์ง ๋ช ๋ น ๊ฐ์ด๋ฐ ์กฐ๊ฑด์ ๋ง๋ ๊ฒ์ ์์ฑํ AI๊ฐ ๊ณ ๋ฅธ๋ค.ย
3๋จ๊ณ) ๊ณจ๋ผ์ง ์กฐ๊ฑด์ '์ธ์ ์คํํ ๊น์'์ '๋ฌด์์ํ ๊น์'๋ก ์นํํด์ ๋ฃจํด ์์ฑ์ ๋ง์นจ
๊ทธ๋์ ์ค๋งํธ์ฑ์ค ๋ฃจํด์์ฑ ์ด์์คํดํธ์๋ deviceMap์ด ์์.
deviceMap์ ๊ฐ๋จํ ๋งํ์๋ฉด ์ด๋ค ๊ธฐ๊ธฐ๋ฅผ, ์ด๋ค ๊ธฐ๋ฅ์ผ๋ก, ์ด๋ค ์กฐ๊ฑด์์ ์ธ ์ ์๋์ง ์๋ฒฝํ ์ ์ํ๋ ์ค๊ณ๋๊ฐ ๋ฐ๋ก deviceMap์.ย
์ ๋๋ฐ์ด์ค๋งต์ด ํ์ํ๋๋ฉดย ์ฌ๋์ ์์ด์ปจ,๋ถ ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ๋งํ์ง๋ง, ์ค๋งํธ์ฑ์ค ์์๋ ๊ทธ๋ ๊ฒ ๋จ์ํ๊ฒ ๊ธฐ๋ก๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ด๊ณ ,ย ๋ด ๊ณ์ ์ ๋ฑ๋ก๋ ๊ธฐ๊ธฐ๊ฐ ์ฌ๋ฌ๊ฐ์ผ ์๋ ์๊ณ , ์ด๋ ๋ฐฉ์ ๊ธฐ์ค์ผ๋ก ํด์ผํ ์ง๋ ๋ชจํธํ๊ธฐ ๋๋ฌธ.
deviceMap์ ์ฌ์ฉ์์ ๊ณ์ ์ ๊ธฐ๊ธฐ๋ค์ ๋ฉํ๋ฐ์ดํฐ์ธ ์นดํ ๊ณ ๋ฆฌ์ ๊ธฐ๋ฅ์ธ capabilities๋ก ์ ๋ฆฌํด๋ ์ผ์ข ์ ์ฌ์ ์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์
๋ฐ๋ผ์ ์์ฑํ AI๊ฐ ์์ด์ปจ์ด๋ผ๋ ๋จ์ด๋ฅผ ๋ง๋๋ฉด, deviceMap์ผ๋ก ๋ถ๋ฆฌ๋ ์ฌ์ ์ ๋ค์ ธ์ ์ค์ ๋ฃจํด์์ ํธ์ถ ๊ฐ๋ฅํ ์์ด์ปจ์ ์ฐพ๊ณ , ์ด ๋ช ๋ น์ด ์ด๋ค๊ฒ๊ณผ ์ฐ๊ด์ด ์๋์ง ์์๋ณด๋ ์ผ์ ํจ.
์ฌ์ ์ ํน์ง์ ํค์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค๋ ๊ฑฐ์. ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ย ํค์ ๊ฐ์ด๋ผ๋ย 2๊ฐ์ง์ ์ ๋ณด๋ฅผ ๋ฐ๋์ ์ ์ฅํจ
1. ์ฌ์ ์์ ๋ค์ด๊ฐ๋ ๋จ์ด๊ฐ ์ด๋ค ์ฑ๊ฒฉ์ ๊ฐ์ง๊ณ ์๋์ง
2. ์ฌ์ ์์ ๋ค์ด๊ฐ๋ ๋จ์ด๊ฐ ๋ฌด์์ธ์ง
๊ฐ๋จํ ๋๋ฐ์ด์ค ๋งต์ผ๋ก ํ์ธํด๋ณด๋ ค๊ณ ํจ
"deviceMap": { "airPurifierSwitch1": { "deviceCategories": [ "AirPurifier" ], "capabilities": [ "switch", "airQualitySensor" ] }, "lightSwitch1": { "deviceCategories": [ "Light", "Switch" ], "capabilities": [ "switch" ] }, "airConditionerSwitch1": { "deviceCategories": [ "AirConditioner" ], "capabilities": [ "switch" ] },
์ด๊ฒ์ ์ค๋งํธ์ฑ์ค ๋ฃจํด ์์ฑ ์ด์์คํดํธ๊ฐ ๊ฐ์ง๊ณ ์๋ airPurifierSwitch1,ย lightSwitch1,ย airConditionerSwitch1์ ๋๋ฐ์ด์ค ๋งต์
์ฌ์ฉ์๊ฐ ๊ณต๊ธฐ์ฒญ์ ๊ธฐ์ ๋ํ ๋ฃจํด์ ์ํ๋ฉด, ์ค๋งํธ์ฑ์ค ๋๋ฐ์ด์ค ์นดํ ๊ณ ๋ฆฌ์์ย AirPurifier ์นดํ ๊ณ ๋ฆฌ์ธ ๋๋ฐ์ด์ค ๋ฆฌ์คํธ๋ฅผ ๋ฝ์์ค๋๊ฑฐ์
๊ทธ๋ฆฌ๊ณ ๋๋ฐ์ด์ค ๋ฆฌ์คํธ ์์์๋ ์จ์คํ ์ค์์น๋ ๊ณต๊ธฐ์ง ๊ด๋ จ capability๋ฅผ ๋ฝ์์ฌ ์ ์๊ฒ๋จ.
์ฌ๊ธฐ์ ํค๋ย deviceCategories,ย capabilities์ด๊ณ ๊ฐ์ ๋๊ดํธ ์์ ๋ค์ด๊ฐ ๋ฌธ์๋ค์. (๋๊ดํธ๋ 1๊ฐ ์ด์์ ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋ค๋ ๋ป)
์ด๋ ๊ฒ deviceMap์ ๊ตฌ์กฐ์ฒด์ ์ฑ๊ฒฉ์ ๊ฐ์ง๊ณ ์์. ๊ทธ๋ฆฌ๊ณ deviceMap ์์ฒด๋ ๊ฐ ๊ธฐ๊ธฐ๋ค์ ๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ํค์
"tempSensor1": { "deviceCategories": [ "AirQualityDetector", "TempSensor", "MultiFunctionalSensor", "Button", "GenericSensor", "TempHumiditySensor" ], "capabilities": [ "temperatureMeasurement" ] },
"blindWindowShade1": { "deviceCategories": [ "Blind" ], "capabilities": [ "windowShade", "switch" ] },
๋๋ฐ์ด์ค ๋งต์ ์ฌ๋ฌ ๊ฐ์ ๋ณต์กํ๊ฒ ๊ฐ์ง ์๋ ์์ผ๋ฉด์๋, ๊ผญ ํ์ํ ๊ธฐ๋ฅ๋ง ๊ฐ์ ธ์ค๊ฒ๋ ํด์ ์์ฑํ AI๊ฐ ๋ ํ์คํ๊ฒ ์ฐ์ ์์๋ฅผ ํ๋จํ๊ธฐ ์ํ ์ผ์ ํ๊ธฐ๋ ํจ
์ฌ์ฉ์๊ฐ ์จ๋์ผ์ ๊ด๋ จ ๋ฃจํด์ ๋ง๋ค๊ณ ์ถ์๋ deviceMap์์๋ ๊ณต๊ธฐ์ง ๊ฐ์ง, ์จ๋ ๊ฐ์ง, ๋ค๋ชฉ์ ์ผ์, ๋ฒํผ, ์ ๋ค๋ฆญ ์ผ์, ์จ์ต๋ ์ผ์์ ๊ฐ์ ๊ด๋ฒ์ํ ์นดํ ๊ณ ๋ฆฌ์ ๋๋ฐ์ด์ค๋ฅผ ํธ์ถํ ์ ์์. ๊ทธ๋ฐ๋ฐ ๊ทธ ์ค์์๋ย temperatureMeasurement ๋ผ๋ capability๋ฅผ ๋ฝ์์ฌ ์ ์์.ย
์ฌ๊ธฐ๊น์ง deviceMap์ ์์๋ดค๋๋ฐ, ์ด์ deviceMap์ ํ์ฉํ๋ templeteMap์ ์๊ฐํ๋ ค๊ณ ํจ
templeteMap์ ๋ฃจํด ์์ฑ ์ด์์คํดํธ๋ฅผ ์ฒ์ ์ผฐ์๋ ์์ชฝ์ ๋จ๋ ๋ค์ฌ์ฏ๊ฐ์ ์ถ์ฒ ๋ฃจํด์ ๋งํจ
์ด๊ฒ์ด ์ ์ค์ํ๋๋ฉด ์์ฑํ AI์๊ฒ ์ ๋ฌํ๋ ํ๋กฌํํธ๊ฐ ์์ฐ์ด๊ฐ ์๋ ํํ๋ก ๋ฐ๋ก ์์์ง๊ธฐ ๋๋ฌธ์.
์ฝ๊ฒ ๋งํด์ templeteMap์ ์๋ฉด ์ฌ์ฉ์๊ฐ ์์ฐ์ด๋ก ๋งํ ๋ช
๋ น์ด ์ด๋ค ํํ๊ฐ ๋์ด ์ต์ข
์ ์ผ๋ก ์์ฑํ AI์๊ฒ ๋ณด๋ด์ง๋ ์ง ์ ์ ์๊ฒ ๋๋ค๋ ๊ฒ์.
ย
"templateMap": { "KO": { "routineSuggestions": [ { "template": "์ค์ 9์์ \"๊ตฟ๋ชจ๋~ ์ข์์์นจ\" ์ธ์ฌํด์ค", "types": [ "GENERAL" ], "priority": 999 },
์ด๊ฒ ๋งค์ฐ ๊ฐ๋จํ ํ ํ๋ฆฟ ๋งต์ ๋ชจ์ต์
์ค์ 9์์ \"๊ตฟ๋ชจ๋~ ์ข์์์นจ\" ์ธ์ฌํด์ค ๋ผ๋ ํ ํ๋ฆฟ์ด ์์
์ด ๊ฒ์ ํ์ ์ General์ด๊ณ , ์ฐ์ ์์๋ 999์. ์ด๊ฒ์ด ๋งค์ฐ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์์..
{ "template": "๋ฐค์ ์ค๋ด ์จ๋๊ฐ 20๋ ์ดํ๋ก ๋จ์ด์ง๋ฉด {fanSwitch1.deviceName} ๊บผ์ค", "types": [ "DEVICE" ], "suggestionCondition": { "deviceInfoList": [ { "deviceMapKey": "tempSensor1", "onlyOneDevice": true, "restrictedOneRoom": true }, { "deviceMapKey": "fanSwitch1", "onlyOneDevice": true, "restrictedOneRoom": true } ], "roomPriority": [ "๋ณต๋", "๊ฑฐ์ค", "์๋ฐฉ", "์์ฌ" ] }, "priority": 1 },
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ์ต๊ณ ๋ก ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ณต์กํ ํ ํ๋ฆฟ๋งต์
ํค์ ๊ฐ์ด ํ๋ง์์ก์ง?
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ํ์
์ ์ง์คํด์ผํจ. types์ ๋ด๊ฒจ์ง ์ ์๋ ๋ชจ๋ ํ์
์ ๋ฆฌ์คํธ๋ ๋ค์๊ณผ ๊ฐ์
DEVICE: ์ค๋งํธ์ฑ์ค์ ๋ถ์ด์๋ ๊ธฐ๊ธฐย
MEMBER: ์ค๋งํธ์ฑ์ค ๋ฉค๋ฒ ์์น์ธ ๊ฐ์กฑ/์ฌ์ฉ์์ ์์น๋ ์ํย
GEOLOCATION: ๋ ์จ, ํด๋ฐ/ํด์ง ์๊ฐ, modes์ย ์ธ์ถ ์ฌ๋ถย
DUST: ๋ ์จ์ ๋ฏธ์ธ๋จผ์ง ์ํ
SECURITY: ์ค๋งํธ์ฑ์ค ํ ๋ชจ๋ํฐ๋ง์ ์ํ
์ด ๊ฐ์ค์ ๊ณต๊ฐ๋์ง ์์ ๊ฒ๋ค์ด ๋ง๊ณ , ์ค๋งํธ์ฑ์ค ์์์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ฒ๋ค์ด ๋๋ถ๋ถ์
๊ทธ๋์ย DEVICE๋ง ํ์ธํ ์ ์์.
DEVICE ํ์ ์ ํน์ง์ย deviceMap์ ํธ์ถํ๋ค๋ ๊ฒ์ ์์. ๊ทธ๋ฌ๋๊น types๊ฐ DEVICE ์ผ ๋๋ง deviceMap์ด ์ฐ์.
๊ทธ ๋ค์์ย priority์ ์ง์คํด๋ณด๋ฉด
์ซ์๊ฐ ์์ ์๋ก ์ฐ์ ์์๊ฐ ๋์ ๋ณต์กํ ๋ฃจํด์ด๊ณ , ์ซ์๊ฐ ํด ์๋ก ์ฐ์ ์์๊ฐ ๋ฎ์ ๋จ์ํ ๋ฃจํด์ด๋ผ๋ ๊ฒ์ ์ ์ ์์
์์ ์ฌ๋ฆฐ templeteMap์ ๋ณด๋ฉด, priority๊ฐ ์ ์ผ ๋์ ์์์ธ 1์ธ ํ ํ๋ฆฟ์ ๊ธฐ๊ธฐ ์ฐ๋, ์์น ๊ธฐ๋ฐ ๋ฑ ์ฌ๋ฌ ํ์ ์ด ์ฐ์ธ ๊ฒ๋ค์ด๊ณ ย
priority๊ฐ 999์ธ ๋งค์ฐ ํ์์์ ํ ํ๋ฆฟ์ ๋ฑํ ์ค๋งํธ์ฑ์ค์ ๊ธฐ๊ธฐ๊ฐ ์์ด๋ ๋ง๋ค ์ ์๋ ์ผ๋ฐ์ ์ธ ์๊ฐ/๋ ์จ ๊ธฐ๋ฐ ์๋ฆผ ๊ธฐ๋ฐ์ ๋ฃจํด์ด๋ผ๋ ๊ฒ์ ์ ์ ์์.
์ ๊ทธ๋ฌ๋ฉด types๊ฐ DEVICE์ผ๋ ํ์ดํ๋ผ์ธ์ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์. ์ฐธ๊ณ ๋ก ์์ฑํAI๊ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฝ๋ ์์๊ฐ ์๊ธฐ๋ ํ์ง๋ง ์ผ์ฒ๋ฆฌ๋ฅผ ๋ฑํ ์์๋๋ก ํ๋๊ฑด ์๋
- deviceMap์ ์ด๊ณ ๊ฐ key๊ฐ ์ด๋ค ์นดํ ๊ณ ๋ฆฌ์ capabilities์ธ์ง ํ์ ํจ.ย
- ์ค๋งํธ์ฑ์ค์ ๊ณ์ ์ ๋ฑ๋ก๋ ๊ธฐ๊ธฐ ๋ชฉ๋ก์์ ํํฐ๋ง์ ์์ํจย
-ย onlyOneDevice๋กย ๊ธฐ๊ธฐ๊ฐ ํ๋๋ง ์๋์ง ํ์ธํจ.
-ย restrictedOneRoom์ผ๋กย ๊ธฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ์ ๋ฐฉ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ฐพ์๋ด. ์ฌ๊ธฐ์ย ๊ฐ์ ์ ํ์ ๊ธฐ๊ธฐ๊ฐ ์ฌ๋ฌ ๋ฐฉ์ ์์ ๋ ์ฐ์ ๋งคํํ ๋ฐฉ ์์๋ ์ ํจ.
- roomPriority๋ก ๊ฐ์ ์ ํ์ ๊ธฐ๊ธฐ๊ฐ ์ฌ๋ฌ ๋ฐฉ์ ์์ ๋ ์ฐ์ ๋งคํํ ๋ฐฉ ์์๋ฅผ ์ ํจ.
์ ๋ฆฌํ์๋ฉด ์ฌ๋์ด ์์ฐ์ด๋ก ๋ฃจํด ์์ฑ ์ด์์คํดํธ์๊ฒ ๋ถํํ ์์ฐ์ด๊ฐ ์ฌ๋ฌ ๋จ๊ณ์ ํ ๋ณํ ๊ณผ์ ์ ๊ฑฐ์ณ ์ค๋งํธ์ฑ์ค๊ฐ ๋ฐ๋ก ์ดํดํ๊ณ ์คํํ ์ ์๋ ๊ตฌ์กฐํ๋ ๋ฃจํด์ผ๋ก ๋ฐ๋๊ฒ ๋จ. ์ด ๊ณผ์ ์ ์ค๊ฐ์์ ์ฌ๋ฌ Map์ด ๋ง๋ค์ด์ง๊ณ ์ค๋งํธ์ฑ์ค APi์ capability๊ณผ ๋งค์นญ๋จ. ๊ทธ๋ฐ ๋ค์ SmartThings Rule API์ Json ์๋ํ ํฌ๋งท์ ๋ง์ถฐ ๋ง๋ค์ด์ง.ย
์ด ๊ณผ์ ์์ ์ฃผ๋ชฉํ ๊ฒ์ ๋ฃจํด์์ฑ์ด์์คํดํธ๊ฐ ๊ฐ์ธํ์ ์ง์คํ๋ค๋ ๊ฑฐ์. ๋จ์ํ ์์ฑํ AI๊ฐ ํ์ด๋ฐ์ด์ ๋ชจ๋ธ๋ก๋ถํฐ ํ์ตํ ์ด๋ฏธ ์๊ณ ์๋ ์ฝ๋๋ง ๋ฝ์์ฃผ๋๊ฒ ์๋๋ผ, ์ค๋งํธ์ฑ์ค ๊ณ์ ์ ๋ฑ๋ก๋ ๋ด ์ง์ ์ฌ๋ฌ ํ๊ฒฝ์ ๊ณ ๋ คํด์ ์ฐ์ ์์๋ฅผ ๋๋๊ณ ๋ด ์ง์์ ๋์๊ฐ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒ์ฌ๋ฅผ ๊ฑฐ์น๊ธฐ๋๋ฌธ์ ์ ์ฉํ ๋ฃจํด์ ๋ฝ์๋ผ ์ ์๋๋ก ํ์ดํ๋ผ์ธ์ ์ค๊ผ๊ฐ ๋์ด์๋ ๊ฑฐ์.ย
์ผ๋จ ์ ๊ฐ์ถ
๊ต์๋ ์ง๋๊ฐ ๋๋ฌด ๋นจ๋ผ์