Metadata-Version: 2.4
Name: masrobo_rcs_sdk
Version: 0.1.0
Summary: A Python SDK for Masrobo RCS OPEN API
Author-email: Holly Liu <liuhong@neme.ai>
License: MIT
Project-URL: Homepage, https://github.com/masrobo/masrobo-rcs-sdk
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.25.0
Requires-Dist: PyJWT>=2.32.3
Dynamic: license-file

# Open Python SDK

`Open Python SDK` is a lightweight Python client for the Boticz Open API.

## Features

- `X-Token` authentication using JWT tokens generated from app_id and app_key using JWT tokens generated from app_id and app_key
- Unified HTTP client and error handling
- IoT device APIs
  - Get latest device data
  - Send device command
  - Bind device
  - Update device settings

# 如何使用

## 安装

```bash
pip3 install boticz_rcs_sdk
```

## Quick Start

```python
from boticz_rcs_sdk import RobotController, TopicDeviceData, GetLatestDeviceDataRequest

client = RobotController(
    base_url="https://api.boticz.cn/open",
    app_id="your-app-id",
    app_key="your-app-key",
)

resp = client.IotDevice.get_latest_device_data(
    GetLatestDeviceDataRequest(
        product_name="demo_product",
        device_id="device001",
        topic_name=TopicDeviceData,
    )
)

print(resp)
```

## Available APIs

### Get latest device data

```python
from masrobo_rcs_sdk import TopicScreenshot, GetLatestDeviceDataRequest

client.IotDevice.get_latest_device_data(
    GetLatestDeviceDataRequest(
        product_name="demo_product",
        device_id="device001",
        topic_name=TopicScreenshot,
    )
)
```

### Send device command

```python
from masrobo_rcs_sdk import TopicRemoteControl, SendDeviceCommandRequest

client.IotDevice.send_device_command(
    SendDeviceCommandRequest(
        command="reboot",
        parameter='{"delay":1}',
        device_id="device001",
        product_name="demo_product",
        topic_name=TopicRemoteControl,
    )
)
```

### Bind device

```python
from masrobo_rcs_sdk import BindDeviceRequest

client.IotDevice.bind_device(BindDeviceRequest(device_id="device001"))
```

### Update device settings

```python
from masrobo_rcs_sdk import DeviceSettingRequest

client.IotDevice.setting(
    DeviceSettingRequest(
        device_id="device001",
        settings='{"temperature":{"max_value":30,"min_value":10,"calibration":0},"humidity":{"max_value":80,"min_value":20,"calibration":0},"data_recording_interval":5,"reporting_interval":10,"alert_interval":15,"alert_battery":10}',
    )
)
```

## Error Handling

```python
from masrobo_rcs_sdk import APIError

try:
    client.IotDevice.get_latest_device_data(
        GetLatestDeviceDataRequest(
            product_name="demo_product",
            device_id="device001",
            topic_name=TopicDeviceData,
        )
    )
except APIError as err:
    print(err.status_code, err.code, err.message)
```
