# HG changeset patch
# User drewp@bigasterisk.com
# Date 1580891353 28800
# Node ID b87b6e9cedb21afcde2411301779167f2324e60e
# Parent a93fbf0d0daa47b531cbd43317dc2a5ac0816102
whitespace
Ignore-this: c727f388f197a6fae88595fe6d455c7d
diff -r a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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 a93fbf0d0daa -r b87b6e9cedb2 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"}),