Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
        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)