comparison service/rdf_to_mqtt/rdf_to_mqtt.py @ 1685:6b80a6c58907

minor changes to several services
author drewp@bigasterisk.com
date Mon, 27 Sep 2021 23:12:43 -0700
parents e7eb3fc8db54
children ac1ae0c21bb0
comparison
equal deleted inserted replaced
1684:c41af73a410f 1685:6b80a6c58907
34 }, 34 },
35 ROOM['kitchenCounterLight']: { 35 ROOM['kitchenCounterLight']: {
36 'root': 'h801_counter', 36 'root': 'h801_counter',
37 'hasWhite': True, 37 'hasWhite': True,
38 }, 38 },
39 ROOM['livingLampShelf']: { 39 ROOM['livingLampShelf']: { 'root': 'sonoff_0/switch/sonoff_basic_relay/command', 'values': 'binary', },
40 'root': 'sonoff_0/switch/sonoff_basic_relay/command', 40 ROOM['livingLampMantleEntry']: { 'root': 'sonoff_1/switch/sonoff_basic_relay/command', 'values': 'binary', },
41 'values': 'binary', 41 ROOM['livingLampMantleChair']: { 'root': 'sonoff_2/switch/sonoff_basic_relay/command', 'values': 'binary', },
42 }, 42 ROOM['livingLampToyShelf']: { 'root': 'sonoff_3/switch/sonoff_basic_relay/command', 'values': 'binary', },
43 ROOM['livingLampMantleEntry']: { 43 ROOM['livingLampPiano']: { 'root': 'sonoff_4/switch/sonoff_basic_relay/command', 'values': 'binary', },
44 'root': 'sonoff_1/switch/sonoff_basic_relay/command',
45 'values': 'binary',
46 },
47 ROOM['livingLampMantleChair']: {
48 'root': 'sonoff_2/switch/sonoff_basic_relay/command',
49 'values': 'binary',
50 },
51 ROOM['livingLampToyShelf']: {
52 'root': 'sonoff_3/switch/sonoff_basic_relay/command',
53 'values': 'binary',
54 },
55 ROOM['livingLampPiano']: {
56 'root': 'sonoff_4/switch/sonoff_basic_relay/command',
57 'values': 'binary',
58 },
59 ROOM['theater']: { 44 ROOM['theater']: {
60 'root': 'theater_blaster/ir_out', 45 'root': 'theater_blaster/ir_out',
61 'values': 'theaterOutputs', 46 'values': 'theaterOutputs',
62 }, 47 },
63 ROOM['bedHeadboard']: { 48 ROOM['bedHeadboard']: {
64 'root': 'bed/light/headboard/command', 49 'root': 'bed/light/headboard/command',
65 'hasWhite': True, 50 'hasWhite': True,
66 }, 51 },
67 # https://github.com/Koenkk/zigbee2mqtt.io/blob/new_api/docs/information/mqtt_topics_and_message_structure.md#general 52 # https://github.com/Koenkk/zigbee2mqtt.io/blob/new_api/docs/information/mqtt_topics_and_message_structure.md#general
68 ROOM['frontRoom1']: { 53 ROOM['frontRoom1']: { 'root': 'zigbee-dash/frontRoom1/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
69 'root': 'zigbee2mqtt/frontRoom1/set', 54 ROOM['frontRoom2']: { 'root': 'zigbee-dash/frontRoom2/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
70 'hasBrightness': True, 55 ROOM['asherCeiling']: { 'root': 'zigbee-frontbed/0xf0d1b80000022c86/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
71 'defaults': { 56 ROOM['asherBedBar']: { 'root': 'bed_bar_asher/light/rgb/command', 'hasBrightness': True, 'defaults': {}},
72 'transition': 0, 57 ROOM['stairTop']: { 'root': 'zigbee-dash/stairTop/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
73 } 58 ROOM['noname1']: { 'root': 'zigbee-bang/0xf0d1b8000001ffc6/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
74 }, 59 ROOM['noname2']: { 'root': 'zigbee-bang/0xf0d1b80000023583/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
75 ROOM['frontRoom2']: { 60 ROOM['noname3']: { 'root': 'zigbee-bang/0xf0d1b80000023708/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
76 'root': 'zigbee2mqtt/frontRoom2/set', 61 ROOM['noname4']: { 'root': 'zigbee-bang/0xf0d1b80000022adc/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
77 'hasBrightness': True,
78 'defaults': {
79 'transition': 0,
80 }
81 },
82 ROOM['asherCeiling']: {
83 'root': 'zigbee2mqtt/asherCeiling/set',
84 'hasBrightness': True,
85 'defaults': {
86 'transition': 0,
87 }
88 },
89 ROOM['stairTop']: {
90 'root': 'zigbee2mqtt/stairTop/set',
91 'hasBrightness': True,
92 'defaults': {
93 'transition': 0,
94 }
95 },
96 ROOM['noname1']: { 'root': 'zigbee2mqtt/0xf0d1b8000001ffc6/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
97 ROOM['noname2']: { 'root': 'zigbee2mqtt/0xf0d1b80000023583/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
98 ROOM['noname3']: { 'root': 'zigbee2mqtt/0xf0d1b80000023708/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
99 ROOM['noname4']: { 'root': 'zigbee2mqtt/0xf0d1b80000022adc/set', 'hasBrightness': True, 'defaults': { 'transition': 0, } },
100 } 62 }
101 63
102 64
103 class OutputPage(PrettyErrorHandler, cyclone.web.RequestHandler): 65 class OutputPage(PrettyErrorHandler, cyclone.web.RequestHandler):
104 66
136 h = stmt[2].toPython() 98 h = stmt[2].toPython()
137 msg = {} 99 msg = {}
138 if h.endswith(b'K'): # accept "0.7*2200K" (brightness 0.7) 100 if h.endswith(b'K'): # accept "0.7*2200K" (brightness 0.7)
139 # see https://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html#zigbee2mqttfriendly_nameset 101 # see https://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html#zigbee2mqttfriendly_nameset
140 bright, kelvin = map(float, h[:-1].split(b'*')) 102 bright, kelvin = map(float, h[:-1].split(b'*'))
141 msg['state'] = 'ON' 103 msg['state'] = 'ON'
142 msg["color_temp"] = round(1000000 / kelvin, 2) 104 msg["color_temp"] = round(1000000 / kelvin, 2)
143 msg['brightness'] = int(bright * 255) # 1..20 look about the same 105 msg['brightness'] = int(bright * 255) # 1..20 look about the same
144 else: 106 else:
145 r, g, b = int(h[1:3], 16), int(h[3:5], 16), int(h[5:7], 16) 107 r, g, b = int(h[1:3], 16), int(h[3:5], 16), int(h[5:7], 16)
146 msg = { 108 msg = {
148 'color': { 110 'color': {
149 'r': r, 111 'r': r,
150 'g': g, 112 'g': g,
151 'b': b 113 'b': b
152 }, 114 },
115 'brightness': max(r, g, b),
153 } 116 }
154 117
155 if attrs.get('hasWhite', False): 118 if attrs.get('hasWhite', False):
156 msg['white_value'] = max(r, g, b) 119 msg['white_value'] = max(r, g, b)
157 msg.update(attrs.get('defaults', {})) 120 msg.update(attrs.get('defaults', {}))