Script: Google Charts: x-Achse mit 24 Stunden Einteilung und sauberer Anzeige der Zwischenwerte

  • Moin,
    ich möchte mit Google Chart ein 24 Stunden Diagramm für den Stromverbrauch erstellen. Die x-Achse soll dabei von 0 bis 24 beschriftet werden und alle 5 Minuten einen Messwert darstellen. Die x-Achsen Beschriftung bekomme ich zwar im 2 Stunden Intervall hin, aber die Beschriftung wird schräg angezeigt. Außerdem wird die Zeit in Dezimalstellen angezeigt, wenn die Maus darüber fährt. Ich verwende für die x-Achsenbeschriftung einen Zähler (cnt) von 0-288 den ich durch 12 teile. Entspricht alle 5 Min. ein Wert.


    Hier das Testscript dazu:

    Gibt es eine Möglichkeit die Anzeige der Uhrzeit so zu ändern, dass wenn ich mit der Maus darüber fahre statt z.B. 15.83 15:50 angezeigt wird? Und wie schaffe ich es, Hilfsgitterlinien auf der x-Achse je Stunde darzustellen? Ich bin ratlos.

    Für Ideen oder auch Vorschläge bin ich dankbar.

    Thomas

    3 Mal editiert, zuletzt von Thomas Fu (15. Dezember 2024 um 16:27)

  • Moin,

    ich habe mal weiter nach einer Lösung für einen Zeitintervall von 5 Minuten gesucht und bin auf der Tasmota -> Scripting Language Seite
    Scripting - Tasmota
    unter Google Charts auf den Type Timeline gestoßen:
    - T=Timeline (special type arrays contains start,stop pairs in minutes timeofday

    Zu timeofday habe ich auf dieser Seite etwas gefunden:

    Aber ich komme nicht weiter. Ich habe mal ein kleines Testprogramm nur für das Erstellen eines 24h-Charts geschrieben mit der Zeile wcs var chart=new google.visualization.Timeline(document.getElementById('day'));
    Es wird aber kein Chart dargestellt. Ich vermute, dass ich nach arrayToDataTable bei der Syntax für die Werte des Datensatzes was gehörig falsch mache. Kann mir hier einer helfen? Das wäre prima.

  • Moin,

    eins vorweg: Das Grundgerüst für diesen Code habe ich Ottelo von der folgenden Seite zu verdanken:

    Stromzähler mit einem ESP8266 / ESP32 mit Tasmota auslesen und darstellen
    Werte an eure Smart Home Steuerzentrale senden z.B. Home Assistant, ioBroker, openHAB, FHEM Werte können direkt auf dem ESP8266 grafisch dargestellt werden…
    ottelo.jimdofree.com

    Ich habe einen Lösungsweg mit dem Datentyp „timeofday“ gefunden:

    Der Datentyp timeofday setzt sich immer aus Stunde, Minute, Sekunde und optional Millisekunde zusammen, z.B. [8,14,1,13] - 8 Stunden, 14 Min, 1 Sek., 13 Millisek..

    Der aktuelle Datensatz wird im Chart rot dargestellt.

    Da bei einer Liniendarstellung der Datenpunkt nicht gezielt mit der Maus oder auch mit dem Finger ausgewählt werden kann (siehe Versatz des Mauszeigers):

    wurde noch eine transparente Säulendarstellung hinzugefügt, die sich sehr gezielt auswählen lässt:

    Damit der Code auch für Anfänger übersichtlicher ist, habe ich neben der unübersichtlichen Programmierschreibweise den laufenden Code optisch lesbarer direkt darunter aufgeführt. Der unübersichtliche Code beginnt mit einem Semikolon und danach ohne Leerzeichen direkt weiter. Leider frisst die übersichtlichere Schreibweise aber Speicher, der bei einem ESP 8266 sehr begrenzt ist.

    Das Script habe ich als Anlage angehängt.

    Ich habe die Erfahrung gemacht, dass bei mehr als 285 Zeichen in einer Befehlszeile eine neue Befehlszeile angefangen werden muss! Der über 285 Zeichen darüber hinaus gehende Code in der Befehlszeile wurde einfach nicht beachtet.

    Viel Erfolg beim Umgang mit den google charts.

    Dateien

    3 Mal editiert, zuletzt von Thomas Fu (17. Januar 2025 um 12:12) aus folgendem Grund: Datei angehängt; Kommentare in Datei überarbeitet und noch die Setzung eines Testpunktes und ein paar Prüfwerte eingefügt.