evcc-io/meter/mbmd_operation.go
2025-07-13 16:35:56 +02:00

35 lines
803 B
Go

package meter
import (
"fmt"
"strings"
"github.com/volkszaehler/mbmd/meters"
"github.com/volkszaehler/mbmd/meters/rs485"
)
// isRS485 determines if model is a known MBMD rs485 device model
func isRS485(model string) bool {
for k := range rs485.Producers {
if strings.EqualFold(model, k) {
return true
}
}
return false
}
// rs485FindDeviceOp checks is RS485 device supports operation
func rs485FindDeviceOp(ops []rs485.Operation, name string) (op rs485.Operation, err error) {
measurement, err := meters.MeasurementString(name)
if err != nil {
return rs485.Operation{}, fmt.Errorf("invalid measurement: %s", name)
}
for _, op := range ops {
if op.IEC61850 == measurement {
return op, nil
}
}
return op, fmt.Errorf("unsupported measurement: %s", measurement.String())
}