def run(self): while True: data = self._socket.recv(1024) if not data: break lines = str.splitlines(data) for line in lines: print("FROM FHEM: " + line) if line == 'V': self.sendHost("V 1.0 CULEMU") elif line[:1] == "X": line = line[1:] if len(line) > 0: self.__rxflags = int(line, 16) else: self.sendHost("X" + format(self.__rxflags, "02X") + format(900, "05d")) pass elif line[:2] == "is": self.sendHost(line) line = line[2:] if len(line) == 12: frame = xx2262.MakeFrame(line, 5) self.sendRF(375, frame) elif len(line) == 32: frame = it32.MakeFrame(line, 5) self.sendRF(275, frame) elif line[:3] == "T01": if len(line) > 3: self.__housecode = line[3:] else: self.sendHost(self.__housecode) elif line[:2] == "Zr": pass elif line[:2] == "Zs": line = line[2:] frame = bytearray.fromhex(line) #maxPrint(frame) rfm.WhitenTI(frame) self._rfm.SendPacket(frame) print("TX!") else: self.sendHost( "? (? is unknown) Use one of C F R T V W X e f l t x Z" ) print "destroy connection" connections.remove(self) del self
usage() housecode = ord(sys.argv[1][0]) - ord('A') itstr += encodeBits(housecode, 4, '0', False) if re.match('[1-4]$', sys.argv[3]) is None: print "Invalid channel" usage() ch = ord(sys.argv[3][0]) - ord('1') itstr += encodeBits(ch, 2, '0', False) if re.match('[1-4]$', sys.argv[2]) is None: print "Invalid group" usage() group = ord(sys.argv[2][0]) - ord('1') itstr += encodeBits(group, 2, '0', False) itstr += '0F' if sys.argv[4] == 'on': itstr += 'FF' else: itstr += 'F0' print "Sending", itstr data = xx2262.MakeFrame(itstr, 8) xx2262.rfm.SendPacket(data)
itstr += encodeBits(housecode, 4, '0', False) ch = ord(cmd[2]) - ord('1') itstr += encodeBits(ch, 2, '0', False) group = ord(cmd[4]) - ord('1') itstr += encodeBits(group, 2, '0', False) itstr += '0F' if cmd[-2:] == 'on': itstr += 'FF' else: itstr += 'F0' data = xx2262.MakeFrame(itstr, 5) datarate = 2.66666666 if re.match('^[01Ff]{12}$', cmd) is not None: data = xx2262.MakeFrame(cmd, 5) datarate = 2.66666666 if data is not None: rfm = Rfm69() rfm.SetParams( Freq=433.92, Datarate=datarate, #2.666666, TXPower=13, ModulationType=rfm69.OOK, SyncPattern=[]) rfm.SendPacket(data)