xiaomi_gateway/__init__.py
def write_to_hub(self, sid, **kwargs):
        """Send data to gateway to turn on / off device"""
        if self.key is None:
            _LOGGER.error('Gateway Key is not provided. Can not send commands to the gateway.')
            return False
        data = {}
        for key in kwargs:
            data[key] = kwargs[key]
        if not self.token:
            _LOGGER.debug('Gateway Token was not obtained yet. Cannot send commands to the gateway.')
            return False

        cmd = dict()
        cmd['cmd'] = 'write'
        cmd['sid'] = sid
        if int(self.proto[0:1]) == 1:
            data['key'] = self._get_key()
            cmd['data'] = data
        else:
            cmd['key'] = self._get_key()
            cmd['params'] = [data]
        resp = self._send_cmd(json.dumps(cmd), "write_ack") if int(self.proto[0:1]) == 1 \
            else self._send_cmd(json.dumps(cmd), "write_rsp")
        _LOGGER.debug("write_ack << %s", resp)
        if _validate_data(resp):
            return True
        if not _validate_keyerror(resp):
            return False

        # If 'invalid key' message we ask for a new token
        resp = self._send_cmd('{"cmd" : "get_id_list"}', "get_id_list_ack") if int(self.proto[0:1]) == 1 \
            else self._send_cmd('{"cmd" : "discovery"}', "discovery_rsp")
        _LOGGER.debug("get_id_list << %s", resp)

        if resp is None or "token" not in resp:
            _LOGGER.error('No new token from gateway. Can not send commands to the gateway.')
            return False
        self.token = resp['token']
        if int(self.proto[0:1]) == 1:
            data['key'] = self._get_key()
            cmd['data'] = data
        else:
            cmd['key'] = self._get_key()
            cmd['params'] = [data]
        resp = self._send_cmd(json.dumps(cmd), "write_ack") if int(self.proto[0:1]) == 1 \
            else self._send_cmd(json.dumps(cmd), "write_rsp")
        _LOGGER.debug("write_ack << %s", resp)
        return _validate_data(resp)
def write_to_hub(self, sid, **kwargs):
        """Send data to gateway to turn on / off device"""
        if self.key is None:
            _LOGGER.error('Gateway Key is not provided. Can not send commands to the gateway.')
            return False
        data = {}
        for key in kwargs:
            data[key] = kwargs[key]
        if not self.token:
            _LOGGER.debug('Gateway Token was not obtained yet. Cannot send commands to the gateway.')
            return False

        cmd = dict()
        cmd['cmd'] = 'write'
        cmd['sid'] = sid
        if int(self.proto[0:1]) == 1:
            data['key'] = self._get_key()
            cmd['data'] = data
        else:
            cmd['key'] = self._get_key()
            cmd['params'] = [data]
        resp = self._send_cmd(json.dumps(cmd), "write_ack") if int(self.proto[0:1]) == 1 \
            else self._send_cmd(json.dumps(cmd), "write_rsp")
        _LOGGER.debug("write_ack << %s", resp)
        if _validate_data(resp):
            return True
        if not _validate_keyerror(resp):
            return False

        # If 'invalid key' message we ask for a new token
        resp = self._send_cmd('{"cmd" : "get_id_list"}', "get_id_list_ack") if int(self.proto[0:1]) == 1 \
            else self._send_cmd('{"cmd" : "discovery"}', "discovery_rsp")
        _LOGGER.debug("get_id_list << %s", resp)

        if resp is None or "token" not in resp:
            _LOGGER.error('No new token from gateway. Can not send commands to the gateway.')
            return False
        self.token = resp['token']
        if int(self.proto[0:1]) == 1:
            data['key'] = self._get_key()
            cmd['data'] = data
        else:
            cmd['key'] = self._get_key()
            cmd['params'] = [data]
        resp = self._send_cmd(json.dumps(cmd), "write_ack") if int(self.proto[0:1]) == 1 \
            else self._send_cmd(json.dumps(cmd), "write_rsp")
        _LOGGER.debug("write_ack << %s", resp)
        return _validate_data(resp)
def write_to_hub ( self , sid , * * kwargs ) : if self . key is None : _LOGGER . error ( 'Gateway Key is not provided. Can not send commands to the gateway.' ) return False data = { } for key in kwargs : data [ key ] = kwargs [ key ] if not self . token : _LOGGER . debug ( 'Gateway Token was not obtained yet. Cannot send commands to the gateway.' ) return False cmd = dict ( ) cmd [ 'cmd' ] = 'write' cmd [ 'sid' ] = sid if int ( self . proto [ 0 : 1 ] ) == 1 : data [ 'key' ] = self . _get_key ( ) cmd [ 'data' ] = data else : cmd [ 'key' ] = self . _get_key ( ) cmd [ 'params' ] = [ data ] resp = self . _send_cmd ( json . dumps ( cmd ) , "write_ack" ) if int ( self . proto [ 0 : 1 ] ) == 1 else self . _send_cmd ( json . dumps ( cmd ) , "write_rsp" ) _LOGGER . debug ( "write_ack << %s" , resp ) if _validate_data ( resp ) : return True if not _validate_keyerror ( resp ) : return False # If 'invalid key' message we ask for a new token resp = self . _send_cmd ( '{"cmd" : "get_id_list"}' , "get_id_list_ack" ) if int ( self . proto [ 0 : 1 ] ) == 1 else self . _send_cmd ( '{"cmd" : "discovery"}' , "discovery_rsp" ) _LOGGER . debug ( "get_id_list << %s" , resp ) if resp is None or "token" not in resp : _LOGGER . error ( 'No new token from gateway. Can not send commands to the gateway.' ) return False self . token = resp [ 'token' ] if int ( self . proto [ 0 : 1 ] ) == 1 : data [ 'key' ] = self . _get_key ( ) cmd [ 'data' ] = data else : cmd [ 'key' ] = self . _get_key ( ) cmd [ 'params' ] = [ data ] resp = self . _send_cmd ( json . dumps ( cmd ) , "write_ack" ) if int ( self . proto [ 0 : 1 ] ) == 1 else self . _send_cmd ( json . dumps ( cmd ) , "write_rsp" ) _LOGGER . debug ( "write_ack << %s" , resp ) return _validate_data ( resp )
Send data to gateway to turn on / off device
Send data to gateway to turn on / off device