feat: initial myprimal MQTT bridge service
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>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# LRMS — Sensor Station (LRMS-0721DC)
|
||||
|
||||
**Module ID**: `60ca42adad69dac1558f7c64`
|
||||
**Serial**: `7400040721DC0001`
|
||||
**Type**: `lr-ms`
|
||||
**Role**: Pure sensor station — no outputs, no programs
|
||||
|
||||
---
|
||||
|
||||
## Inputs
|
||||
|
||||
| Input ID | Name | Type | Unit | Interval | Notes |
|
||||
|---|---|---|---|---|---|
|
||||
| `60ca42adad69dac1558f7c66` | Plumbago | 12 (soil moisture) | % | 60 min | Named sensor |
|
||||
| `60ca42adad69dac1558f7c67` | Pelouse | 12 (soil moisture) | % | 60 min | Named sensor |
|
||||
| `60ca42adad69dac1558f7c69` | *(unnamed)* | 5 (temperature) | °C | 15 min | Air/soil temp |
|
||||
|
||||
### Latest readings (2026-06-04)
|
||||
|
||||
**Plumbago** (moisture)
|
||||
```
|
||||
19:42 71.19%
|
||||
18:42 74.06%
|
||||
17:42 71.63% ← irrigation spike visible
|
||||
16:42 44.64%
|
||||
15:42 41.83%
|
||||
```
|
||||
|
||||
**Pelouse** (moisture)
|
||||
```
|
||||
19:42 78.25%
|
||||
18:42 79.63%
|
||||
17:42 70.81% ← irrigation spike visible
|
||||
16:42 58.50%
|
||||
14:42 56.19%
|
||||
```
|
||||
|
||||
**Temperature (unnamed)**
|
||||
```
|
||||
19:42 16.10°C
|
||||
19:27 16.44°C
|
||||
18:42 16.66°C
|
||||
18:12 16.54°C
|
||||
17:42 16.31°C
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Remote state
|
||||
|
||||
```
|
||||
GET /remote/module/state?moduleId=60ca42adad69dac1558f7c64
|
||||
```
|
||||
|
||||
- Battery: 78% (batteryVoltage field)
|
||||
- Last radio contact: 2026-06-04T19:51:50Z
|
||||
- Relay: `60ca4276ad69dac1558f7c61` (LRMB10)
|
||||
- `relayIsLongPolling: true`
|
||||
|
||||
---
|
||||
|
||||
## Sensor data endpoint
|
||||
|
||||
```
|
||||
GET /remote/input/getComputedSensorData
|
||||
?inputId={inputId}
|
||||
&startDate={iso8601}
|
||||
&endDate={iso8601}
|
||||
&ensurePrevTickForContinuity=true
|
||||
```
|
||||
|
||||
The moisture sensor uses a computed expression to convert raw ADC values to %.
|
||||
Moisture spikes (>10% jump) correspond to irrigation events — useful to infer watering history even without direct output events.
|
||||
Reference in New Issue
Block a user