2022-10-10 19:50:29 +01:00
|
|
|
# Solax2MQTT
|
|
|
|
|
|
|
|
Scrapes the HTTP endpoint of a Solax X1-Boost G3 with PocketWIFI v3 firmware and
|
|
|
|
pushes the scraped values to an MQTT server. Other inverter models are available
|
|
|
|
but I only have access to this one.
|
|
|
|
|
|
|
|
Most of the data for this project came from [`squishykid/solax`](https://github.com/squishykid/solax).
|
|
|
|
|
|
|
|
Configuration is currently done by editing the source code and recompiling.
|
|
|
|
|
|
|
|
PocketWIFI is dreadfully insecure. Use Modbus-RTU or, at the very least, a
|
|
|
|
PocketLAN, if you can. I'll be switching as soon as I'm able to.
|
|
|
|
|
|
|
|
The PocketWIFI squirts MQTTS to their cloud servers, but they don't verify TLS
|
|
|
|
so it can be trivially intercepted. However, the messages are in a useless (to
|
|
|
|
me) binary format.
|
2022-10-10 19:53:34 +01:00
|
|
|
|
|
|
|
Once the metrics are in MQTT, they can be sent to prometheus using
|
|
|
|
[`mqtt2prometheus`](https://github.com/hikhvar/mqtt2prometheus):
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
---
|
|
|
|
# Remaining mqtt2prometheus options...
|
|
|
|
json_parsing:
|
|
|
|
separator: .
|
|
|
|
metrics:
|
|
|
|
- prom_name: inverter_ac_volts
|
|
|
|
mqtt_name: inverter.ac_net_voltage_volts
|
|
|
|
help: AC voltage measured by the inverter
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_ac_output_amps
|
|
|
|
mqtt_name: inverter.ac_out_current_amps
|
|
|
|
help: Inverter AC current
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_ac_output_watts
|
|
|
|
mqtt_name: inverter.ac_out_power_watts
|
|
|
|
help: Inverter AC power
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_pv1_volts
|
|
|
|
mqtt_name: inverter.pv1_voltage_volts
|
|
|
|
help: String 1 voltage
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_pv1_amps
|
|
|
|
mqtt_name: inverter.pv1_current_amps
|
|
|
|
help: String 1 current
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_pv1_watts
|
|
|
|
mqtt_name: inverter.pv1_power_watts
|
|
|
|
help: String 1 power
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_ac_hz
|
|
|
|
mqtt_name: inverter.ac_net_frequency_hz
|
|
|
|
help: AC frequency measured by the inverter
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_status
|
|
|
|
mqtt_name: inverter.status
|
|
|
|
help: Inverter status
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_generated_kwh_total
|
|
|
|
mqtt_name: inverter.energy_generated_kwh_total
|
|
|
|
help: KWh generated to date
|
|
|
|
type: counter
|
|
|
|
- prom_name: inverter_generated_kwh_today
|
|
|
|
mqtt_name: inverter.energy_generated_kwh_today
|
|
|
|
help: KWh generated today
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_external_temperature_kelvin
|
|
|
|
mqtt_name: inverter.temp_external_kelvin
|
|
|
|
help: Temperature measured from the outside of the inverter
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_internal_temperature_kelvin
|
|
|
|
mqtt_name: inverter.temp_internal_kelvin
|
|
|
|
help: Temperature measured from the inside of the inverter
|
|
|
|
type: gauge
|
|
|
|
- prom_name: inverter_runtime_hours_total
|
|
|
|
mqtt_name: inverter.runtime_hours
|
|
|
|
help: Inverter runtime
|
|
|
|
type: counter
|
|
|
|
```
|