Mercurial > code > home > repos > homeauto
annotate service/tinyScreen/tiny_screen.py @ 1259:672a3d830e7f
arduinoNode: build updates, stats support, etc
Ignore-this: 39386eb7644e3cf522e0f72a874eadba
darcs-hash:b6fa9fbda226917dd3b94d8a87556c4cd6d51180
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Sat, 20 Apr 2019 23:28:29 -0700 |
parents | 971462233d15 |
children | a471688fb7b7 |
rev | line source |
---|---|
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
1 from docopt import docopt |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
2 from patchablegraph import PatchableGraph, CycloneGraphHandler, CycloneGraphEventsHandler |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
3 from rdflib import Namespace, URIRef, Literal, Graph |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
4 from rdflib.parser import StringInputSource |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
5 from twisted.internet import reactor |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
6 import cyclone.web |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
7 import sys, logging, time, textwrap |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
8 |
1189 | 9 from luma.core.interface.serial import spi |
10 from luma.oled.device import ssd1331 | |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
11 from PIL import Image, ImageFont, ImageDraw |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
12 ROOM = Namespace('http://projects.bigasterisk.com/room/') |
1189 | 13 |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
14 logging.basicConfig() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
15 log = logging.getLogger() |
1189 | 16 |
17 class Screen(object): | |
18 def __init__(self, spiDevice=1, rotation=0): | |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
19 self._initOutput(spiDevice, rotation) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
20 self.news = "" |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
21 self.goalState = None |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
22 self.animateTo(ROOM['boot']) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
23 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
24 def _stateImage(self, state): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
25 return Image.open('anim/%s.png' % state.rsplit('/')[-1]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
26 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
27 def _initOutput(self, spiDevice, rotation): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
28 self._dev = ssd1331(spi(device=spiDevice, port=0, |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
29 # lots of timeouts on the 12288-byte transfer without this |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
30 transfer_size=64, |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
31 bus_speed_hz=16000000, |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
32 gpio_RST=None), |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
33 rotation=rotation) |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
34 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
35 def setContrast(self, contrast): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
36 """0..255""" |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
37 self._dev.contrast(contrast) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
38 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
39 def hide(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
40 """Switches the display mode OFF, putting the device in low-power sleep mode.""" |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
41 self._dev.hide() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
42 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
43 def show(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
44 self._dev.show() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
45 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
46 def display(self, img): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
47 self._dev.display(img.convert(self._dev.mode)) |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
48 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
49 def animateTo(self, state): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
50 """ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
51 boot |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
52 sleep |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
53 locked |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
54 lockedUnknownKey |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
55 unlockNews |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
56 """ |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
57 if self.goalState == state: |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
58 return |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
59 self.goalState = state |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
60 self.display(self._stateImage(state)) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
61 if state == ROOM['unlockNews']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
62 self.renderNews() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
63 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
64 def setNews(self, text): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
65 if self.news == text: |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
66 return |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
67 self.news = text |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
68 if self.goalState == ROOM['unlockNews']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
69 # wrong during animation |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
70 self.renderNews() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
71 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
72 def renderNews(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
73 bg = self._stateImage(ROOM['unlockNews']) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
74 draw = ImageDraw.Draw(bg) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
75 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
76 font = ImageFont.truetype("font/Oswald-SemiBold.ttf", 12) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
77 #w, h = font.getsize('txt') |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
78 for i, line in enumerate( |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
79 textwrap.fill(self.news, width=12).splitlines()): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
80 draw.text((24, 0 + 10 * i), line, font=font) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
81 self.display(bg) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
82 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
83 class ScreenSim(Screen): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
84 def _initOutput(self): |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
85 self.windowScale = 2 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
86 import pygame |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
87 self.pygame = pygame |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
88 pygame.init() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
89 self.surf = pygame.display.set_mode( |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
90 (96 * self.windowScale, 64 * self.windowScale)) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
91 time.sleep(.05) # something was causing the 1st update not to show |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
92 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
93 def display(self, img): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
94 pgi = self.pygame.image.fromstring( |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
95 img.tobytes(), img.size, img.mode) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
96 self.pygame.transform.scale(pgi, self.surf.get_size(), self.surf) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
97 self.pygame.display.flip() |
1189 | 98 |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
99 def rdfGraphBody(body, headers): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
100 g = Graph() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
101 g.parse(StringInputSource(body), format='nt') |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
102 return g |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
103 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
104 class OutputPage(cyclone.web.RequestHandler): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
105 def put(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
106 arg = self.request.arguments |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
107 if arg.get('s') and arg.get('p'): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
108 subj = URIRef(arg['s'][-1]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
109 pred = URIRef(arg['p'][-1]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
110 turtleLiteral = self.request.body |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
111 try: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
112 obj = Literal(float(turtleLiteral)) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
113 except ValueError: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
114 obj = Literal(turtleLiteral) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
115 stmts = [(subj, pred, obj)] |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
116 else: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
117 nt = self.request.body.replace("\\n", "\n") # wrong, but i can't quote right in curl |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
118 g = rdfGraphBody(nt, self.request.headers) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
119 assert len(g) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
120 stmts = list(g.triples((None, None, None))) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
121 self._onStatement(stmts) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
122 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
123 def _onStatement(self, stmts): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
124 """ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
125 (disp :brightness 1.0 . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
126 (disp :state :locked . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
127 (disp :state :sleep . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
128 (disp :state :readKeyUnlock . disp :news "some news text" . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
129 """ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
130 disp = ROOM['frontDoorOled'] |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
131 for stmt in stmts: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
132 if stmt[:2] == (disp, ROOM['news']): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
133 self.settings.screen.setNews(stmt[2].toPython()) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
134 elif stmt[:2] == (disp, ROOM['state']): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
135 self.settings.screen.animateTo(stmt[2]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
136 else: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
137 log.warn("ignoring %s", stmt) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
138 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
139 if __name__ == '__main__': |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
140 arg = docopt(""" |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
141 Usage: tiny_screen.py [options] |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
142 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
143 -v Verbose |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
144 -x Draw to X11 window, not output hardware |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
145 """) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
146 log.setLevel(logging.WARN) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
147 if arg['-v']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
148 from twisted.python import log as twlog |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
149 twlog.startLogging(sys.stdout) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
150 log.setLevel(logging.DEBUG) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
151 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
152 masterGraph = PatchableGraph() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
153 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
154 if arg['-x']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
155 screen = ScreenSim() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
156 else: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
157 screen = Screen(spiDevice=1) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
158 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
159 port = 10013 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
160 reactor.listenTCP(port, cyclone.web.Application([ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
161 (r"/()", cyclone.web.StaticFileHandler, |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
162 {"path": ".", "default_filename": "index.html"}), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
163 (r"/graph", CycloneGraphHandler, {'masterGraph': masterGraph}), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
164 (r"/graph/events", CycloneGraphEventsHandler, |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
165 {'masterGraph': masterGraph}), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
166 (r'/output', OutputPage), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
167 ], screen=screen, masterGraph=masterGraph, debug=arg['-v']), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
168 interface='::') |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
169 log.warn('serving on %s', port) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
170 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
171 reactor.run() |