예제 #1
0
    def __init__(self,
                 devicesfilename,
                 groupaddrfilename,
                 dumpaddressinfo=False,
                 flanksOnly=False,
                 types=None):

        # Load device and address info
        self.groupDict.loadGroupAddrs(open(groupaddrfilename), dumpaddressinfo)

        # Populate streams dictionary
        for k in self.groupDict.keys():
            if k in types.keys():
                t = types[k]
            else:
                t = None
            self.knxAddrStream[k] = KnxAddressStream(k, self.groupDict[k], t,
                                                     flanksOnly)
            self.knxAddrStream[k].prepareSynchronizedPrints()

        self.devDict.loadDeviceAddrs(open(devicesfilename))
예제 #2
0
    def test_init(self):

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "%", False)
        self.assertIsInstance(s, KnxAddressStream)
예제 #3
0
    def test_preparePlotData(self):

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "temp", False)
        s.addTelegram(
            0, strptime("Fri Sep  4 06:15:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp1)
        s.addTelegram(
            1, strptime("Fri Sep  4 06:16:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp2)
        s.addTelegram(
            2, strptime("Fri Sep  4 06:17:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp3)

        basetime = mktime(
            strptime("Fri Sep  4 06:10:03 2015", "%a %b %d %H:%M:%S %Y"))
        pd = s.preparePlotData(basetime)
        self.assertIsInstance(pd, type({}))
        self.assertEqual(len(pd["data"]), 3)

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "time", False)
        s.addTelegram(
            0, strptime("Fri Sep  4 06:15:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutime1)
        s.addTelegram(
            1, strptime("Fri Sep  4 06:16:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutime2)
        s.addTelegram(
            2, strptime("Fri Sep  4 06:17:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutime3)

        basetime = mktime(
            strptime("Fri Sep  4 06:10:03 2015", "%a %b %d %H:%M:%S %Y"))
        pd = s.preparePlotData(basetime)
        self.assertIsInstance(pd, type({}))
        self.assertEqual(len(pd["data"]), 3)
예제 #4
0
    def test_printTelegrams(self):

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "temp", False)
        s.addTelegram(
            10, strptime("Fri Sep  4 06:15:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp1)
        s.addTelegram(
            11, strptime("Fri Sep  4 06:16:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp2)
        s.addTelegram(
            12, strptime("Fri Sep  4 06:17:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp3)

        s.prepareSynchronizedPrints()
        self.assertTrue(s.printTelegrams(1))
        self.assertTrue(s.printTelegrams(10))
        self.assertTrue(s.printTelegrams(11))
        self.assertFalse(s.printTelegrams(12))
        self.assertFalse(s.printTelegrams(13))

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "temp", True)
        s.addTelegram(
            10, strptime("Fri Sep  4 06:15:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp1)
        s.addTelegram(
            11, strptime("Fri Sep  4 06:16:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp2)
        s.addTelegram(
            12, strptime("Fri Sep  4 06:17:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp3)

        s.prepareSynchronizedPrints()
        self.assertTrue(s.printTelegrams(5))
        self.assertTrue(s.printTelegrams(10))
        self.assertTrue(s.printTelegrams(11))
        self.assertFalse(s.printTelegrams(12))
        self.assertFalse(s.printTelegrams(13))
예제 #5
0
    def test_storeCachedInput(self):

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "temp", False)
        s.addTelegram(
            10, strptime("Fri Sep  4 06:15:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp1)
        s.addTelegram(
            11, strptime("Fri Sep  4 06:16:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp2)
        s.addTelegram(
            12, strptime("Fri Sep  4 06:17:03 2015", "%a %b %d %H:%M:%S %Y"),
            self.pdutemp3)

        s.prepareSynchronizedPrints()
        of = StringIO()
        of.name = "testfile"
        self.assertTrue(s.storeCachedInput(1, of))
        self.assertTrue(s.storeCachedInput(10, of))
        self.assertTrue(s.storeCachedInput(11, of))
        self.assertFalse(s.storeCachedInput(12, of))
        self.assertFalse(s.storeCachedInput(13, of))

        of.seek(0)
        self.assertEqual(len(of.readlines()), 3)
예제 #6
0
    def test_addTelegram(self):

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "%", False)
        s.addTelegram(0, "", self.pdu00)
        s.addTelegram(1, "", self.pduff)

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "temp", False)
        s.addTelegram(0, "", self.pdutemp1)
        self.assertEqual(s.maxVal, "23.10")
        self.assertEqual(s.minVal, "23.10")
        s.addTelegram(1, "", self.pdutemp2)
        self.assertEqual(s.maxVal, "23.10")
        self.assertEqual(s.minVal, "-17.86")
        s.addTelegram(2, "", self.pdutemp3)
        self.assertEqual(s.maxVal, "38.46")
        self.assertEqual(s.minVal, "-17.86")
예제 #7
0
    def test_errorExit(self):

        s = KnxAddressStream("1/1/17", self.groupdict["1/1/17"], "%", False)
        with self.assertRaises(KnxParseException):
            s.errorExit("the message")