Stats4Lox - Das Statistik-Plugin

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11243

    #751
    Hat dein Loxone-User eingeschränkte Rechte?

    Der Download von
    Code:
    http://<deinMiniserver>/dev/fsget/prog/sps_0250_20250120162618.zip
    funktioniert nicht. Du kannst das im Browser mal probieren.

    lg Christian

    Code-Referenz:

    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar


    • Louis Dandl
      Louis Dandl kommentierte
      Kommentar bearbeiten
      Der Nutzer (Servicenutzer für Loxberry) hat alle Rechte. Im Browser (Chrome) funktioniert der Zugriff nach Anmeldung, der Verbindungscheck in der Miniserververwaltung des Loxberry sagt dass alles passt.
      Wenn ich die Datei über den Browser öffne wird kein File Runtergeladen, ich bekomme einen Haufen Text / Encoding Kauderwelsch. (Inch nehme an der Browser stellt das ZIP als HTML dar. Alle Dateien der Fileliste sind so aufrufbar, der Loxberry scheitert schon an der ersten Datei.
  • puntloos
    Azubi
    • 07.02.2025
    • 2

    #752
    Ein Problem, das ich habe: Bei der Verwendung von stats4lox und grafana sieht es so aus, als ob Abfragen oft fehlschlagen und keine Daten in grafana eingehen. Wenn ich dann in grafana/s4l spiele, kommen ein oder zwei Datenpunkte an. Sonst nichts. Was kann die Ursache dafür sein?

    Angehängte Dateien

    Kommentar


    • schü
      schü kommentierte
      Kommentar bearbeiten
      ich habe das selbe Problem seit LoxoneConfig_1531213, ich dachte zuerst die Speicherkarte wäre defekt, da hatte ich das problem schonmal

      aber es sieht so aus als hätte loxone etwas geändert und es geht nun nicht mehr - mich wunderts das nicht mehr das problem haben
  • bovless
    Azubi
    • 09.02.2025
    • 1

    #753
    Hallo zusammen.
    Vielleicht kann mir hier jemand weiterhelfen.

    Ich wollte mir das Plugin Stats4Lox auf meinem LB ausprobieren. Leider scheitere ich schon bei der installation des Plugins.
    Jedes mal wird die Installtion bei einem gewissen Punkt abgebrochen.

    Ich habe schon mehrmals versucht die Dateien wieder zu entfernen-Neustart/Neuinstallation bzw. verschiedenste Softwarestände des Plugins zu installieren.
    Immer mit dem gleichen Ergebniss
    Im Anhang die Fehlermeldung sowie die Logfile.


    Das Plugin lässt sich starten, jedoch funktionieren natürlich durch die fehlerhafte Installtion die Dienste nicht.

    System:
    Raspberry 5 8GB
    Loxberry v3.0.1.2

    Da ich noch relativ neu im Bereich Loxberry bin, sind meine Linux Kenntnisse eher bescheiden....
    Angehängte Dateien

    Kommentar

    • Maverick2805
      Smart Home'r
      • 14.05.2023
      • 31

      #754
      Zitat von doj
      Hallo! Ich hab seit ca. 2 Wochen Stats4Lox auf einer Synology als VM am Laufen und es funktioniert extrem gut! Danke für das tolle Plugin!
      Jetzt hätte ich noch gern meine alten Zählerstände (Monatswerte von Strom, Wasser, Heizung, ... als Excel-File) irgendwie in die Datenbank importiert. Gibt es da eine "einfache" Lösung?
      Was ich bisher gelesen hab, ist das extrem mühsam (csv-Export-Import).

      Danke im Voraus!
      Hallo Zusammen

      Ich habe nach langer Suche im Forum endlich gefunden, wonach ich schon ewig gesucht habe :-) eine Möglichkeit nachträglich Daten in die influxDB zu schreiben. Mit ein bisschen Weiterforschen habe ich es geschafft die Daten zu speichern. Falls es jemandem mal hilft, wie man die Daten nachträglich reinschreibt, habe ich es kurz dokumentiert (vielleicht stand das schon irgendwo mal, aber ich habs ned gefunden) :-)

      File wie bei inserttestdata.sh von https://wiki.loxberry.de/plugins/sta...flux_ausfuhren aufbereiten und lokal speichern.
      Datum Zeit in Excel umwandeln in UNIX Nanosekunden geht mit dieser Formel
      =(A1-DATUM(1970;1;1))*86400 * 1000000000
      Danach ins Loxberry wechseln, und im Filemanager die .sh Datei hochladen. Im Terminal dann zum Speicherort wechseln und der Datei die notwendigen Rechte geben, um sie ausführen zu können.
      chmod +x inserttesetdata.sh
      . Danach ausführen mit
      ./inserttestdata.sh

      Einzig, was bei mir nicht funktioniert hat ist der zwei Wörter lange Measurement Titel "Energy Wärmepumpe". Das hat bei mir zu einem Fehler geführt.
      Ich schreibe das nun einfach in ein anderes Measurement (Energy_WaermepumpeOLD), dann geht es. In Grafana muss ich einfach dann die Daten zusammenführen.
      Hat da jemand eine Ahnung, was da das Problem sein könnte? Mit doppelten Anführungszeichen hats nicht geklappt und ich erhielt
      unable to parse '"Energy Wärmepumpe" Mr=0.851 1726693200000000000': invalid field format
      Herzlichen Dank für eure Hinweise :-)

      Und vielen Dank für das tolle Plugin, ich liebe es ;-) Endlich coole Statistiken, Darstellungen und Auswertungsmöglichkeiten.

      Beste Grüsse
      Mav

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11243

        #755
        Du kannst mal 'einfache Quotes' probieren, oder mit Backslash escapen
        Code:
        \"
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar


        • Maverick2805
          Maverick2805 kommentierte
          Kommentar bearbeiten
          Irgendwie hat's meinen Kommentar nicht gespeichert. Danke für den Tip, versuche ich beim nächsten Mal :-)
      • puntloos
        Azubi
        • 07.02.2025
        • 2

        #756
        Ich habe festgestellt, dass in der Datei /var/log/telegraf/telegraf.log bei bestimmten logtype immer wieder Fehler auftreten. Ich bin mir ziemlich sicher, dass diese api calls einfach zufällig beendet werden, sobald ein Fehler auftritt. Deshalb wurden bei mir zufällige Diagramme beendet und dann neu gestartet. Die Ingestion-Pipeline – Telegraf – scheint parallel zu laufen, gibt aber auf, sobald eine Statistik fehlschlägt. (Funktionsanfrage: Nicht aufgeben!)

        Leider habe ich kein konkretes Beispiel, da meine logfiles derzeit sauber sind. Kurz gesagt:
        1/ Melden Sie sich bei der Loxberry-VM an.
        2/ Sehen Sie sich /var/log/telegraf/telegraf.log an.
        3/ Suchen Sie nach Fehlern. Möglicherweise wird dort „Textformat not supported“ angezeigt.
        4/ Entfernen Sie die entsprechende Metrik aus Ihrer Stats4lox-Ingestion.
        5/ Wiederholen Sie den Vorgang.

        (sorry, my german isn't great so I'm relying on google translate)
        Zuletzt geändert von puntloos; 14.03.2025, 18:48.

        Kommentar

        • t_heinrich
          Lox Guru
          • 07.01.2016
          • 2088

          #757
          Hallo zusammen,

          besteht die Möglichkeit die aufbereiteten Daten (vermutlich aus der Datenbank Influx) in HomeAssistant weiter zu nutzen?

          Konkret würde ich mich gerne an einem Energie-Dashboard in Homeassistant versuchen.

          Dafür möchte ich die Daten vom Stats4Lox Plugin verwenden.

          Danke euch!

          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4805

            #758
            Klar geht das. Username/Passwort der influx Datenbank findest du in Config- oder Data-Ordner des Plugins (kann gerade nicht schauen).

            danit dann einfach auf die Influx DB zugreifen.
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar

          • jim
            Azubi
            • 10.12.2024
            • 1

            #759
            Zitat von jim
            Hallo,

            Auch ich hatte ein ähnliches Problem, dass der Import meiner historischen Daten vom Elementtyp "MeterAbsUni" nicht funktionierte. Ich habe ChatGPT gefragt. Unten ist die Lösung von ChatGPT, die bei mir funktioniert. :-)
            Eine ähnliche Lösung wird voraussichtlich auch für "MeterPUni" möglich sein.

            Antwort von ChatGPT:
            1. Mapping für METERABSUNI hinzufügen
            Datei /opt/loxberry/bin/plugins/stats4lox/libs/Globals.pm
            Platzieren Sie im Abschnitt "IMPORT MAPPINGS" direkt unter den vorhandenen Zuordnungen (ungefähr in den Zeilen 47) Folgendes :
            # Mapping for METERABSUNI (Gen 1 meter: output1=”actual” → Pf, output2=”total” → Mr)
            $ImportMapping->{METERABSUNI} = [
            { statpos => "0", lxlabel => "Pf" },
            { statpos => "1", lxlabel => "Mr" }
            ];

            Ihre Globals.pm wird nach der Anpassung ungefähr so ​aussehen (verkürzte Ansicht um die Zuordnungen herum):
            # IMPORT MAPPINGS

            # How should data columns from a Loxone stat file map to outputs
            # statpos --> index in the Loxone stat file (0-based index)
            # lxlabel --> label of the output to map to

            # Individual mappings by control type

            our $ImportMapping = {};
            $ImportMapping->{ENERGY} = [
            { statpos => "0", lxlabel => "Default" },
            { statpos => "0", lxlabel => "AQ" },
            { statpos => "1", lxlabel => "AQp" }
            ];

            $ImportMapping->{FRONIUS} = [
            { statpos => "0", lxlabel => "Default" },
            { statpos => "0", lxlabel => "AQp" },
            { statpos => "1", lxlabel => "AQc" },
            { statpos => "2", lxlabel => "AQv" },
            { statpos => "3", lxlabel => "AQPs" },
            { statpos => "4", lxlabel => "AQSs" },
            { statpos => "5", lxlabel => "AQp4" },
            { statpos => "6", lxlabel => "AQc4" },
            { statpos => "7", lxlabel => "AQd4" },
            { statpos => "8", lxlabel => "AQi4" }
            ];

            # Mapping for METERABSUNI (Gen 1 meter: output1=”actual” → Pf, output2=”total” → Mr)
            $ImportMapping->{METERABSUNI} = [
            { statpos => "0", lxlabel => "Pf" },
            { statpos => "1", lxlabel => "Mr" }
            ];

            # DEFAULT MAPPING
            $ImportMapping->{Default} = [
            { statpos => "0", lxlabel => "Default" },
            { statpos => "0", lxlabel => "AQ"}
            ];



            2. Anpassen der getStatlist Anzeige von _1 und _2 Dateien
            Datei /opt/loxberry/bin/plugins/stats4lox/libs/Loxone/Import.pm
            Ersetzen Sie den gesamten if ( defined $uuid ) { … } Abschnitt "-" im Unterabschnitt "getStatlist" (in Ihrer Version etwa Zeile 203) durch:
            if ( defined $uuid ) {
            # Support for Gen 1 METERABSUNI: for both uuid_1 and uuid_2
            my %months;
            foreach my $key ( keys %resultsAll ) {
            if ( $key eq $uuid or $key =~ /^\Q$uuid\E_[12]$/ ) {
            $months{$_} = 1 for @{ $resultsAll{$key} };
            }
            }
            my @monthlist = sort keys %months;
            if ( @monthlist ) {
            $log->DEB("$me Responding combined array: " . join(",", @monthlist));
            return @monthlist;
            }
            else {
            $log->DEB("$me No statistics for uuid $uuid (also no _1/_2).");
            return;
            }
            }
            Dadurch wird sichergestellt, dass Sie auch dann die Liste der verfügbaren Monate erhalten, wenn sowohl als auch im Verzeichnis _1.YYYYMM.xml und _2.YYYYMM.xml vorhanden sind.



            3. getMonthStat Erweitern für kombinierte Dateien
            Suchen Sie in derselben Datei "Import.pm" nach dem Unterelement "getMonthStat" (ab ungefähr Zeile 279). Direkt über der bestehenden Linie:
            my $url = "/stats/$uuid.$yearmon.xml";
            Fügen Sie vor dieser Zeile den folgenden Code hinzu :
            # For METERABSUNI (Gen 1) data is stored in two files: actual (_1) and total (_2)
            my $type_uc = uc($self->{statobj}->{type});
            if ( $type_uc eq 'METERABSUNI' ) {
            $log->DEB("$me MeterAbsUni: fetch from group1 (_1) and group2 (_2) for $yearmon");
            # helper for fetching 1 file
            sub _fetchFile {
            my ($self, $name) = @_;
            my $msno = $self->{msno};
            my $url = "/stats/$name";
            my $retry = 0;
            my ($xml, $st);
            while ($retry++ < 5) {
            my $fh = lockMiniserver($msno);
            ($xml, $st) = LoxBerry::IO::mshttp_call2($msno,$url,(timeout=>$h ttp_timeout*$retry));
            close $fh;
            last if $xml;
            sleep 2;
            }
            return ($xml, $st);
            }
            # fetch actual (Pf)
            my ($xml1, $st1) = $self->_fetchFile("$uuid\_1.$yearmon.xml");
            my $dat1 = $self->parseStatXML_REGEX(yearmon=>$yearmon, xml=>\$xml1);
            # fetch total (Mr)
            my ($xml2, $st2) = $self->_fetchFile("$uuid\_2.$yearmon.xml");
            my $dat2 = $self->parseStatXML_REGEX(yearmon=>$yearmon, xml=>\$xml2);
            # combine
            my @combined;
            for my $i (0..$#{$dat1->{values}}) {
            my $t = $dat1->{values}[$i]{T};
            my $v1 = $dat1->{values}[$i]{val}[0];
            my $v2 = $dat2->{values}[$i]{val}[0];
            push @combined, { T => $t, val => [ $v1, $v2 ] };
            }
            return { yearmon => $yearmon, values => \@combined };
            }
            # otherwise just import existing file:
            my $url = "/stats/$uuid.$yearmon.xml";

            Mit dieser Modifikation werden für ein METERABSUNI-Element zunächst beide Dateien abgerufen und dann zu einem Datenmodell mit zwei Werten pro Zeitstempel zusammengeführt, die über das Mapping als Pf und Mr weiter in InfluxDB eingespeist werden.

            Starten Sie den Stats4Lox-Daemon oder Cronjob neu, um sicherzustellen, dass der neue Code geladen wird.



            Zusamenfassend
            1. Globals.pm : Zuordnung für METERABSUNI hinzugefügt.
            2. Import.pm :
            getStatlisterweitert, damit auch uuid_1/uuid_2 erkannt werden.
            getMonthStatgeändert, um zwei Dateien bei METERABSUNI abzurufen und zu kombinieren.

            Nach diesen Änderungen sollte das Plugin nach import von historischen Dateien schöne Pf und Mr Werte anzeigen in Grafana Webinterface für beispielsweise PV-Erzeugung (MeterAbsUni).



            Grüße, Jim
            Angehängte Dateien

            Kommentar

            • Louis Dandl
              Azubi
              • 16.05.2024
              • 3

              #760
              Servus, danke für das Spitzen Plugin!

              Leider ist mir mein USB Stick kaputt gegangen. Ich weiß - kein Mitleid ohne Backup...
              Jetzt würde ich gerne eine neue SSD an den PI anschließen und auf der SSD einen Neue Datenbank generieren, sodass ich die Werte von Loxone neu "Abonnieren" muss.
              Gibt es da eine Lösung? Wäre eine super Sache, die Meisten Daten bekomm ich eh nochmal vom Miniserver, es sind jedoch relativ viele Metriken konfiguriert.

              Vielen Dank schon einmal für euere Hilfe!

              Kommentar

              Lädt...