template: smartfox-em2 products: - brand: Smartfox description: generic: Pro - brand: Smartfox description: generic: Pro 2 - brand: Smartfox description: generic: Pro Light - brand: Smartfox description: generic: Pro Light 2 - brand: Smartfox description: generic: Light (EM2 firmware) requirements: description: de: | `aux` kann für die Leistung der Warmwasserbereitung verwendet werden. en: | `aux` can be used for water heating power. params: - name: usage choice: ["grid", "pv", "aux"] - name: host - name: cache advanced: true default: 1s render: | {{- define "uri" -}} http://{{ .host }}/values.xml {{- end }} type: custom # jq: parse json generated from response values.xml (https://jqplay.org is your friend to test queries) {{- if eq .usage "grid" }} power: # grid power in W source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="detailsPowerValue")."#content" | rtrimstr(" W") energy: # grid energy in kWh source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="energyValue")."#content" | rtrimstr(" kWh") voltages: # grid voltages in V - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="voltageL1Value")."#content" | rtrimstr(" V") - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="voltageL2Value")."#content" | rtrimstr(" V") - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="voltageL3Value")."#content" | rtrimstr(" V") currents: # grid currents in A - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="ampereL1Value")."#content" | rtrimstr(" A") - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="ampereL2Value")."#content" | rtrimstr(" A") - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="ampereL3Value")."#content" | rtrimstr(" A") powers: # grid powers in W - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="powerL1Value")."#content" | rtrimstr(" W") - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="powerL2Value")."#content" | rtrimstr(" W") - source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="powerL3Value")."#content" | rtrimstr(" W") {{- end }} {{- if eq .usage "pv" }} # PV power and energy values are delivered for each inverter, we select them via regex and sum the values power: # PV power in W source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: '[.values.value[] | select(.attrid|test("wr\\d+PowerValue"))."#content" | rtrimstr(" kW") | tonumber] | add' scale: 1000 # wr1PowerValue, ..., wr5PowerValue are in kW energy: # PV energy in kWh source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: '[.values.value[] | select(.attrid|test("wr\\d+EnergyValue"))."#content" | rtrimstr(" kWh") | tonumber] | add' {{- end }} {{- if eq .usage "aux" }} power: # heating power in W source: http cache: {{ .cache }} uri: {{ include "uri" . }} jq: .values.value[] | select(.attrid=="htPowerMeasValue")."#content" | rtrimstr(" kW") scale: 1000 {{- end }}