+9
-8
@@ -54,12 +54,8 @@ type AlphaEss struct {
|
|||||||
client *modbus.ModbusClient
|
client *modbus.ModbusClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAlphaEss(cfg AlphaConf) (*AlphaEss, error) {
|
func NewAlphaEss(cfg AlphaConf) *AlphaEss {
|
||||||
a := &AlphaEss{cfg: cfg}
|
return &AlphaEss{cfg: cfg} // connect lazily on first Poll
|
||||||
if err := a.connect(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return a, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlphaEss) connect() error {
|
func (a *AlphaEss) connect() error {
|
||||||
@@ -100,9 +96,14 @@ func (a *AlphaEss) readReg(r alphaReg) (float32, error) {
|
|||||||
return float32(raw) * r.factor, nil
|
return float32(raw) * r.factor, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Poll reads all AlphaEss registers. On connection error it attempts one
|
// Poll reads all AlphaEss registers. Connects on first call; on error
|
||||||
// reconnect before returning the error.
|
// attempts one reconnect before returning.
|
||||||
func (a *AlphaEss) Poll() (*InverterData, error) {
|
func (a *AlphaEss) Poll() (*InverterData, error) {
|
||||||
|
if a.client == nil {
|
||||||
|
if err := a.connect(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
data, err := a.poll()
|
data, err := a.poll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("alphaess poll error, reconnecting: %v", err)
|
log.Printf("alphaess poll error, reconnecting: %v", err)
|
||||||
|
|||||||
@@ -31,10 +31,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
alpha, err := NewAlphaEss(cfg.AlphaEss)
|
alpha := NewAlphaEss(cfg.AlphaEss)
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("alphaess: %v", err)
|
|
||||||
}
|
|
||||||
defer alpha.Close()
|
defer alpha.Close()
|
||||||
|
|
||||||
meters, err := NewMeterPoller(cfg.MQTT)
|
meters, err := NewMeterPoller(cfg.MQTT)
|
||||||
|
|||||||
Reference in New Issue
Block a user