Mercurial > code > home > repos > homeauto
diff service/rdf_to_mqtt/rdf_to_mqtt.py @ 761:78f699077ff5
more theater output controls
Ignore-this: 34e105c3760b9df22d63eb0035aca19d
author | drewp@bigasterisk.com |
---|---|
date | Fri, 14 Feb 2020 10:21:24 -0800 |
parents | 1135680fba5a |
children | 5943cacc8b9b |
line wrap: on
line diff
--- a/service/rdf_to_mqtt/rdf_to_mqtt.py Fri Feb 14 00:33:31 2020 -0800 +++ b/service/rdf_to_mqtt/rdf_to_mqtt.py Fri Feb 14 10:21:24 2020 -0800 @@ -14,48 +14,45 @@ from patchablegraph import PatchableGraph, CycloneGraphHandler, CycloneGraphEventsHandler from standardservice.logsetup import log, verboseLogging import rdf_over_http +from cycloneerr import PrettyErrorHandler ROOM = Namespace('http://projects.bigasterisk.com/room/') devs = { ROOM['kitchenLight']: { 'root': 'h801_skylight', - 'ctx': ROOM['kitchenH801'] }, ROOM['kitchenCounterLight']: { 'root': 'h801_counter', - 'ctx': ROOM['kitchenH801'] }, ROOM['livingLampShelf']: { 'root': 'sonoff_0/switch/sonoff_basic_relay/command', - 'ctx': ROOM['sonoff_0'], 'values': 'binary', }, ROOM['livingLamp1']: { 'root': 'sonoff_1/switch/sonoff_basic_relay/command', - 'ctx': ROOM['sonoff_1'], 'values': 'binary', }, ROOM['livingLamp2']: { 'root': 'sonoff_2/switch/sonoff_basic_relay/command', - 'ctx': ROOM['sonoff_2'], 'values': 'binary', }, ROOM['livingLamp3']: { 'root': 'sonoff_3/switch/sonoff_basic_relay/command', - 'ctx': ROOM['sonoff_3'], 'values': 'binary', }, ROOM['livingLamp4']: { 'root': 'sonoff_4/switch/sonoff_basic_relay/command', - 'ctx': ROOM['sonoff_4'], 'values': 'binary', }, ROOM['livingLamp5']: { 'root': 'sonoff_5/switch/sonoff_basic_relay/command', - 'ctx': ROOM['sonoff_5'], 'values': 'binary', }, + ROOM['theater']: { + 'root': 'theater_blaster/ir_out', + 'values': 'theaterOutputs', + }, #-t theater_blaster/ir_out -m 'input_game' #-t theater_blaster/ir_out -m 'input_bd' #-t theater_blaster/ir_out -m 'input_cbl' @@ -65,7 +62,7 @@ } -class OutputPage(cyclone.web.RequestHandler): +class OutputPage(PrettyErrorHandler, cyclone.web.RequestHandler): def put(self): for stmt in rdf_over_http.rdfStatementsFromRequest( self.request.arguments, @@ -79,7 +76,6 @@ for dev, attrs in devs.items(): if stmt[0] == ROOM['frontWindow']: ignored = ignored and self._publishFrontScreenText(stmt) - if stmt[0:2] == (dev, ROOM['brightness']): log.info(f'brightness request: {stmt}') brightness = stmt[2].toPython() @@ -89,6 +85,16 @@ else: self._publishRgbw(attrs, brightness) ignored = False + if stmt[0:2] == (dev, ROOM['inputSelector']): + self._publish(topic=attrs['root'], + message='input_'+str(stmt[2].toPython())) + ignored = False + if stmt[0:2] == (dev, ROOM['volumeChange']): + delta = int(stmt[2].toPython()) + which = 'up' if delta > 0 else 'down' + self._publish(topic=f'theater_blaster/ir_out/volume_{which}', + message=json.dumps({'timed': abs(delta)})) + ignored = False if ignored: log.warn("ignoring %s", stmt)