Skip to content
Merged
12 changes: 10 additions & 2 deletions templates/definition/charger/lambda-zewotherm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,24 @@ requirements:
Energiemanagementeinstellungen am Gerät:

- E-Meter Kommunikationsart: "ModBus Client"
- E-Meter Messpunkt: "Pos. E-Überschuss"
- E-Meter Messpunkt: "Pos. E-Überschuss" oder "Neg. E-Überschuss"
en: |
Energy management settings of the device:

- E-Meter communication type: "ModBus Client"
- E-Meter measuring point: "Pos. E-Überschuss"
- E-Meter measuring point: "Pos. Excess Energy" or "Neg. Excess Energy"
params:
- name: host
- name: tempsource
type: choice
choice: ["warmwater_top", "warmwater_bottom", "buffer_top", "buffer_bottom"]
- name: excess
type: choice
choice: ["plus", "minus"]
default: "plus"
description:
de: E-Überschuss ("plus" oder "minus")
en: Excess Energy ("plus" or "minus")
- name: phases
deprecated: true
- name: watchdog
Expand All @@ -47,6 +54,7 @@ render: |
address: 102 # PV Überschussleistung
type: writemultiple # λ erwartet single value als FC16
decode: int16
scale: {{ if eq .excess "plus" }}1{{ else }}-1{{ end }}
power:
source: modbus
uri: {{ .host }}:502
Expand Down
7 changes: 6 additions & 1 deletion util/modbus/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,12 @@ func (r Register) EncodeFunc() (func(float64) ([]byte, error), error) {
case strings.HasPrefix(enc, "bool"):
fallthrough

case strings.HasPrefix(enc, "int") || strings.HasPrefix(enc, "uint"):
case strings.HasPrefix(enc, "int"):
return r.encodeToBytes(func(v float64) uint64 {
return uint64(int64(v))
})

case strings.HasPrefix(enc, "uint"):
return r.encodeToBytes(func(v float64) uint64 {
return uint64(v)
})
Expand Down
Loading