summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2026-03-22 10:21:36 +0100
committerxengineering <me@xengineering.eu>2026-03-22 10:23:46 +0100
commite7f93692e0c605311c9e8568488e8bb416115319 (patch)
treebe69799b481c9d4c69666ae69bf64943efcc4079 /tools
parent637c168aa164b0420c3f63fa818019b171ac92fc (diff)
downloadsia-server-e7f93692e0c605311c9e8568488e8bb416115319.tar
sia-server-e7f93692e0c605311c9e8568488e8bb416115319.tar.zst
sia-server-e7f93692e0c605311c9e8568488e8bb416115319.zip
tools: websocket: Quote and prettify RX JSON
This makes the responses from the Shelly device readable.
Diffstat (limited to 'tools')
-rw-r--r--tools/websocket.go39
1 files changed, 22 insertions, 17 deletions
diff --git a/tools/websocket.go b/tools/websocket.go
index b956ee8..31c39fb 100644
--- a/tools/websocket.go
+++ b/tools/websocket.go
@@ -35,16 +35,7 @@ func main() {
}
defer c.Close()
- go func() {
- for {
- _, message, err := c.ReadMessage()
- if err != nil {
- log.Println("read:", err)
- return
- }
- log.Printf("recv: %s", message)
- }
- }()
+ go rx(c)
getConfig(c)
@@ -89,26 +80,40 @@ func getConfig(c *websocket.Conn) {
tx(c, request)
}
-func tx(c *websocket.Conn, d string) {
- input := []byte(d)
+func rx(c *websocket.Conn) {
+ for {
+ _, message, err := c.ReadMessage()
+ if err != nil {
+ log.Println("read:", err)
+ return
+ }
+ log.Println(quote(prettify(string(message)), "< "))
+ }
+}
- var parsed any
+func tx(c *websocket.Conn, d string) {
+ log.Println(quote(prettify(d), "> "))
- err := json.Unmarshal(input, &parsed)
+ err := c.WriteMessage(websocket.TextMessage, []byte(d))
if err != nil {
log.Fatal(err)
}
+}
- pretty, err := json.MarshalIndent(parsed, "", " ")
+func prettify(input string) string {
+ var parsed any
+
+ err := json.Unmarshal([]byte(input), &parsed)
if err != nil {
log.Fatal(err)
}
- log.Println(quote(string(pretty), "> "))
- err = c.WriteMessage(websocket.TextMessage, pretty)
+ pretty, err := json.MarshalIndent(parsed, "", " ")
if err != nil {
log.Fatal(err)
}
+
+ return string(pretty)
}
func quote(input string, quotation string) string {