56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
# Service Adapters
|
|
|
|
Python FastAPI service for integrating with external homelab services.
|
|
|
|
## Purpose
|
|
- Integrate with Home Assistant, Frigate, Immich, n8n
|
|
- Transform external service data into standardized format
|
|
- Publish events to the message bus
|
|
- Provide unified API for service data
|
|
|
|
## Technology Stack
|
|
- **Language**: Python 3.11
|
|
- **Framework**: FastAPI
|
|
- **Port**: 8000
|
|
- **Message Bus**: Redis
|
|
- **Documentation**: OpenAPI/Swagger
|
|
|
|
## Features
|
|
- Home Assistant entity integration
|
|
- Frigate event processing
|
|
- Immich asset management
|
|
- n8n workflow triggers
|
|
- Event publishing to Redis
|
|
- Comprehensive OpenAPI documentation
|
|
- Modular architecture for maintainability
|
|
|
|
## Project Structure
|
|
```
|
|
service-adapters/
|
|
├── main.py # FastAPI application (40 lines)
|
|
├── models/
|
|
│ ├── schemas.py # Pydantic models
|
|
├── routes/
|
|
│ ├── general.py # Root, health, services
|
|
│ ├── home_assistant.py # HA integration
|
|
│ ├── frigate.py # Frigate integration
|
|
│ ├── immich.py # Immich integration
|
|
│ └── events.py # Event management
|
|
└── services/
|
|
├── config.py # Service configurations
|
|
└── redis_client.py # Redis connection
|
|
```
|
|
|
|
## API Endpoints
|
|
- `GET /` - API information
|
|
- `GET /health` - Health check
|
|
- `GET /services` - Service status
|
|
- `GET /home-assistant/entities` - HA entities
|
|
- `GET /frigate/events` - Frigate events
|
|
- `GET /immich/assets` - Immich assets
|
|
- `POST /publish-event` - Publish events
|
|
- `GET /events` - Retrieve events
|
|
|
|
## Development Status
|
|
✅ **Complete** - Core functionality implemented with modular architecture
|