add Timer service

This commit is contained in:
Sam Lewis
2025-05-31 14:22:59 -04:00
parent cd839c618a
commit 1700dbdeb9
3 changed files with 72 additions and 0 deletions

View File

@@ -26,6 +26,7 @@ func BuildService[
Scene |
Script |
TTS |
Timer |
Vacuum |
ZWaveJS,
](conn *ws.WebsocketWriter) *T {

View File

@@ -0,0 +1,69 @@
package services
import (
ws "saml.dev/gome-assistant/internal/websocket"
)
/* Structs */
type Timer struct {
conn *ws.WebsocketWriter
}
/* Public API */
// See https://www.home-assistant.io/integrations/timer/#action-timerstart
func (t Timer) Start(entityId string, duration string) error {
req := NewBaseServiceRequest(entityId)
req.Domain = "timer"
req.Service = "start"
req.ServiceData = map[string]any{
"duration": duration,
}
return t.conn.WriteMessage(req)
}
// See https://www.home-assistant.io/integrations/timer/#action-timerstart
func (t Timer) Change(entityId string, duration string) error {
req := NewBaseServiceRequest(entityId)
req.Domain = "timer"
req.Service = "change"
req.ServiceData = map[string]any{
"duration": duration,
}
return t.conn.WriteMessage(req)
}
// See https://www.home-assistant.io/integrations/timer/#action-timerpause
func (t Timer) Pause(entityId string) error {
req := NewBaseServiceRequest(entityId)
req.Domain = "timer"
req.Service = "pause"
return t.conn.WriteMessage(req)
}
// See https://www.home-assistant.io/integrations/timer/#action-timercancel
func (t Timer) Cancel() error {
req := NewBaseServiceRequest("")
req.Domain = "timer"
req.Service = "cancel"
return t.conn.WriteMessage(req)
}
// See https://www.home-assistant.io/integrations/timer/#action-timerfinish
func (t Timer) Finish(entityId string) error {
req := NewBaseServiceRequest(entityId)
req.Domain = "timer"
req.Service = "finish"
return t.conn.WriteMessage(req)
}
// See https://www.home-assistant.io/integrations/timer/#action-timerreload
func (t Timer) Reload() error {
req := NewBaseServiceRequest("")
req.Domain = "timer"
req.Service = "reload"
return t.conn.WriteMessage(req)
}

View File

@@ -25,6 +25,7 @@ type Service struct {
Number *services.Number
Scene *services.Scene
Script *services.Script
Timer *services.Timer
TTS *services.TTS
Vacuum *services.Vacuum
ZWaveJS *services.ZWaveJS
@@ -51,6 +52,7 @@ func newService(conn *ws.WebsocketWriter) *Service {
Number: services.BuildService[services.Number](conn),
Scene: services.BuildService[services.Scene](conn),
Script: services.BuildService[services.Script](conn),
Timer: services.BuildService[services.Timer](conn),
TTS: services.BuildService[services.TTS](conn),
Vacuum: services.BuildService[services.Vacuum](conn),
ZWaveJS: services.BuildService[services.ZWaveJS](conn),