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,36 @@
|
||||
# myprimal
|
||||
|
||||
Reverse-engineered client for the MySolem irrigation platform.
|
||||
|
||||
## Goal
|
||||
|
||||
Fetch sensor telemetry and control IoT devices (valves, stations) by talking directly to the MySolem backend.
|
||||
|
||||
## Target environment
|
||||
|
||||
**Base URL**: `https://qualif.mysolem.com` (qualification environment — always use this, not www.mysolem.com)
|
||||
|
||||
## Project layout
|
||||
|
||||
```
|
||||
api-docs/ # Reverse-engineered API documentation
|
||||
overview.md # Auth, architecture, key IDs
|
||||
endpoints.md # All discovered endpoints
|
||||
control.md # Device control commands
|
||||
```
|
||||
|
||||
## Auth
|
||||
|
||||
Session-cookie based (Sails.js). Call `POST /login` with form data, keep the cookie jar for all subsequent requests. See `api-docs/overview.md`.
|
||||
|
||||
## Key account IDs
|
||||
|
||||
- User ID: `5de53bca7ed4c45c2cfe067f`
|
||||
- Site ID (Domicile): `62b30d26ecbceb08607592c1`
|
||||
- Soil moisture input ID: `60ca42adad69dac1558f7c66`
|
||||
|
||||
## Notes
|
||||
|
||||
- Backend: Node.js + Sails.js, MongoDB ObjectIds
|
||||
- Real-time updates via socket.io, but all read/write ops also work over plain HTTP
|
||||
- No CSRF enforcement on JSON endpoints
|
||||
Reference in New Issue
Block a user