Files
arnaudne 941abd98d5 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>
2026-06-28 01:05:24 +02:00

1.0 KiB

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