본문 바로가기

C#

[C#] 필립스 Hue 라이트 제어하기

필립스 Hue 라이트의 써드파티 SDK인 Q42.HueAPI 라이브러리를 이용하여 조명을 제어하는 방법을 알아봅니다.
https://github.com/Q42/Q42.HueApi

다른 언어의 SDK 목록은 아래 링크에서 찾아볼 수 있습니다.
http://www.developers.meethue.com/tools-and-sdks



먼저 NuGet 패키지 관리자에서 Q42.HueAPI를 설치합니다.



위 코드는 네트워크상에서 휴 브릿지를 찾아냅니다.
HttpBridgeLocator 클래스는 필립스에서 제공하는 www.meethue.com/api/nupnp 기능을 통해서 브릿지를 찾아오는 가장 간단한 방법을 사용합니다.
만약 SSDPBridgeLocator 클래스를 사용하게 되면 실제로 네트워크에서 휴 브릿지를 검색하는 동작을 수행합니다.



위 코드는 실제 브릿지에 접속해서 인증까지 수행하는 코드입니다.
여기서는 네트워크상에 무조건 브릿지가 1개 존재한다는 가정 하에 bridgeIPs.First() 와 같은 코드로 접속을 시도하였습니다. 개인적으로 사용하는 앱이 아닌, 배포되는 앱일 경우 브릿지가 0개 또는 2개 이상일 수도 있음에 주의하세요.

접속이 성공하였으면 앱 키를 발급받아야 하는데, 이는 RegisterAsync API를 이용합니다. 앱 아이디와 디바이스 이름에는 적절한 값을 입력합니다. 어차피 이걸 관리할 수 있는 페이지가 현재는 없는 것 같으니 그냥 아무거나 집어넣으셔도 무방합니다.
RegisterAsync가 끝나면 앱 키가 발급됩니다. 발급된 앱 키를 파일등에 저장하여 이후에 사용합니다.

만약 기존에 한번 켰던 적이 있어 앱키가 발급 되어 있으면 불러온 앱 키를 가지고 Initialize 만 호출하면 됩니다. 

RegisterAsync 호출 이전에는 반드시 휴 브릿지의 버튼을 눌러야 합니다.
그렇지 않으면 익셉션이 발생합니다.


마지막으로 조명에 직접 명령을 내리는 코드입니다.
색, 밝기, 온오프, 효과 등을 지정할 수 있습니다.


만약 특정 색으로 깜빡이는 효과를 구현하고 싶다면, SetColor를 포함한 명령어를 보낸 후, 몇초 대기하고 다시 색을 바꾸는 명령을 보내야 합니다. 이 때 TransitionTime 값을 잘 조정하여야지 자연스럽게 깜빡이도록 할 수 있습니다.




만약 조명 제어가 잘 되지 않는다면 위의 코드를 통해 에러를 볼 수 있습니다.
만약 Not authorized 에러가 발생한다면 위의 Register/Initialize 부분을 다시 점검해 보시기 바랍니다.