Deconz-rest-plugin: Device WebApp์˜ ์„ผ์„œ

์— ๋งŒ๋“  2017๋…„ 07์›” 28์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dresden-elektronik/deconz-rest-plugin

๋‚˜๋Š” ์›น ์•ฑ์—์„œ ์ž‘๋™ํ•˜๋Š” ์˜จ๋„ ๋ฐ ์Šต๋„ ์„ผ์„œ๋ฅผ ์กฐ์žกํ•˜๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์งˆ๋ฌธ, Bootstrap 3๋กœ ์ด๋™ํ•  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ? (์•„์ด์ฝ˜์—๋Š” ์˜จ๋„ ์•„์ด์ฝ˜์ด ์—†๊ณ  ๊ธ€๋ฆฌํ”„ ์•„์ด์ฝ˜์ด ์ž˜๋ชป๋œ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. /img/๊ฐ€ ์•„๋‹Œ /bootstrap/img/์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์žฅ์น˜ ํŽ˜์ด์ง€์— ์˜จ๋„/์Šต๋„ ์„ผ์„œ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. (devices.js๋กœ ๋ณ€๊ฒฝ)

463ํ˜ธ์„  ์ฃผ๋ณ€:
// sensor already exists. Add endpoint. for (d in devices) { if (devices[d].uniqueid.indexOf(uid[0]) === 0) { devices[d].ep = devices[d].ep + "," + device.id + "-" + uid[1]; if (device.state.humidity) devices[d].state['humidity'] = device.state.humidity; if (device.state.temperature) devices[d].state['temperature'] = device.state.humidity; break; } }

์ด๊ฒƒ์€ xiaomi ์„ผ์„œ๊ฐ€ 2๊ฐœ์˜ ์žฅ์น˜๋กœ ํ‘œ์‹œ๋˜์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์„ผ์„œ๋งŒ ๊ฐ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์žฅ์น˜์— ๋‘ ๋ฒˆ์งธ ์„ผ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ฒซ ๋ฒˆ์งธ ์„ผ์„œ๋งŒ ํ‘œ์‹œํ•˜์ง€๋งŒ ์ตœ์†Œํ•œ ์–ด๋ ˆ์ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

510ํ˜ธ์„  ์ฃผ๋ณ€:
} else if (device.type === "ZHATemperature" || device.type === "ZHAHumidity") { // Temperature/Humidity Sensor deviceIcon = "<span class=\"icon-home icon-white\">"; rowtxt += '<tr class="light_item" style=""><td style="width:12%">' + deviceIcon + '</td><td style="width:10px;"></td>'; rowtxt += '<td>' + device.name; if (device.state.temperature) rowtxt += ' Temp: '+ (parseInt(device.state.temperature/100) * 9 / 5 +32).toFixed(2).toString() + "&deg;F"; if (device.state.humidity) rowtxt += ' Humidity: '+ (parseInt(device.state.humidity/100)).toFixed(2).toString()+"%"; rowtxt += '</td>'; rowtxt += "<tr><td colspan=\"4\">&nbsp;</td></tr>"; }

์ด๊ฒƒ์€ ์žฅ์น˜ ํŽ˜์ด์ง€์— ์ถ”๊ฐ€ํ•˜๊ณ  ์„ญ์”จ์—์„œ ํ™”์”จ๋กœ, ์Šต๋„๋ฅผ ๋ฐฑ๋ถ„์œจ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” git๊ณผ "์‹œ๋„"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์ถœํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๊ณ ๋Š” GIT๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. devices.js ํŒŒ์ผ๋„ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์žฅ์น˜.zip

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

์งˆ๋ฌธ, Bootstrap 3๋กœ ์ด๋™ํ•  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ? (์•„์ด์ฝ˜์—๋Š” ์˜จ๋„ ์•„์ด์ฝ˜์ด ์—†๊ณ  ๊ธ€๋ฆฌํ”„ ์•„์ด์ฝ˜์ด ์ž˜๋ชป๋œ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. /img/๊ฐ€ ์•„๋‹Œ /bootstrap/img/์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” :) ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์•ฑ์ด ๋ฉฐ์น  ์•ˆ์— ๋น„๊ณต๊ฐœ ๋ฒ ํƒ€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Bootstrap์˜ Glyphicons๋ฅผ ์•„์ฃผ ๋“œ๋ฌผ๊ฒŒ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋Œ€์‹  SVG์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ „์šฉ ์•„์ด์ฝ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Philips Hue Motion Sensor ์˜ ๊ฒฐํ•ฉ๋œ ์„ผ์„œ ๋ณด๊ธฐ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. Xiaomi ์„ผ์„œ์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์„ผ์„œ ๋ณด๊ธฐ๋Š” ์›น ์†Œ์ผ“์˜ ์ด๋ฒคํŠธ๋กœ ์ธํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์ง‘๋‹ˆ๋‹ค.

ph_motion_sensor

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

์งˆ๋ฌธ, Bootstrap 3๋กœ ์ด๋™ํ•  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ? (์•„์ด์ฝ˜์—๋Š” ์˜จ๋„ ์•„์ด์ฝ˜์ด ์—†๊ณ  ๊ธ€๋ฆฌํ”„ ์•„์ด์ฝ˜์ด ์ž˜๋ชป๋œ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. /img/๊ฐ€ ์•„๋‹Œ /bootstrap/img/์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” :) ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์•ฑ์ด ๋ฉฐ์น  ์•ˆ์— ๋น„๊ณต๊ฐœ ๋ฒ ํƒ€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Bootstrap์˜ Glyphicons๋ฅผ ์•„์ฃผ ๋“œ๋ฌผ๊ฒŒ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋Œ€์‹  SVG์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ „์šฉ ์•„์ด์ฝ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Philips Hue Motion Sensor ์˜ ๊ฒฐํ•ฉ๋œ ์„ผ์„œ ๋ณด๊ธฐ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. Xiaomi ์„ผ์„œ์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์„ผ์„œ ๋ณด๊ธฐ๋Š” ์›น ์†Œ์ผ“์˜ ์ด๋ฒคํŠธ๋กœ ์ธํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์ง‘๋‹ˆ๋‹ค.

ph_motion_sensor

์™„๋ฒฝํ•œ! Smartthings๋Š” ์„ผ์„œ๋„ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ?

2017๋…„ 7์›” 28์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 2์‹œ 18๋ถ„, Manuel Pietschmann <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ, Bootstrap 3๋กœ ์ด๋™ํ•  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ? (์•„์ด์ฝ˜์—๋Š”
์˜จ๋„ ์•„์ด์ฝ˜๊ณผ ๊ธ€๋ฆฌํ”„ ์•„์ด์ฝ˜์ด ์ž˜๋ชป๋œ ํด๋”์— ์žˆ์œผ๋ฉด
/img/๊ฐ€ ์•„๋‹Œ /bootstrap/img/์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” :) ์•ฑ์˜ ์ƒˆ ๋ฒ„์ „์„ ๋น„๊ณต๊ฐœ ๋ฒ ํƒ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉฐ์น  ํ›„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ. Bootstrap์˜ Glyphicons๋ฅผ ์•„์ฃผ ๋“œ๋ฌผ๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋Œ€์‹  SVG์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ „์šฉ ์•„์ด์ฝ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ํ•„๋ฆฝ์Šค ์ƒ‰์กฐ ๋ชจ์…˜ ์„ผ์„œ ์˜ ํ†ตํ•ฉ ์„ผ์„œ ๋ณด๊ธฐ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.
Xiaomi ์„ผ์„œ์™€ ๋งค์šฐ ์œ ์‚ฌํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์„ผ์„œ ๋ณด๊ธฐ๊ฐ€ ์ƒˆ๋กœ ๊ณ ์ณ์ง‘๋‹ˆ๋‹ค.
์›น ์†Œ์ผ“์˜ ์ด๋ฒคํŠธ๋กœ ์ธํ•œ ์‹ค์‹œ๊ฐ„.

[์ด๋ฏธ์ง€: ph_motion_sensor]
https://user-images.githubusercontent.com/383386/28704646-0ca80ffa-736c-11e7-80bd-4d2d2e2f7c3f.png

โ€”
์Šค๋ ˆ๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/62#issuecomment-318570272 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AFl6AJukNXi3jotP_qzMXapjAhFaKu7eks5sSX0zgaJpZM4Ol_0q
.

์ถ”์ ๊ธฐ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ตœ์‹  ๋ฌธ์ œ๋ฅผ ๋ณต์ œํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

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