Metadata-Version: 2.4
Name: mask-jennifer
Version: 0.1.1
Summary: Python Remote Control Library for Jennifer ESP32 Robot
Author: Jennifer Robot Team
License-Expression: MIT
Keywords: robot,esp32,robotics,jennifer,mask,wifi-control
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Hardware :: Hardware Drivers
Requires-Python: >=3.6
Description-Content-Type: text/markdown

# mask-jennifer

🤖 **Python Remote Control Library for the Jennifer ESP32 Robot**

`mask-jennifer` provides a simple, clean, and ultra-fast Python interface to wirelessly control movement, control modes, and eye expressions of the Jennifer ESP32 Robot over Wi-Fi (UDP / WebSockets / HTTP).

---

## 🚀 Installation

### Option 1: Install locally from directory
```bash
cd mask_jennifer
pip install .
```

### Option 2: Editable Development Install
```bash
pip install -e mask_jennifer
```

---

## 💻 Quickstart Example

```python
from mask_jennifer import JenniferRobot
import time

# Connect to Jennifer Robot (Default Hotspot IP: 192.168.4.1)
with JenniferRobot(host="192.168.4.1") as robot:
    # 1. Switch to Wi-Fi Control Mode
    robot.set_mode("wifi")

    # 2. Set Eye Expression to LOVE (💓)
    robot.set_expression("love")
    time.sleep(1.0)

    # 3. Movement Controls
    print("Moving forward...")
    robot.forward(duration=2.0)  # Drives forward for 2.0s then stops

    print("Rotating left...")
    robot.rotate_left(duration=1.0)  # Rotates left for 1.0s then stops

    # 4. Perform Eye Action
    robot.wink()
    time.sleep(1.0)

    robot.set_expression("normal")
    print("Done!")
```

---

## 🎮 API Reference

### Initialization & Context Manager
```python
robot = JenniferRobot(host="192.168.4.1", port=8888, transport="udp")
robot.connect()
# ...
robot.disconnect()
```

### Control Mode
- `robot.set_mode("wifi")` - Switch to Wi-Fi control mode
- `robot.set_mode("rc")` - Switch to RC transmitter control mode

### Robot Movement
- `robot.forward(duration=None)` - Move forward
- `robot.reverse(duration=None)` - Move in reverse
- `robot.turn_left(duration=None)` - Drive forward + turn left
- `robot.turn_right(duration=None)` - Drive forward + turn right
- `robot.rotate_left(duration=None)` - Rotate left in place
- `robot.rotate_right(duration=None)` - Rotate right in place
- `robot.stop()` - Stop all motor movement

### Eye Expression Controls
- `robot.set_expression("normal")` - Normal eyes
- `robot.set_expression("love")` - Heart eyes 💓
- `robot.set_expression("angry")` - Flame angry eyes 🔥
- `robot.set_expression("emoji")` - Emoji face 😍
- `robot.wink("close")` / `robot.wink("open")` / `robot.wink("toggle")` - Eye winking
- `robot.blink()` - Single blink
- `robot.auto_gaze(True)` / `robot.auto_gaze(False)` - Toggle autonomous gaze
- `robot.look(x, y)` - Set direct gaze coordinates (x: -32 to 32, y: -12 to 12)
