Module misty2py.robot
The module contains the class Misty which represents a Misty II robot.
Classes
class Misty (ip: str,
custom_info: Dict = {},
custom_actions: Dict = {},
custom_data: Dict = {},
rest_protocol: str = 'http',
websocket_protocol: str = 'ws',
websocket_endpoint: str = 'pubsub')-
Expand source code
class Misty: """A class representing a Misty robot. Attributes: ip (str): The IP address of this Misty robot. infos (Info): The object of Info class that belongs to this Misty. actions (Action): The object of Action class that belongs to this Misty. events (dict): A dictionary of active event subscriptions (keys being the event name, values the MistyEvent() object). """ def __init__( self, ip: str, custom_info: Dict = {}, custom_actions: Dict = {}, custom_data: Dict = {}, rest_protocol: str = "http", websocket_protocol: str = "ws", websocket_endpoint: str = "pubsub", ) -> None: """Initialises an instance of a Misty class representing a Misty robot. Args: ip (str): The IP address of a Misty robot. custom_info (Dict, optional): Custom information keywords in the form of dictionary with key being the keyword and value being the API endpoint that allows a `GET` request method. Defaults to {}. custom_actions (Dict, optional): Custom actions keywords in the form of dictionary with key being the keyword and value being a dictionary of the endpoint (key `"endpoint"`) and the method (key `"method"`) whose value is not `GET`. Defaults to {}. custom_data (Dict, optional): Custom data shortcuts in the form of dictionary with keys being the shortcuts and values being the json data in the form of a dictionary. Defaults to {}. rest_protocol (str, optional): The protocol to use when communicating with Misty's REST API. Defaults to "http". websocket_protocol (str, optional): The protocol to use when communicating with Misty's WebSocket API. Defaults to "ws". websocket_endpoint (str, optional): Misty's WebSocket API endpoint. Defaults to "pubsub". """ self.ip = ip self.infos = Info(ip, rest_protocol, custom_allowed_infos=custom_info) self.actions = Action( ip, rest_protocol, custom_allowed_actions=custom_actions, custom_allowed_data=custom_data, ) self.event_handler = MistyEventHandler( ip, websocket_protocol, websocket_endpoint ) def __str__(self) -> str: """Parses the Misty object into a string. Returns: str: A string identifiyng the Misty object. """ return "A Misty II robot with IP address %s" % self.ip def perform_action(self, action_name: str, data: Dict = {}) -> Misty2pyResponse: """Sends a request to perform an action to Misty's REST API. Args: action_name (str): The keyword specifying the action to perform. data (Dict, optional): The data to send in the request body in the form of a data shortcut or a json dictionary. Defaults to `{}`. Returns: Misty2pyResponse: A Misty2pyResponse object with Misty2py sub-response and Misty REST API sub-response. """ return self.actions.action_handler(action_name, data) def get_info(self, info_name: str, params: Dict = {}) -> Misty2pyResponse: """Sends a request to obtain information from Misty's REST API. Args: info_name (str): The information keyword specifying which information to retrieve. params (Dict): A dictionary of parameter names and parameter values. Defaults to `{}`. Returns: Misty2pyResponse: A Misty2pyResponse object with Misty2py sub-response and Misty REST API sub-response. """ return self.infos.get_info(info_name, params) def event(self, action: str, **kwargs) -> Misty2pyResponse: """Handles event-related actions by sending messeges to Misty's WebSocket API and receiving messages from it. Supports following actions: - **event subscripton** - requires an action keyword `"subscribe"` and an argument `type` (str) which is the name of the event type to subscribe to. Optional arguments are: - `name` (str) for a custom, unique event name. - `return_property` (str) for the property to return from Misty's WebSocket API. All properties are returned if `return_property` is not supplied. - debounce (int) for the interval at which new information is sent in ms. Defaults to `250`. - len_data_entries (int) for the maximum number of data entries to keep (discards in FIFO style). Defaults to `10`. - event_emitter (Callable) for an event emitter function which emits an event upon message recieval. Defaults to `None`. - **obtaining the data from an event** - requires an action keyword `"get_data"` and an argument `name` (str) specifying the event name. - **obtaining the log from an event** - requires an action keyword `"get_log"` and an argument `name` (str) specifying the event name. - **unsubscribing from an event** - requires an action keyword `"unsubscribe"` and an argument `name` (str) specifying the event name. Args: action (str): The action keyword. One of `"subscribe"`, `"get_data"`, `"get_log"` and `"unsubscribe"`. Returns: Misty2pyResponse: A Misty2pyResponse object with Misty2py sub-response and Misty WebSocket API sub-response. """ if action == "subscribe": return self.event_handler.subscribe_event(kwargs) if action == "get_data": return self.event_handler.get_event_data(kwargs) if action == "get_log": return self.event_handler.get_event_log(kwargs) if action == "unsubscribe": return self.event_handler.unsubscribe_event(kwargs) return Misty2pyResponse( False, error_type=Misty2pyErrorType.COMMAND, error_msg="The event action `%s` is not supported." % action, )A class representing a Misty robot.
Attributes
ip:str- The IP address of this Misty robot.
infos:Info- The object of Info class that belongs to this Misty.
actions:Action- The object of Action class that belongs to this Misty.
events:dict- A dictionary of active event subscriptions (keys being the event name, values the MistyEvent() object).
Initialises an instance of a Misty class representing a Misty robot.
Args
ip:str- The IP address of a Misty robot.
custom_info:Dict, optional- Custom information keywords in the form of dictionary with key being the keyword and value being the API endpoint that allows a
GETrequest method. Defaults to {}. custom_actions:Dict, optional- Custom actions keywords in the form of dictionary with key being the keyword and value being a dictionary of the endpoint (key
"endpoint") and the method (key"method") whose value is notGET. Defaults to {}. custom_data:Dict, optional- Custom data shortcuts in the form of dictionary with keys being the shortcuts and values being the json data in the form of a dictionary. Defaults to {}.
rest_protocol:str, optional- The protocol to use when communicating with Misty's REST API. Defaults to "http".
websocket_protocol:str, optional- The protocol to use when communicating with Misty's WebSocket API. Defaults to "ws".
websocket_endpoint:str, optional- Misty's WebSocket API endpoint. Defaults to "pubsub".
Methods
def event(self, action: str, **kwargs) ‑> Misty2pyResponse-
Expand source code
def event(self, action: str, **kwargs) -> Misty2pyResponse: """Handles event-related actions by sending messeges to Misty's WebSocket API and receiving messages from it. Supports following actions: - **event subscripton** - requires an action keyword `"subscribe"` and an argument `type` (str) which is the name of the event type to subscribe to. Optional arguments are: - `name` (str) for a custom, unique event name. - `return_property` (str) for the property to return from Misty's WebSocket API. All properties are returned if `return_property` is not supplied. - debounce (int) for the interval at which new information is sent in ms. Defaults to `250`. - len_data_entries (int) for the maximum number of data entries to keep (discards in FIFO style). Defaults to `10`. - event_emitter (Callable) for an event emitter function which emits an event upon message recieval. Defaults to `None`. - **obtaining the data from an event** - requires an action keyword `"get_data"` and an argument `name` (str) specifying the event name. - **obtaining the log from an event** - requires an action keyword `"get_log"` and an argument `name` (str) specifying the event name. - **unsubscribing from an event** - requires an action keyword `"unsubscribe"` and an argument `name` (str) specifying the event name. Args: action (str): The action keyword. One of `"subscribe"`, `"get_data"`, `"get_log"` and `"unsubscribe"`. Returns: Misty2pyResponse: A Misty2pyResponse object with Misty2py sub-response and Misty WebSocket API sub-response. """ if action == "subscribe": return self.event_handler.subscribe_event(kwargs) if action == "get_data": return self.event_handler.get_event_data(kwargs) if action == "get_log": return self.event_handler.get_event_log(kwargs) if action == "unsubscribe": return self.event_handler.unsubscribe_event(kwargs) return Misty2pyResponse( False, error_type=Misty2pyErrorType.COMMAND, error_msg="The event action `%s` is not supported." % action, )Handles event-related actions by sending messeges to Misty's WebSocket API and receiving messages from it.
Supports following actions:
- event subscripton - requires an action keyword
"subscribe"and an argumenttype(str) which is the name of the event type to subscribe to. Optional arguments are:name(str) for a custom, unique event name.return_property(str) for the property to return from Misty's WebSocket API. All properties are returned ifreturn_propertyis not supplied.- debounce (int) for the interval at which new information is sent in ms. Defaults to
250. - len_data_entries (int) for the maximum number of data entries to keep (discards in FIFO style). Defaults to
10. - event_emitter (Callable) for an event emitter function which emits an event upon message recieval. Defaults to
None.
- obtaining the data from an event - requires an action keyword
"get_data"and an argumentname(str) specifying the event name. - obtaining the log from an event - requires an action keyword
"get_log"and an argumentname(str) specifying the event name. - unsubscribing from an event - requires an action keyword
"unsubscribe"and an argumentname(str) specifying the event name.
Args
action:str- The action keyword. One of
"subscribe","get_data","get_log"and"unsubscribe".
Returns
Misty2pyResponse- A Misty2pyResponse object with Misty2py sub-response and Misty WebSocket API sub-response.
- event subscripton - requires an action keyword
def get_info(self, info_name: str, params: Dict = {}) ‑> Misty2pyResponse-
Expand source code
def get_info(self, info_name: str, params: Dict = {}) -> Misty2pyResponse: """Sends a request to obtain information from Misty's REST API. Args: info_name (str): The information keyword specifying which information to retrieve. params (Dict): A dictionary of parameter names and parameter values. Defaults to `{}`. Returns: Misty2pyResponse: A Misty2pyResponse object with Misty2py sub-response and Misty REST API sub-response. """ return self.infos.get_info(info_name, params)Sends a request to obtain information from Misty's REST API.
Args
info_name:str- The information keyword specifying which information to retrieve.
params:Dict- A dictionary of parameter names and parameter values. Defaults to
{}.
Returns
Misty2pyResponse- A Misty2pyResponse object with Misty2py sub-response and Misty REST API sub-response.
def perform_action(self, action_name: str, data: Dict = {}) ‑> Misty2pyResponse-
Expand source code
def perform_action(self, action_name: str, data: Dict = {}) -> Misty2pyResponse: """Sends a request to perform an action to Misty's REST API. Args: action_name (str): The keyword specifying the action to perform. data (Dict, optional): The data to send in the request body in the form of a data shortcut or a json dictionary. Defaults to `{}`. Returns: Misty2pyResponse: A Misty2pyResponse object with Misty2py sub-response and Misty REST API sub-response. """ return self.actions.action_handler(action_name, data)Sends a request to perform an action to Misty's REST API.
Args
action_name:str- The keyword specifying the action to perform.
data:Dict, optional- The data to send in the request body in the form of a data shortcut or a json dictionary. Defaults to
{}.
Returns
Misty2pyResponse- A Misty2pyResponse object with Misty2py sub-response and Misty REST API sub-response.