์๋
ํ์ธ์,
Aqara ์ง๋ ์ผ์(https://www.gearbest.com/goods/pp_009661787808.html?lang=ko&wid=1433363)๋ฅผ ์ถ๊ฐํ๊ณ phoscon-App์์ ๋ฏผ๊ฐ๋ ๊ฐ์ ์ด๋ป๊ฒ ์ค์ ํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์๋ Xiaomi-App์๋ ๋ฏผ๊ฐ๋ ๊ฐ์ด ์์ต๋๋ค: ๋ฎ์, ์ค๊ฐ ๋ฐ ๋์.
ํ์ฌ phoscon-app์์๋ ๋ถ๋ช
ํ ์ง์๋์ง ์์ต๋๋ค. ๋ฏธ๋๋ฅผ ์ํ ๊ณํ์ธ๊ฐ?!
API๋ฅผ ํตํด ์ค์ ํ ์ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ด ๊ธฐ์ต๋์ง ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ฌธ์ ๋ฅผ ๊ฒ์ํ์ญ์์ค.
curl -H 'Content-Type: application/json' -X PUT -d '{"sensitivity": 1}' http://yourIP/api/yourKEY/sensors/yourSensorID/config
๋ฏผ๊ฐ๋๋ 1์์ 21๊น์ง์ด๋ฉฐ 1์ด ๊ฐ์ฅ ๋ฏผ๊ฐํฉ๋๋ค.
์์ฒญ๋. ๊ทธ๊ฒ ํจ๊ณผ๊ฐ ์์๋ค.
๊ฐ์ฌ ํด์.
Hue ๋ชจ์
์ผ์์ ๋ํด์๋ ๋์ผํ ์์
์ ์ํํ์ต๋๋ค.
REST API ๊ฐ์ด๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. http://dresden-elektronik.github.io/deconz-rest-doc/
์๋ ํ์ธ์, API ํค๋ ์ด๋์์ ์ฐพ์ ์ ์์ต๋๊น? HA ํตํฉ ํญ์ ์ฐ์ฌ์ง ๋ฒํธ์ ๋๊น?
์ฌ์ ์ง์์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ์์ gpl1998 ์ฃผ์์ ๋์์ผ๋ก ์๋ํ๊ฒ ๋์์ต๋๋ค. ์๊ฐ์ ์ ์ฝํ ๋ช ๊ฐ์ง ํํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) API ํค ์ฐพ๊ธฐ ๋ฐ ๊ฐ๋ ์ดํดํ๊ธฐ: http://dresden-elektronik.github.io/deconz-rest-doc/getting_started/ ๋ฐ http://dresden-elektronik.github.io/deconz-rest ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ต๋๋ค. https://addons.mozilla.org/de/firefox/addon/restclient/๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
2) yourSensorID๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ: Phoscon APP์์ ์ผ์์ ๋ํด ์ ํํ ์ด๋ฆ์ผ๋ก ์๋ํ์ต๋๋ค. ํ์ง๋ง ์ ๊ฒฝ์ฐ์๋ "60"์ด๋ผ๋ ์ซ์์์ต๋๋ค. ์ผ์์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ซ์๊ฐ ์๋๋ฏ๋ก ์๋ ๋ฐ ์ค๋ฅ๊ฐ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ๋์ ์ GET์ http://<ip>:<port>/api/<api-key>/sensors
๋ณด๋ด๊ณ ํฐ ํ
์คํธ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ Visual Studio ์ฝ๋์์ ์ด๊ณ ์ผ์ ์ด๋ฆ์ ๊ฒ์ํ์ต๋๋ค(์ ๊ฒฝ์ฐ์๋ "back_door_vibration"). ์ด ์ผ์. ์ฒ์์ ์ซ์๊ฐ ๊ทธ๋ id์๋ค.
๋ด ์ง๋ ์ผ์์ ๋ํ thxt์ ๋ฉ์ด๋ฆฌ:
"60":{"config":{"battery":98,"on":true,"pending":[],"reachable":true,"sensitivity":11,"sensitivitymax":21,"temperature":2500},"ep":1,"etag":"31b154ca59c1ea415ddeba9177089e01","manufacturername":"LUMI","mode":1,"modelid":"lumi.vibration.aq1","name":"back_door_vibration","state":{"buttonevent":1009,"lastupdated":"2019-07-04T19:39:22"},"swversion":"20180130","type":"ZHASwitch","uniqueid":"00:15:8d:00:02:c4:e5:0c-01-0101"},"
3) ์ด๋ค ๋ช
๋ น์ ๋ณด๋ผ์ง ์ดํดํ๊ธฐ: Firefox ๋๋จธ์ง ํด๋ผ์ด์ธํธ์์ "Method" PUT, URL "http://<ip>:<port>/api/<api-key>/sensors/<sensor id>
๋ฐ "Body" { "sensitivity": 1 }๋ฅผ ์ฌ์ฉํ์ต๋๋ค. gpl1998์ ๋ช
๋ น์๋ ํ์๊ณผ ๊ฐ์ ๋ช
๋ น์ค์ ๋ํด ์ด ๋ชจ๋ ๊ฒ์ด ํฌํจ๋์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ ๋ณด์ฅ์ ์์ง๋ง GET์ ๋ํ ์๋ต์ ์ด์ ์ต์ํ ""๊ฐ๋":1"์ ๋๋ค. ์ด ์๊ฒฌ(GitHub์ ๋ํ ๋์ ์ฒซ ๋ฒ์งธ ์๊ฒฌ)์ด ์ ๋ฐ์๋ค์ฌ์ง๊ณ ๋๊ตฐ๊ฐ๋ฅผ ์ํด ์๊ฐ์ ์ ์ฝํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋
ํ์ธ์ Stig์ ์ค๋ช
์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ง๋ ์ผ์์ ๋ํ API์ ์ผ์ ID๋ฅผ ์ป์ ์ ์์์ง๋ง body: { "sensitivity": 1 }๋ก PUT ๋ช
๋ น์ ๋ณด๋ด๋ ค๊ณ ํ ๋
์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
[
{
"error": {
"address": "/sensors/sensitivity",
"description": "parameter, sensitivity, not available",
"type": 6
}
}
]
๋ด๊ฐ ๋ฌด์์ ์๋ชปํ๊ณ ์๋์ง ์ด๋ค ์๊ฐ์ด ์์ต๋๊น?
์์ด๋๊ฐ ํ์คํฉ๋๊น?
์ด๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ์
จ์ต๋๊น("address": "/sensors/sensitivity"๊ฐ ์ด์ํจ)?
๋ด ์ผ์์ ID๋ 20์ ๋๋ค. ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด.
๋๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ดํดํ๋ ค๊ณ ์๋ํ์ง ์์์ง๋ง ์ค๋ฅ๋ฅผ ๋ํ๋
๋๋ค. /api/xxxxxx/sensors/20/config
์ PUTํด์ผ ํฉ๋๋ค.
์, ์๋ชป๋ URL์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. "sensors/20"์ผ๋ก ๋ง๋ฌด๋ฆฌํ๊ณ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
URL ๋์ /config๋ฅผ ์ถ๊ฐํ๋ฉด ์๋ํ์ต๋๋ค. ๋ด ๊ฐ๋๋ ์ด์ 1
๋๋ ํ
์คํธ์ 2์๊ฐ์ ๋ณด๋๊ณ ์ด๊ฒ์ ์๋ํ์ง ์์ต๋๋ค!
๋๋ ์์ง์์ ์ํด ๋ค๋ฅธ ์๋๋ก ์๋ณด๋ฅผ ์ฌ์ฉํ๊ณ ๋ค์ํ ๋ณผ๋ฅจ์์ 50hz ํค์ผ๋ก ์ํ์ค๋ฅผ ํ
์คํธํ๊ธฐ ์ํด ์คํผ์ปค ๋ฉค๋ธ๋ ์ธ์ ์ผ์๋ฅผ ๋ถ์์ต๋๋ค.
๊ฒฐ๊ณผ๋ ๋์ผํฉ๋๋ค. ๊ฐ๋ 1 = 11 = 21
๋ ๊ฐ์ง ์ต์ :
์ผ์๋ฅผ ํ์ ์์ ๋๊ณ ๋ค๋ฅธ ๊ฐ๋๋ก ํ์๋ฅผ ๋๋๋ฆฐ๋ค. ์์ง์์ด๋ ์ฃผํ์์๋ ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ํญ์ ๊ฐ์ ๊ฐ์ ๊ฐ์ง ๊ฒ์ ๋๋ค. ๊ฑฐ์ง ๋์ ์ฐธ์ด ๋ ๊ฒ์ ๋๋ค.
ํ์๋ฅผ ๋๋๋ฆฌ๋ ๊ฒ์ ์ถฉ๋ถํ ์ ํํ์ง ์๊ณ ์ฌํํ ์ ์์ต๋๋ค.
๊ทธ ๋๋ฌธ์ ์ ํํ ๊ฐ์ ๊ฐ๋๋ฅผ ์ป๊ธฐ ์ํด ์คํผ์ปค์ ๋ฉค๋ธ๋ ์ธ์ ์ฌ์ฉํฉ๋๋ค.
50hz ํค์ ์ฌ์/์ผ์ ์ค์งํ๋ฉด ๋์ผํ ๋
ธํฌ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋ณผ๋ฅจ์ ๋์ผ ์ ์์ต๋๋ค.
ํ์๋ฅผ ๋๋๋ฆฌ๋ ๊ฒ์ ์ถฉ๋ถํ ์ ํํ์ง ์๊ณ ์ฌํํ ์ ์์ต๋๋ค.
๊ทธ ๋๋ฌธ์ ์ ํํ ๊ฐ์ ๊ฐ๋๋ฅผ ์ป๊ธฐ ์ํด ์คํผ์ปค์ ๋ฉค๋ธ๋ ์ธ์ ์ฌ์ฉํฉ๋๋ค.
50hz ํค์ ์ฌ์/์ผ์ ์ค์งํ๋ฉด ๋์ผํ ๋ ธํฌ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋ณผ๋ฅจ์ ๋์ผ ์ ์์ต๋๋ค.
๋๋ ๊ฐ์ ๊ฒฝํ์ ํ๋ค. ๊ฐ๋๋ฅผ '1'๊ณผ '21'๋ก ์ค์ ํ๋๋ฐ ๋ณ ์ฐจ์ด๋ฅผ ๋ชป ๋๊ผ์ต๋๋ค. ์ผ์ ์ํ๋ฅผ ๋ณด๋ '๊ฐ๋'๊ฐ '๋ณด๋ฅ ์ค'์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๊ฐ๋ ์ค์ ํ ๋ฐ๋ก ๋ฆฌ์ ๋ฒํผ์ 1์ด ๋์ ๋ช ๋ฒ ๋๋ฌ์ผ ํ๋ค๋ ๊ธ์ ์ฝ์์ต๋๋ค. ๋ณด๋ฅ ์ํ๊ฐ ์ฌ๋ผ์ง๊ณ ์ด์ ๋ฏผ๊ฐ๋๊ฐ ๋ ๋ฏผ๊ฐํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์ง์นจ์ ๋ฐ๋ผ ์ผ์๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค. ํ์ง๋ง @MHOMEASS ์ ๊ฐ์ ๊ฒฝํ์ ํ๊ณ ์ผ์์ ์ค์ ๊ฐ๋์๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๊ฐ๋๋ 21์ ๋๋ค. ์ ์ ์ฌํญ์ด ์์ต๋๊น?
์ง๋์ด๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ํ
์คํธํ๊ณ ์์ต๋๊น?
์ผ์๋ฅผ ํ์ ์์ ๋๊ณ ํ์๋ฅผ ๋๋๋ฆฌ์ญ์์ค.
๊ฐ์ 1๋ก ๋ณ๊ฒฝํ๋๋ฐ ํจ์ฌ ๋ ๋ฏผ๊ฐํฉ๋๋ค. ๋ด๊ฐ ์ํ๋ ๋งํผ์ ์๋์ง๋ง ์๋ํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ์ ์ง์์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ์์ gpl1998 ์ฃผ์์ ๋์์ผ๋ก ์๋ํ๊ฒ ๋์์ต๋๋ค. ์๊ฐ์ ์ ์ฝํ ๋ช ๊ฐ์ง ํํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) API ํค ์ฐพ๊ธฐ ๋ฐ ๊ฐ๋ ์ดํดํ๊ธฐ: http://dresden-elektronik.github.io/deconz-rest-doc/getting_started/ ๋ฐ http://dresden-elektronik.github.io/deconz-rest ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ต๋๋ค. https://addons.mozilla.org/de/firefox/addon/restclient/๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
2) yourSensorID๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ: Phoscon APP์์ ์ผ์์ ๋ํด ์ ํํ ์ด๋ฆ์ผ๋ก ์๋ํ์ต๋๋ค. ํ์ง๋ง ์ ๊ฒฝ์ฐ์๋ "60"์ด๋ผ๋ ์ซ์์์ต๋๋ค. ์ผ์์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ซ์๊ฐ ์๋๋ฏ๋ก ์๋ ๋ฐ ์ค๋ฅ๊ฐ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ๋์ ์ GET์
http://<ip>:<port>/api/<api-key>/sensors
๋ณด๋ด๊ณ ํฐ ํ ์คํธ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ Visual Studio ์ฝ๋์์ ์ด๊ณ ์ผ์ ์ด๋ฆ์ ๊ฒ์ํ์ต๋๋ค(์ ๊ฒฝ์ฐ์๋ "back_door_vibration"). ์ด ์ผ์. ์ฒ์์ ์ซ์๊ฐ ๊ทธ๋ id์๋ค.๋ด ์ง๋ ์ผ์์ ๋ํ thxt์ ๋ฉ์ด๋ฆฌ:
"60":{"config":{"battery":98,"on":true,"pending":[],"reachable":true,"sensitivity":11,"sensitivitymax":21,"temperature":2500},"ep":1,"etag":"31b154ca59c1ea415ddeba9177089e01","manufacturername":"LUMI","mode":1,"modelid":"lumi.vibration.aq1","name":"back_door_vibration","state":{"buttonevent":1009,"lastupdated":"2019-07-04T19:39:22"},"swversion":"20180130","type":"ZHASwitch","uniqueid":"00:15:8d:00:02:c4:e5:0c-01-0101"},"
3) ์ด๋ค ๋ช ๋ น์ ๋ณด๋ผ์ง ์ดํดํ๊ธฐ: Firefox ๋๋จธ์ง ํด๋ผ์ด์ธํธ์์ "Method" PUT, URL
"http://<ip>:<port>/api/<api-key>/sensors/<sensor id>
๋ฐ "Body" { "sensitivity": 1 }๋ฅผ ์ฌ์ฉํ์ต๋๋ค. gpl1998์ ๋ช ๋ น์๋ ํ์๊ณผ ๊ฐ์ ๋ช ๋ น์ค์ ๋ํด ์ด ๋ชจ๋ ๊ฒ์ด ํฌํจ๋์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ ๋ณด์ฅ์ ์์ง๋ง GET์ ๋ํ ์๋ต์ ์ด์ ์ต์ํ ""๊ฐ๋":1"์ ๋๋ค. ์ด ์๊ฒฌ(GitHub์ ๋ํ ๋์ ์ฒซ ๋ฒ์งธ ์๊ฒฌ)์ด ์ ๋ฐ์๋ค์ฌ์ง๊ณ ๋๊ตฐ๊ฐ๋ฅผ ์ํด ์๊ฐ์ ์ ์ฝํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.