diff --git a/HOMEASSISTANT.md b/HOMEASSISTANT.md index 3cb4262..0b773e8 100644 --- a/HOMEASSISTANT.md +++ b/HOMEASSISTANT.md @@ -130,10 +130,13 @@ curl -s -H "Authorization: Bearer $HA_TOKEN" \ - **Philips Hue** - Lights - **Sonos** - Speakers +- **Nest** - Thermostat (climate.thermostat) - **Motion Sensors** - Various locations - **NUT (Network UPS Tools)** - UPS monitoring (added 2025-12-21) - **VeSync** - Levoit humidifier control (added 2026-01-14) - **HomeKit Controller** - Homebridge bridge for Govee sensors (added 2026-01-14) +- **Oura Ring v2** - Sleep/health tracking via HACS (added 2026-01-16) +- **HACS** - Home Assistant Community Store for custom integrations ### NUT / UPS Integration @@ -186,6 +189,35 @@ Controls the Levoit LV600S humidifier via VeSync cloud API. | `binary_sensor.lv600s_low_water` | Low water warning | | `binary_sensor.lv600s_water_tank_lifted` | Tank removed detection | +### Oura Ring Integration (HACS) + +Monitors sleep, activity, and health metrics from Oura Ring via HACS custom integration. + +**Installation:** HACS → Integrations → Oura Ring v2 + +**OAuth Credentials (Oura Developer Portal):** +- Client ID: `e925a2a0-7767-4390-8b80-3a385a5b3ddc` +- Client Secret: `xFSFSfUPihet1foWQRLAMUQbL9-kChqT_CjtHHpAxZs` +- Redirect URI: `https://my.home-assistant.io/redirect/oauth` + +**Key Entities:** +| Entity ID | Description | +|-----------|-------------| +| `sensor.oura_ring_readiness_score` | Daily readiness (0-100) | +| `sensor.oura_ring_sleep_score` | Sleep quality (0-100) | +| `sensor.oura_ring_current_heart_rate` | Current HR (bpm) | +| `sensor.oura_ring_average_sleep_heart_rate` | Average HR during sleep | +| `sensor.oura_ring_lowest_sleep_heart_rate` | Lowest HR during sleep | +| `sensor.oura_ring_temperature_deviation` | Body temp deviation (°C) | +| `sensor.oura_ring_spo2_average` | Blood oxygen (%) | +| `sensor.oura_ring_steps` | Daily step count | +| `sensor.oura_ring_activity_score` | Activity score (0-100) | + +**Troubleshooting:** +- If sensors show "unavailable", check config entry state: `setup_retry` usually means API returned no data +- Force sync the Oura app on your phone, then reload the integration +- The integration polls Oura's API periodically; data updates after ring syncs to cloud + ### HomeKit Controller / Homebridge Integration Connects to Homebridge running on Mac Mini to access BLE devices (Govee sensors). @@ -241,10 +273,46 @@ Maintains 45-47% humidity for guitar storage (Lowden recommends 49% ±2%). - 45% turn-on, 47% turn-off creates a 2% buffer - Target range: 45-47% (conservatively below Lowden's 49% spec) +### Oura Ring Health & Sleep Automations + +Uses Oura Ring biometrics for smart thermostat control and health alerts. + +**Sleep/Wake Detection:** +| Automation | Trigger | Conditions | Action | +|------------|---------|------------|--------| +| `oura_sleep_detected_bedtime_mode` | HR < 55 bpm | Home, after 10pm | Thermostat → 66°F, front door light off, Telegram notify | +| `oura_wake_up_detected_morning_mode` | HR > 65 bpm | Home, 5-11am, thermostat < 68°F | Thermostat → 69°F, Telegram notify | + +**Health Alerts:** +| Automation | Trigger | Action | +|------------|---------|--------| +| `oura_low_readiness_alert` | 8am daily, readiness < 70 | Telegram: suggest rest day | +| `oura_spo2_health_alert` | SpO2 < 94% | Urgent Telegram: health warning | +| `oura_fever_detection_alert` | Temp deviation > 1°C | Telegram: possible illness alert | +| `oura_sedentary_reminder` | 2pm weekdays, steps < 500 | Telegram: reminder to move | + +**Sleep Comfort & Recovery:** +| Automation | Trigger | Conditions | Action | +|------------|---------|------------|--------| +| `oura_poor_sleep_recovery_mode` | 7am daily | Home, sleep score < 70 | Thermostat → 71°F (warmer for recovery) | +| `oura_sleep_temp_adjustment_too_hot` | Temp deviation > +0.5°C | Home, 10pm-6am, HR < 60 | Thermostat → 64°F | +| `oura_sleep_temp_adjustment_too_cold` | Temp deviation < -0.3°C | Home, 10pm-6am, HR < 60 | Thermostat → 68°F | + +**Notification Setup:** +All notifications use `rest_command.notify_telegram` - ensure this is configured in `configuration.yaml`: +```yaml +rest_command: + notify_telegram: + url: "https://api.telegram.org/bot/sendMessage" + method: POST + content_type: "application/json" + payload: '{"chat_id": "", "text": "{{ message }}"}' +``` + ## TODO - [ ] Set static IP (currently DHCP at .210, should be .110) -- [ ] Add API token to this document -- [ ] Document installed integrations -- [ ] Document automations +- [x] Add API token to this document +- [x] Document installed integrations +- [x] Document automations - [ ] Set up Traefik reverse proxy (ha.htsn.io)