add Chilitec Pilota Casa PIR sensor
This commit is contained in:
parent
ea2bf6c4ff
commit
fb3c4e7b9f
1 changed files with 41 additions and 3 deletions
|
@ -469,6 +469,35 @@ class PDM32(RcProtocol):
|
||||||
self._add_finish()
|
self._add_finish()
|
||||||
return self._ookdata
|
return self._ookdata
|
||||||
|
|
||||||
|
class PCPIR(RcProtocol): #pilota casa PIR sensor
|
||||||
|
def __init__(self):
|
||||||
|
self._name = "pcpir"
|
||||||
|
self._timebase = 400
|
||||||
|
self._repetitions = 5
|
||||||
|
self._pattern = "[01]{12}"
|
||||||
|
self._symbols = {
|
||||||
|
'1': [1, 3, 1, 3],
|
||||||
|
'0': [1, 3, 3, 1],
|
||||||
|
}
|
||||||
|
RcProtocol.__init__(self)
|
||||||
|
self._parser.add_argument("-c", "--code", required=True)
|
||||||
|
|
||||||
|
def decode(self, pulsetrain):
|
||||||
|
code, tb = self._decode_symbols(pulsetrain[0:-2])
|
||||||
|
if code:
|
||||||
|
return {
|
||||||
|
"protocol": self._name,
|
||||||
|
"code": code,
|
||||||
|
"timebase": tb,
|
||||||
|
}
|
||||||
|
|
||||||
|
def encode(self, args):
|
||||||
|
self._reset()
|
||||||
|
self._add_symbols(args.code)
|
||||||
|
self._add_pulses([1, 12])
|
||||||
|
self._add_finish()
|
||||||
|
return self._ookdata
|
||||||
|
|
||||||
protocols = [
|
protocols = [
|
||||||
IT32(),
|
IT32(),
|
||||||
Switch15(),
|
Switch15(),
|
||||||
|
@ -478,6 +507,7 @@ protocols = [
|
||||||
Emylo(),
|
Emylo(),
|
||||||
PDM32(),
|
PDM32(),
|
||||||
Bistate24(),
|
Bistate24(),
|
||||||
|
PCPIR(),
|
||||||
]
|
]
|
||||||
|
|
||||||
def encode(protocol, args):
|
def encode(protocol, args):
|
||||||
|
@ -507,7 +537,7 @@ def decode(pulsetrain):
|
||||||
if len(res) > 0:
|
if len(res) > 0:
|
||||||
return res
|
return res
|
||||||
|
|
||||||
class PulseReceiver(threading.Thread):
|
class PulseTRX(threading.Thread):
|
||||||
def __init__(self, module):
|
def __init__(self, module):
|
||||||
self.__trainbuf = []
|
self.__trainbuf = []
|
||||||
self.__rfm = RaspyRFM(module, RFM69)
|
self.__rfm = RaspyRFM(module, RFM69)
|
||||||
|
@ -523,6 +553,8 @@ class PulseReceiver(threading.Thread):
|
||||||
Preamble = 0,
|
Preamble = 0,
|
||||||
TxPower = 13
|
TxPower = 13
|
||||||
)
|
)
|
||||||
|
self.__event = threading.Event()
|
||||||
|
self.__event.set()
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.daemon = True
|
self.daemon = True
|
||||||
self.start()
|
self.start()
|
||||||
|
@ -531,11 +563,17 @@ class PulseReceiver(threading.Thread):
|
||||||
if len(self.__trainbuf) > 0:
|
if len(self.__trainbuf) > 0:
|
||||||
train = self.__trainbuf.pop()
|
train = self.__trainbuf.pop()
|
||||||
for i, v in enumerate(train):
|
for i, v in enumerate(train):
|
||||||
train[i] = 50 * v;
|
train[i] = 50 * v
|
||||||
return decode(train)
|
return decode(train)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.__rfm.start_receive(self.__cb)
|
while True:
|
||||||
|
self.__event.wait()
|
||||||
|
rfm.set_params(
|
||||||
|
Datarate = 20.0 #kbit/s
|
||||||
|
)
|
||||||
|
rfm.start_receive(self.__rxcb)
|
||||||
|
|
||||||
|
|
||||||
def __cb(self, rfm):
|
def __cb(self, rfm):
|
||||||
bit = False
|
bit = False
|
||||||
|
|
Loading…
Reference in a new issue