Library built for Home Assistant to integrate with the SmartCocoon
Project description
SmartCocoon Python API
A Python library for controlling SmartCocoon smart vents with comprehensive debug logging and Home Assistant integration support.
Table of Contents
- Overview
- Installation
- Quick Start
- Features
- Usage Examples
- Home Assistant Integration
- Debug Logging
- Development
- Documentation
- Contributing
Overview
This library provides a Python interface to the SmartCocoon cloud service, allowing you to control smart vents programmatically. It's designed primarily for Home Assistant integration but can be used independently for any Python project.
Status
This is not an official API from SmartCocoon and is in active development. The library is stable for basic operations but may have breaking changes as the API evolves.
Supported Devices
- SmartCocoon Smart Vents (all models)
Installation
From PyPI (Recommended)
pip install pysmartcocoon
From Source
git clone https://github.com/davecpearce/pysmartcocoon.git
cd pysmartcocoon
pip install -e .
For Development
git clone https://github.com/davecpearce/pysmartcocoon.git
cd pysmartcocoon
pip install -e .[test]
Quick Start
import asyncio
from pysmartcocoon import SmartCocoonManager
async def main():
# Initialize the manager
manager = SmartCocoonManager()
# Authenticate with your SmartCocoon account
await manager.async_start_services(
username="your_email@example.com",
password="your_password"
)
# Update data from the API
await manager.async_update_data()
# Access your fans
for fan_id, fan in manager.fans.items():
print(f"Fan {fan_id}: {fan.name} - {fan.mode}")
# Control the fan
await fan.async_set_fan_mode("auto")
await fan.async_set_fan_speed(50) # 50% speed
# Clean up
await manager._api.close()
# Run the example
asyncio.run(main())
Features
Core Functionality
- Cloud Integration: Connect to SmartCocoon cloud service
- Device Discovery: Automatically discover and configure fans
- Fan Control: Complete control over fan operations
- Real-time Updates: Get current fan status and settings
- Error Handling: Robust error handling and retry logic
Fan Control Capabilities
- Power Control: Turn fans on/off
- Speed Control: Set fan speed (0-100%)
- Mode Control:
auto- Automatic mode based on temperatureeco- Energy-efficient modealways_on- Always runningalways_off- Always off
- Status Monitoring: Real-time fan status and connection state
Advanced Features
- Debug Logging: Comprehensive debug output for troubleshooting
- Type Hints: Full type annotation support
- Async Support: Built for async/await patterns
- Home Assistant Ready: Designed for seamless HA integration
Usage Examples
Basic Fan Control
import asyncio
from pysmartcocoon import SmartCocoonManager
async def control_fan():
manager = SmartCocoonManager()
try:
# Authenticate
await manager.async_start_services("user@example.com", "password")
# Get fan data
await manager.async_update_data()
# Find a specific fan
fan = next(iter(manager.fans.values()))
# Turn on and set to auto mode
await fan.async_set_fan_mode("auto")
await fan.async_set_fan_speed(75)
print(f"Fan {fan.name} is now {fan.mode} at {fan.speed_pct}%")
finally:
await manager._api.close()
asyncio.run(control_fan())
Monitoring Fan Status
async def monitor_fans():
manager = SmartCocoonManager()
try:
await manager.async_start_services("user@example.com", "password")
while True:
await manager.async_update_data()
for fan_id, fan in manager.fans.items():
status = "🟢 Connected" if fan.connected else "🔴 Disconnected"
print(f"{fan.name}: {status} - {fan.mode} at {fan.speed_pct}%")
await asyncio.sleep(30) # Check every 30 seconds
finally:
await manager._api.close()
Home Assistant Integration
Installation
- Copy the
custom_components/smartcocoonfolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
- Add the integration through the UI
Configuration
# configuration.yaml
smartcocoon:
username: "your_email@example.com"
password: "your_password"
Debug Logging in Home Assistant
Add to your configuration.yaml:
logger:
logs:
pysmartcocoon: debug
For detailed debug information, see the Debug Guide.
Debug Logging
The library includes comprehensive debug logging to help troubleshoot issues:
import logging
# Enable debug logging
logging.basicConfig(level=logging.DEBUG)
# Your code here - debug output will be shown
Debug output includes:
- API requests and responses
- Authentication details
- Fan control operations
- Error information
See the Debug Guide for complete documentation.
Development
Prerequisites
- Python 3.13.2+
- Git
- Docker (for running GitHub Actions locally)
Development Environment
This project includes a complete development environment using VS Code Dev Containers:
- Open the project in VS Code
- When prompted, reopen in container
- The devcontainer will automatically set up all dependencies
See docs/DEVCONTAINER_README.md for detailed setup instructions.
Running Tests
# Run all tests
pytest
# Run with debug output
pytest -v -s
# Run integration tests (requires credentials)
export RUN_INTEGRATION=1
pytest tests/test_fan_control.py::test_integration_debug_logging -v -s
Code Quality
The project uses several tools to maintain code quality:
- Black: Code formatting
- isort: Import sorting
- pylint: Code linting
- mypy: Type checking
- pre-commit: Git hooks
Run all checks:
pre-commit run --all-files
Documentation
- 📚 Complete Documentation - Comprehensive documentation index
- 🐛 Debug Guide - Debug logging and troubleshooting
- 🛠️ Development Guide - Development environment setup
- 🤝 Contributing Guide - How to contribute to the project
- 📜 Development Scripts - Utility scripts for development
Contributing
Contributions are welcome! Please see docs/CONTRIBUTING.md for guidelines.
Quick Contribution Checklist
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and code quality checks
- Submit a pull request
Work to do
- MQTT integration for real-time updates
- Device discovery implementation
- WebSocket support for live updates
- Additional fan control features
- Performance optimizations
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pysmartcocoon-1.4.2.tar.gz.
File metadata
- Download URL: pysmartcocoon-1.4.2.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9556eb66d0401b58057eb5857c5f4490c70340391655b1265a222cca8f24be1
|
|
| MD5 |
285f05f900f2e3950d417dddc818cd99
|
|
| BLAKE2b-256 |
e608c9884cc14e96b132a10805bf8cae5f4bd7804eed51e657265e4753510736
|
File details
Details for the file pysmartcocoon-1.4.2-py3-none-any.whl.
File metadata
- Download URL: pysmartcocoon-1.4.2-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ea4bbd585617e877fb7f6cd14d7370a1b95bc531cfd00e6a77e00df08b34912
|
|
| MD5 |
3e80bcbea493eefc06f4be15529e417a
|
|
| BLAKE2b-256 |
6c917c9f0a60cef7295821d57dd128709578a5631b48c95b0f19e9308c122ddd
|