Mercurial > code > home > repos > homeauto
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', {})) |