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