Add android ir blaster driver
This commit is contained in:
parent
77f90317d0
commit
0cbb02f84c
32
eufy.py
32
eufy.py
|
@ -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'):
|
||||
|
|
Loading…
Reference in New Issue