Mercurial > code > home > repos > light-bridge
comparison light.py @ 26:33b3eb24506e
wled (single bulb) support. more lights
author | drewp@bigasterisk.com |
---|---|
date | Sat, 03 Feb 2024 20:56:27 -0800 |
parents | cee43f550577 |
children | fb2e91f230f4 |
comparison
equal
deleted
inserted
replaced
25:cee43f550577 | 26:33b3eb24506e |
---|---|
4 from typing import Callable | 4 from typing import Callable |
5 | 5 |
6 from color import Color | 6 from color import Color |
7 from color_convert import DeviceColor, brightnessConv, ikeaWhiteConv, oneWhiteConv, relayConv, twoWhitesConv, zbConv | 7 from color_convert import DeviceColor, brightnessConv, ikeaWhiteConv, oneWhiteConv, relayConv, twoWhitesConv, zbConv |
8 from mqtt_io import MqttIo | 8 from mqtt_io import MqttIo |
9 from protocols import ShellyGen1WebTransport, SonoffRelayTransport, TasmotaWebTransport, Transport, ZigbeeTransport, espColorMessage, zbBrightnessMessage, zbRelayMessage, zbWhiteSpectrumMessage | 9 from protocols import ShellyGen1WebTransport, SonoffRelayTransport, TasmotaWebTransport, Transport, WledTransport, ZigbeeTransport, espColorMessage, zbBrightnessMessage, zbRelayMessage, zbWhiteSpectrumMessage |
10 | 10 |
11 log = logging.getLogger('lite') | 11 log = logging.getLogger('lite') |
12 | 12 |
13 | 13 |
14 @dataclass | 14 @dataclass |
102 return Light(name=name, | 102 return Light(name=name, |
103 convertColor=oneWhiteConv, | 103 convertColor=oneWhiteConv, |
104 transport=ZigbeeTransport(mqtt, name, '', topic=lambda *arg: topicPrefix + '/command', msg=espColorMessage)) | 104 transport=ZigbeeTransport(mqtt, name, '', topic=lambda *arg: topicPrefix + '/command', msg=espColorMessage)) |
105 | 105 |
106 | 106 |
107 def makeWledSingleBulb(name: str, hostname: str) -> Light: | |
108 return Light(name=name, convertColor=twoWhitesConv, transport=WledTransport(hostname)) | |
109 | |
110 | |
107 class Lights: | 111 class Lights: |
108 _d: dict[str, Light] = {} | 112 _d: dict[str, Light] = {} |
109 | 113 |
110 def __init__(self, mqtt: MqttIo): | 114 def __init__(self, mqtt: MqttIo): |
111 # todo: combine mqtt, aiohttp session, and pigpiod client into some | 115 # todo: combine mqtt, aiohttp session, and pigpiod client into some |
114 | 118 |
115 self.add(makeZbBar(mqtt, 'do-bar', '0xa4c13844948d2da4')) | 119 self.add(makeZbBar(mqtt, 'do-bar', '0xa4c13844948d2da4')) |
116 self.add(makeTasmota('do-lamp', 'tasmota-9E2AB7-2743')) | 120 self.add(makeTasmota('do-lamp', 'tasmota-9E2AB7-2743')) |
117 self.add(makeTasmota('li-high-shelf', 'light-li-ceil')) | 121 self.add(makeTasmota('li-high-shelf', 'light-li-ceil')) |
118 self.add(makeTasmota('tr-door', 'light-tr-door')) | 122 self.add(makeTasmota('tr-door', 'light-tr-door')) |
123 self.add(makeWledSingleBulb('ft-hanging', 'light-ft-ceil')) | |
124 | |
119 self.add(makeShellyRGW2('ki-ceiling', 'shellyrgbw2-e868e7f34c35')) | 125 self.add(makeShellyRGW2('ki-ceiling', 'shellyrgbw2-e868e7f34c35')) |
120 self.add(makeShellyRGW2('ki-counter', 'shellyrgbw2-e868e7f34cb2')) | 126 self.add(makeShellyRGW2('ki-counter', 'shellyrgbw2-e868e7f34cb2')) |
121 | 127 |
122 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-floor', '0x000b57fffedabd20')) | 128 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-floor', '0x000b57fffedabd20')) |
123 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-wall', '0x14b457fffe2dab6e')) | 129 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-wall', '0x14b457fffe2dab6e')) |
124 self.add(makeZbIkeaWhiteTemp(mqtt, 'en', '0x000b57fffe988959')) | 130 self.add(makeZbIkeaWhiteTemp(mqtt, 'en', '0x000b57fffe988959')) |
125 self.add(makeZbIkeaWhiteTemp(mqtt, 'py', '0x000b57fffeaf42cd')) | 131 self.add(makeZbIkeaWhiteTemp(mqtt, 'py', '0x000b57fffeaf42cd')) |
126 self.add(makeZbIkeaWhiteTemp(mqtt, 'rr-lamp', '0x000b57fffe32e5a5')) | 132 self.add(makeZbIkeaWhiteTemp(mqtt, 'rr-lamp', '0x000b57fffe32e5a5')) |
133 self.add(makeZbIkeaWhiteTemp(mqtt, 'ft-ceiling', '0xd0cf5efffe28abcf')) | |
127 | 134 |
128 self.add(makeZbBrightness(mqtt, 'go-high', '0x847127fffebb3efa')) | 135 self.add(makeZbBrightness(mqtt, 'go-high', '0x847127fffebb3efa')) |
129 | 136 |
130 self.add(makeZbRelay(mqtt, 'ws-hanging', '0xd0cf5efffe720b46')) | 137 self.add(makeZbRelay(mqtt, 'ws-hanging', '0xd0cf5efffe720b46')) |
131 | 138 |