annotate service/irRemote/irRemote.py @ 1574:6618d481421c dependabot/pip/service/colplay/pillow-8.1.1

Bump pillow from 3.1.1 to 8.1.1 in /service/colplay Bumps [pillow](https://github.com/python-pillow/Pillow) from 3.1.1 to 8.1.1. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/3.1.1...8.1.1) Signed-off-by: dependabot[bot] <support@github.com>
author dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
date Thu, 18 Mar 2021 20:13:07 +0000
parents e514337f202e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1132
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 #!/usr/bin/env python
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 # Read lirc output, in order to sense key presses on an IR remote.
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 # There are various Python packages that claim to do this but
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 # they tend to require elaborate setup and I couldn't get any to work.
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 # This approach requires a lircd.conf but does not require a lircrc.
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 # If irw works, then in theory, this should too.
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 # Based on irw.c, https://github.com/aldebaran/lirc/blob/master/tools/irw.c
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 import socket
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 import logging
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 import requests
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 from rdflib import Graph, Namespace
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 ROOM = Namespace("http://projects.bigasterisk.com/room/")
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 SOCKPATH = "/var/run/lirc/lircd"
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 logging.basicConfig(level=logging.INFO)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 log = logging.getLogger()
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 class Listener:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 def __init__(self):
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 self.lastKey = None, None
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 log.info('starting up on %s', SOCKPATH)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 self.sock.connect(SOCKPATH)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 def run(self):
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 while True:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 keyname, updown = self.next_key()
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 log.debug('%r (%r)', keyname, updown)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 if self.lastKey[0] is None or (
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 keyname == self.lastKey[0] and
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 updown < self.lastKey[1]):
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 g = Graph()
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37 g.add((ROOM['remoteButton/%s' % keyname],
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38 ROOM['state'],
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 ROOM['press']))
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 nt = g.serialize(format='n3')
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41 resp = requests.post('http://bang6:9071/oneShot', headers={
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 'Content-Type': 'text/n3',
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43 'user-agent': 'irRemote',
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 }, data=nt)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 log.info('new press: %r', keyname)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 if resp.status_code != 200:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47 log.warning('reasoning responded with %s. %r',
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48 resp.status_code, resp.__dict__)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49 self.lastKey = keyname, updown
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51 def next_key(self):
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52 '''Get the next key pressed. Return keyname, updown.
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 '''
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 while True:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 data = self.sock.recv(128)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 # print("Data: " + data)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 data = data.strip()
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 if data:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59 break
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 words = data.split()
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62 try:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 return words[2].decode('ascii'), int(words[1], 16)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64 except:
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 log.warning('failed on %r', data)
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 raise
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 if __name__ == '__main__':
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 Listener().run()
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70
e514337f202e start lirc client
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71