Пример #1
0
    def __init__(self, hass, host, port, model, hkid, config_num, config):
        """Initialise a generic HomeKit device."""
        # pylint: disable=import-error
        import homekit

        _LOGGER.info("Setting up Homekit device %s", model)
        self.hass = hass
        self.host = host
        self.port = port
        self.model = model
        self.hkid = hkid
        self.config_num = config_num
        self.config = config
        self.configurator = hass.components.configurator

        data_dir = os.path.join(hass.config.path(), HOMEKIT_DIR)
        if not os.path.isdir(data_dir):
            os.mkdir(data_dir)

        self.pairing_file = os.path.join(data_dir, 'hk-{}'.format(hkid))
        self.pairing_data = homekit.load_pairing(self.pairing_file)

        # Monkey patch httpclient for increased compatibility
        # pylint: disable=protected-access
        http.client.HTTPConnection._send_output = homekit_http_send

        self.conn = http.client.HTTPConnection(self.host, port=self.port)
        if self.pairing_data is not None:
            self.accessory_setup()
        else:
            self.configure()
Пример #2
0
    def __init__(self, hass, host, port, model, hkid, config_num, config):
        """Initialise a generic HomeKit device."""
        # pylint: disable=import-error
        import homekit

        _LOGGER.info("Setting up Homekit device %s", model)
        self.hass = hass
        self.host = host
        self.port = port
        self.model = model
        self.hkid = hkid
        self.config_num = config_num
        self.config = config
        self.configurator = hass.components.configurator

        data_dir = os.path.join(hass.config.path(), HOMEKIT_DIR)
        if not os.path.isdir(data_dir):
            os.mkdir(data_dir)

        self.pairing_file = os.path.join(data_dir, 'hk-{}'.format(hkid))
        self.pairing_data = homekit.load_pairing(self.pairing_file)

        # Monkey patch httpclient for increased compatibility
        # pylint: disable=protected-access
        http.client.HTTPConnection._send_output = homekit_http_send

        self.conn = http.client.HTTPConnection(self.host, port=self.port)
        if self.pairing_data is not None:
            self.accessory_setup()
        else:
            self.configure()
Пример #3
0
    parser = argparse.ArgumentParser(description='HomeKit perform app - performs operations on paired devices')
    parser.add_argument('-f', action='store', required=True, dest='file', help='File with the pairing data')
    parser.add_argument('-c', action='store', required=True, dest='characteristics',
                        help='Read characteristics, multiple characteristcs can be given as comma separated list')
    parser.add_argument('-m', action='store_true', required=False, dest='meta', help='')
    parser.add_argument('-p', action='store_true', required=False, dest='perms', help='')
    parser.add_argument('-t', action='store_true', required=False, dest='type', help='')
    parser.add_argument('-e', action='store_true', required=False, dest='events', help='')
    return parser


if __name__ == '__main__':
    parser = setup_args_parser()
    args = parser.parse_args()

    pairing_data = load_pairing(args.file)
    if pairing_data is None:
        print('File {file} not found!'.format(file=args.file))
        sys.exit(-1)

    deviceId = pairing_data['AccessoryPairingID']

    connection_data = find_device_ip_and_port(deviceId)
    if connection_data is None:
        print('Device {id} not found'.format(id=deviceId))
        sys.exit(-1)

    conn = http.client.HTTPConnection(connection_data['ip'], port=connection_data['port'])

    controllerToAccessoryKey, accessoryToControllerKey = get_session_keys(conn, pairing_data)