From 473eb22b9773367f6ecd5b65aee72c92cfa695ef Mon Sep 17 00:00:00 2001 From: Adrian Zuercher Date: Sun, 29 Jun 2025 15:36:14 +0200 Subject: [PATCH] fix missing subscribe and publish on artNet Protocol --- driver/artNet.go | 27 +++++++++++++++++++++------ driver/publish.go | 17 +++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 driver/publish.go diff --git a/driver/artNet.go b/driver/artNet.go index 34ab8ef..e26e0c9 100644 --- a/driver/artNet.go +++ b/driver/artNet.go @@ -4,6 +4,7 @@ import ( "artNet/cfg" "artNet/models" ws "artNet/websocket" + "encoding/json" "fmt" "path" @@ -101,7 +102,23 @@ func (d *ArtNetDriver) Connect(ip, id string, port uint) error { } client.OnMessage = func(data []byte) { - fmt.Println(100, string(data)) + + request := json_data.NewResponse() + err = json.Unmarshal(data, &request) + if err != nil { + return + } + if request.Subscribe != nil { + d.Subscribe(request.Subscribe...) + } + if request.Publish != nil { + d.Publish(request.Publish...) + } + } + + if err != nil { + d.Log.Error("artNet.Connect", err) + return err } req := json_data.NewRequest() @@ -112,10 +129,8 @@ func (d *ArtNetDriver) Connect(ip, id string, port uint) error { d.Log.Error("websocket send data", err) } - for { - select { - case err := <-errChan: - return err - } + for err := range errChan { + return err } + return nil } diff --git a/driver/publish.go b/driver/publish.go new file mode 100644 index 0000000..3f2cb7a --- /dev/null +++ b/driver/publish.go @@ -0,0 +1,17 @@ +package driver + +import ( + json_dataModels "github.com/tecamino/tecamino-json_data/models" +) + +func (d *ArtNetDriver) Publish(pubs ...json_dataModels.Publish) error { + if d.Subscriptions == nil { + return nil + } + for _, pub := range pubs { + if drv, ok := (d.Subscriptions)[pub.Uuid]; ok { + d.SetValue(drv.Bus, drv.Address, uint8(pub.Value.(float64))) + } + } + return nil +}