LoxBerry: Statistik Plugin - Diskussion

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

    #46
    Hannes Schellnast
    Dein Input ist willkommen! Zu deinen Punkten.
    Grundsätzlich möchte ich die eigentliche Problematik nochmal herausstreichen:
    Das Problem ist nicht Speicherplatz! Selbst wenn man die Minutenwerte für 10 Jahre speichert, sind das gerade mal ca. 40 MB.
    Das Problem ist immer die Aufbereitung für die Visualisierung!

    Möchte ich aus diesem minutenweisen Dataset ein Monat anzeigen, sind das ca. 43.000 Datenpunkte.
    Will ich die Tagesdurchschnittstemperaturen vom Jahr 2015 anzeigen, müssten 525.000 Datensätze gelesen und dann noch tageweise gemittelt werden.
    Mit RRDTool werden bei dieser Abfrage - mit meinen Vorgaben für die Standardeinstellung - exakt 365 Datensätze gelesen, und die sind schon gemittelt.

    Das eventbasierte Aufzeichnen ist grundsätzlich eine gute Idee, hat aber im Zusammenhang mit Loxone einige Nachteile:
    Dieses Event muss dann vom Miniserver ausgelöst werden. Schon alleine das Anlegen eines virtuellen Ausgangs zum Senden eines Wertes ist schon ziemlich lästig und fehleranfällig.
    Um in Loxone einen Zyklus (z.B. 5 Minuten) zu implementieren, sind pro Wert schon zusätzliche Funktionsbausteine nötig (Impulsgeber, Analogspeicher).
    Um dann noch eine Logik einzubauen, die Schwellen definiert, ab der mehr oder weniger gesendet werden soll, wäre pro Wert so aufwändig, dass man es besser gleich sein lässt.
    Daher haben wir das Pushen der Werte von Loxone gleich ad acta gelegt, weil für die Anwender das viel zu aufwändig wäre.

    Bezüglich der eventbasierten Aufzeichnung gäbe es dann auch auf der Empfängerseite Probleme:
    Das RRDTool kann das schon mal grundsätzlich gar nicht - hier muss der Zyklus eingehalten werden.
    Wenn eine andere Datenbank verwendet wird, die ein "Heartbeat" nicht berücksichtigt, gibt es meist wieder bei der Visualisierung Probleme. Zum einen - woher weiß ich, dass sich der Wert nicht geändert hat, oder ist vielleicht der Miniserver ausgefallen, oder die Netzwerkverbindung unterbrochen? Dann kann es ein Problem bei der Visualisierungssoftware geben, die zyklische Werte erwartet, oder dann zwischen zwei Werten interpoliert (um 8;00 Uhr war 14 Gead, um 12:00 Uhr war 20°, um 18:00 Uhr ist 10° - was macht die Visu draus? Was ist der Mittelwert?). Das muss dann auch wieder berücksichtigt werden.

    Am kompatibelsten sind jedenfalls zyklusbasierte Datenspeicherungen, und Platz ist wie gesagt kein Problem.

    lg, Christian
    Zuletzt geändert von Christian Fenzl; 04.11.2016, 14:52.
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar


    • Hannes Schellnast
      Hannes Schellnast kommentierte
      Kommentar bearbeiten
      Da muss ich dir recht geben. Loxone unterstützt bei den virtuellen Ausgängen keine "Range gesteuerte Ausgabe". D.h. bei analogen virtuellen Ausgängen wird der Wert bei jeder Änderung des Analogwertes geschickt. Das bewirkt in der Praxis, dass hier bei floatenden Analogsignalen (=Realität), der Wert sehr oft gesendet wird, und damit der Miniserver durch den entstehenden Traffic stark belastet wird. Hier wäre es von Vorteil wenn es eine Option gibt, welche es zulässt dass die Werte erst ab einer bestimmten Änderung übertragen werden. Eine solche Funktion stellt Loxone ja schon bei den virtuellen analogen Eingängen zur Verfügung.

      Grundsätzlich bin ich ein Freund des "Daten pushen" anstatt die Daten über http abzuholen. Man darf nicht vergessen, dass der Miniserver von einem 400MHz ARM-Prozessor angetrieben wird, dessen Hauptaufgabe es ist, mit seinem Realtimesystem auf Events mit entsprechender Logik in "Realtime" zu reagieren. Jede zusätzliche Belastung, wie sie z.B. http Pull-Kommandos zum Auslesen diverser Werte wären, stressen den Miniserver unnötig. Vielleicht kann man hier auf Loxone konstruktiv einwirken, um das Feature der schwellengesteuerten virtuellen analogen Ausgänge zu implementieren. Der Nutzen wäre ja nicht nur beim User, sondern vor allem bei Loxone, da sie dadurch Rechenpower sparen könnten.

      MfG
      Hannes
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4590

    #47
    Hallo zusammen,

    eine erste Alpha ist über Git verfügbar: https://github.com/mschlenstedt/LoxB...ive/master.zip

    Die Version ist nur für Interessierte/Entwickler/Tester, produktiv kann sie noch nicht eingesetzt werden.

    Implementiert ist:
    • Neue Statistik (= RRDTool-Datenbank) anlegen
    • Expertenmodus mit (fast) allen Einstellungen die RRDTool beim Anlegen einer DB bietet (Compute habe ich nicht integriert) sowie Standardmodus (vorgeschlagene Voreinstellungen von Christian Fenzl)
    • Holen der Daten Starten / Pausieren für jede Datenbank einstellbar
    • Pullen der Daten vom Miniserver und in die Datenbank schreiben
    • rrdcached ist voll integriert. Schreiben des Cache alle 60 Min -> Entlastung der SD-Karte
    Die geschriebenen Daten können aktuell nur per "rrdtool fetch" bzw "graph" manuell geholt werden. Die Datenbanken liegen unter ~/data/plugins/stats4lox/databases

    Wer testen möchte: Schaut bitte mal ob die Installationsroutine sauber durchläuft und ob Daten zu unterschiedlichen Zeiten (60s, 180s etc.) geholt werden. Gut wäre auch das Testen unterschiedlicher Werte mit unterschiedlichen Einheiten (diese werden nach dem Pullen automatisch gefiltert - ich hoffe mein Regex passt da ;-)). Ich habe mir dazu testweise Virt. Statusbausteine angelegt und diese in der Visu ausgeblendet. Diese hole ich dann per Stats4Lox.


    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 06-11-2016 15-13-54.png
Ansichten: 490
Größe: 55,9 KB
ID: 63376
    Zuletzt geändert von Prof.Mobilux; 06.11.2016, 15:14.
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11200

      #48
      Hallo Michael,
      d.h. du pullst alles und filterst, was in die DB kommt? Oder filterst du die Pulls?
      Weil ersteres hätte keinen Vorteil, das könntest auch an RRD schicken - das bildet dann selbst den Mittelwert für das Step-Intervall.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar


      • Prof.Mobilux
        Prof.Mobilux kommentierte
        Kommentar bearbeiten
        Ich filtere nur die Pulls, weil Loxone auch die Einheiten unter "value" im XML mitschickt.
    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11200

      #49
      Ich bin nächste Woche in München im Hotel, da werde ich viel Zeit haben für das Testen und meinen Loxone-Import :-)
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11200

        #50
        Bezüglich Import werde ich doch auf das XML vom Miniserver zurückgreifen. Ich hab damit getestet und es geht überraschend schnell. Dann bin ich auch sorgenfreier, wenn Loxone was am internen Format ändert.
        Dummerweise muss ich für die Loxone-Daten noch eine Serialisierung bauen, weil die bei Digital- und tw. Analogdaten nur die Änderungen aufzeichnen. Ich hab aber schon einen Plan.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar


        • Prof.Mobilux
          Prof.Mobilux kommentierte
          Kommentar bearbeiten
          Macht das nicht auch RRD? Ich hatte es so verstanden, dass er automatisch interpoliert solange der Wert noch innerhalb des Heartbeats liegt?
      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11200

        #51
        Ja, aber RRD interpoliert "falsch":
        Ein Digitalwert kommt im Loxone-XML als 1, und ist solange 1, bis im XML 0 kommt (in der Zeit sind keine Datensätze im XML)
        RRD würde die 1 mit der nächsten 0 verbinden, was falsch ist.
        Gleiches gilt bei Analogwerten, wenn die Statistik mit "jeder Änderung" angelegt ist.
        Zuletzt geändert von Christian Fenzl; 06.11.2016, 18:04.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

      • Prof.Mobilux
        Supermoderator
        • 25.08.2015
        • 4590

        #52
        Nochmal ein kurzes Update: Habe noch eine "Quickchart"-Funktion in der Statistik-Übersicht hinzugefügt (baut einen Graphen mit RRDTool zur schnellen Kontrolle) sowie die RRDInfo-Funktionalität (ebenfalls aus der Übersicht heraus).

        Das macht das Bugfixen in der jetzigen Alpha wesentlich einfacher.

        Download direkt aus GIT: https://github.com/mschlenstedt/LoxB...ive/master.zip
        🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


        LoxBerry - Beyond the Limits

        Kommentar

        • Christian Fenzl
          Lebende Foren Legende
          • 31.08.2015
          • 11200

          #53
          Hallo Michael,
          Installation läuft sauber durch. Neustart gemacht, und index.cgi lädt.
          Beim Statistik hinzufügen bekomme ich einen Error loading page:
          Code:
          [Sun Oct 30 22:17:12 2016] addstat.cgi: Can't locate String/Escape.pm in @INC (you may need to install the Str
          ing::Escape module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/
          perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /u
          sr/share/perl/5.20 /usr/local/lib/site_perl .) at /opt/loxberry/webfrontend/cgi/plugins/stats4lox/addstat.cgi
          line 25.
          [Sun Oct 30 22:17:12 2016] addstat.cgi: BEGIN failed--compilation aborted at /opt/loxberry/webfrontend/cgi/plu
          gins/stats4lox/addstat.cgi line 25.
          Zeile 25 ist use String::Escape qw( unquotemeta );
          Da fehlt ein Perl-Modul?
          lg, Christian
          Zuletzt geändert von Christian Fenzl; 06.11.2016, 23:57.
          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4590

            #54
            Hi,

            ja, das habe ich vergessen... Kannst Du mit

            Code:
            sudo apt-get install libstring-escape-perl
            nachinstallieren. Im GIT ist es bereits aktualisiert.
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar

            • Christian Fenzl
              Lebende Foren Legende
              • 31.08.2015
              • 11200

              #55
              Hallo Michael,

              Das databases-Verzeichnis existiert nicht, das müsstest du im Setup anlegen - da kommt beim Anlegen des RRDs ein Fehler.
              Wenn ein Fehler beim Anlegen kommt, wird das wahrscheinlich trotzdem in die DB geschrieben und er macht beim 2. Versuch gleich ein 0002.rrd

              Ich würde die Intervalleinstellung (1, 3, 5 usw.) noch nach oben vor die Experteneinstellungen holen (ich weiß, dafür braucht es dann pro Pollerintervall ein Standardsetting) und umbenennen in "Abfrageintervall".
              Die Experteneinstellungen finde ich ehrlich gesagt zu kompliziert (sogar mir). Für meinen Teil würde ich die Auswahl MIN/MAX/AVG/LAST weglassen und MIN/MAX/AVG immer implizit anlegen.
              Du erlaubst außerdem die "human-readable" Eingabe nicht (step: 10m, rows: 90d), und dann wird es wirklich kompliziert, wenn man selbst zum Rechnen anfangen muss.

              Wenn ich im Expertenmodus einen Fehler gemacht habe ("Du musst einen Start angeben") und ich gehe mit "Zurück" zurück, dann sind - bis auf die erste - meine RRA-Definitionen weg (das ist natürlich besonders bitter!). Vielleicht den Speichern-Button deaktivieren, wenn die Pflichtfelder nicht passen (Start = 0 wäre grundsätzlich legitim)
              Füge ich nach Zurück wieder welche hinzu, zählt er weiter bei der nächsten Nummer nach jener, die ich zuvor angelegt hatte (und nicht mehr angezeigt werden).

              Er vergisst jedenfalls die Anzahl der Zeilen nicht, und wenn ich dann alles richtig hab, meckert er eine nicht mehr sichtbare Zeile an ;-) Wenn der Counter richtig gestellt ist, dürfte sich das von alleine lösen.

              Beim Starten sind alle Ampeln auf Grün gegangen, und unter Info sehe ich auch realistische Werte, es gingen dann aber hintereinander alle Ampeln auf Rot (Fehler).
              Ich hab dann fetch.pl so wie im cron manuell aufgerufen, und bekomme
              Can't call method "param" on an undefined value at fetch.pl line 50.
              Das ist die Sprache - ich glaub (weiß nicht), dass er das $home nicht bekommt - zumindest nicht wenn ich's manuell aufrufe.

              So ist es recht cool, was du in der Kürze rausgehauen hast! Und weil ich mich damit so viel spiele, hab ich noch gar nichts für den Import... :-(

              lg, Christian
              Angehängte Dateien
              Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11200

                #56
                quickchart line 51:
                our §output;
                sollte $output; sein
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar

                • Christian Fenzl
                  Lebende Foren Legende
                  • 31.08.2015
                  • 11200

                  #57
                  Prof.Mobilux
                  Das mit der roten Ampel könnte nur ein CSS-Problem sein (Screenshot). Die Daten in der Info sind aktuell, der Poller scheint zu laufen.
                  In der databases.dat in Column 7 steht aber trotzdem überall 0 (Error).

                  Irgendwas mit rrdcached passt bei mir nicht, beim quickchart bekomme ich im apache-log nur ein "ERROR: Unable to connect to rrdcached: No such file or directory".
                  Das dürfte daran liegen, dass du ihn mit dem Socket unix:/var/run/rrdcached.sock startest, aber im quickchart mit unix:/tmp/rrdd.sock ansprichst. Wenn ich's im quickchart ausbessere, kommt ein permission denied.

                  lg, Christian
                  Angehängte Dateien
                  Zuletzt geändert von Christian Fenzl; 07.11.2016, 22:58.
                  Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                  Kommentar

                  • Christian Fenzl
                    Lebende Foren Legende
                    • 31.08.2015
                    • 11200

                    #58
                    Ok, genau anders rum - der Socket im quickchart passt, aber die Routine mit dem mv und dem Linken in der daemon in /etc/default funktioniert nicht.
                    Bei mir gibt es nur die Original-rrdcached mit den Originalsettings, kein old und auch keinen Link.
                    daemon-Script:
                    ./stats4lox: Zeile 15: [: !-L: Einstelliger (unärer) Operator erwartet.
                    Zwischen ! und -L gehört ein Leerzeichen (öde Bash :-)

                    Und *pfui* /etc/init.d/rrdcached restart
                    Heute machma doch alle service rrdcached restart


                    PS: ich hoffe, es stört dich nicht, dass ich hier wild herein-analysiere ;-)
                    Zuletzt geändert von Christian Fenzl; 07.11.2016, 23:24.
                    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                    Kommentar

                    • Christian Fenzl
                      Lebende Foren Legende
                      • 31.08.2015
                      • 11200

                      #59
                      addstat.cgi, Zeile 519 [ff] (Standardwerte der RRAs)
                      Den xff-Parameter übergibst du dort mit Komma statt Punkt, deswegen ist das im RRD dann als 0 definiert.
                      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                      Kommentar

                      • Prof.Mobilux
                        Supermoderator
                        • 25.08.2015
                        • 4590

                        #60
                        Christian Fenzl: Du warst ja im GIT schon fleissig :-) Die Requests habe ich gerade eben alle gemerged - musst Du jetzt noch pullen (was für ein Deutsch.... ;-))

                        Zitat von Christian Fenzl
                        Ich würde die Intervalleinstellung (1, 3, 5 usw.) noch nach oben vor die Experteneinstellungen holen (ich weiß, dafür braucht es dann pro Pollerintervall ein Standardsetting) und umbenennen in "Abfrageintervall".
                        Die Experteneinstellungen finde ich ehrlich gesagt zu kompliziert (sogar mir). Für meinen Teil würde ich die Auswahl MIN/MAX/AVG/LAST weglassen und MIN/MAX/AVG immer implizit anlegen.
                        Du erlaubst außerdem die "human-readable" Eingabe nicht (step: 10m, rows: 90d), und dann wird es wirklich kompliziert, wenn man selbst zum Rechnen anfangen muss.
                        Mir ist das auch zu kompliziert. Aber ich habe lange überlegt ob ich noch etwas weglasse und mich dann dagegen entschieden. Da kommt mit Sicherheit dann irgendein RRDTool Guru und meckert, dass er dieses oder jenes nicht einstellen und feintunen kann. Wie ich gelernt habe gibt es ja auch Leute, die 20 Jahre alte Statistiken alle einzeln editieren wollen :-)

                        Vielleicht macht man noch später noch eine Zwischenebene: Standardeinstellungen, Fortgeschrittene (mit den wichtigsten Einstellungen) und Experte (it allen Einstellungen).

                        Ich würde es jetzt erst einmal so lassen - das können wir immer noch feintunen wenn das Plugin mal grundlegend fertig ist. Habe gestern mal angefangen mit HighCharts zu spielen und das wird auch noch kompliziert genug (=viel Arbeit)...

                        Die "Human readable"-Dinge gebe ich frei - da war ich zu streng beim filtern :-)

                        Wenn ich im Expertenmodus einen Fehler gemacht habe ("Du musst einen Start angeben") und ich gehe mit "Zurück" zurück, dann sind - bis auf die erste - meine RRA-Definitionen weg
                        Ja, da möchte ich noch ein Session-Management drübersetzen (analog dem im Setup-Assistenten), damit das nicht passiert. Ist aber noch auf der Todo.

                        Beim Starten sind alle Ampeln auf Grün gegangen, und unter Info sehe ich auch realistische Werte, es gingen dann aber hintereinander alle Ampeln auf Rot (Fehler).
                        Da war gestern noch ein Fehler, so dass Ampeln nie wieder auf Grün gegangen sind und zudem war da dieser Darstellungsfehler noch drin wie Du ihn auf dem Screenshot zeigst. Das hatte ich gestern morgen noch behoben. War Deine Version eventuell älter? Die Ampel wird nur auf Rot gesetzt, wenn der Status Code des HTTP-Aufrufs ungleich 200 ist (Miniserver nicht erreichbar) oder wenn der Miniserver in der XML-Antwort etwas anderes als Code=200 sendet (Wert exisitiert nicht).

                        Am Besten bitte nochmal neu "pullen" und dann neu installieren - dann müsste das Problem behoben sein.

                        Ich hab dann fetch.pl so wie im cron manuell aufgerufen, und bekomme
                        Can't call method "param" on an undefined value at fetch.pl line 50.
                        Das ist die Sprache - ich glaub (weiß nicht), dass er das $home nicht bekommt - zumindest nicht wenn ich's manuell aufrufe.
                        Das ist seltsam - da muss noch ein Fehler drin sein. Bei mir geht es als User "loxberry" einwandfrei auch manuell.

                        Und *pfui* /etc/init.d/rrdcached restart
                        Heute machma doch alle service rrdcached restart
                        Alte Schule :-)
                        🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                        LoxBerry - Beyond the Limits

                        Kommentar

                        Lädt...