From e86694c57b35432dcabe92af34c41d9ca0d46533 Mon Sep 17 00:00:00 2001 From: Jordan Hotmann Date: Mon, 18 Dec 2023 12:40:45 -0700 Subject: [PATCH] Clean state for use in subject string --- internal/homeassistant/subscriber.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/homeassistant/subscriber.go b/internal/homeassistant/subscriber.go index e245dc7..e7e6f34 100644 --- a/internal/homeassistant/subscriber.go +++ b/internal/homeassistant/subscriber.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "fmt" + "strings" "time" "log/slog" @@ -142,11 +143,13 @@ func handleMessages() { logger.Error("Error marshalling event data", "error", marshallErr) } go nats.SetKeyValueString(fmt.Sprintf("homeassistant.states.%s", message.Event.Data.EntityId), message.Event.Data.NewState.State) + stateReplacer := strings.NewReplacer(" ", "_", ".", ",", "*", "_", ">", "_") + cleanedState := stateReplacer.Replace(message.Event.Data.NewState.State) if message.Event.Data.NewState.State == message.Event.Data.OldState.State { logger.Debug("State unchanged, publishing to attributes topic") - nats.Publish(fmt.Sprintf("homeassistant.attributues.%s.%s", message.Event.Data.EntityId, message.Event.Data.NewState.State), data) + nats.Publish(fmt.Sprintf("homeassistant.attributues.%s.%s", message.Event.Data.EntityId, cleanedState), data) } else { - nats.PublishRequest(fmt.Sprintf("homeassistant.states.%s.%s", message.Event.Data.EntityId, message.Event.Data.NewState.State), data, defaultTimeout, 2) + nats.PublishRequest(fmt.Sprintf("homeassistant.states.%s.%s", message.Event.Data.EntityId, cleanedState), data, defaultTimeout, 2) } case zhaEventId: data, _ := json.Marshal(message.Event.Data)