From c28cba8e91f0cdb437f0821984d9cd3b7d6d86c6 Mon Sep 17 00:00:00 2001 From: Sam Lewis Date: Sun, 25 Feb 2024 21:49:04 -0500 Subject: [PATCH] add Script service --- internal/services/script.go | 52 +++++++++++++++++++++++++++++++++++ internal/services/services.go | 1 + service.go | 2 ++ 3 files changed, 55 insertions(+) create mode 100644 internal/services/script.go diff --git a/internal/services/script.go b/internal/services/script.go new file mode 100644 index 0000000..b80dbbb --- /dev/null +++ b/internal/services/script.go @@ -0,0 +1,52 @@ +package services + +import ( + "context" + + ws "saml.dev/gome-assistant/internal/websocket" +) + +/* Structs */ + +type Script struct { + conn *ws.WebsocketWriter + ctx context.Context +} + +/* Public API */ + +// Reload a script that was created in the HA UI. +func (s Script) Reload(entityId string) { + req := NewBaseServiceRequest(entityId) + req.Domain = "script" + req.Service = "reload" + + s.conn.WriteMessage(req, s.ctx) +} + +// Toggle a script that was created in the HA UI. +func (s Script) Toggle(entityId string) { + req := NewBaseServiceRequest(entityId) + req.Domain = "script" + req.Service = "toggle" + + s.conn.WriteMessage(req, s.ctx) +} + +// Turn off a script that was created in the HA UI. +func (s Script) TurnOff() { + req := NewBaseServiceRequest("") + req.Domain = "script" + req.Service = "turn_off" + + s.conn.WriteMessage(req, s.ctx) +} + +// Turn on a script that was created in the HA UI. +func (s Script) TurnOn(entityId string) { + req := NewBaseServiceRequest(entityId) + req.Domain = "script" + req.Service = "turn_on" + + s.conn.WriteMessage(req, s.ctx) +} diff --git a/internal/services/services.go b/internal/services/services.go index 7a13902..9b16492 100644 --- a/internal/services/services.go +++ b/internal/services/services.go @@ -24,6 +24,7 @@ func BuildService[ Notify | Number | Scene | + Script | TTS | Vacuum | ZWaveJS, diff --git a/service.go b/service.go index f75a3d5..566d425 100644 --- a/service.go +++ b/service.go @@ -25,6 +25,7 @@ type Service struct { Notify *services.Notify Number *services.Number Scene *services.Scene + Script *services.Script TTS *services.TTS Vacuum *services.Vacuum ZWaveJS *services.ZWaveJS @@ -48,6 +49,7 @@ func newService(conn *ws.WebsocketWriter, ctx context.Context, httpClient *http. Notify: services.BuildService[services.Notify](conn, ctx), Number: services.BuildService[services.Number](conn, ctx), Scene: services.BuildService[services.Scene](conn, ctx), + Script: services.BuildService[services.Script](conn, ctx), TTS: services.BuildService[services.TTS](conn, ctx), Vacuum: services.BuildService[services.Vacuum](conn, ctx), ZWaveJS: services.BuildService[services.ZWaveJS](conn, ctx),