Open Pixel Control (OPC) plugin for Homebridge.
- Install homebridge using: npm install -g homebridge
- Install this plugin using: npm install -g homebridge-opc
- Update your configuration file. See the sample below.
- npm update -g homebridge-opc
Pixel segments are exposed as a lightbulb in HomeKit with the lightbulbs configuration.
"lightbulbs": [
{ "name": "Strand", "map": [ [0, 0, 10] ] }
]
The map property is similar to the FadeCandy server map configuration:
- [ OPC Channel, First OPC Pixel, Pixel count ]
- Pixel count is optional and will default to 1.
Channel 0, pixels 0 through 3:
"map": [ [ 0, 0, 4 ] ] // As a Range
"map": [ [0,0], [0,1], [0,2], [0,3] ] // Individual
Channel 1, pixels 6 through 8:
"map": [ [ 1, 6, 3 ] ] // As a Range
"map": [ [1,6], [1,7], [1,8] ] // Individual
Channel 1, pixels 6 through 9:
"map": [ [ 1, 6, 3 ], [1,9] ] // Range plus Individual
"map": [ [1,6], [1,7], [1,8], [1,9] ] // Individual
Pixel segments can also be set to a gradient between two lightbulb colors.
"lightbulbs": [
{ "name": "Left", "map": [ [0,0] ] },
{ "name": "Right", "map": [ [0,39] ] },
],
"gradients": [
{ "lightbulbNames": ["Left", "Right"], "map": [ [ 0, 1, 38, 1 ] ] }
]
The map property for gradients has an additional option Step Length. If omitted it defaults to 0.
- [ OPC Channel, First OPC Pixel, Pixel count, Step length ]
For a gradient 10 pixels long:
- Step Length of 0 will have 1 color:
1,2,3,4,5,6,7,8,9,10
- Step Length of 1 will have 10 colors:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
- Step Length of 2 will have 5 colors:
1,2 | 3,4 | 5,6 | 7,8 | 9,10
- Step Length of 3 will have 4 colors:
1,2,3 | 4,5,6 | 7,8,9 | 10
Name | Default | Description |
---|---|---|
fadeDuration | 0 | Fade between color changes in ms (0 is instantaneous) |
fadeOnDuration | fadeDuration | Fade when turning a lightbulb on in ms (0 is instantaneous) |
fadeOffDuration | fadeDuration | Fade when turning a lightbulb off in ms (0 is instantaneous) |
- Minimal configuration, one 10 pixel long strand all one color:
"accessories": [{
"accessory": "OpcAccessory",
"name": "Light Strip",
"host": "localhost",
"port": 7890,
"lightbulbs": [
{ "name": "Strand", "map": [ [0, 0, 10] ] }
]
}]
- Strip 40 Pixel long strip with one pixel on each end as a lightbulb and the 38 pixels in between a gradient. Includes optional fade durations:
"accessories": [{
"accessory": "OpcAccessory",
"name": "Light Strip",
"host": "localhost",
"port": 7890,
"fadeDuration": 100,
"fadeOnDuration": 500,
"fadeOffDuration": 1000,
"lightbulbs": [
{ "name": "Left", "map": [ [0,0] ] },
{ "name": "Right", "map": [ [0,39] ] },
],
"gradients": [
{ "lightbulbNames": ["Left", "Right"], "map": [ [ 0, 1, 38, 1 ] ] }
]
}]