Ankündigung

Einklappen
Keine Ankündigung bisher.

Grafiken erstellen (Datenarchiv)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Eh wir uns missverstehen. Ich meine hier nur das Plugin, kein WebIF! Es geht mir lediglich darum, knx Infos in ein Plugin zu übertragen. Nur eben als Counter.
    Also update_rrd mit 4. Paramter ist ok. Die restlichen im WebIF festgelegten globalen Werte (bswp intervall 120s) werden dann verwendet?
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    Kommentar


      #17
      Ja update_rrd legt es mit gängigen Defaultwerten an, sofern nicht vorhanden, das ist ja irgendwo nur eine convenience-funktion die RRDs::create und RRDs::update ein bisschen schöner aussehen lässt unter der Annahme, das es die Defaultwerte für 90% tun, die sich keine 50 Parameter ausdenken wollen. Oder eben nicht so tief einsteigen wollen, was das nun genau da tut, sondern einfach nur ne Grafik für die nächsten 15 Jahre


      Man kann natürlich (beides) auch gleich direkt aus dem Plugin (oder Konsole, beim create vielleicht der einfachere Weg da einmalig) aufrufen, siehe hier ab Zeile 473 (sub update_rrd)

      Edit: die RRD-Tool Funktionen sind da 1:1 so verwendbar, wie hier beschrieben.
      Einzige Ausnahme: vom ablegen mehrere Werte (statt "value") in einem RRD würde ich abraten, weil fast sämtliche Frontends dann gern auf die Nase fallen.. Einfach eins pro Wert machen..

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #18
        Gut, wenn ich also das rrd händisch anlege, sollte dann ja das update damit klar kommen...
        Werds heute Abend probieren, sobald der Fliesenleger mit seinen Nachbesserungen raus ist
        Derzeit zwischen Kistenauspacken und Garten anlegen.
        Baublog im Profil.

        Kommentar


          #19
          Ich habe gestern festgestellt, dass der Wert '0' in das Archiv geschrieben wird, wenn der Bus nicht erreichbar ist (mir war beim basteln das TP-UART Interface abgefallen und ich hab's nicht bemerkt...). Schöner fände ich, wenn in diesem Fall einfach kein Wert ins Archiv geschrieben wird, so wie auch bei 1-Wire Sensoren wenn der Wert nicht verfügbar ist.
          Lässt sich das irgendwie im Plugin ändern?


          Gruß,
          Hauke
          Endlich umgezogen. Fertig? Noch lange nicht... ;-)

          Kommentar


            #20
            *schieb*



            Ich wäre immer noch an einer Lösung interssiert. Leider kenne ich mit der knx_read funktion im Detail nicht aus. Ist die irgendwo dokumentiert? Ich vermute das Problem besteht darin, dass die Funktion eine "gültige" Null zurückliefert, wenn der Bus nicht erreichbar ist? Also wäre ja der Lösungsansatz, der Funktion knx_read beizubringen, ein "naN" oder sowas zu liefern, wenn vom Bus nichts kommt und der Wert älter als die max. erlaubte Zeit ist.
            Kann hier jemand helfen?


            Gruß,
            Hauke
            Endlich umgezogen. Fertig? Noch lange nicht... ;-)

            Kommentar


              #21
              Hallo Hauke,

              hast Du mal geschaut, was knx_read genau zurückliefert? Ist das wirklich 0 - also der gleiche Wert als wenn die Temperatur oder was auch immer 0° betragen würde? Irgendwie kann ich mir das nicht vorstellen.

              Gruß Moritz

              Kommentar


                #22
                Zitat von Hauke Beitrag anzeigen
                .. mir war beim basteln das TP-UART Interface abgefallen und ich hab's nicht bemerkt...).
                Schöner fände ich, wenn in diesem Fall einfach kein Wert ins Archiv geschrieben wird, so wie auch bei 1-Wire Sensoren wenn der Wert nicht verfügbar ist.
                Naja, ob da jetzt 0 oder NaN steht? Prüfen muss mans trotzdem, weil so ein TP-UART verliert den Bus nur durch abstecken

                Zitat von Hauke Beitrag anzeigen
                Also wäre ja der Lösungsansatz, der Funktion knx_read beizubringen, ein "naN" oder sowas zu liefern, wenn vom Bus nichts kommt und der Wert älter als die max. erlaubte Zeit ist.
                Klar wäre zwar irgendwo schöner, aber einer der vorh. Watchdogs da zielfüherender?!
                Das ist halt der bweussten vereinfachung der API geschuldet, das man nicht liest, schauen muss wieviele Bytes zurückkamen (-1=Fehler) und dann denn Wert vom Pointer nehmen; man darf ja auch native eibd-API direkt verwenden, dann muss man sich darum halt selber kümmern

                Makki
                EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                -> Bitte KEINE PNs!

                Kommentar


                  #23
                  Zitat von kleinklausi Beitrag anzeigen
                  hast Du mal geschaut, was knx_read genau zurückliefert? Ist das wirklich 0
                  Nein, hab ich nicht. Kann man das nachträglich noch herausfinden oder müsste ich den Fehler dazu reproduzieren? Ich weiß nur das die aus den rrd's erzeugten Grafiken eine Null zeigen... Wenn ich einen 1wire-Sensor abziehe, ist die Linie unterbrochen. Also definitiv ein anderes Verhalten und genau das, was ich mir in diesem Fall wünschen würde.


                  Zitat von makki Beitrag anzeigen
                  Prüfen muss mans trotzdem, weil so ein TP-UART verliert den Bus nur durch abstecken
                  Schon klar. Mir geht es an dieser Stelle eher um den Inhalt der Archive. Im konkreten Fall ist das u.a. der Zählerstand meiner Stromzähler und weil da jetzt zeitweise eine Null auftaucht, ist die Skalierung der Grafiken total versaut...


                  Zitat von makki Beitrag anzeigen
                  Klar wäre zwar irgendwo schöner, aber einer der vorh. Watchdogs da zielfüherender?!
                  Kann schon sein. Ich hab halt weder Ahnung was das knx_read tut, noch was evtl. an Watchdogs aktiv ist...
                  Wie müsste ich konkret vorgehen? Wäre nicht etwas in der Art wie
                  Code:
                  knx_read(...)
                  if [Zeitstempel] > xxx then
                     update_rrd ...
                  endif
                  am einfachsten? Ich wüsste jetzt allerdings nicht, wie die exakte Syntax dafür aussehen müsste bzw. ob man überhaupt direkt auf das Alter des Wertes zugreifen kann.

                  Gruß,
                  Hauke
                  Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                  Kommentar


                    #24
                    Im Falle eines nicht lesbaren Wertes gibt knx_read eigentlich "Null" zurück, nicht die Zahl "0" aber ich kann es durchaus nachvollziehen, es landet letztendlich der Wert "0" im RRD..

                    Verstehe zwar nicht wirklich warum, aber ich hab das mal geändert, das Null = NaN (Not a number=unknown) behandelt wird..

                    Muss ich aber noch auf Risiken und Nebenwirkungen testen; Sollte im nächsten Update mitkommen, wenn nichts gravierendes dagegen spricht..

                    Makki
                    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar


                      #25
                      Danke Makki,

                      dann können wir Null ja so lange mit einem einfachen if abfangen.

                      Gruß Moritz

                      Kommentar


                        #26
                        Super, vielen Dank! Damit spare ich mir den Aufwand im Detail verstehen zu müssen was da passiert....
                        Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                        Kommentar


                          #27
                          Zitat von kleinklausi Beitrag anzeigen
                          dann können wir Null ja so lange mit einem einfachen if abfangen.
                          Jep, ein
                          if (!defined $meinwert) { return "nada"; }
                          sollte es tun

                          Je länger ich darüber nachdenke halte ich das allerdings für einen Bug in dem RRDx.pm, das darf bei Null eigentlich nichts ausser "NaN" schreiben?!?

                          Dieses Verhalten hätte ich zumindest erwartet, ist aber nicht so

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #28
                            Zitat von makki Beitrag anzeigen
                            Im Falle eines nicht lesbaren Wertes gibt knx_read eigentlich "Null" zurück, nicht die Zahl "0" aber ich kann es durchaus nachvollziehen, es landet letztendlich der Wert "0" im RRD..

                            Verstehe zwar nicht wirklich warum, aber ich hab das mal geändert, das Null = NaN (Not a number=unknown) behandelt wird..

                            Muss ich aber noch auf Risiken und Nebenwirkungen testen; Sollte im nächsten Update mitkommen, wenn nichts gravierendes dagegen spricht..

                            Makki

                            Hallo Makki,

                            mal kurz nachgefragt: Ist das inzwischen geändert?
                            Weil, hatte gerade mal wieder den dummen Zufall das ich unbeabsichtigt einen Teil des Bus abgeklemmt hatte, was zu Nullen im RRD geführt hat...
                            Endlich umgezogen. Fertig? Noch lange nicht... ;-)

                            Kommentar


                              #29
                              Nein, aber ich hab das damit wenigstens wieder in den Top5
                              (es ist auch in 99% der Fälle jetzt&schon immer so.. der Fix - statt dem Workaround - ist einen sauberen und stabilen 1-Wire zu haben )

                              Makki
                              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                              -> Bitte KEINE PNs!

                              Kommentar

                              Lädt...
                              X