Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin: InfluxDB für schicke Charts mit Grafana

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

    Plugin: InfluxDB für schicke Charts mit Grafana

    Leider eigenen sich die Charts, die smartVISU ausspuckt nur bedingt zur detailierten Analyse von Daten.
    Ich habe daher ein ganz einfaches Plugin erstellt, dass die Daten nach InfluxDB schreibt. Dadurch lassen sich die Daten mit Grafana auswerten.

    Zu finden ist das ganze auf github
    Alternativ findet Ihr die intiale Version als Anhang am Post.

    Konfiguration ist ganz einfach:

    Code:
    [influxdb]
        class_name = InfluxDB
        class_path = plugins.influx
    #   influx_host = localhost
    #   influx_port = 8083
    #   influx_user = root
    #   influx_pass = root
    #   influx_db   = smarthome
        influx_keyword = influx
    Über das "influx_keyword" kann ggf. auch eingestellt werden, dass alle mit "sqlite = true" versehenen Daten geschrieben werden. So braucht man nichts umzustellen.
    Wenn Grafana läuft, kann das ganze zum Beispiel so aussehen:

    wp.grafana.PNG
    Angehängte Dateien

    #2
    Cool, wenn ich es richtig verstehe, ist Grafana auch gleichzeitig das Frontend und ein Einbinden in smartvisu ist nicht möglich?

    Kommentar


      #3
      Ich denke das würde prinzipiell gehen.
      Mir ging es jetzt erst mal um eine schönere Möglichkeit zur Detailanalyse von Daten.

      Prinzipiell kannst du aber auch Dashboards freigeben. Diese müsste man dann per Frame einbinden können.
      Oder man setzt gleich ein Charting-Plugin für die smartVISU um, dass auf Graphite basiert.

      Kommentar


        #4
        sehr schönes Plugin. Grafana biete die Möglichkeit Graphen als IFrame bereitzustellen.

        http://docs.grafana.org/v2.1/reference/sharing
        Gruß Sven

        Kommentar


          #5
          danke, tolle Sache.
          habs grad Installiert und ein paar Graphen zum testen eingerichtet, funktioniert bis jetzt sehr gut.

          Kommentar


            #6
            Sehr schöner Lösungsansatz, danke für das Plugin!

            Kommentar


              #7
              Ich habe mal im Wiki eine kleine Anleitung zur Installation von InfluxDB, Plugin und Grafana aufgeschrieben. Darf natürlich gerne ergänzt und verbessert werden ...

              Gruß,
              Bernd

              Kommentar


                #8
                Danke für deine Mühe.
                Ich habe hier auch noch Fetzen einer Dokumentation rum liegen. War nicht einfach Influx und Grafana auf dem BananaPi zum Laufen zu bekommen. Werde das bei Gelegenheit mal zusammen schreiben.

                Jetzt muss ich erst mal die neu gewonnenen Erkenntnisse aus dem Plugin auswerten und meine Heizung optimieren. Man kann übrigens Dashboards auch bei raintank veröffentlichen. Dabei werden sensible Daten entfernt und nur die ausgewählten Daten bereit gestellt. Dabei bleibt die Interaktivität erhalten, hier mal ein Beispiel meiner Heizung:

                https://snapshot.raintank.io/dashboa...NdEclKRxg07akX

                Kommentar


                  #9
                  Hi Sebastian,

                  konntest Du Deine Heizung noch optimieren? Hast Du noch was am Plugin aktualisiert?

                  Gruß,
                  Bernd

                  Kommentar


                    #10
                    Naja ... der echte Nutzen aus dem Plugin: Ich konnte die Grafana-Charts mit selbst an der Heizung montierten 1-Wire Sensoren anreichern und mit dem Ergebnis dann den Vertrieb meines Heizungsherstellers sowie den Werkskundendienst davon überzeugen dass die Anlage nicht so läuft wie sie soll.
                    Jetzt wird im Januar nochmal an der Heizung umgebaut.

                    Habe aktuell nichts an dem Plugin zu aktualisieren. Habe da noch ein paar eigene Feature-Wünsche aber wenig Zeit. Weihnachten/zwischen den Jahren war jetzt erst mal 100% Frau und Nachwuchs angesagt. Da bin ich nicht zu gekommen.

                    Was ich selbst gerne noch ändern würde:
                    - (optional) alle Messpunkte in eine Time-Series (mit entsprechendem Tagging). So ließen sich dann auch Aggregatfunktionen serienübergreifend nutzen.
                    - Generelles Tagging von Daten über zusätzliches Attribut. Damit ließen sich viel einfacher Events in der DB loggen.

                    Sonst noch Ideen/Anregungen/Wünsche?

                    Wenn ich wieder Arbeiten gehe und der Tagesablauf geregelter ist, dann schau ich mir das ganze mal an. Vorher muss aber die Funkfernbedienung für KNX laufen. Frau Wünscht die Markisen am Terassendach per Fernbedienung zu fahren.

                    Kommentar


                      #11
                      soll jetzt kein Doppelpost werden, aber ich hab auch mit dieser Version des Plugins das gleiche Problem..
                      Wenn ich einem Item das Attribut "Influx = true" geben bekomm ich eine Fehlermeldung im Log:
                      Item Allgemein.Aussen.Eingang2: problem creating: 'Item' object has no attribute 'type'

                      Die Datenbank an sich funktioniert .. Datenbank ist auch angelegt und läuft..

                      Jemand ne Idee ?

                      Hier noch ein Teil vom Debugger:
                      Code:
                      2016-01-10 13:52:03,105 DEBUG    Main         Plugin: influxdb -- plugin.py:__init__:43
                      2016-01-10 13:52:03,183 WARNING  Main         Init InfluxDB -- __init__.py:__init__:30
                      2016-01-10 13:52:03,185 DEBUG    Main         InfluxDBClient(localhost, 8086, root, root, smarthome) -- __init__.py:__init__:44
                      2016-01-10 13:52:03,188 INFO     Main         Starting new HTTP connection (1): localhost -- connectionpool.py:_new_conn:207
                      2016-01-10 13:52:03,192 DEBUG    Main         "GET /query?q=SHOW+DATABASES&db=smarthome HTTP/1.1" 200 106 -- connectionpool.py:_make_request:387
                      2016-01-10 13:52:03,194 DEBUG    Main         Databasesmarthome exists -- __init__.py:__init__:56
                      2016-01-10 13:52:03,195 DEBUG    Main         Plugin: influxdata -- plugin.py:__init__:43
                      2016-01-10 13:52:03,196 WARNING  Main         Init InfluxData -- __init__.py:__init__:29
                      2016-01-10 13:52:03,197 INFO     Main         Init Items -- smarthome.py:start:280
                      2016-01-10 13:52:03,301 INFO     Main         Item env.core.memory = 36708352.0 via SQLite None None -- item.py:set:457
                      2016-01-10 13:52:03,368 INFO     Main         Item env.core.threads = 7.0 via SQLite None None -- item.py:set:457
                      2016-01-10 13:52:03,436 INFO     Main         Item env.core.garbage = 0.0 via SQLite None None -- item.py:set:457
                      säh doch gut aus, oder ?
                      Zuletzt geändert von Brick; 10.01.2016, 13:58.
                      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                      Kommentar


                        #12
                        Schau mal ob das Item einen Type hat:
                        type = num
                        Edit: Grade erst im anderen Thread gesehen, dass du num drin hast. Komisch. Mal schauen ob Marcus was einfällt. Ich müsste die Tage dann zur not mal schauen.
                        Zuletzt geändert von DerSeppel; 11.01.2016, 10:52.

                        Kommentar


                          #13
                          Hi,

                          mir fällt leider nichts dazu ein. Ich kenne das Plugin aber auch nicht und habe momentan keine Zeit mich mit Deinem Plugin auseinanderzusetzen.

                          Bis bald

                          Marcus

                          Kommentar


                            #14
                            okay, dann schau ich mal rein. Eigentlich wird nur das Attribut gelesen um sicher zu gehen, dass nur "Zahlen" in der DB landen. Sonst würde Influx einen Fehler werfen.
                            def parse_item(self, item):
                            if self.influx_keyword in item.conf:
                            if item.type() not in ['num', 'bool']:
                            logger.debug("InfluxDB: only supports 'num' and 'bool' as types. Item: {} ".format(item.id()))
                            return
                            self._items.append(item)
                            return self.update_item
                            Daher ja mein Verdacht, dass das übergebene Item zwar als "Influx-Item" markiert ist, aber das Attribut type fehlt.
                            Zuletzt geändert von DerSeppel; 11.01.2016, 11:27.

                            Kommentar


                              #15
                              Hi DerSeppel

                              also wie gesagt... Type = num hab ich drin..
                              Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                              Kommentar

                              Lädt...
                              X