Persist schedule. Drop shlex.

This commit is contained in:
Maurizio Porrato 2019-02-11 22:16:43 +00:00
parent e05c892eaf
commit d5bfbc27b6
1 changed files with 20 additions and 9 deletions

29
eufy.py
View File

@ -3,7 +3,7 @@
from cmd import Cmd
from datetime import datetime, time
from inspect import signature, Signature
from shlex import shlex
import os
from time import sleep
@ -58,7 +58,12 @@ class EufyIR(EufyRawIR):
RETURN_BASE = 0xef
def __init__(self):
self._schedule = 0xff
self._schedule_file = os.path.expanduser('~/.eufy-schedule')
try:
with open(os.path.expanduser(self._SCHEDULE_FILE), 'r') as f:
self._schedule = int(f.read(5))
except:
self._schedule = 0xff
def _message(self, code):
now = datetime.now()
@ -119,11 +124,17 @@ class EufyIR(EufyRawIR):
self.send(self.SET_TIME)
def setSchedule(self, t):
# FIXME: properly store schedule
self.send(self.SET_SCHEDULE, t)
self._schedule = t.hour * 4 + t.minute // 15
with open(self._schedule_file, 'w') as f:
f.write(str(self._schedule))
self.send(self.SET_SCHEDULE)
def cancelSchedule(self):
# FIXME: properly store schedule
self._schedule = 0xff
try:
os.remove(self._schedule_file)
except:
pass
self.send(self.CANCEL_SCHEDULE)
def returnBase(self):
@ -132,11 +143,11 @@ class EufyIR(EufyRawIR):
def lexer(f):
def g(self, args):
argv = tuple(x.lower() for x in shlex(args))
argv = tuple(x.lower() for x in args.split())
s = signature(f)
maxargs = len(s.parameters)
minargs = len([x for _,x in s.parameters.items() if x.default is not Signature.empty])
if minargs <= len(argv) + 1 <= maxargs:
maxargs = len(s.parameters) - 1
minargs = len([x for _,x in s.parameters.items() if x.default is Signature.empty]) - 1
if minargs <= len(argv) <= maxargs:
return f(self, *argv)
else:
self.stdout.write("*** Invalid arguments for {}\n".format(f.__name__[3:]))