Mercurial > code > home > repos > light-bridge
comparison light.py @ 28:fb2e91f230f4
new wled mode and more lights
author | drewp@bigasterisk.com |
---|---|
date | Mon, 02 Sep 2024 20:00:53 -0700 |
parents | 33b3eb24506e |
children | 35affd4d37d4 |
comparison
equal
deleted
inserted
replaced
27:32cfefe3155b | 28:fb2e91f230f4 |
---|---|
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, WledTransport, ZigbeeTransport, espColorMessage, zbBrightnessMessage, zbRelayMessage, zbWhiteSpectrumMessage | 9 from protocols import ShellyGen1WebTransport, SonoffRelayTransport, TasmotaWebTransport, Transport, WledControl, 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 |
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: | 107 def makeWledSingleBulb(name: str, hostname: str) -> Light: |
108 return Light(name=name, convertColor=twoWhitesConv, transport=WledTransport(hostname)) | 108 return Light(name=name, convertColor=twoWhitesConv, transport=WledTransport(hostname, WledControl.wholeStringColor)) |
109 | 109 |
110 def makeWledStringBrightness(name: str, hostname: str) -> Light: | |
111 return Light(name=name, convertColor=brightnessConv, transport=WledTransport(hostname, WledControl.brightness)) | |
110 | 112 |
111 class Lights: | 113 class Lights: |
112 _d: dict[str, Light] = {} | 114 _d: dict[str, Light] = {} |
113 | 115 |
114 def __init__(self, mqtt: MqttIo): | 116 def __init__(self, mqtt: MqttIo): |
118 | 120 |
119 self.add(makeZbBar(mqtt, 'do-bar', '0xa4c13844948d2da4')) | 121 self.add(makeZbBar(mqtt, 'do-bar', '0xa4c13844948d2da4')) |
120 self.add(makeTasmota('do-lamp', 'tasmota-9E2AB7-2743')) | 122 self.add(makeTasmota('do-lamp', 'tasmota-9E2AB7-2743')) |
121 self.add(makeTasmota('li-high-shelf', 'light-li-ceil')) | 123 self.add(makeTasmota('li-high-shelf', 'light-li-ceil')) |
122 self.add(makeTasmota('tr-door', 'light-tr-door')) | 124 self.add(makeTasmota('tr-door', 'light-tr-door')) |
125 | |
123 self.add(makeWledSingleBulb('ft-hanging', 'light-ft-ceil')) | 126 self.add(makeWledSingleBulb('ft-hanging', 'light-ft-ceil')) |
127 self.add(makeWledSingleBulb('tr-ball', 'light-tr-ball')) | |
128 self.add(makeWledStringBrightness('hr-string', 'light-hr-string')) | |
129 self.add(makeWledStringBrightness('tr-string', 'light-tr-string')) | |
124 | 130 |
125 self.add(makeShellyRGW2('ki-ceiling', 'shellyrgbw2-e868e7f34c35')) | 131 self.add(makeShellyRGW2('ki-ceiling', 'shellyrgbw2-e868e7f34c35')) |
126 self.add(makeShellyRGW2('ki-counter', 'shellyrgbw2-e868e7f34cb2')) | 132 self.add(makeShellyRGW2('ki-counter', 'shellyrgbw2-e868e7f34cb2')) |
127 | 133 |
128 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-floor', '0x000b57fffedabd20')) | 134 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-floor', '0x000b57fffedabd20')) |
129 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-wall', '0x14b457fffe2dab6e')) | 135 self.add(makeZbIkeaWhiteTemp(mqtt, 'br-wall', '0x14b457fffe2dab6e')) |
130 self.add(makeZbIkeaWhiteTemp(mqtt, 'en', '0x000b57fffe988959')) | 136 self.add(makeZbIkeaWhiteTemp(mqtt, 'en', '0x000b57fffe988959')) |
131 self.add(makeZbIkeaWhiteTemp(mqtt, 'py', '0x000b57fffeaf42cd')) | 137 self.add(makeZbIkeaWhiteTemp(mqtt, 'py', '0x000b57fffeaf42cd')) |
132 self.add(makeZbIkeaWhiteTemp(mqtt, 'rr-lamp', '0x000b57fffe32e5a5')) | 138 self.add(makeZbIkeaWhiteTemp(mqtt, 'rr-lamp', '0x000b57fffe32e5a5')) |
133 self.add(makeZbIkeaWhiteTemp(mqtt, 'ft-ceiling', '0xd0cf5efffe28abcf')) | 139 self.add(makeZbIkeaWhiteTemp(mqtt, 'ft-ceiling', '0xd0cf5efffe28abcf')) |
140 self.add(makeZbIkeaWhiteTemp(mqtt, 'di-ceiling', '0x000b57fffe8c0ad4')) | |
134 | 141 |
135 self.add(makeZbBrightness(mqtt, 'go-high', '0x847127fffebb3efa')) | 142 self.add(makeZbBrightness(mqtt, 'go-high', '0x847127fffebb3efa')) |
136 | 143 |
137 self.add(makeZbRelay(mqtt, 'ws-hanging', '0xd0cf5efffe720b46')) | 144 self.add(makeZbRelay(mqtt, 'ws-hanging', '0xd0cf5efffe720b46')) |
138 | 145 |