Files
Felix Zösch 9be64a0696 Add homeassistant skill in unpacked format
- Add complete homeassistant skill source to skills/ directory
- Includes all scripts, references, and automation templates
- Matches format of other skills in repository
2025-12-16 12:49:56 +01:00

285 lines
4.5 KiB
Markdown

# Home Assistant API Reference
## REST API
### Authentication
All API requests require a Long-Lived Access Token passed in the Authorization header:
```
Authorization: Bearer YOUR_TOKEN_HERE
```
Obtain tokens from: `http://YOUR_HA_URL:8123/profile`
### Base URL
```
http://YOUR_HA_URL:8123/api/
```
### Key Endpoints
#### Get All Entity States
```http
GET /api/states
```
Returns array of all entities with their current states, attributes, and timestamps.
#### Get Specific Entity State
```http
GET /api/states/<entity_id>
```
Example: `/api/states/light.living_room`
Returns single entity object with state, attributes, last_changed, last_updated.
#### Call a Service
```http
POST /api/services/<domain>/<service>
```
Example: `/api/services/light/turn_on`
Request body (optional):
```json
{
"entity_id": "light.living_room",
"brightness": 255,
"color_name": "blue"
}
```
Returns array of entity states that were changed by the service call.
#### List All Services
```http
GET /api/services
```
Returns object with domains as keys, each containing available services with descriptions and field definitions.
#### Get Configuration
```http
GET /api/config
```
Returns Home Assistant configuration including version, location, unit system, time zone, etc.
#### Get Error Log
```http
GET /api/error_log
```
Returns text content of the error log.
### Response Codes
- `200` - Success (existing resource)
- `201` - Created (new resource)
- `400` - Bad Request
- `401` - Unauthorized
- `404` - Not Found
- `405` - Method Not Allowed
## WebSocket API
### Connection
Connect to: `ws://YOUR_HA_URL:8123/api/websocket`
### Authentication Flow
1. Client connects
2. Server sends `auth_required` message:
```json
{
"type": "auth_required",
"ha_version": "2024.1.0"
}
```
3. Client sends `auth` message:
```json
{
"type": "auth",
"access_token": "YOUR_TOKEN_HERE"
}
```
4. Server responds with either:
```json
{"type": "auth_ok"}
```
or
```json
{
"type": "auth_invalid",
"message": "Invalid access token"
}
```
### Message Format
All messages use JSON. Command phase messages require an `id` field for request/response correlation.
### Common Commands
#### Get All States
```json
{
"id": 1,
"type": "get_states"
}
```
Response:
```json
{
"id": 1,
"type": "result",
"success": true,
"result": [
{
"entity_id": "light.living_room",
"state": "on",
"attributes": {...},
"last_changed": "2024-01-15T10:30:00+00:00",
"last_updated": "2024-01-15T10:30:00+00:00"
}
]
}
```
#### Call Service
```json
{
"id": 2,
"type": "call_service",
"domain": "light",
"service": "turn_on",
"target": {
"entity_id": "light.kitchen"
},
"service_data": {
"brightness": 255,
"color_name": "warm_white"
},
"return_response": true
}
```
Response:
```json
{
"id": 2,
"type": "result",
"success": true,
"result": {
"context": {
"id": "326ef27d19415c60c492fe330945f954",
"parent_id": null,
"user_id": "31ddb597e03147118cf8d2f8fbea5553"
},
"response": null
}
}
```
#### Subscribe to Events
Subscribe to state changes:
```json
{
"id": 3,
"type": "subscribe_events",
"event_type": "state_changed"
}
```
Server confirms subscription:
```json
{
"id": 3,
"type": "result",
"success": true
}
```
Then sends events as they occur:
```json
{
"id": 3,
"type": "event",
"event": {
"event_type": "state_changed",
"data": {
"entity_id": "sensor.temperature",
"old_state": {...},
"new_state": {...}
}
}
}
```
#### Unsubscribe from Events
```json
{
"id": 4,
"type": "unsubscribe_events",
"subscription": 3
}
```
### Error Responses
```json
{
"id": 5,
"type": "result",
"success": false,
"error": {
"code": "invalid_format",
"message": "Message incorrectly formatted"
}
}
```
## Common Entity Domains
- `light` - Lights
- `switch` - Switches
- `sensor` - Sensors (read-only)
- `binary_sensor` - Binary sensors (on/off, open/closed)
- `climate` - Climate control (thermostats, AC)
- `cover` - Covers (blinds, garage doors)
- `fan` - Fans
- `media_player` - Media players
- `camera` - Cameras
- `lock` - Door locks
- `alarm_control_panel` - Alarm systems
- `vacuum` - Vacuum cleaners
- `automation` - Automations themselves
- `script` - Scripts
- `scene` - Scenes
## Common Service Patterns
Most domains support these services:
- `turn_on` - Turn entity on
- `turn_off` - Turn entity off
- `toggle` - Toggle entity state
Domain-specific services may include additional parameters like `brightness`, `color_temp`, `position`, etc.