| @@ 10-36 (lines=27) @@ | ||
| 7 | class RGBLight(Accessory): |
|
| 8 | category = CATEGORY_LIGHTBULB |
|
| 9 | ||
| 10 | def __init__(self, fixture, driver): |
|
| 11 | super().__init__(driver, fixture.name) |
|
| 12 | ||
| 13 | serv_light = self.add_preload_service( |
|
| 14 | 'Lightbulb', chars=['On', 'Hue', 'Saturation', 'Brightness']) |
|
| 15 | ||
| 16 | # Set our instance variables |
|
| 17 | self.fixture = fixture |
|
| 18 | self.accessory_state = self.get_state() # State of On/Off |
|
| 19 | self.hue = self.get_hue() # Hue Value 0 - 360 Homekit API |
|
| 20 | self.saturation = self.get_saturation() # Saturation Values 0 - 100 Homekit API |
|
| 21 | self.brightness = self.get_brightness() # Brightness value 0 - 100 Homekit API |
|
| 22 | ||
| 23 | # Configure our callbacks |
|
| 24 | self.char_on = serv_light.configure_char( |
|
| 25 | 'On', setter_callback=self.set_state, getter_callback=self.get_state) |
|
| 26 | self.char_hue = serv_light.configure_char( |
|
| 27 | 'Hue', setter_callback=self.set_hue, getter_callback=self.get_hue) |
|
| 28 | self.char_saturation = serv_light.configure_char( |
|
| 29 | 'Saturation', setter_callback=self.set_saturation, getter_callback=self.get_saturation) |
|
| 30 | self.char_brightness = serv_light.configure_char( |
|
| 31 | 'Brightness', setter_callback=self.set_brightness, getter_callback=self.get_brightness) |
|
| 32 | ||
| 33 | # Set model info |
|
| 34 | self.set_info_service(manufacturer=fixture.manufacturer, |
|
| 35 | model=fixture.model, |
|
| 36 | serial_number="Chans: {}".format(fixture.channel_usage)) |
|
| 37 | ||
| 38 | def set_state(self, value): |
|
| 39 | self.accessory_state = value |
|
| @@ 10-35 (lines=26) @@ | ||
| 7 | class MasterLight(Accessory): |
|
| 8 | category = CATEGORY_LIGHTBULB |
|
| 9 | ||
| 10 | def __init__(self, controller, driver): |
|
| 11 | super().__init__(driver, "> Master") |
|
| 12 | ||
| 13 | serv_light = self.add_preload_service( |
|
| 14 | 'Lightbulb', chars=['On', 'Hue', 'Saturation', 'Brightness']) |
|
| 15 | ||
| 16 | # Set our instance variables |
|
| 17 | self.controller = controller |
|
| 18 | self.hue = self.get_hue() # Hue Value 0 - 360 Homekit API |
|
| 19 | self.saturation = self.get_saturation() # Saturation Values 0 - 100 Homekit API |
|
| 20 | self.brightness = self.get_brightness() # Brightness value 0 - 100 Homekit API |
|
| 21 | ||
| 22 | # Configure our callbacks |
|
| 23 | self.char_state = serv_light.configure_char( |
|
| 24 | 'On', getter_callback=self.get_state) |
|
| 25 | self.char_hue = serv_light.configure_char( |
|
| 26 | 'Hue', setter_callback=self.set_hue, getter_callback=self.get_hue) |
|
| 27 | self.char_saturation = serv_light.configure_char( |
|
| 28 | 'Saturation', setter_callback=self.set_saturation, getter_callback=self.get_saturation) |
|
| 29 | self.char_brightness = serv_light.configure_char( |
|
| 30 | 'Brightness', setter_callback=self.set_brightness, getter_callback=self.get_brightness) |
|
| 31 | ||
| 32 | # Set model info |
|
| 33 | self.set_info_service(manufacturer="PyDMXControl", |
|
| 34 | model="Global Master", |
|
| 35 | serial_number="Chans: 1->{} (All)".format(controller.next_channel-1)) |
|
| 36 | ||
| 37 | @staticmethod |
|
| 38 | def get_state(): |
|