Philips Hue Lighting System을 사용하면 모바일 앱 또는 인터넷에 연결할 수있는 응용 프로그램에서 집의 조명을 제어 할 수 있습니다. 시스템의 중심은 Zigbee HA 라디오 프로토콜을 통해 호환 램프와 통신하는 이더넷 연결 장치 인 Hue Bridge입니다. 필립스는 다양한 색조 호환 램프를 만들고 많은 타사 램프는 동일한 프로토콜에서 작동합니다. Iconnecthue는 색조 호환 램프의 철저한 목록을 유지합니다. 대부분 유로 마켓 중심이지만 여전히 매우 유용합니다.
각 Hue Bridge는 자체 HTTP 웹 서버이며 Hue Rest API를 사용하여 제어 할 수 있습니다. 많은 프로그래밍 언어로 사용 가능한 색조를 제어 할 수있는 라이브러리가 있습니다. 여기의 튜토리얼은 모두 p5.js, 일반 JavaScript 또는 Node.js를 사용하는 서버 측 또는 Arduino 용 Micrcontroller 기반을 사용하여 클라이언트 측 JavaScript에 있습니다.
HUE API V2는 최근에 출시되었으며 결국 V1을 대체 할 것입니다. 이 노트는 현재 V1 (2021 년 1 월 19 일)을 참조하고 여전히 작동합니다. HUE API V2에는 HTTPS뿐만 아니라 V1의 일부 변화 변화가 있습니다.
HUE 앱을 프로그래밍하기 위해서는 색조 교량에 액세스해야합니다. 당신은 색조 계정도 원할 것입니다. 개발자 계정은 무료입니다. 색조 개발자 사이트 링크를 편리하게 유지하십시오.
Android 또는 iOS 용 Hue 앱은 프로젝트가 아직 없을 때 작동하기 때문에 개발할 때 도움이됩니다. Hue Essentials 앱은 매우 유용한 대안입니다.
모든 Hue에는 http://$ADDR/debug/clip.html 에서 사용할 수있는 디버그 인터페이스가 있습니다. $ADDR Bridge의 IP 주소로 바꾸십시오. 개발 중일 때는이를 사용하여 API 명령을 브리지로 보내서 테스트 할 수 있습니다.
Node.js 용 Peter Murray의 Node-Hue-Api 라이브러리는 색조 제어를 위해 테스트 한 다양한 Node.js JavaScript 라이브러리 중 최고입니다.
브라우저 클라이언트에서 색조를 제어하기 위해 P5.JS는 간단한 HTTP 요청 API를 얻었으므로 좋은 작업을 수행합니다. 물론 일반 JavaScript도 사용할 수 있습니다.
Arduinohttpclient 라이브러리와 Arduino_json 라이브러리는 Arduino Wifi 지원 보드를 사용하여 색조 교량에 연결하는 경우 유용합니다. (참고 : 밑줄이없는 동일한 이름의 다른 JSON 라이브러리가 있습니다. 여기서 사용 된 것은 아닙니다).
POSIX (LINUX/UNIX) 명령 줄에 익숙한 경우 명령 줄 도구 컬은 브리지에 대한 HTTP 요청을 테스트하는 데 도움이됩니다. Curl은 Windows 명령 인터페이스에서 사용할 수 없지만 Windows 10의 Linux 용 Windows 서브 시스템 또는 Windows 용 Linux 쉘을 제공하는 응용 프로그램 인 Cygwin을 통해 얻을 수 있습니다. 다음은 CURL을 사용하여 색조 교량에 접근하는 것에 대한 세부 정보입니다.
이 외에도 HTML 및 JavaScript, 텍스트 편집기, 명령 줄 인터페이스 및 브라우저를 알아야합니다. 여기에 표시된 명령 줄 예제는 모두 Linux 또는 Unix 용이지만 Windows 10에서 Linux의 Windows 서브 시스템을 사용하여 Windows 10에서 작동합니다.
고유 한 사용자 이름을 사용하여 앱을 다리에 식별해야합니다. 이 예제 페이지는 브리지의 IP 주소를 알고 있다면이를 단순화합니다. 원격 서버 에서이 페이지를 실행할 수 없습니다. 파일 시스템의 브라우저에서 index.html 파일을 열고 엽니 다. HUE API 버전 1은 HTTP가 아닌 HTTP를 사용하기 때문입니다.
Hue Developer 사이트의 시작 지침을 따를 수도 있습니다.
제대로 할 때 다음과 같은 응답을 받아야합니다.
[
{
"success": {
"username": "newusername"
}
}
]
이제 다리에 대한 코드를 작성할 준비가되었습니다. 프로그래밍하는 환경에 관계없이 여기에서 설정 한 사용자 이름을 사용할 것입니다.
디버그 클립 인터페이스는 브리지의 기능을 테스트하는 데 사용할 수있는 페이지입니다. 주소는 다음과 같습니다.
http://your.bridge.ip.address/debug/clip.html
API 명령을 다리로 보내는 데 사용될 수 있습니다. 일반 쿼리 문자열은 다음과 같습니다.
/api/$HUE_USER/command
일반적으로 Get 명령을 사용하여 장치의 상태를 쿼리하는 것이 수행되며 PUT를 사용하여 변경합니다. 예를 들어, 모든 조명의 상태를 쿼리하려면 URL 필드에 다음을 입력하십시오.
/api/$HUE_USER/lights
그리고 GET을 클릭하십시오. 구성을 쿼리하려면 다음을 입력하십시오.
/api/$HUE_USER/config
그리고 GET을 클릭하십시오. Light 1을 켜려면 URL 필드에 다음을 입력하십시오.
/api/$HUE_USER/lights/1/state
메시지 본문 필드에 다음을 입력하십시오.
{"on":true}
풋을 클릭하십시오. 빛이 켜지고 다리가 대답해야합니다.
[
{
"success": {
"/lights/1/state/on": true
}
}
]
HUE API에 대한 자세한 내용은 Hue Getting Start Guide, HUE API Core 개념 및 전체 HUE API 문서를 참조하십시오. 개발자 포털을 사용하려면 무료 계정을 만들고 로그인해야합니다.
브리지를 네트워크에 추가하면 HUE 앱 또는 Hue Essentials 앱을 사용하여 IP 주소를 얻을 수 있어야합니다. 그러나 학교 네트워크와 같은 복잡한 네트워크에서는 작동하지 않을 수 있습니다. 모바일 장치와 Hue Bridge는 동일한 로컬 네트워크에 있어야합니다. 예를 들어, Wi -Fi 네트워크가 유선 이더넷 네트워크 (Bridge가 사는 곳)와 동일한 로컬 그물이 아닌 경우 주소를 얻지 못할 수 있습니다. 그러나 브리지의 MAC 주소를 얻을 수 있다면 네트워크에서 검색 할 수 있습니다. 방법은 다음과 같습니다
모든 다리에는 다리 바닥에서 MAC 주소를 찾을 수있는 고유 한 것이 있습니다. 다음과 같은 16 진로의 6 바이트 숫자입니다.
00:17:88:0B:14:48
일부 다리는 마지막 3 바이트 만 표시합니다. 예를 들어, 위의 다리에는 0B1448 만 표시 될 수 있습니다. 오래된 색조 교량을 사용하면 처음 3 바이트는 항상 00:17:88 입니다. 최신 제품을 사용하면 EC:B5:FA 대신 볼 수 있습니다.
네트워크에서 브리지를 찾으려면 로컬 네트워크의 첫 세 자리 숫자가 있는지 확인한 다음에 액세스 한 다음 명령 줄 인터페이스를 열고 다음을 입력하십시오.
$ ping -c 5 xxx.xxx.xxx.255
여기서 xxx.xxx.xxx 네트워크의 첫 세 숫자입니다. 예를 들어, 라우터가 172.16.130.1 인 네트워크에서는 172.16.130.255를 입력합니다. 때로는 대규모 기관이 유선 대 무선 네트워크에 두 개의 다른 서브넷을 사용하지만 여전히 동일한 대형 로컬 네트워크에있을 것입니다.
네트워크의 장치가 Ping 요청에 응답하므로 응답 목록을 얻을 수 있습니다. 완료되면 다음을 입력합니다.
$ arp -a
컴퓨터에서 볼 수있는 것과 동일한 네트워크의 모든 장치 목록을 얻을 수 있습니다. 브리지의 MAC 주소와 일치하는 것을 찾으십시오. 옆의 IP 주소는 브리지의 IP 주소가됩니다. 하단의 레이블에서 MAC 주소의 마지막 세 바이트. 처음 3 개는 위에서 설명한대로 00:17:88 또는 EC : B5 : FA 일 것입니다. 다음은 일반적인 예입니다.
$ arp -a
? (192.168.0.1) at ac:b7:16:61:e3:77 on en0 ifscope [ethernet]
? (192.168.0.3) at 00:17:88:0B:14:48 on en0 ifscope [ethernet]
? (192.168.0.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
이 경우 HUE의 IP 주소는 192.168.0.3입니다.
일반 모바일 색조 앱을 사용하여 다리에서 새 램프를 검색 할 수 있습니다. 다음 URL의 게시물 요청을 사용하여 디버그 클립 인터페이스에서 수행 할 수도 있습니다.
/api/$HUE_USER/lights/
$ addr에 대한 다리 주소와 $ hue_user의 Hue 사용자 이름을 채우십시오. 다음과 같은 답장을 받아야합니다.
[[ { "success": { "/lights": "Searching for new devices" } }]
90 초 후에는 다음과 같이 추가 된 새 램프를 스캔 할 수 있습니다.
/api/$HUE_USER/lights/new
컬에서 :
$ curl -X GET http://$ADDR/api/$HUE_USER/lights/new
새 램프를 스캔 한 후 추가 된 새 램프 만 나열합니다.
이전에 다른 브리지에 연결된 램프를 추가하려는 경우 다른 접근 방식을 사용해야합니다. 램프를 제어하려는 다리에 가깝게 놓습니다 (다른 램프보다 가깝게 1 미터 미만). 다리에 연결된 다른 모든 램프를 끄거나 원하는 것보다 훨씬 더 멀리 떨어져 있는지 확인하십시오.
풋 요청을 사용하여 다음과 같은 디버그 클립 인터페이스를 보내십시오.
/api/$HUE_USER/config/
요청 본문에서 :
{"touchlink": true}
컬에서 :
$ curl -X PUT -d '{"touchlink": true}' http://$ADDR/api/$HUE_USER/config
램프가 몇 번 깜박이고 서버는 성공 메시지로 응답합니다. 이제 위에서 설명한 새 램프 찾기 요청을 사용하여 램프를 추가 할 수 있습니다.
터치 링크가 램프를 재설정하는 데 성공하지 못하면 수동으로 재설정해야 할 수도 있습니다. 각 제조업체마다 다르지만 일반적인 패턴은 램프를 3 ~ 5 번 켜고 끄는 것입니다. 그 후 약간 깜박임 또는 희미하게 희미하게 리셋되었음을 나타냅니다. 예를 들어, GE Link 전구의 경우 패턴은 다음과 같습니다.
Cree Connect 또는 Innr 전구와 같은 일부 타사 전구의 경우 2 초 간격으로 수행 할 수 있습니다. 의심스러운 경우 3 초로 가십시오.
HUE 리모컨 중 하나가있는 경우이를 사용하여 램프를 재설정 할 수 있습니다. 이렇게하려면 램프를 켜고 램프의 6 인치 이내에 리모컨을 놓습니다. 전원 켜기 및 전원 끄기 버튼 (또는 최신 모델의 전원 켜기 및 장면 선택 버튼)을 동시에 누르고 전구가 깜박일 때까지 고정시킵니다. 이렇게하면 램프를 기본 공장 상태에 놓고 새 브리지와 짝을 이룰 수 있습니다.
다음 URL에서 삭제 요청을 사용하여 디버그 클립 인터페이스에서 브리지에서 램프를 삭제할 수 있습니다.
/api/$HUE_USER/lights/1
컬에서 :
$ curl -X DELETE http://$ADDR/api/$HUE_USER/lights/1
삭제하려는 빛의 수로 1을 교체하십시오.
연결된 모든 조명의 상태를 얻으려면 GET 요청을 사용하여 디버그 클립 인터페이스에서 다음을 보내십시오.
/api/$HUE_USER/lights/
컬에서는 다음과 같습니다.
$ curl http://$ADDR/api/$HUE_USER/lights/
이것은 사용 가능한 조명 목록을 반환해야합니다.
{"1":{"state":{"on":true,"bri":254,"hue":14314,"sat":172,"effect":"none","xy":[0.4791,0.4139],"ct":405,"alert":"none","colormode":"ct","reachable":true},"type":"Extended color light","name":"Hue color light 1","modelid":"LCT001","manufacturername":"Philips","uniqueid":"00:17:88:01:00:ff:9a:28-0b","swversion":"5.127.1.26581"}}
빛을 켜려면 어떤 숫자인지 알아야합니다. 그런 다음 상태를 변경합니다.
풋 요청을 사용하여 디버그 클립 인터페이스에서 다음을 보내십시오.
/api/$HUE_USER/lights/4/state
요청 본문에서 :
{"on": true}
컬에서는 다음과 같습니다.
$ curl -X PUT -d '{"on":true}' http://$ADDR/api/$HUE_USER/lights/4/state
끄려면 요청 본문을 다음으로 변경하십시오.
{"on": false}
이런 식으로 빛의 상태의 속성을 변경할 수 있습니다. 예를 들어, 위의 모든 조명 섹션의 상태를 얻는 Light 1을 살펴보십시오.
{"1":{"state":{"on":true,"bri":254,"hue":14314,"sat":172,"effect":"none","xy":[0.4791,0.4139],"ct":405,"alert":"none","colormode":"ct","reachable":true},
reachable 속성이 사실이라면, 교량이 램프에 도달하려고 시도하고 응답을 얻었음을 의미합니다. 다른 속성을 변경할 수 있습니다. 이것은 컬러 램프이며, HS (Hue, Potation), CT (Color Temp) 및 XY (CIE1931 색상 공간의 X 및 Y 치수)의 3 가지 모드가 있습니다. 색조 또는 채도를 변경하면 램프의 컬러 모드가 HS로 변경되고 색 온도를 변경하면 Colormode가 CT로 변경됩니다. XY 값을 보내면 ColorMode가 XY 모드로 변경됩니다.
다른 조명은 상태 변수에 다른 속성을 가지게됩니다. P5.JS 스케치는 각 램프의 모든 특성을 스캔합니다.
MKR1000, MKR1010 및 NANO 33 IoT Arduino 모델은 HTTP 요청을 통해 Hue Bridge를 제어 할 수 있습니다. 이 저장소에는 메모와 함께 Arduino Hue 예제가 있습니다.