-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemperature_sensor.go
53 lines (42 loc) · 1.19 KB
/
temperature_sensor.go
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
50
51
52
53
package hkuvr
import (
"github.com/brutella/hc/characteristic"
"github.com/brutella/hc/service"
"github.com/brutella/uvr"
"fmt"
)
type TemperatureSensor struct {
*service.TemperatureSensor
Name *characteristic.Name
subIndex uint8
}
func NewTemperatureSensor(subIndex uint8) *TemperatureSensor {
svc := TemperatureSensor{}
svc.subIndex = subIndex
svc.TemperatureSensor = service.NewTemperatureSensor()
svc.TemperatureSensor.CurrentTemperature.SetMinValue(-100)
svc.TemperatureSensor.CurrentTemperature.SetMaxValue(1500)
svc.Name = characteristic.NewName()
svc.Name.SetValue("Unbenannt")
svc.AddCharacteristic(svc.Name.Characteristic)
return &svc
}
func (svc *TemperatureSensor) SubIndex() uint8 {
return svc.subIndex
}
func (svc *TemperatureSensor) Service() *service.Service {
return svc.TemperatureSensor.Service
}
func (svc *TemperatureSensor) Update(c *uvr.Client) error {
inlet := uvr.NewInlet(svc.subIndex)
if value, err := c.Read(inlet.Value); err == nil {
if float, ok := value.(float32); ok == true {
svc.CurrentTemperature.SetValue(float64(float))
} else {
return fmt.Errorf("Inlet state of unknown type %v", value)
}
} else {
return err
}
return nil
}