Add android ir blaster driver

This commit is contained in:
Maurizio Porrato 2019-02-12 07:04:31 +00:00
parent 77f90317d0
commit 0cbb02f84c
1 changed files with 28 additions and 4 deletions

32
eufy.py
View File

@ -7,10 +7,30 @@ import os
from time import sleep
def drive_ir(pulses):
def ir_debug(pulses):
# Debugging placeholder
print(','.join([str(x) for x in pulses]))
def ir_android(pulses):
plyer.irblaster.transmit(38000, pulses, 'microseconds')
def ir_termux(pulses):
pattern = ','.join([str(x) for x in pulses])
os.system('termux-infrared-transmit -f 38000 '+pattern)
default_driver = ir_debug
if 'ANDROID_ROOT' in os.environ:
if 'com.termux' in os.get('SHELL', ''):
default_driver = ir_termux
else:
try:
import plyer
default_driver = ir_android
except:
pass
class EufyRawIR:
""" Low level IR signal modulation """
@ -20,6 +40,9 @@ class EufyRawIR:
_IR_1 = (400, 1600)
_IR_TRAILER = (400, 20000)
def __init__(self, driver=ir_debug):
self._driver = driver
def _modulate(self, message):
signal = list(self._IR_PREAMBLE)
for b in message:
@ -32,7 +55,7 @@ class EufyRawIR:
return 3*signal
def sendRaw(self, message):
drive_ir(self._modulate(message))
self._driver(self._modulate(message))
class EufyIR(EufyRawIR):
@ -57,7 +80,8 @@ class EufyIR(EufyRawIR):
CANCEL_SCHEDULE = 0xdf
RETURN_BASE = 0xef
def __init__(self):
def __init__(self, driver=ir_debug):
super(EufyIR, self).__init__(driver)
self._schedule_file = os.path.expanduser('~/.eufy-schedule')
try:
with open(os.path.expanduser(self._SCHEDULE_FILE), 'r') as f:
@ -160,7 +184,7 @@ class Eufy(Cmd):
def __init__(self, *args, **kwargs):
super(Eufy, self).__init__(*args, **kwargs)
self.ir = EufyIR()
self.ir = EufyIR(default_driver)
@lexer
def do_clean(self, mode='auto'):