示例#1
0
 def test_parse_request_status(self):
     data = b"A83300150026A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.RequestStatusMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertEqual(msg.destination, "33")
     self.assertEqual(msg.source, "00")
示例#2
0
 def test_parse_request_status(self):
     data = b"A83300150026A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.RequestStatusMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertEqual(msg.destination, "33")
     self.assertEqual(msg.source, "00")
示例#3
0
 def test_parse_turn_off_state(self):
     data = b"A8B833120198A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.StateMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertEqual(msg.status, "off")
     self.assertEqual(msg.source, "33")
示例#4
0
 def test_parse_turn_off_state(self):
     data = b"A8B833120198A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.StateMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertEqual(msg.status, "off")
     self.assertEqual(msg.source, "33")
示例#5
0
 def test_parse_turn_off_command(self):
     data = b"A83300120121A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.CommandMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertEqual(msg.status, "off")
     self.assertEqual(msg.destination, "33")
     self.assertEqual(msg.source, "00")
示例#6
0
 def test_parse_turn_off_command(self):
     data = b"A83300120121A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.CommandMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertEqual(msg.status, "off")
     self.assertEqual(msg.destination, "33")
     self.assertEqual(msg.source, "00")
示例#7
0
 def execute(self, connection):
     connection.serial.write(b"@r")
     length = int(connection.serial.read(), 16)
     if length == 0:
         return
     data = connection.serial.read(length * 2)
     message = parse(data)
     # Filter duplicated state messages. The filtering feature
     # of SCSGate is buggy and causes @r to always return 0 available
     # messages
     if isinstance(message, StateMessage):
         if self._last_raw_state_message == data:
             return
         else:
             self._last_raw_state_message = data
     self._notification_endpoint(message)
示例#8
0
文件: tasks.py 项目: flavio/scsgate
 def execute(self, connection):
     connection.serial.write(b"@r")
     length = int(connection.serial.read(), 16)
     if length == 0:
         return
     data = connection.serial.read(length * 2)
     message = parse(data)
     # Filter duplicated state messages. The filtering feature
     # of SCSGate is buggy and causes @r to always return 0 available
     # messages
     if isinstance(message, StateMessage):
         if self._last_raw_state_message == data:
             return
         else:
             self._last_raw_state_message = data
     self._notification_endpoint(message)
示例#9
0
    def start(self):
        """ Monitor the bus for events and handle them """
        print("Entering monitoring mode, press CTRL-C to quit")
        serial = self._connection.serial

        while True:
            serial.write(b"@R")
            length = int(serial.read(), 16)
            data = serial.read(length * 2)
            message = messages.parse(data)
            if not (self._options.filter and message.entity
                    and message.entity in self._devices):
                logging.debug(" ".join(message.bytes))
            if not self._options.config or \
               message.entity is None or \
               message.entity in self._devices:
                continue

            print("New device found")
            ha_id = input("Enter home assistant unique ID: ")
            name = input("Enter name: ")
            self._add_device(scs_id=message.entity, ha_id=ha_id, name=name)
示例#10
0
    def start(self):
        """ Monitor the bus for events and handle them """
        print("Entering monitoring mode, press CTRL-C to quit")
        serial = self._connection.serial

        while True:
            serial.write(b"@R")
            length = int(serial.read(), 16)
            data = serial.read(length * 2)
            message = messages.parse(data)
            if not (self._options.filter and
                    message.entity and
                    message.entity in self._devices):
                logging.debug(" ".join(message.bytes))
            if not self._options.config or \
               message.entity is None or \
               message.entity in self._devices:
                continue

            print("New device found")
            ha_id = input("Enter home assistant unique ID: ")
            name = input("Enter name: ")
            self._add_device(scs_id=message.entity, ha_id=ha_id, name=name)
示例#11
0
 def test_parse_unknown_long_message(self):
     data = b"A8330015000026A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.UnknownMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertIsNone(msg.entity)
示例#12
0
 def test_parse_ack(self):
     data = b"A5"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.AckMessage)
     self.assertIsNone(msg.entity)
示例#13
0
 def test_parse_unknown_long_message(self):
     data = b"A8330015000026A3"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.UnknownMessage)
     self.assertEqual(msg.data, data.decode("ascii"))
     self.assertIsNone(msg.entity)
示例#14
0
 def test_parse_ack(self):
     data = b"A5"
     msg = messages.parse(data)
     self.assertIsInstance(msg, messages.AckMessage)
     self.assertIsNone(msg.entity)