# HG changeset patch # User drewp # Date 1580891353 28800 # Node ID 13b7e4de38241f0233cec7c1952b8cda18d9fc60 # Parent 0da337780f223511f91761371d4c7718074597b4 whitespace Ignore-this: c727f388f197a6fae88595fe6d455c7d darcs-hash:971e4474b4dbd35a722be670f5599298fb5ec83f diff -r 0da337780f22 -r 13b7e4de3824 service/dhcpleases/dhcpleases.py --- a/service/dhcpleases/dhcpleases.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/dhcpleases/dhcpleases.py Wed Feb 05 00:29:13 2020 -0800 @@ -28,7 +28,7 @@ def timeLiteral(dt): return Literal(dt.replace(tzinfo=tzlocal()).isoformat(), datatype=XSD.dateTime) - + def macUri(macAddress: str) -> URIRef: return URIRef("http://bigasterisk.com/mac/%s" % macAddress.lower()) @@ -46,7 +46,7 @@ self.fileTimes[f] = mtime ret = True return ret - + def poll(self): if not self.anythingToRead(): STATS.filesDidntChange += 1 @@ -67,7 +67,7 @@ g.add((uri, ROOM['dhcpHostname'], Literal(hostname), ctx)) self.graph.setToGraph(g) - + if __name__ == '__main__': arg = docopt(""" Usage: store.py [options] diff -r 0da337780f22 -r 13b7e4de3824 service/dpms/dpms_service.py --- a/service/dpms/dpms_service.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/dpms/dpms_service.py Wed Feb 05 00:29:13 2020 -0800 @@ -59,7 +59,7 @@ def get(self): self.set_header('content-type', 'text/plain') self.write(getMonitorState()) - + def put(self): body = self.request.body.strip() if body in ['on', 'off']: @@ -73,7 +73,7 @@ self.lastSent = None self.lastSentTime = 0 task.LoopingCall(self.poll).start(5) - + def poll(self): now = int(time.time()) state = getMonitorState() @@ -84,7 +84,7 @@ URIRef("http://bigasterisk.com/host/%s/monitor" % host), ROOM['powerStateMeasured'], ROOM[getMonitorState()]) - + if state != self.lastSent or (now > self.lastSentTime + 3600): influx.write_points([ {'measurement': 'power', @@ -92,13 +92,13 @@ 'fields': {'value': 1 if state == 'on' else 0}, 'time': now }], time_precision='s') - + self.lastSent = state self.lastSentTime = now masterGraph = PatchableGraph() poller = Poller() - + reactor.listenTCP(9095, cyclone.web.Application([ (r'/', Root), (r'/monitor', Monitor), @@ -107,5 +107,3 @@ ]), interface='::') reactor.run() - - diff -r 0da337780f22 -r 13b7e4de3824 service/environment/environment.py --- a/service/environment/environment.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/environment/environment.py Wed Feb 05 00:29:13 2020 -0800 @@ -28,7 +28,7 @@ @STATS.update.time() def update(masterGraph): stmt = lambda s, p, o: masterGraph.patchObject(ROOM.environment, s, p, o) - + now = datetime.datetime.now(tzlocal()) stmt(DEV.environment, ROOM.localHour, Literal(now.hour)) @@ -53,7 +53,7 @@ stmt(DEV.calendar, ROOM.twilight, ROOM['withinTwilight'] if isWithinTwilight(now) else ROOM['daytime']) - + def main(): arg = docopt(""" Usage: environment.py [options] @@ -89,4 +89,3 @@ if __name__ == '__main__': main() - diff -r 0da337780f22 -r 13b7e4de3824 service/mqtt_graph_bridge/tasks.py --- a/service/mqtt_graph_bridge/tasks.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/mqtt_graph_bridge/tasks.py Wed Feb 05 00:29:13 2020 -0800 @@ -38,13 +38,3 @@ @task def tail_mqtt(ctx): ctx.run(f'mosquitto_sub -h bang -p 10010 -d -v -t \#') - - - - - - - - - - diff -r 0da337780f22 -r 13b7e4de3824 service/powerEagle/reader.py --- a/service/powerEagle/reader.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/powerEagle/reader.py Wed Feb 05 00:29:13 2020 -0800 @@ -71,7 +71,7 @@ tags=dict(house='berkeley'), time=int(startTime), )) - + self.influx.write_points(pts, time_precision='s') except Exception as e: traceback.print_exc() diff -r 0da337780f22 -r 13b7e4de3824 service/reasoning/index.html --- a/service/reasoning/index.html Wed Feb 05 00:23:06 2020 -0800 +++ b/service/reasoning/index.html Wed Feb 05 00:29:13 2020 -0800 @@ -150,6 +150,7 @@ + - +
/stats/ /graph diff -r 0da337780f22 -r 13b7e4de3824 service/rfid_pn532_py/rfid.py --- a/service/rfid_pn532_py/rfid.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/rfid_pn532_py/rfid.py Wed Feb 05 00:29:13 2020 -0800 @@ -43,7 +43,7 @@ except ValueError: obj = Literal(turtleLiteral) self._onStatements([(subj, pred, obj)]) - + def _onGraphBodyStatements(self, body, headers): g = Graph() g.parse(StringInputSource(body), format='nt') @@ -51,7 +51,7 @@ raise ValueError("expected graph body") self._onStatements(list(g.triples((None, None, None)))) post = put - + def _onStatements(self, stmts): # write rfid to new key, etc. if len(stmts) > 0 and stmts[0][1] == ROOM['keyContents']: @@ -67,7 +67,7 @@ def looksLikeBigasterisk(text): return text.startswith(BODY_VERSION + "*") - + class Rewrite(cyclone.web.RequestHandler): def post(self): agent = URIRef(self.request.headers['x-foaf-agent']) @@ -79,16 +79,16 @@ self.set_status(404, "no card present") # maybe retry a few more times since the card might be nearby return - + text = randomBody() - log.info('%s rewrites %s to %s, to be owned by %s', + log.info('%s rewrites %s to %s, to be owned by %s', agent, uid, text, body['user']) - + #reader.KEY = private.rfid_key reader.write(uid, text) log.info('done with write') - + sensor = ROOM['frontDoorWindowRfid'] class ReadLoop(object): @@ -166,9 +166,9 @@ for spo in self.masterGraph._graph.triples( (cardUri, ROOM['cardText'], None)): delQuads.append(spo + (ctx,)) - + self.masterGraph.patch(Patch(addQuads=[], delQuads=delQuads)) - + def _sendOneshot(self, oneshot): body = (' '.join('%s %s %s .' % (s.n3(), p.n3(), o.n3()) for s,p,o in oneshot)).encode('utf8') @@ -183,8 +183,8 @@ url, e.getErrorMessage()) d.addErrback(err) - - + + if __name__ == '__main__': arg = docopt(""" Usage: rfid.py [options] @@ -199,7 +199,7 @@ log.setLevel(logging.DEBUG) log.info(f'cyclone {cyclone.__version__}') defer.setDebugging(True) - + masterGraph = PatchableGraph() reader = NfcDevice() if not arg['-n'] else FakeNfc() diff -r 0da337780f22 -r 13b7e4de3824 service/tinyScreen/tiny_screen.py --- a/service/tinyScreen/tiny_screen.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/tinyScreen/tiny_screen.py Wed Feb 05 00:29:13 2020 -0800 @@ -23,7 +23,7 @@ def _stateImage(self, state): return Image.open('anim/%s.png' % state.rsplit('/')[-1]) - + def _initOutput(self, spiDevice, rotation): # CS on pin 26 (GPIO7; spi0 ce1), DC on pin 18 (GPIO24), RST held at VCC. self._dev = ssd1331(spi(device=spiDevice, port=0, @@ -34,7 +34,7 @@ gpio_DC=24, ), rotation=rotation) - + def setContrast(self, contrast): """0..255""" self._dev.contrast(contrast) @@ -71,7 +71,7 @@ if self.goalState == ROOM['unlockNews']: # wrong during animation self.renderNews() - + def renderNews(self): bg = self._stateImage(ROOM['unlockNews']) draw = ImageDraw.Draw(bg) @@ -82,7 +82,7 @@ textwrap.fill(self.news, width=12).splitlines()): draw.text((24, 0 + 10 * i), line, font=font) self.display(bg) - + class ScreenSim(Screen): def _initOutput(self): self.windowScale = 2 @@ -92,7 +92,7 @@ self.surf = pygame.display.set_mode( (96 * self.windowScale, 64 * self.windowScale)) time.sleep(.05) # something was causing the 1st update not to show - + def display(self, img): pgi = self.pygame.image.fromstring( img.tobytes(), img.size, img.mode) @@ -122,7 +122,7 @@ assert len(g) stmts = list(g.triples((None, None, None))) self._onStatement(stmts) - + def _onStatement(self, stmts): """ (disp :brightness 1.0 . ) @@ -138,7 +138,7 @@ self.settings.screen.animateTo(stmt[2]) else: log.warn("ignoring %s", stmt) - + if __name__ == '__main__': arg = docopt(""" Usage: tiny_screen.py [options] @@ -170,5 +170,5 @@ ], screen=screen, masterGraph=masterGraph, debug=arg['-v']), interface='::') log.warn('serving on %s', port) - + reactor.run() diff -r 0da337780f22 -r 13b7e4de3824 service/tradfri/tradfri.py --- a/service/tradfri/tradfri.py Wed Feb 05 00:23:06 2020 -0800 +++ b/service/tradfri/tradfri.py Wed Feb 05 00:29:13 2020 -0800 @@ -48,7 +48,7 @@ task.LoopingCall(self.updateCur).start(60) for dev in self.devices: self.startObserve(dev) - + def startObserve(self, dev): def onUpdate(dev): reactor.callFromThread(self.updateCur, dev) @@ -75,13 +75,13 @@ } for dev in self.devices], 'graph': 'http://sticker:9059/graph', #todo } - + def updateCur(self, dev=None): cur = [(s,p,o,self.ctx) for s,p,o in self.currentStateStatements([dev] if dev else self.devices)] self.graph.patch(Patch(addQuads=cur, delQuads=self.curStmts)) self.curStmts = cur - + def deviceStatements(self): for dev in self.devices: uri = devUri(dev) @@ -94,7 +94,7 @@ yield (uri, ROOM['reachable'], ROOM['yes'] if dev.reachable else ROOM['no']) yield (uri, RDFS.label, Literal(dev.name)) # no connection between remotes and lights? - + def currentStateStatements(self, devs): for dev in self.devices: # could scan just devs, but the Patch line needs a fix uri = devUri(dev) @@ -115,7 +115,7 @@ #if light.hex_color: # yield (lightUri, ROOM['kelvinColor'], Literal(light.kelvin_color)) # yield (lightUri, ROOM['color'], Literal('#%s' % light.hex_color)) - + def outputStatements(self, stmts): for stmt in stmts: @@ -130,7 +130,7 @@ traceback.print_exc() raise self.updateCur() - + class OutputPage(cyclone.web.RequestHandler): def put(self): arg = self.request.arguments @@ -159,7 +159,7 @@ 'host': hostname, 'boards': [self.settings.hub.description()] }, indent=2)) - + def main(): arg = docopt(""" Usage: tradfri.py [options] @@ -174,7 +174,7 @@ masterGraph = PatchableGraph() hub = Hub(masterGraph, private.hubAddr, key=private.hubKey) - + reactor.listenTCP(10009, cyclone.web.Application([ (r"/()", cyclone.web.StaticFileHandler, { "path": "/opt/static", "default_filename": "index.html"}),