Skip to content

ailynux/Eilik-Robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ€– Eilik Robot Interface

Python Version License Bluetooth

Welcome to the Eilik Robot Interface project! This repository provides tools and libraries to interact with and customize your Eilik companion robot, turning it into an even more versatile and personalized robotic friend.

image

🚧 Project Status

This project is currently early-stage / research + scaffolding.

EnergizeLab does not provide a public open-source API for Eilik at this time, so this repo focuses on:

  • BLE discovery / connection scaffolding
  • documenting observed GATT services/characteristics
  • building a clean foundation for future community-driven tooling

βœ… What works today:

  • Repo structure + tooling (in progress)
  • BLE scan + device introspection (planned for v0.1)

⚠️ What does NOT exist yet:

  • Reliable "wave/dance/sound" actions
  • A stable protocol implementation
  • Complete control interface

Disclaimer: This project is not affiliated with EnergizeLab. Use at your own risk. Please be patient for features that require reverse engineering.

Getting Started

Prerequisites

  • Python 3.8 or higher
  • Bluetooth LE capable hardware
  • An Eilik robot

Installation

  1. Clone the repository:
git clone https://github.com/ailynux/eilik-robot.git
cd eilik-robot
  1. Install required dependencies:
pip install -e .

Or install with development dependencies:

pip install -e ".[dev]"

πŸ“– Usage

Basic BLE Scanning

from eilik.robot import EilikRobot

async def main():
    robot = EilikRobot()
    
    # Scan for Eilik devices
    devices = await robot.scan(timeout=10.0)
    print(f"Found {len(devices)} devices")
    
    for device in devices:
        print(f"  - {device.name} ({device.address})")

Device Introspection

async def main():
    robot = EilikRobot()
    
    # Connect to a device
    await robot.connect("XX:XX:XX:XX:XX:XX")  # Replace with your device address
    
    # List GATT services and characteristics
    services = await robot.list_gatt()
    for service in services:
        print(f"Service: {service.uuid}")
        for char in service.characteristics:
            print(f"  Characteristic: {char.uuid}")
    
    await robot.disconnect()

See the examples/ directory for more complete examples.

Current Goals (v0.1)

  • Project structure and tooling
  • BLE device scanning
  • Device connection and disconnection
  • GATT service/characteristic introspection
  • Research notes documentation

πŸ“š Documentation

🀝 Contributing

I welcome contributions! Please read the Contributing Guide first.

Development Setup

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/

# Check code style (if configured)
flake8 eilik/

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • The Eilik robot creator community
  • Contributors to the Bluetooth LE Python libraries (especially bleak)

πŸ—Ί Roadmap

  • v0.1: BLE scanning and introspection
  • v0.2: Protocol discovery and documentation
  • v0.3: Basic command interface (if protocol is understood)
  • Future: Custom behaviors, animations, and integrations

Made with ❀️ for the Eilik community

About

Cyber research toolkit for exploring the Eilik robot via Bluetooth LE

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages