Fix modbus reading values ignored (#458)
This commit is contained in:
parent
cd63d93f4f
commit
84dd7d8f20
2 changed files with 18 additions and 26 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue