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)