add Script service

This commit is contained in:
Sam Lewis
2024-02-25 21:49:04 -05:00
parent a9aad16cf3
commit c28cba8e91
3 changed files with 55 additions and 0 deletions

View File

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

View File

@@ -24,6 +24,7 @@ func BuildService[
Notify | Notify |
Number | Number |
Scene | Scene |
Script |
TTS | TTS |
Vacuum | Vacuum |
ZWaveJS, ZWaveJS,

View File

@@ -25,6 +25,7 @@ type Service struct {
Notify *services.Notify Notify *services.Notify
Number *services.Number Number *services.Number
Scene *services.Scene Scene *services.Scene
Script *services.Script
TTS *services.TTS TTS *services.TTS
Vacuum *services.Vacuum Vacuum *services.Vacuum
ZWaveJS *services.ZWaveJS ZWaveJS *services.ZWaveJS
@@ -48,6 +49,7 @@ func newService(conn *ws.WebsocketWriter, ctx context.Context, httpClient *http.
Notify: services.BuildService[services.Notify](conn, ctx), Notify: services.BuildService[services.Notify](conn, ctx),
Number: services.BuildService[services.Number](conn, ctx), Number: services.BuildService[services.Number](conn, ctx),
Scene: services.BuildService[services.Scene](conn, ctx), Scene: services.BuildService[services.Scene](conn, ctx),
Script: services.BuildService[services.Script](conn, ctx),
TTS: services.BuildService[services.TTS](conn, ctx), TTS: services.BuildService[services.TTS](conn, ctx),
Vacuum: services.BuildService[services.Vacuum](conn, ctx), Vacuum: services.BuildService[services.Vacuum](conn, ctx),
ZWaveJS: services.BuildService[services.ZWaveJS](conn, ctx), ZWaveJS: services.BuildService[services.ZWaveJS](conn, ctx),