diff --git a/accessory/fan.go b/accessory/fan.go new file mode 100644 index 00000000..5c262849 --- /dev/null +++ b/accessory/fan.go @@ -0,0 +1,23 @@ +package accessory + +import ( + "github.com/brutella/hc/service" +) + +type Fan struct { + *Accessory + + Fan *service.Fan +} + +// NewFan returns a fan accessory containing one fan service. +func NewFan(info Info) *Fan { + acc := Fan{} + acc.Accessory = New(info, TypeFan) + acc.Fan = service.NewFan() + + acc.AddService(acc.Fan.Service) + + return &acc +} + diff --git a/accessory/heater_cooler.go b/accessory/heater_cooler.go new file mode 100644 index 00000000..c69a38d9 --- /dev/null +++ b/accessory/heater_cooler.go @@ -0,0 +1,21 @@ +package accessory + +import ( + "github.com/brutella/hc/service" +) + +type HeaterCooler struct { + *Accessory + + HeaterCooler *service.HeaterCooler +} + +// NewSwitch returns a heater which implements model.Heater. +func NewHeaterCooler(info Info) *HeaterCooler { + acc := HeaterCooler{} + acc.Accessory = New(info, TypeHeater) + acc.HeaterCooler = service.NewHeaterCooler() + acc.AddService(acc.HeaterCooler.Service) + + return &acc +} diff --git a/accessory/window_covering.go b/accessory/window_covering.go new file mode 100644 index 00000000..1850d450 --- /dev/null +++ b/accessory/window_covering.go @@ -0,0 +1,23 @@ +package accessory + +import ( + "github.com/brutella/hc/service" +) + +type WindowCovering struct { + *Accessory + + WindowCovering *service.WindowCovering +} + +// NewWindowCovering returns a WindowCovering which implements model.WindowCovering. +func NewWindowCovering(info Info) *WindowCovering { + acc := WindowCovering{} + acc.Accessory = New(info, TypeWindowCovering) + + acc.WindowCovering = service.NewWindowCovering() + + acc.AddService(acc.WindowCovering.Service) + + return &acc +} diff --git a/service/heater_cooler.go b/service/heater_cooler.go index fabd72fd..1dfd7626 100644 --- a/service/heater_cooler.go +++ b/service/heater_cooler.go @@ -1,4 +1,5 @@ // THIS FILE IS AUTO-GENERATED +// Modified by mestafin package service import ( @@ -14,6 +15,8 @@ type HeaterCooler struct { CurrentHeaterCoolerState *characteristic.CurrentHeaterCoolerState TargetHeaterCoolerState *characteristic.TargetHeaterCoolerState CurrentTemperature *characteristic.CurrentTemperature + + TargetTemperature *characteristic.TargetTemperature } func NewHeaterCooler() *HeaterCooler { @@ -32,5 +35,8 @@ func NewHeaterCooler() *HeaterCooler { svc.CurrentTemperature = characteristic.NewCurrentTemperature() svc.AddCharacteristic(svc.CurrentTemperature.Characteristic) + svc.TargetTemperature = characteristic.NewTargetTemperature() + svc.AddCharacteristic(svc.TargetTemperature.Characteristic) + return &svc } diff --git a/service/window_covering.go b/service/window_covering.go index 1d1a0810..6f268180 100644 --- a/service/window_covering.go +++ b/service/window_covering.go @@ -13,6 +13,8 @@ type WindowCovering struct { CurrentPosition *characteristic.CurrentPosition TargetPosition *characteristic.TargetPosition PositionState *characteristic.PositionState + // + HoldPosition *characteristic.HoldPosition } func NewWindowCovering() *WindowCovering { @@ -28,5 +30,8 @@ func NewWindowCovering() *WindowCovering { svc.PositionState = characteristic.NewPositionState() svc.AddCharacteristic(svc.PositionState.Characteristic) + svc.HoldPosition = characteristic.NewHoldPosition() + svc.AddCharacteristic(svc.HoldPosition.Characteristic) + return &svc }