Metadata-Version: 2.4
Name: roboreactor
Version: 0.1.6
Summary: A unified Python client for Roboreactor edge devices and robot simulators.
Author-email: Chanapai Chuadchum <kornbot380@hotmail.com>
Project-URL: Homepage, https://roboreactor.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.25.0
Dynamic: license-file

# roboreactor

Official Python client library for connecting edge devices, emulators, and robot controls directly to the RoboReactor ecosystem.

---

# Installation

```bash
pip install roboreactor
```

---

# Create RoboReactor Account

To use the SDK:

1. Sign up at https://roboreactor.com/
2. Create a project
3. Generate your `secret_token`

You will need:

- Email
- Project Name
- Secret Token

---

# Initialize Client

```python
from roboreactor import RoboReactor

client = RoboReactor(
    email="your_email@example.com",
    project_name="Your_Project",
    secret_token="YOUR_SECRET_TOKEN"
)
```

---

# Verify Authentication Token

Verify your API connection before starting your robot system.

```python
from roboreactor import RoboReactor

client = RoboReactor(
    email="your_email@example.com",
    project_name="Robot_Project",
    secret_token="YOUR_SECRET_TOKEN"
)

status = client.verify_token()

if status:
    print("Connection verified!")
    print(status)
else:
    print("Authentication failed.")
```

---

# Send Joint Feedback Sensors

Upload robot joint sensor feedback to RoboReactor cloud.

```python
from roboreactor import RoboReactor 
  client = RoboReactor( 
    email="your_email@example.com", 
    project_name="Robot_Project", 
    secret_token="YOUR_SECRET_TOKEN" ) 
    joint_feedback = { "joint_1": { 
        "angle_deg": 35.5 
        }, 
    "joint_2": { 
        "angle_deg": 12.8 
        }, 
    "joint_3": {
         "angle_deg": -8.2 
         } 
    }  
  response = client.update_feedback_sensors(joint_feedback) 
  print(response)
  
```

---

# Send Navigation Control

Send target coordinates, robot orientation, and joint targets.

```python
from roboreactor import RoboReactor

client = RoboReactor(
    email="your_email@example.com",
    project_name="Robot_Project",
    secret_token="YOUR_SECRET_TOKEN"
)

joint_targets = {
    "joint_1": 0.52,
    "joint_2": 1.10,
    "joint_3": -0.34
}

response = client.send_navigation_control(
    x=1.2,
    y=0.5,
    z=2.8,
    roll_deg=0,
    pitch_deg=15,
    yaw_deg=90,
    joint_targets_rad=joint_targets,
    robot_name="RobotArm_01"
)

print(response)
```

---

# Convert Euler Angles to Quaternion

Utility function for converting Euler angles into quaternion format.

```python
from roboreactor import RoboReactor

quaternion = RoboReactor.euler_to_quaternion(
    roll_deg=0,
    pitch_deg=45,
    yaw_deg=90
)

print(quaternion)
```

---

# Send Generic Sensor Telemetry

Upload custom sensor payloads such as IMU, GPS, battery, and telemetry data.

```python
from roboreactor import RoboReactor

client = RoboReactor(
    email="your_email@example.com",
    project_name="Robot_Project",
    secret_token="YOUR_SECRET_TOKEN"
)

sensor_payload = {
    "Sensors": {
        "imu": {
            "accel_x": 0.12,
            "accel_y": -0.08,
            "accel_z": 9.81
        },
        "gps": {
            "latitude": 13.7563,
            "longitude": 100.5018
        },
        "battery": {
            "voltage": 12.4,
            "current": 1.8
        }
    }
}

response = client.post_sensor_data(sensor_payload)

print(response)
```

---

# Fetch IoT Remote Commands

Retrieve IoT control commands from RoboReactor cloud.

```python
from roboreactor import RoboReactor

client = RoboReactor(
    email="your_email@example.com",
    project_name="Robot_Project",
    secret_token="YOUR_SECRET_TOKEN"
)

commands = client.fetch_iot_control()

print(commands)
```

---

# Robot Edge Loop Example

Example continuous runtime telemetry loop for robotics edge devices.

```python
import time
from roboreactor import RoboReactor

client = RoboReactor(
    email="your_email@example.com",
    project_name="Robot_Project",
    secret_token="YOUR_SECRET_TOKEN"
)

while True:

    telemetry_payload = {
        "runtime": {
            "cpu_temp": 48.2,
            "loop_rate_hz": 120
        }
    }

    client.post_sensor_data(telemetry_payload)

    commands = client.fetch_iot_control()

    if commands:
        print("Received Commands:", commands)

    time.sleep(1)
```

---

# Features

- Secure cloud authentication
- Real-time robotics telemetry
- Navigation target streaming
- Joint control streaming
- Quaternion utilities
- Generic telemetry upload
- IoT remote command retrieval
- Edge-device architecture support

---

# Example Architecture

```text
Robot / MCU / SBC
        │
        ▼
RoboReactor Python SDK
        │
        ▼
RoboReactor Cloud API
        │
        ├── Telemetry Dashboard
        ├── Motion Streaming
        ├── IoT Remote Control
        └── Multi-Robot Coordination
```
