diff --git a/internal/services/services.go b/internal/services/services.go index 8275474..7a13902 100644 --- a/internal/services/services.go +++ b/internal/services/services.go @@ -25,7 +25,8 @@ func BuildService[ Number | Scene | TTS | - Vacuum, + Vacuum | + ZWaveJS, ](conn *ws.WebsocketWriter, ctx context.Context) *T { return &T{conn: conn, ctx: ctx} } diff --git a/internal/services/zwavejs.go b/internal/services/zwavejs.go new file mode 100644 index 0000000..f19fc6f --- /dev/null +++ b/internal/services/zwavejs.go @@ -0,0 +1,29 @@ +package services + +import ( + "context" + + ws "saml.dev/gome-assistant/internal/websocket" +) + +/* Structs */ + +type ZWaveJS struct { + conn *ws.WebsocketWriter + ctx context.Context +} + +/* Public API */ + +// ZWaveJS bulk_set_partial_config_parameters service. +func (zw ZWaveJS) BulkSetPartialConfigParam(entityId string, parameter int, value any) { + req := NewBaseServiceRequest(entityId) + req.Domain = "zwave_js" + req.Service = "bulk_set_partial_config_parameters" + req.ServiceData = map[string]any{ + "parameter": parameter, + "value": value, + } + + zw.conn.WriteMessage(req, zw.ctx) +} diff --git a/service.go b/service.go index 1fd80b8..f75a3d5 100644 --- a/service.go +++ b/service.go @@ -27,6 +27,7 @@ type Service struct { Scene *services.Scene TTS *services.TTS Vacuum *services.Vacuum + ZWaveJS *services.ZWaveJS } func newService(conn *ws.WebsocketWriter, ctx context.Context, httpClient *http.HttpClient) *Service { @@ -49,5 +50,6 @@ func newService(conn *ws.WebsocketWriter, ctx context.Context, httpClient *http. Scene: services.BuildService[services.Scene](conn, ctx), TTS: services.BuildService[services.TTS](conn, ctx), Vacuum: services.BuildService[services.Vacuum](conn, ctx), + ZWaveJS: services.BuildService[services.ZWaveJS](conn, ctx), } }