Wpis z mikrobloga

Mam sterownik który udostępnia po websocket nastawy i aktualne temperatury, chciałem zrobić sobie z tego wykres np. w Grafana.
Trafiłem na pewne trudności, nie będzie to raczej plug&play:

Po połączeniu websocket sterownik odpowiada :
{"wrkfnc":true,"type":10,"name":null,"args":null}
ja muszę odesłać to samo, potem kolejne polecenie z loginem i hasłem a następnie sterownik wysyła sam kazdą zmianę parametru w takiej formie :

{"wrkfnc":true,"type":1,"name":"poolDataChanged","args":[[{"pool":"P4","field":"v1","value":44},{"pool":"P4","field":"v1","value":44.5}],"nr-ser"]} 12:02:11.266
{"wrkfnc":true,"type":1,"name":"poolDataChanged","args":[[{"pool":"P4","field":"v1","value":44},{"pool":"P4","field":"v1","value":44.5}, "pool":"P4","field":"v1","value":44},{"pool":"P4","field":"v1","value":44.5},{"pool":"P4","field":"v1","value":44}],"nr-ser"]} 12:04:11.269
{"wrkfnc":true,"type":1,"name":"poolDataChanged","args":[[{"pool":"P4","field":"v3","value":21},{"pool":"P4","field":"v3","value":21.5},{"pool":"P4","field":"v3","value":21},{"pool":"P4","field":"v3","value":21.5},{"pool":"P4","field":"v3","value":21}],"nr-ser"]} 12:14:11.239

Postawiłem GrafanaOSS na docker, znalazłem wtyczkę websocket api i tutaj zaczynają się problemy.
Po pewnym kombinowaniu, błędach plugin unavailable i błedzie websocket bad handshake.. udało mi się odebrać wiadomość powitalną sterownika w widoku dashboard.

Jednak.. zam pomocą pól Custom Headers i Query Parameters nie ma możliwości aby wysłać 2 komendy inicjujące wysyłanie ??

( wtyczka https://grafana.com/grafana/plugins/golioth-websocket-datasource/, https://grafana.com/blog/2022/04/05/how-to-use-websockets-to-visualize-real-time-iot-data-in-grafana/ )

Moze ktoś ma pomysł jak to dalej ruszyć ?

Coś mi się wydaje że nici z tej wtyczki i pewnie:
1. muszę polączyć się z tym websocket np za pomocą pythona, jakoś przemielić te dane na bardziej czytelne
2. gdzieś je zapisywać aby grafana mogła to odczytać ?

Nie miałem styczności z Grafaną, pisać w Pythonie nie umiem ale jak się zaprę to pewnie to zrobię potrzebuję tylko podpowiedzi jakich bibliotek, baz itp użyć i nie błądzić godzinami wynajdując koło na nowo ;)

#programowanie #linux #python #docker #grafana #elektronika #diy #frontend #pytanie
  • 2
@morik: grafana tylko czyta dane więc musisz jej zapodać źródło danych. Czyli może wrzucaj te rzeczy do bazy jakiejś?
przykładowo, cytując:

Send this data to elasticseacrh, index it and connect elasticseacrh to grafana. If youre new to elasticseacrh, look at graylog with elasticseach and have graylog handle the indexing together with a plugin called cerebro. This stuff can be fun once you get the hang of it.


ale możesz użyć dowolnej
@morik: Imho powinieneś iść w kierunku endpointu /metrics, zbierania tego np do Prometheusa i podłączeniu promka jako backend do grafany

Możesz napisać np skrypt w pythonie który robi 'init' połączenia ze sterownikiem, ściąga dane, możesz potem dowolnie je przemielić i wystawić przez endpoint HTTP, to zbiera prometheus via scrape_config, grafanie podajesz URL do Promka i masz dostępne metryki.