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)
}