generated from rmcguire/go-server-with-otel
45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package econetgrpc
|
|
|
|
import (
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
|
|
pb "gitea.libretechconsulting.com/rmcguire/econet-exporter/api/econet/v1alpha1"
|
|
"gitea.libretechconsulting.com/rmcguire/econet-exporter/pkg/econet/econetclient"
|
|
)
|
|
|
|
func deviceToProto(d *econetclient.Device) *pb.Device {
|
|
return &pb.Device{
|
|
SerialNumber: d.SerialNumber,
|
|
DeviceId: d.DeviceID,
|
|
FriendlyName: d.FriendlyName,
|
|
Type: d.Type,
|
|
GenericType: d.GenericType,
|
|
Connected: d.Connected,
|
|
WifiSignal: int32(d.WiFiSignal),
|
|
Mode: d.Mode,
|
|
Enabled: d.Enabled,
|
|
Running: d.Running,
|
|
RunningState: d.RunningState,
|
|
Setpoint: int32(d.Setpoint),
|
|
SetpointMin: int32(d.SetpointMin),
|
|
SetpointMax: int32(d.SetpointMax),
|
|
HotWaterAvailability: int32(d.HotWaterAvailability),
|
|
AlertCount: int32(d.AlertCount),
|
|
Away: d.Away,
|
|
LastUpdated: timestamppb.New(d.LastUpdated),
|
|
SupportedModes: supportedModes(d.SupportedModes()),
|
|
}
|
|
}
|
|
|
|
// supportedModes maps the device's mode slugs to proto enums, dropping any that
|
|
// aren't settable (e.g. "unknown").
|
|
func supportedModes(slugs []string) []pb.Mode {
|
|
out := make([]pb.Mode, 0, len(slugs))
|
|
for _, slug := range slugs {
|
|
if m, ok := modeFromSlug(slug); ok {
|
|
out = append(out, m)
|
|
}
|
|
}
|
|
return out
|
|
}
|