This repository was archived by the owner on Oct 7, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsolarmanager.go
More file actions
49 lines (39 loc) · 1.16 KB
/
Copy pathsolarmanager.go
File metadata and controls
49 lines (39 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main
import (
"github.com/ingmarstein/solarmanager-go/solarmanager"
"log"
)
type solarManagerProvider struct {
c *solarmanager.Client
id string
}
func newSolarManagerProvider(username string, password string, id string) *solarManagerProvider {
return &solarManagerProvider{
c: solarmanager.NewClient(nil, nil, username, password),
id: id,
}
}
func (smp *solarManagerProvider) Open() error {
return nil
}
func (smp *solarManagerProvider) Close() error {
return nil
}
func (smp *solarManagerProvider) CurrentPowerExport() (float64, error) {
gd, err := smp.c.GetGatewayData(smp.id)
if err != nil {
return 0, err
}
export := float64(gd.CurrentPvGeneration - gd.CurrentPowerConsumption + gd.CurrentBatteryChargeDischarge)
return export, nil
}
func (smp *solarManagerProvider) Init() {
info, err := smp.c.GetGatewayInfo(smp.id)
if err != nil {
log.Printf("failed to get SolarManager gateway info: %v", err)
return
}
log.Printf("Connected to SolarManager gateway %s (%s)", info.Gateway.Name, info.Gateway.SmId)
log.Printf("SolarManager gateway version: %s", info.Gateway.Firmware)
log.Printf("SolarManager gateway IP: %s", info.Gateway.Ip)
}