»DWD Prognose der Bienenflugintensität« per Markdown ins Grafana einbetten

Über

Bei Panel für Webcam-Bild, das regelmäßig aktualisiert wird haben wir geschaut, wie sich Bilder von anderswo optimal ins Grafana einbetten lassen. Hier schauen wir, wie das gleiche gut mit Markdown Inhalten klappen könnte.

Use-case

Bei DWD-Prognose Bienenflug haben wir eine API vorbereitet, die Bienenflugprognosedaten vom DWD in die JSON und Markdown Formate übersetzt.

Prognose des Bienenfluges in Potsdam

Datum morgens mittags abends
Mi 24.05. gering mittel hoch
Do 25.05. hoch sehr hoch sehr hoch
Fr 26.05. mittel hoch hoch

Hi.

Gibt es eigentlich für die HTTP API, die der Eumel bereitstellt, schon irgendeine Art von Grafana Visualisateur?

https://apicast.hiveeyes.org/beeflight/forecast/germany/brandenburg/potsdam?translate=false&format=json
https://apicast.hiveeyes.org/beeflight/forecast/germany/brandenburg/potsdam?format=json-machine

Viele Grüße,
Andreas.


P.S.: Wenn irgendein Grafana Plugin Markdown rendern könnte, dann wären wir mit diesem Endpunkt hier [1] schon nahe am Ziel, nicht?

Prognose des Bienenfluges in Potsdam

Datum morgens mittags abends
Mi 24.05. gering mittel hoch
Do 25.05. hoch sehr hoch sehr hoch
Fr 26.05. mittel hoch hoch

  1. https://apicast.hiveeyes.org/beeflight/forecast/germany/brandenburg/potsdam?translate=false&format=table-markdown ↩︎

Das neulich bei Panel für Webcam-Bild, das regelmäßig aktualisiert wird verwendete, bereits eingebaute “Text” Panel kann Markdown rendern, siehe Dashboard HTML and Markdown embedding. Derzeit ist es aber leider nur statisch, es bräuchte entweder eine dynamische Variante, oder eine andere Komponente, die das im Intervall aktualisiert.

image

1 Like

Wir haben auf swarm leider immer noch Grafana 6.7.6. Es wird Zeit.

! Grafana Update auf "swarm.hiveeyes.org"!
Giving the backend software infrastructure some love (2022)

1 Like

Habe es bei dynamic-text-testing mit dem GitHub - VolkovLabs/volkovlabs-dynamictext-panel: A dynamic, data-driven text for @grafana. versucht, konnte aber nicht herausfinden, dass man damit irgendwie Markdown von Ferne laden und darstellen könnte. Das was man im Beispiel sieht, ist auch statisch.

Wahrscheinlich müssen wir doch die JSON API anzapfen, mit Introduction | JSON API for Grafana, und dann selbst rendern.

Das Base64 Image/Video/Audio/PDF Panel ist auch nett, aber leider ebenfalls knapp dran vorbei.

Base64 Image/Video/Audio/PDF Panel 3.5.0 | Volkov Labs
GitHub - VolkovLabs/volkovlabs-image-panel: Base64 Image/Video/Audio/PDF Panel for @grafana.

Lösung

Mit ein wenig mehr JavaScript Code klappt es nun tadellos. Wir haben den Markdown Renderer schließlich nicht umsonst in die Apicast API eingebaut ;]. [1]

image
– Siehe Beispiel-Dashboard HTML and Markdown embedding.

Rezept

Das Rezept gibt es bei [markdown-remote] Rendering Markdown fetched from a remote location, with interval-based refresh and cache busting by amotl · Pull Request #2 · panodata/grafana-snippets · GitHub, siehe auch README.

Backlog


  1. GitHub - astanin/python-tabulate: Pretty-print tabular data in Python, a library and a command-line utility. Repository migrated from bitbucket.org/astanin/python-tabulate. FTW! ↩︎

1 Like

sehr schön. ich als end-tester mit niedrigschwellenbedarf kann das auf anhieb anwenden.
dabei fällt mir auf: bei wahl der englischen übersetzung kommt ein lustiges sprachgemisch raus:

Beeflight forecast for Berlin-Tempelhof (1)

date morning noon evening
Do 25.05. strong sehr strong sehr strong
Fr 26.05. medium sehr strong strong
Sa 27.05. strong sehr strong sehr strong
2 Likes

Wunderbar, so soll es sein.

Das ist uns gestern auch schon aufgefallen – danke.

Translation for "very strong" (probability) is wrong · Issue #14 · hiveeyes/apicast · GitHub

Mega gut, Leute! das gefällt mir ordentlich! Vielen Dank!

1 Like

hm.
irgendwas am panel oder am link im panel scheint kaputt zu sein. hier der link aus meinem panel, der vorgestern noch funktioniert hat:

https://apicast.hiveeyes.org/beeflight/forecast/germany/berlin/berlin-tempelhof?translate=true&ormat=table-markdown

sagt heute:

{"error":"'No such station'"}

ich schicke es hier ein, obwohl @Andreas schon mal ein auf den ersten blick ganz ähnliches problem dort gelöst hat, weils mit apicast am cli funktioniert:

:~$ apicast beeflight forecast --station=berlin/berlin-tempelhof
[
    {
        "Datum": "Mo 05.06.",
        "morgens": "sehr hoch",
        "mittags": "sehr hoch",
        "abends": "sehr hoch"
    },
    {
        "Datum": "Di 06.06.",
        "morgens": "hoch",
        "mittags": "sehr hoch",
        "abends": "hoch"
    },
    {
        "Datum": "Mi 07.06.",
        "morgens": "hoch",
        "mittags": "sehr hoch",
        "abends": "sehr hoch"
    }
]
1 Like

Hier tauchen auch keine Stationen auf: https://apicast.hiveeyes.org/

Klappt wieder, nach dem Neustart des Dienstes. Kannst Du gerne das nächste Mal ggf. selber…?

root@elbanco:~$ systemctl restart apicast

Berichte gerne aber trotzdem wieder über etwaige Schluckaufs, wir nehmen den Dienst ja quasi gerade eben erst in Betrieb, also insofern dass Ihr anfangt, ihn zu nutzen.

Im Apicast ist ein Caching der Inhalte vom DWD eingebaut. Also wenn da zum Zeitpunkt der Abfrage was schief lief, kann es vielleicht zu dem beobachteten Verhalten kommen. Genaueres weiß ich aber auch nicht – im Log journalctl -u apicast -n1000 ist nichts zu sehen, aber das ist auch nur STDOUT. Ich muss STDERR wohl auch dazunehmen, um weiteres herausfinden zu können.

2 Likes

Fixed with Fix translation "sehr hoch" => "intensive" · hiveeyes/apicast@6ac7d57 · GitHub. Außerdem gibt es noch Add content and copyright attribution to Markdown output by amotl · Pull Request #39 · hiveeyes/apicast · GitHub als Neuerung. Die Änderungen sind in apicast 0.9.0 enthalten und wurden gerade ausgespielt.

Release 0.9.0 · hiveeyes/apicast · GitHub
https://apicast.hiveeyes.org/

Ich hoffe das passt für Euch so auch ins Grafana, dass das Markdown Rendering nun die Datenherkunftsattribution unten drinne hat?

1 Like