2.3 KiB
Contributing
Before opening an issue
Run solixauto doctor and include its output. It reports platform, Python
version, dependencies, whether credentials resolve, detected subnets, and
notification status.
Do not paste secrets. Never include:
notifications.yamlor any part of it- your
.envfile, Anker email, or password - your ntfy topic (anyone with it can read your alerts)
Device profiles contain serial numbers. Redact them if that matters to you.
Reporting a device that does not work
Include:
- model and part number, e.g.
A1782 - what
solixauto discover-ankerprinted - whether the device shows as online in the Anker app at the time
- for Shelly devices, generation and model, plus
solixauto conflicts <plug>
Devices that pair over Bluetooth only cannot be supported here. They publish nothing to Anker's cloud MQTT broker. That is a hardware limitation, not a bug.
Field mappings
Telemetry field names come from the upstream anker-solix-api project. Corrections to field meanings belong there, not here.
If a field is wrong or missing for your model, that is the right place to report it. This project only adds derived fields computed from what upstream already decodes.
Code changes
- No comments in code; the project is written without them
- Match the existing style rather than introducing a formatter
- Anything touching the engine needs a matching check in
--testoutput. If a behaviour cannot be observed with--test, it is very hard for a user to trust it. - Safety-relevant changes (the battery floor, stale handling, rate limits) should come with a description of the failure mode they address
Testing
There is no unit test suite yet. Contributions that add one are welcome.
At minimum, exercise the paths you touched:
solixauto run <profile> --test --offline
solixauto run <profile> --test --simulate battery_soc=12
solixauto run <profile> --dry-run --cycles 6
A fake Shelly is easy to stand up with aiohttp if you need to test the control
path without hardware; the RPC surface used is small: /shelly,
/rpc/Shelly.GetStatus, /rpc/Shelly.GetConfig, /rpc/Switch.Set,
/rpc/Switch.SetConfig, /rpc/Schedule.List, /rpc/Schedule.Delete,
/rpc/Webhook.List.