Fix modbus reading values ignored (#458)

This commit is contained in:
andig 2020-11-20 18:09:39 +01:00 • committed by GitHub
parent cd63d93f4f
commit 84dd7d8f20
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 26 deletions

View file

@ -58,10 +58,7 @@ func NewModbusFromConfig(other map[string]interface{}) (api.Meter, error) {
conn.Logger(log.TRACE)
// prepare device
var device meters.Device
if err == nil {
device, err = modbus.NewDevice(cc.Model, cc.SubDevice, *cc.RTU)
}
device, err := modbus.NewDevice(cc.Model, cc.SubDevice, *cc.RTU)
if err == nil {
err = device.Initialize(conn)

View file

@ -63,26 +63,6 @@ func NewModbusFromConfig(other map[string]interface{}) (*Modbus, error) {
cc.Value = "Power"
}
// model + value configured
if cc.Value != "" {
cc.Value = modbus.ReadingName(cc.Value)
if err := modbus.ParseOperation(device, cc.Value, &op); err != nil {
return nil, fmt.Errorf("invalid value %s", cc.Value)
}
// if sunspec reading configured make sure model is defined or device won't be initialized
if op.SunSpec.Point != "" && cc.Model == "" {
cc.Model = "SunSpec"
}
}
// register configured
if cc.Register.Decode != "" {
if op.MBMD, err = modbus.RegisterOperation(cc.Register); err != nil {
return nil, err
}
}
// model configured
if cc.Model != "" {
device, err = modbus.NewDevice(cc.Model, cc.SubDevice, *cc.RTU)
@ -96,10 +76,25 @@ func NewModbusFromConfig(other map[string]interface{}) (*Modbus, error) {
err = nil
}
}
if err != nil {
return nil, err
}
}
if err != nil {
return nil, err
// model + value configured
if cc.Value != "" {
cc.Value = modbus.ReadingName(cc.Value)
if err := modbus.ParseOperation(device, cc.Value, &op); err != nil {
return nil, fmt.Errorf("invalid value %s", cc.Value)
}
}
// register configured
if cc.Register.Decode != "" {
if op.MBMD, err = modbus.RegisterOperation(cc.Register); err != nil {
return nil, err
}
}
mb := &Modbus{