Initial commit — EMHASS + Deye + NordPool setup
- EMHASS config for Deye SUN-12K + 32 kWh battery, NordPool LV - Day-ahead optimization automation (14:30 daily) with real battery SOC init - Forecast vs reality template sensors and dashboard card - Migration log from Domoticz Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Migration Log — HA + Domoticz
|
||||
|
||||
## 2026-04-06 — EMHASS Initial Configuration
|
||||
|
||||
### Discovery completed
|
||||
- All critical Deye inverter sensors confirmed working via MQTT
|
||||
- Sign conventions verified:
|
||||
- `battery_power`: positive = discharging, negative = charging
|
||||
- `total_grid_power`: positive = import, negative = export
|
||||
- Formula: `grid + pv = load + (-battery)` ✓
|
||||
|
||||
### Sensor decisions
|
||||
| Role | Sensor chosen | Notes |
|
||||
|------|--------------|-------|
|
||||
| PV power | `sensor.deye_inverter_mqtt_dc_total_power` | DC total (PV1+PV2) |
|
||||
| House load | `sensor.load_power_no_var_loads` | Template sensor, ready for EV subtraction later |
|
||||
| Grid power | `sensor.deye_inverter_mqtt_total_grid_power` | Signed, +import/-export |
|
||||
| Battery SOC | `sensor.deye_inverter_mqtt_battery_soc` | Direct from inverter |
|
||||
| Battery power | `sensor.deye_inverter_mqtt_battery_power` | Signed, matches EMHASS convention |
|
||||
| Spot price | `sensor.nordpool_kwh_lv_eur_3_10_021` | LV zone, 15-min resolution, has today/tomorrow arrays |
|
||||
|
||||
### Legacy sensors to clean up (not used in EMHASS)
|
||||
- `sensor.deye_pv1_power`, `sensor.deye_pv1_voltage`, `sensor.deye_pv1_current`
|
||||
- `sensor.deye_pv2_power`, `sensor.deye_pv2_voltage`, `sensor.deye_pv2_current`
|
||||
- `sensor.deye_total_pv_power`, `sensor.deye_pv_day_energy`, `sensor.deye_total_pv_energy`
|
||||
- `sensor.total_ev_power`, `sensor.total_ev_energy` (CT clamp readings, not OpenEVSE integration)
|
||||
- `sensor.deye` (utility meter, check if still needed)
|
||||
|
||||
### EMHASS config written
|
||||
- File: `config_emhass.yaml` in this repo
|
||||
- Deploy to HA at: `/config/emhass/config_emhass.yaml`
|
||||
- Version targeted: v0.17.1
|
||||
- Mode: self-consumption, no grid export, no EV (to be added later)
|
||||
- Key parameters: 32 kWh battery, 11 kW charge/discharge, 16090 W grid limit, 10% min SOC
|
||||
|
||||
### MCP setup
|
||||
- Fixed hass-mcp env var (was `HATOKEN`, needed `HA_TOKEN`)
|
||||
- Installed `uv`/`uvx` to `~/.local/bin` (required by hass-mcp)
|
||||
- Config stored in `~/.claude.json` (local scope, this project)
|
||||
|
||||
### Completed — 2026-04-06
|
||||
|
||||
#### Config deployment
|
||||
- Deployed `config.json` to `/addon_configs/5b918bf2_emhass/config.json`
|
||||
- Had to find correct path (newer HA OS uses `/addon_configs/{slug}/` not `/homeassistant/`)
|
||||
- Fixed sensor: switched to `sensor.deye_inverter_mqtt_total_load_power` (has history, unlike `load_power_no_var_loads`)
|
||||
|
||||
#### NordPool integration
|
||||
- EMHASS v0.17 has no native NordPool sensor support
|
||||
- Solution: `load_cost_forecast_method: "list"` + pass price array at runtime
|
||||
- Automation builds 48-value list from NordPool `tomorrow` attribute (resampled from 15-min to 30-min)
|
||||
- Fixed cost added: 0.1437 €/kWh (distribution + VAT)
|
||||
|
||||
#### Files updated on HA
|
||||
- `/addon_configs/5b918bf2_emhass/config.json` — EMHASS config
|
||||
- `/homeassistant/configuration.yaml` — added `rest_command` for EMHASS API calls
|
||||
- `/homeassistant/automations.yaml` — added `emhass_dayahead_optimization` automation
|
||||
|
||||
#### Daily automation
|
||||
- Triggers at 14:30 EET/EEST
|
||||
- Waits up to 60min for `tomorrow_valid == true`
|
||||
- Resamples NordPool prices, adds fixed cost, POSTs to EMHASS
|
||||
- Runs `dayahead-optim` → `publish-data`
|
||||
|
||||
#### Verified working
|
||||
- `sensor.p_pv_forecast` — PV forecast (W)
|
||||
- `sensor.p_load_forecast` — Load forecast (W)
|
||||
- `sensor.p_grid_forecast` — Grid import forecast (W)
|
||||
- `sensor.soc_batt_forecast` — Target end-of-day SOC (%)
|
||||
- `sensor.unit_load_cost` — First-hour price from NordPool
|
||||
|
||||
### Remaining / Future
|
||||
|
||||
1. **Switch load sensor** — after `sensor.load_power_no_var_loads` accumulates 24h+ history, switch back for more accurate EV separation
|
||||
2. **OpenEVSE integration** — when charger is connected, add `number_of_deferrable_loads: 1` for smart EV charging
|
||||
3. **Legacy sensor cleanup** — remove unused `sensor.deye_*` duplicates from old configuration
|
||||
Reference in New Issue
Block a user