Mercurial > code > home > repos > homeauto
annotate service/tinyScreen/tiny_screen.py @ 1452:1dd4da407c0b
build and release config
Ignore-this: a1a0231a2811ac29f906ca72d85a8c34
darcs-hash:879bbda36c705de169b0b746f5c4de467b48d142
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Wed, 25 Sep 2019 17:28:38 -0700 |
parents | a2e3a342315c |
children | a93fbf0d0daa |
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): |
1262
a2e3a342315c
build updates. turn off output speed override for now
drewp <drewp@bigasterisk.com>
parents:
1198
diff
changeset
|
28 # CS on pin 26 (GPIO7; spi0 ce1), DC on pin 18 (GPIO24), RST held at VCC. |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
29 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
|
30 # lots of timeouts on the 12288-byte transfer without this |
1262
a2e3a342315c
build updates. turn off output speed override for now
drewp <drewp@bigasterisk.com>
parents:
1198
diff
changeset
|
31 #transfer_size=64, |
a2e3a342315c
build updates. turn off output speed override for now
drewp <drewp@bigasterisk.com>
parents:
1198
diff
changeset
|
32 #bus_speed_hz=16000000, |
a2e3a342315c
build updates. turn off output speed override for now
drewp <drewp@bigasterisk.com>
parents:
1198
diff
changeset
|
33 gpio_RST=None, |
a2e3a342315c
build updates. turn off output speed override for now
drewp <drewp@bigasterisk.com>
parents:
1198
diff
changeset
|
34 gpio_DC=24, |
a2e3a342315c
build updates. turn off output speed override for now
drewp <drewp@bigasterisk.com>
parents:
1198
diff
changeset
|
35 ), |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
36 rotation=rotation) |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
37 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
38 def setContrast(self, contrast): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
39 """0..255""" |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
40 self._dev.contrast(contrast) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
41 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
42 def hide(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
43 """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
|
44 self._dev.hide() |
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 show(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
47 self._dev.show() |
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 display(self, img): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
50 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
|
51 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
52 def animateTo(self, state): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
53 """ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
54 boot |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
55 sleep |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
56 locked |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
57 lockedUnknownKey |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
58 unlockNews |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
59 """ |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
60 if self.goalState == state: |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
61 return |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
62 self.goalState = state |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
63 self.display(self._stateImage(state)) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
64 if state == ROOM['unlockNews']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
65 self.renderNews() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
66 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
67 def setNews(self, text): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
68 if self.news == text: |
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
69 return |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
70 self.news = text |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
71 if self.goalState == ROOM['unlockNews']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
72 # wrong during animation |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
73 self.renderNews() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
74 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
75 def renderNews(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
76 bg = self._stateImage(ROOM['unlockNews']) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
77 draw = ImageDraw.Draw(bg) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
78 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
79 font = ImageFont.truetype("font/Oswald-SemiBold.ttf", 12) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
80 #w, h = font.getsize('txt') |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
81 for i, line in enumerate( |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
82 textwrap.fill(self.news, width=12).splitlines()): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
83 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
|
84 self.display(bg) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
85 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
86 class ScreenSim(Screen): |
1198
971462233d15
fix screen timing corruption, hopefully. add py client
drewp <drewp@bigasterisk.com>
parents:
1193
diff
changeset
|
87 def _initOutput(self): |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
88 self.windowScale = 2 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
89 import pygame |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
90 self.pygame = pygame |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
91 pygame.init() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
92 self.surf = pygame.display.set_mode( |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
93 (96 * self.windowScale, 64 * self.windowScale)) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
94 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
|
95 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
96 def display(self, img): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
97 pgi = self.pygame.image.fromstring( |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
98 img.tobytes(), img.size, img.mode) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
99 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
|
100 self.pygame.display.flip() |
1189 | 101 |
1193
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
102 def rdfGraphBody(body, headers): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
103 g = Graph() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
104 g.parse(StringInputSource(body), format='nt') |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
105 return g |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
106 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
107 class OutputPage(cyclone.web.RequestHandler): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
108 def put(self): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
109 arg = self.request.arguments |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
110 if arg.get('s') and arg.get('p'): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
111 subj = URIRef(arg['s'][-1]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
112 pred = URIRef(arg['p'][-1]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
113 turtleLiteral = self.request.body |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
114 try: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
115 obj = Literal(float(turtleLiteral)) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
116 except ValueError: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
117 obj = Literal(turtleLiteral) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
118 stmts = [(subj, pred, obj)] |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
119 else: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
120 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
|
121 g = rdfGraphBody(nt, self.request.headers) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
122 assert len(g) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
123 stmts = list(g.triples((None, None, None))) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
124 self._onStatement(stmts) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
125 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
126 def _onStatement(self, stmts): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
127 """ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
128 (disp :brightness 1.0 . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
129 (disp :state :locked . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
130 (disp :state :sleep . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
131 (disp :state :readKeyUnlock . disp :news "some news text" . ) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
132 """ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
133 disp = ROOM['frontDoorOled'] |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
134 for stmt in stmts: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
135 if stmt[:2] == (disp, ROOM['news']): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
136 self.settings.screen.setNews(stmt[2].toPython()) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
137 elif stmt[:2] == (disp, ROOM['state']): |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
138 self.settings.screen.animateTo(stmt[2]) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
139 else: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
140 log.warn("ignoring %s", stmt) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
141 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
142 if __name__ == '__main__': |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
143 arg = docopt(""" |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
144 Usage: tiny_screen.py [options] |
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 -v Verbose |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
147 -x Draw to X11 window, not output hardware |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
148 """) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
149 log.setLevel(logging.WARN) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
150 if arg['-v']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
151 from twisted.python import log as twlog |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
152 twlog.startLogging(sys.stdout) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
153 log.setLevel(logging.DEBUG) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
154 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
155 masterGraph = PatchableGraph() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
156 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
157 if arg['-x']: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
158 screen = ScreenSim() |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
159 else: |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
160 screen = Screen(spiDevice=1) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
161 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
162 port = 10013 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
163 reactor.listenTCP(port, cyclone.web.Application([ |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
164 (r"/()", cyclone.web.StaticFileHandler, |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
165 {"path": ".", "default_filename": "index.html"}), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
166 (r"/graph", CycloneGraphHandler, {'masterGraph': masterGraph}), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
167 (r"/graph/events", CycloneGraphEventsHandler, |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
168 {'masterGraph': masterGraph}), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
169 (r'/output', OutputPage), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
170 ], screen=screen, masterGraph=masterGraph, debug=arg['-v']), |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
171 interface='::') |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
172 log.warn('serving on %s', port) |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
173 |
08a6eb5edf3d
tinyscreen can flip images and render news
drewp <drewp@bigasterisk.com>
parents:
1189
diff
changeset
|
174 reactor.run() |