Modernize invertergui: MQTT write support, HA integration, UI updates
Some checks failed
build / inverter_gui_pipeline (push) Has been cancelled
Some checks failed
build / inverter_gui_pipeline (push) Has been cancelled
This commit is contained in:
110
README.md
110
README.md
@@ -21,7 +21,7 @@ docker run --name invertergui --device /dev/ttyUSB0:/dev/ttyUSB0 -p 8080:8080 gh
|
||||
|
||||
## Requirements
|
||||
|
||||
This project makes use of [Go Modules](https://github.com/golang/go/wiki/Modules). The minimum version for Go is 1.16
|
||||
This project makes use of [Go Modules](https://github.com/golang/go/wiki/Modules). The minimum supported version for Go is 1.22
|
||||
|
||||
## Getting started
|
||||
|
||||
@@ -37,10 +37,17 @@ Application Options:
|
||||
--cli.enabled Enable CLI output. [$CLI_ENABLED]
|
||||
--mqtt.enabled Enable MQTT publishing. [$MQTT_ENABLED]
|
||||
--mqtt.broker= Set the host port and scheme of the MQTT broker. (default: tcp://localhost:1883) [$MQTT_BROKER]
|
||||
--mqtt.client_id= Set the client ID for the MQTT connection. (default: interter-gui) [$MQTT_CLIENT_ID]
|
||||
--mqtt.client_id= Set the client ID for the MQTT connection. (default: inverter-gui) [$MQTT_CLIENT_ID]
|
||||
--mqtt.topic= Set the MQTT topic updates published to. (default: invertergui/updates) [$MQTT_TOPIC]
|
||||
--mqtt.command_topic= Set the MQTT topic that receives write commands for Victron settings/RAM variables. (default: invertergui/settings/set) [$MQTT_COMMAND_TOPIC]
|
||||
--mqtt.status_topic= Set the MQTT topic where write command status updates are published. (default: invertergui/settings/status) [$MQTT_STATUS_TOPIC]
|
||||
--mqtt.ha.enabled Enable Home Assistant MQTT discovery integration. [$MQTT_HA_ENABLED]
|
||||
--mqtt.ha.discovery_prefix= Set Home Assistant MQTT discovery prefix. (default: homeassistant) [$MQTT_HA_DISCOVERY_PREFIX]
|
||||
--mqtt.ha.node_id= Set Home Assistant node ID used for discovery topics and unique IDs. (default: invertergui) [$MQTT_HA_NODE_ID]
|
||||
--mqtt.ha.device_name= Set Home Assistant device display name. (default: Victron Inverter) [$MQTT_HA_DEVICE_NAME]
|
||||
--mqtt.username= Set the MQTT username [$MQTT_USERNAME]
|
||||
--mqtt.password= Set the MQTT password [$MQTT_PASSWORD]
|
||||
--mqtt.password-file= Path to a file containing the MQTT password [$MQTT_PASSWORD_FILE]
|
||||
--loglevel= The log level to generate logs at. ("panic", "fatal", "error", "warn", "info", "debug", "trace") (default: info) [$LOGLEVEL]
|
||||
|
||||
Help Options:
|
||||
@@ -82,6 +89,20 @@ Battery Power: -0.659 W
|
||||
Battery Charge: 100.000 %
|
||||
```
|
||||
|
||||
The web UI also includes a **Remote Panel Control** section for:
|
||||
|
||||
- Remote Panel Mode (`on`, `off`, `charger_only`, `inverter_only`)
|
||||
- Remote Panel Current Limit (AC input current limit in amps)
|
||||
- Remote Panel Standby (prevent sleep while turned off)
|
||||
|
||||
The combined mode + current limit action maps to the same behavior as
|
||||
`set_remote_panel_state` in `victron-mk3`.
|
||||
|
||||
The backing HTTP API endpoints are:
|
||||
|
||||
- `GET/POST /api/remote-panel/state`
|
||||
- `GET/POST /api/remote-panel/standby`
|
||||
|
||||
### Munin
|
||||
|
||||
The Munin plugin location is at /munin (http://localhost:8080/munin).
|
||||
@@ -281,16 +302,97 @@ The MQTT client will publish updates to the given broker at the set topic.
|
||||
```bash
|
||||
--mqtt.enabled Enable MQTT publishing. [$MQTT_ENABLED]
|
||||
--mqtt.broker= Set the host port and scheme of the MQTT broker. (default: tcp://localhost:1883) [$MQTT_BROKER]
|
||||
--mqtt.client_id= Set the client ID for the MQTT connection. (default: interter-gui) [$MQTT_CLIENT_ID]
|
||||
--mqtt.client_id= Set the client ID for the MQTT connection. (default: inverter-gui) [$MQTT_CLIENT_ID]
|
||||
--mqtt.topic= Set the MQTT topic updates published to. (default: invertergui/updates) [$MQTT_TOPIC]
|
||||
--mqtt.command_topic= Set the MQTT topic that receives write commands for Victron settings/RAM variables. (default: invertergui/settings/set) [$MQTT_COMMAND_TOPIC]
|
||||
--mqtt.status_topic= Set the MQTT topic where write command status updates are published. (default: invertergui/settings/status) [$MQTT_STATUS_TOPIC]
|
||||
--mqtt.ha.enabled Enable Home Assistant MQTT discovery integration. [$MQTT_HA_ENABLED]
|
||||
--mqtt.ha.discovery_prefix= Set Home Assistant MQTT discovery prefix. (default: homeassistant) [$MQTT_HA_DISCOVERY_PREFIX]
|
||||
--mqtt.ha.node_id= Set Home Assistant node ID used for discovery topics and unique IDs. (default: invertergui) [$MQTT_HA_NODE_ID]
|
||||
--mqtt.ha.device_name= Set Home Assistant device display name. (default: Victron Inverter) [$MQTT_HA_DEVICE_NAME]
|
||||
--mqtt.username= Set the MQTT username [$MQTT_USERNAME]
|
||||
--mqtt.password= Set the MQTT password [$MQTT_PASSWORD]
|
||||
--mqtt.password-file= Path to a file containing the MQTT password [$MQTT_PASSWORD_FILE]
|
||||
```
|
||||
|
||||
The MQTT client can be enabled by setting the environment variable `MQTT_ENABLED=true` or flag `--mqtt.enabled`.
|
||||
All MQTT configuration can be done via flags or as environment variables.
|
||||
The URI for the broker can be configured format should be `scheme://host:port`, where "scheme" is one of "tcp", "ssl", or "ws".
|
||||
|
||||
When `--mqtt.command_topic` is configured, the application subscribes to that topic and accepts JSON write commands.
|
||||
The recommended command for inverter control follows the same model used by `victron-mk3`:
|
||||
|
||||
```json
|
||||
{
|
||||
"request_id": "optional-correlation-id",
|
||||
"kind": "panel_state",
|
||||
"switch": "on",
|
||||
"current_limit": 16.5
|
||||
}
|
||||
```
|
||||
|
||||
`switch` supports `charger_only`, `inverter_only`, `on`, and `off` (or numeric values `1..4`).
|
||||
`current_limit` is in amps and optional. If omitted, only the switch state is changed.
|
||||
To update only the current limit (while preserving the last known mode), send:
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": "panel_state",
|
||||
"current_limit": 12.0
|
||||
}
|
||||
```
|
||||
|
||||
If no prior mode is known (for example on a fresh broker state), this command is rejected until a mode command is sent once.
|
||||
|
||||
Standby can be controlled with:
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": "standby",
|
||||
"standby": true
|
||||
}
|
||||
```
|
||||
|
||||
Low-level writes are still supported:
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": "setting",
|
||||
"id": 15,
|
||||
"value": 1
|
||||
}
|
||||
```
|
||||
|
||||
`kind` supports `panel_state`, `setting`, and `ram_var` (with aliases for each).
|
||||
The result is published to `--mqtt.status_topic` with status `ok` or `error`.
|
||||
|
||||
### Home Assistant
|
||||
|
||||
Enable Home Assistant auto-discovery with:
|
||||
|
||||
```bash
|
||||
--mqtt.ha.enabled
|
||||
```
|
||||
|
||||
When enabled, `invertergui` publishes retained discovery payloads and availability under:
|
||||
|
||||
- `{topic-root}/homeassistant/availability` (`online`/`offline`)
|
||||
- `{discovery_prefix}/sensor/{node_id}/.../config`
|
||||
- `{discovery_prefix}/binary_sensor/{node_id}/.../config`
|
||||
- `{discovery_prefix}/select/{node_id}/remote_panel_mode/config` (if command topic is configured)
|
||||
- `{discovery_prefix}/number/{node_id}/remote_panel_current_limit/config` (if command topic is configured)
|
||||
- `{discovery_prefix}/switch/{node_id}/remote_panel_standby/config` (if command topic is configured)
|
||||
|
||||
The discovered entities include battery/input/output sensors, a data-valid diagnostic binary sensor,
|
||||
plus remote panel controls for:
|
||||
|
||||
- `Remote Panel Mode` (`on`, `off`, `charger_only`, `inverter_only`)
|
||||
- `Remote Panel Current Limit` (AC input current limit in amps)
|
||||
- `Remote Panel Standby` (prevent device sleep while off)
|
||||
|
||||
The combined mode + current limit behavior is provided through the `panel_state` MQTT command kind,
|
||||
which mirrors `victron_mk3.set_remote_panel_state`.
|
||||
|
||||
## TTY Device
|
||||
|
||||
The intertergui application makes use of a serial tty device to monitor the Multiplus.
|
||||
@@ -360,4 +462,4 @@ This repos includes a [Grafana](https://grafana.com/) dashboard in the [grafana
|
||||
[release-badge]: https://img.shields.io/github/v/release/diebietse/invertergui
|
||||
[release-link]: https://github.com/diebietse/invertergui/releases
|
||||
[codecov-badge]: https://codecov.io/gh/diebietse/invertergui/branch/master/graph/badge.svg?token=xTLfEzoqYF
|
||||
[codecov-link]: https://codecov.io/gh/diebietse/invertergui
|
||||
[codecov-link]: https://codecov.io/gh/diebietse/invertergui
|
||||
|
||||
Reference in New Issue
Block a user