Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin: InfluxData

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

    Plugin: InfluxData

    ich habe ein Plugin für InfluxData (InfluxDB) erstellt was dessen line protocol über UDP unterstützt.
    Grund für ein weiteres Plugin war der Wechsel zu UDP da ich öfters mit dem original Probleme hatte und mir durch die TCP Verbindungen die gesammte sh.py hängen blieb, bzw. Logiken lange Zeit später ausgeführt wurden.
    Grosser Dank geht an DerSeppel für das original Plugin welches mir als Vorlage diente!

    Plugin ist auf Github zu finden: https://github.com/rthill/influxdata

    #2
    Hallo knxmfbp (Name wäre nett),

    habe mir dein Plugin mal angeschaut und getestet. Sehr gute Idee mit den UDP sockets. Wusste gar nicht dass das bei Influx geht.
    Mir gefällt, dass man keine zusätzlichen packages braucht. Nicht mal requests oder urllib.
    Habe es mal testweise aktiviert. Ist komplett transparent. Meine Grafen/Datenpunkte haben sich nicht verändert. Ich überleg mir mal ob ich die Features, die ich experimentell am Einbauen bin nicht direkt in deine Version einfließen lasse.

    Gruß

    Sebastian

    Kommentar


      #3
      Hallo Sebastian,

      war auch mein erster Gedanke keine extra Pakete womit die Installation ohne Aufwand von Hand geht.

      Du kannst gerne deine Feature-Liste Teilen dann können wir dies auch zusammen einbauen. Ich selbst benutze diese Version nun seit ca. 2 Wochen ohne Fehler.
      Wenn das Plugin generell stabil läuft, sollten wir es möglicherweise auch in die Plugins im smarthome Repository übersiedeln.

      Gruß,
      Raoul

      Kommentar


        #4
        Hallo ihr beiden,

        was haltet ihr davon, wenn Ihr nur ein einziges Plugin erstellt mit der Option in der Config zwischen TCP und UDP zu wählen?

        Gruß,
        Bernd
        Zuletzt geändert von bmx; 06.01.2016, 14:42.

        Kommentar


          #5
          Habe ich auch schon überlegt, bedingt dann aber die Installation von zusätzlichen Python Paketen. Gerade, dass man das nicht tun muss, ist ein Vorteil von Raouls Lösung.
          Was ich noch vor habe:

          Momentan schreiben die Plugins jedes Item in eine eigene Serie. Ich würde das ganze gerne konfigurierbar machen, so dass man ggf. auch alles in eine Serie packen kann. Item-Name wäre dann ein Tag namens "item" oder so.
          Vorteil ist, dass man dann direkt in den Influx-Queries mit Werten rechnen kann. Z.b. aus gemessenem Vorlauf und Rücklaufwert der Heizung eine Spreizung berechnen.
          Ganz simpel umzusetzen, wenn man die Zeit hat.

          Nächster Schritt wäre dann Serien und Tag per Item Attribut bestimmen.

          Kommentar


            #6
            Ich bin gegen eine TCP implementierung wegen möglichen blockaden bis zum time-out. Hier im Forum wurde glaube ich zumindest bereits mehrmals auf solche Probleme aufmerksam gemacht.

            Serien mit Tag hört sich gut an. Bei nächster Gelegenheit werde ich mal die InfluxData Doc zu dem Thema lesen.

            Kommentar


              #7
              Ich habe mir das mal testweise eingebaut ... in deine Version. Klappt eigentlich gut.
              Nur ist das wirklich sehr rudimentär.
              Etwas aufwendiger, aber flexibler wäre es natürlich, wenn man per attribut eine Art "Override" machen könnte. Sprich, jedes Item bekommt seine eigene Series, aber per Attribut lässt man bestimmte Items mit Tag in eine explizit genannte Timeseries schreiben.

              Ich frage mich da nur, ob das überhaupt jemand braucht. Die meisten werden wohl einfach nur Daten mit Grafana plotten wollen.
              Zuletzt geändert von DerSeppel; 07.01.2016, 07:52.

              Kommentar


                #8
                Zitat von DerSeppel Beitrag anzeigen
                Ich frage mich da nur, ob das überhaupt jemand braucht. Die meisten werden wohl einfach nur Daten mit Grafana plotten wollen.
                Da gebe ich dir absolut Recht, ich selbst habe bisher auch nur Grafana und Chronograph im Einsatz zum einfachen Plotten.

                Kommentar


                  #9
                  Naja ... Joins und Berechnungen kann man direkt in Grafana in den Queries machen.
                  Ich lasse es mal mit dem Patch bei mir laufen und schau mal wie es klappt.
                  Würde dass dann als Pull Request bereit stellen wenn es fertig ist.

                  Kommentar


                    #10
                    hallo,
                    wollte auch testweise auf das neue plugin umstellen (die originalversion läuft schon lange ohne probleme)

                    allerdings erhalte ich im log immer diesen fehler

                    Code:
                    2016-01-09 08:38:21 WARNING  Main         InfluxData: Problem sending data to localhost:8089: [Errno -9] Die Adressfamilie für Hostnamen wird nicht unterstützt
                    kann mir einer von euch beiden einen Tipp geben was ich flasch gemacht habe?

                    Christian

                    Kommentar


                      #11
                      Schau mal in der /etc/hosts nach.
                      Wenn du da einen ipv6 Eintrag für localhost hast, dann wird wohl der aufgelöst. Das kann die drunter liegende python lib aber nicht.
                      Alternative wäre 127.0.0.1 zu verwenden.

                      Kommentar


                        #12
                        danke, sieht gut aus, komisch das es bei deinem ursprungsplugin und allen anderen mit localhost ging

                        Kommentar


                          #13
                          Hi,
                          ich hab auch ein Problem.. hab zuerst das Orginal .. jetzt dieses Plugin benutz.. immer wenn ich einem Item das
                          Attribut: influx = true gebe bekomme ich folgende Fehlermeldung:
                          Item Allgemein.Aussen.Eingang2: problem creating: 'Item' object has no attribute 'type'

                          Das Item hat aber natürlich ein Object "Type".. und zwar = num

                          jemand ne Idee woran das liegen könnte ?

                          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
                          Gruß Martin
                          Zuletzt geändert von Brick; 10.01.2016, 13:59.
                          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                          Kommentar


                            #14
                            Hallo,

                            zeig doch mal die Config von dem Item.

                            Bis bald

                            Marcus

                            Kommentar


                              #15
                              Hi Marcus,

                              gern.. hab das wie in der Beschreibung gemacht:
                              plugin.conf
                              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
                              
                              #[influxdata]
                              #    class_name = InfluxData
                              #    class_path = plugins.influxdata
                              #    influx_host = 192.168.178.38
                              #    influx_port = 8089
                              #    influx_keyword = influx
                              jetzt natürlich die influxdata auskommentiert.. das war sie natürlich vorher nicht.

                              smartvisu.conf
                              Code:
                                   [[Aussen]]
                                       [[[Temperatur]]]
                                          name = TemperaturAussen
                                          type = num
                                          visu_acl = ro
                                          sqlite = yes
                                          knx_dpt = 9
                                          knx_listen = 1/3/1    
                                    [[[Eingang1]]]
                                          name = Eingang1
                                          type = num
                                          knx_dpt = 9
                                          knx_listen = 1/4/0
                                          influx = true
                                          visu_acl = rw
                                          sqlite = yes
                                          cache = on
                              Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                              Kommentar

                              Lädt...
                              X