Ankündigung

Einklappen
Keine Ankündigung bisher.

Echtzeit Diagramme/Live-Logging von KNX-GAs in RRDs mit Graphen

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Echtzeit Diagramme/Live-Logging von KNX-GAs in RRDs mit Graphen

    Hi,
    kurz vorab erklärt: ich wollte die Bewegungsmelder-Impulse vom KNX-Bus in RRD-diagramme aufzeichnen. (und andere GAs). Aber erstmal, damit ich u.a. die häufigsten Schaltzeiten am Tag sehen kann. Und die Länge der Leuchtdauer, die Abfolge von Erfassung zwischen Bewegungsmelder 1 und 2=Laufrichtung, etc ...

    Jetzt kamen die Schwierigkeiten. Wiregate-Plugin gefunden, allerdings können plugins wohl nur Polling. Und Intervallzeit von 5 min. zu lang für Bewegungsmelder. Bei verkürztem Intervall um 2 min hatte ich Aussetzer (meine Verkabelung vermutlich). und musste den RRD-Step von Hand anpassen. Polling mit großem Intervall verpasst als 'Average' auch BM-Impulse. (oder überseh' ich was?)

    Also jetzt Alternativen gesucht (ich kann kein perl,php oder so.) vielleicht können wiregate-plungins doch mehr? daher meine suche bis hier:

    0) bash-script selbert stricken. etwa so? Das ein log des eibd-grouplisten überwacht (und timestamps einfügt!) und ein rrd-update ausführt (etwa so), wenn ein wertewechsel der GA stattgefunden hat?

    1) grouplisten in Log (wie hier in Frankreich), und eventuell dann einen log-monitor (wie logcheck oder swatch), der ein rrd-uptdate per bash-commando triggert?

    2) linknx nachinstalliert. darin dann logging im objekt-definiton für bestimmte GAs einstellen. etwa so.
    (linknx logging bedingt wohl persistant-storage. macht dann aber eine schöne timestamped-datei der GA im log-verzeichnis..)
    2.1) Dann entweder log-monitor zum rrd-update benutzen, oder
    2.2) linknx-rule definieren, und mit shell-cmd ein rrd-update?

    Viele Wege führen nach Rom auf dem WG, Makki hat das öfter mal betont, aber so von aussen ist es für mich doch schwierig, den einfachsten weg zu finden. Den suche ich gerade noch.

    für live-logging von KNX-GAs in RRDs. Hab schon drraw durchgespielt. damit gehen doch schöne sachen im GUI (auch wenn unsupported auf WG).

    Vielleicht hat jemand einen Vorschlag, den man überdenken kann? Bevor ich weiter laufe, immer mit dem Gefühl, am Ziel vorbei zu laufen...

    gruss,
    ozett

    #2
    Öhm evtl hab ich's falsch verstanden

    Aber du kannst ja ein Plugin auf die BM adresse subscriben (plugin_subscribe) und darin das rrd updaten.
    Dann schreibt er dir immer definierte werte ins rrd. ( value = 1 oder value = 0).
    Habs aber selbst noch nicht umgesetzt.

    Gruß Volker

    Sent from my TITAN X310e using Board Express

    Kommentar


      #3
      aha, danke.
      guck mir jetzt also mal die plugin-optionen an. aber meine programmierkenntnisse sind begrenzt. mal sehen ....

      Kommentar


        #4
        Zitat von vlamers Beitrag anzeigen
        Öhm evtl hab ich's falsch verstanden

        Aber du kannst ja ein Plugin auf die BM adresse subscriben (plugin_subscribe) und darin das rrd updaten.
        Dann schreibt er dir immer definierte werte ins rrd. ( value = 1 oder value = 0).
        Habs selber so auch noch nicht umgesetzt, aber wie ich die Beschreibung auf RRDtool - rrd-beginners
        verstehe
        [WICHTIG]Note, that if you do NOT supply new data points exactly every 300 seconds, this is not a problem, RRDtool will interpolate the data accordingly.[/WICHTIG]
        und mir meine Diagramme sagen, wird grundsätzlich nicht mehr (schneller) als "heartbeat" gespeichert und bei mehr Daten entsprechend gemittelt (?).

        In jedem Fall gehen Diagramme oft nicht bis 0, wenn ein Wert einmal 0 wird => Interpolation.

        Ich würde dieses Problem einfach über das Plugin-LogFile untersuchen, man hier einfach nach dem Pluin Namen filtern und schon sind nur mehr die Ein- und Ausschaltzeiten des BWMs da...

        lg Robert

        Kommentar


          #5
          Beides ist soweit richtig, RRD für diesen Zweck aber evtl. nicht das perfekte Werkzeug?!
          Wenn es nun um eine einmalige Analyse geht, kann man sich das eib.log ziehen und mit Excel (oder grep/awk&co) auswerten, wäre für mich das einfachste.. Oder ein 5-Zeiler in Perl.. Oder grep+Auge..
          Nicht ganz zufällig bietet das WG maximale Flexibilität weil da halt schon 5J Smarthome-Realpraxis drinstecken

          Makki

          P.S.: Bleibt: 50 andere Wege führen auch nach Rom
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            hi, danke für alle tips.
            vermutlich wäre sql-lite ein guter langzeitspeicher. für die 0/1 schaltimpulse der BM würde ich es bei einem versuche mit rrd-tool belassen. die graphen können so schön werden.

            leider kann ich gar nicht prgrammieren, nur ein wenig scripten. vielleicht reicht das gerade für meinen zweck noch? habe zu den aufrufen eines plugins mal hier nachgelesen. ich würde beim plugin bleiben, durch "subscribe" würde nicht gepollt. und 10s cycle für plugins sind auch gut. und plugins ist _die_ schnittstelle, man muss ja nicht alle 50 wege nach rom haben. kann keiner pflegen. einer reicht ja vielleicht. ;-)

            würde wohl sowas klappen?

            Code:
            # entlehnt von plguin nachts licht gedimmt v0.6
            #
            # plugin internal variable und Aufruf-trigger hier:
            # https://knx-user-forum.de/forum/supportforen/wiregate/6566
            # 20120802,oz
            
            ### Definitionen 
            ### Gruppenadressen
            my $lichtein_ga = "4/3/103";        # Gruppenadresse Licht Ein/Aus
            ### Ende Definitionen
            
            # Eigenen Aufruf-Zyklus auf 1x täglich setzen, 
            # plugin hört ja auf GA (subscribe) und wird durch änderung getriggert
            $plugin_info{$plugname.'_cycle'} = 86400;
            
            # Plugin an Gruppenadresse "anmelden"
            $plugin_subscribe{$lichtein_ga}{$plugname} = 1;
            
            # Nur bei einer gesendeten 1 reagieren
            if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $lichtein_ga && defined $msg{'value'} && $msg{'value'} == "1" ) {
                # Update rrd             (see wiregate.pl ab line 483 "sub update_rrd
                # update-parameter:   key, suffix, value ??
                # syntax: update_rrd  ("rra-name","",wert);
                update_rrd("lichtEIN_eg-bad","",($msg{'data'}));
                }
            }
            
            # Kein Log
            return 0;

            Kommentar


              #7
              Dann aber bitte das löschen (Zeile 20):

              Code:
               && $msg{'value'} == "1"
              Sonst reagiert er nur bei AN ... er soll aber auch AUS berücksichtigen.
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                #8
                danke. das hatte ich drin gelassen. denn ich dachte beim Bewegungsmelder wollte ich eigentlich nur die 1 in den rrds loggen. alles andere ist ja sowieso damit dauerhaft 0. Man könnte natürlich an/aus=0/1 mit 1 addieren, damit die rrd-grafiken das aus auch sichtbar haben.

                wenn der code ok ist, (bei step-60sec für die rras.), dann würde ich damit mal starten ...

                Kommentar


                  #9
                  Dann haste aber nicht 0 sondern "unknown" im RRD und das auch erst nach STEP*3..

                  Also einfach
                  Code:
                  if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $lichtein_ga) {
                  ...
                  Und in ganz sauber ist der tägliche Aufruf überflüssig, weil beim Init wird es immer aufgerufen; also sowas wie (da war noch eine } zuviel)

                  Code:
                  ...
                  
                  # Nur bei einer gesendeten 1 reagieren
                  if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $lichtein_ga) {
                      # Update rrd             (see wiregate.pl ab line 483 "sub update_rrd
                      # update-parameter:   key, suffix, value ??
                      # syntax: update_rrd  ("rra-name","",wert);
                      update_rrd("lichtEIN_eg-bad","",($msg{'value'}));
                  } else {
                      $plugin_info{$plugname.'_cycle'} = 0;
                      # Plugin an Gruppenadresse "anmelden"
                      $plugin_subscribe{$lichtein_ga}{$plugname} = 1;
                  }
                  
                  # Kein Log
                  return;
                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar

                  Lädt...
                  X