This example shows how Philips Hue can be used within Jibo to allow a person to control lights within their home. Specifically, this Jibo skill uses the node-hue-api framework written by Peter Murray to communicate with the Hue bridge.
Prior to using this Jibo application, the Philips Hue bridge must already been configured and connected to the lights within your home.
In order to control rooms of lights (ex: Hey Jibo, turn on the lights in the living room), the lights first need to be placed into a group. Although the official Philips Hue app does not support this functionality, there are several alternative apps (Huemote for iOS and LampShade.io for Android) that will configure groups. Additionally, you can use the Hue API Debug Tool to setup groups.
When running the application, the following interactions will occur. The first time, Jibo will ask you to press the Hue bridge's pairing button. This allows him to connect to the Philips Hue bridge and should only occur once.
Human: Jibo, turn the lights on/off
[Jibo nods to indicate acknowledgement of the question]
[Jibo uses node-hue-api to turn on/off all lights]
Human: Jibo, dim the lights
[Jibo nods to indicate acknowledgement of the question]
[Jibo uses node-hue-api to dim all lights]
Human: Jibo, turn on/off the lights in the living room, bedroom, kitchen
[Jibo nods to indicate acknowledgement of the question]
[Jibo uses node-hue-api to identify the desired lights and turn them on/off]
Jibo: I've turned on/off the lights in the living room, bedroom, kitchen
Human: Jibo, it's getting dark
Jibo: Would you like me to turn on the lights?
Human: Yes
[Jibo nods to indicate acknowledgement of the question]
[Jibo uses node-hue-api to turn on all lights]
Jibo: Oh, that's much better!
Human: Jibo, I'm going to bed
Jibo: Would you like me to turn off the lights in five minutes?
Human: Yes
[Jibo nods to indicate acknowledgement of the question]
[Jibo uses node-hue-api to schedule all lights off in 5 minutes]
Human: Jibo, could you turn on/off the lights at 5 pm today?
[Jibo nods to indicate acknowledgement of the question]
Jibo: Certainly, I'll turn them on/off at 5 pm
[Jibo uses node-hue-api to schedule all lights on/off at 5pm]
Human: Jibo, change the color of the lights to red/orange/yellow/green/cyan/blue/pink/indigo/violet
[Jibo nods to indicate acknowledgement of the request]
[Jibo uses node-hue-api to alter the color of all lights]
[Jibo uses node-hue-api to discover it is not connected to the Hue bridge]
Jibo: Press the button on your Philips Hue bridge and I'll let you know when I'm connected.
[Human presses the Philips Hue bridge button]
[Jibo uses node-hue-api to connect to the Hue bridge]
Jibo: I am connected to your lighting system. How can I help you today?
- Support a vast array of light bulb colors, as the physical Hue light bulbs can display millions of different shades. The onecolor NPM package can assist with this enhancement, as it is able to provide the RGB values for any of the standard named CSS colors.
- Pro-actively check the capabilities of the Hue lighting system, and gracefully reject color change requests if the bulb doesn't support it (i.e. basic white light bulbs).
- Allow for the changing of light colors individually, rather than needing to set all light bulbs to the same color. For example, Jibo, change the living room color to blue.
- Add a visual display whenever the state of the light bulb changes. For example, when the light is turned on, then we could temporarily display the light bulb and transition it from off to on.
Philips provides a bridge detection page, which will list information about the Hue bridges connected to your network. This page is very useful if Jibo is having difficulty establishing a connection with your bridge.
The Hue API Debug Tool allows you to inspect the state of your light bulbs, which includes any schedule information.