Dynamic MySolem/MyIndygo IoT bridge with MQTT, Home Assistant autodiscovery, and Homebridge EasyMQTT compatibility. - Device discovery via MySolem API on startup (all modules/inputs/outputs) - Configurable poll engine (fast/normal/slow buckets, per-input overrides) - MQTT retained state publishing + HA autodiscovery payloads - Unified manual command routing (linesControl vs sendManualModuleCommand) - Runtime config via MQTT $config/set, persisted to config.json - Expression override system (API-provided > hardcoded > passthrough) - Minimal REST API: /health, /state, /control, /rediscover - Docker deployment (Dockerfile + docker-compose.yml) - 38 unit tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.4 KiB
LRLEVEL — Pool Fill Valve Controller (LRLEVEL-0D2ED9)
Module ID: 6a1c4b153d6c33ab843edc13
Type: lr-niv (niveau = level)
Role: Controls pool water fill valve; measures volume added and fill state
Inputs
| Input ID | Type | Unit | Description |
|---|---|---|---|
6a1c4b153d6c33ab843edc15 |
33 (flow) | L | Volume of water added per fill cycle |
6a1c4b153d6c33ab843edc16 |
149 (level state) | raw | Fill valve / level state (0/1) |
Input edc15 — Water volume (fill meter)
Expression: javascript:if(x<=0){0.0}else if(x>=80000){68.76}else{-5.01×10⁻¹⁰×...} (polynomial curve for pulse-to-litre conversion)
Recent readings — all 0 L for the past 5 ticks (no fill events since 2026-06-03):
2026-06-04T19:12 0 L
2026-06-04T13:11 0 L
2026-06-04T07:10 0 L
2026-06-04T01:09 0 L
2026-06-03T19:08 0 L
Pool level currently stable — no refill needed.
Input edc16 — Level state
Type 149 (new), raw 0/1. Consistently reads 1 in all recent ticks (every 6h):
2026-06-04T15:12 1
2026-06-04T09:11 1
2026-06-04T03:10 1
2026-06-03T21:09 1
2026-06-03T15:08 1
1 = fill valve closed / level OK.
Output
| Output ID | Name | Index |
|---|---|---|
6a1c4b153d6c33ab843edc17 |
Station 1 | 0 |
Controls the physical fill valve. Program index 0 ("Station 1") exists but has no active windows — fill is triggered automatically by the level sensor, not by schedule.
Remote state
- Battery: 94%
- Last radio contact: 2026-06-04T20:12:35Z
- Relay:
60ca4276ad69dac1558f7c61(LRMB10)
Fill event detection
To detect when the pool was last filled and how much water was added, query the flow input over a wider date range and filter for ticks where value > 0:
data = session.get(f"{BASE}/remote/input/getComputedSensorData", params={
"inputId": "6a1c4b153d6c33ab843edc15",
"startDate": "2026-01-01T00:00:00.000Z",
"endDate": "2026-06-04T23:59:59.000Z",
"ensurePrevTickForContinuity": "true",
}).json()
fill_events = [t for t in data["computedSensorData"] if t["value"] > 0]
Notes
- Type 149 is a new input type not seen in other modules (likely lr-niv specific level state)
- The system works as:
pool-level-sensor(float) → signals low →LRLEVELopens fill valve (output 0) →edc15measures L added → valve closes whenpool-level-sensorreturns 1