Ankündigung

Einklappen
Keine Ankündigung bisher.

Aus MySql Datenbank Diagramme erstellen

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

    Aus MySql Datenbank Diagramme erstellen

    Da ich nun endlich alle Aktoren in das CV eingepflegt habe, mache ich mich nun an die Feinarbeiten und habe mich nun mal mit diagram_info beschäftigt. Da ich sozusagen aus openHab komme, habe ich alle meine Daten in einer SQL Datenbank persistiert. Mir ist nun nicht ganz klar, wie ich diese in Diagramme bekomme. Soweit ich verstanden habe muss ich <rdd> den Dateinamen angeben, in dem sich meine Daten befinden. Bedeutet das aber auch, dass nur rdd4j unterstützt wird?

    Vielleicht kann mir mal jemand auf die Sprünge helfen.

    #2
    Für zeitliche Messreihen ist die Empfehlung RRDs zu verwenden - die wurden exakt dafür entwickelt und sind dafür optimal.

    Wenn die Daten nun aus anderen wichtigen Überlegungen heraus nicht in einer RRD liegen können und statt dessen in einer SQL-Datenbank liegen, dann gilt dafür:
    1. Das wird aktuell nicht von der CV unterstützt
    2. Das zu implementieren wäre aber nicht schwer

    Oder mit anderen Worten: es muss nur jemand schreiben und schon geht es!
    Das braucht eigentlich nur zwei Dinge:
    1. Ein Backend am Server der per HTTP-Request in der SQL-Datenbank nachschaut und das Ergebnis als JSON weiter reicht (das ist der "schwierige" Teil. Sollte jeder mit Web-Programmier-Erfahrung schaffen)
    2. Erweiterung des CV-Diagram-Plugins um die weitere Datenquelle. Sollte aber auch nicht wirklich schwer sein.

    Für die Aufgabe 1. hätte ich in der Fortsetzung der anderen Lösungen der CV auf PHP gesetzt. Nun habe ich aber verstanden, dass OpenHAB nicht so wirklich PHP mit unterstützt Aber evtl. kann man ja etwas in den OpenHAB-Server mit einbauen, dass die SQL-Daten in JSON weiterreicht.
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Danke für die detaillierte Antwort. Vorübergehend habe ich in openHAB für jede Messung (4 Messstellen je 2 Temperaturen - 24 h) einfach eine Seite gebaut und diese mit schlicht mit <web> eingebunden, da ich auf diese Messwerte angewiesen bin. Nicht schön, aber funktional.

      Leider fehlt mir auf Grund einer Totalsanierung meiner Wohnstatt jetzt demnächst auch die Zeit dafür, um mich eingehend sofort damit zu beschäftigen, aber zum Herbst hin ist das bestimmt ein Projekt, was ich in Angriff nehmen werde, falls sich bis dahin nicht schon jemand anderes gefunden hat. PHP gehört schon zu meinem Arbeitsalltag, nur mit JSON habe ich es nicht so.

      Kommentar


        #4
        JSON ist pille palle -das ist nicht viel mehr als eine Vereinbarung wie man Daten strukturiert wiedergibt. (Man könnte auch sagen, XML für arme...), vgl. auch: http://json.org/

        Und wenn das Zeit-Buget gerade nicht vorhanden ist, am System aber noch ganz bisschen Platten-Platz übrig ist, kann man natürlich analog zu http://www.cometvisu.org/wiki/CometV....x/etc/rrd/de/ auch einfach parallel ein RRD mit den entsprechenden Daten befüllen. (Klar, ist nicht so elegant wie direkt auf die SQL Datenbank zuzugreifen - aber nichts ist so effektiv wie eine Behelfslösung...)
        TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

        Kommentar


          #5
          Wenn ich eines im Überfluss auf dem Rechner habe, dann ist das Platz, da mein Home Server ein Mac Mini i5 ist und nichts anderes darauf läuft als alles was mit Haus und Kommunikation zu tun hat. Daher habe ich auch schon überlegt einfach das RRD parallel mitlaufen zu lassen. Ich glaub, ich mach das mal, die Ansicht in der visu ist eben schöner.

          Hab schon mal das JSON angeschaut, scheint ja wirklich nicht so furchtbar zu sein, ich drück mich eben gerne vor solchen "Sprachen", ich liebe mein PHP und finde schon JavaScript als eine Zumutung.

          Also werde ich mich dann dran machen, sobald auf der Baustelle in ca. 2 Monaten Ruhe ist.

          Was ich noch mal loswerden und nicht oft genug sagen kann, echt toll was hier entstanden ist!!!!!!!

          Kommentar


            #6
            Das einfachste wäre wirklich, alles was Du brauchst parallel per RRD durch openHAB speichern zu lassen. Richtig ist, dass im aktuellen Zustand mit der CometVisu nur per RRD gespeicherte Daten aus openHAB angezeigt werden können. In Zukunft wird sich das aber ändern! Ich bin gerade dabei openHAB2 für die CometVisu anzupassen, und das wird auch die Persistence-Services von openHAB2 unterstützen, d.h. alles was Du mit openHAB2 speichern kannst, kannst Du Dir auch als Diagram in der CometVisu anzeigen lassen. Wenn das alles mal soweit läuft, würde ich diesen Teil auch auf openHAB1.x backporten. Ist ja durchaus sinnvoll und wird nicht weiter schwierig sein. Also bevor Du in 2 Monaten selbst anfängst Dir nen Workaround zu bauen wirds wohl eine out-of-the-box Lösung geben.
            Gruß
            Tobias

            Kommentar


              #7
              Das ist ja cool. Vielleicht finde ich ja dann, wenn ich wieder mehr Zeit habe, auch etwas, was ich hier beitragen kann.

              Kommentar


                #8
                Hallo,

                gibts dafür schon eine Lösung? Können Diagramme schonaus einer MySQl Datenbank erzeugt werden ?
                Gruß

                Guido

                Kommentar


                  #9
                  Diagramme können aus der Persistenz-Schicht von openHAB (https://docs.openhab.org/configuration/persistence.html) erzeugt werden (ob da nun ein Mysql, RRD oder eine andere Datenbank hintersteht ist egal). Sollte so wir hier beschrieben gehen:

                  https://github.com/openhab/openhab2-...metvisu#charts
                  Gruß
                  Tobias

                  Kommentar


                    #10
                    Hallo Danke für den Link.

                    Leider bleibt das Diagram leer. Ich habe das mit dem Code
                    Code:
                    <diagram height="600px" series="day" refresh="300" format="%.2f °C" >
                                    <layout colspan="4"/>
                                    <rrd color="blue" label="Aussentemperatur">knx_Wetterstation_Aussentemp</rrd>
                    
                                    </diagram>
                    in der CometVisu angelegt.

                    In der BasicUI werden jedoch Daten angezeigt mit dem Code

                    Code:
                    sitemap diagramm label="Charts"{
                         Frame label="Charts"{
                            Text label="Temp. Aussen" icon="groundfloor" {
                            Switch item=Chart_Intervall label="Zeitraum" icon="clock" mappings=[0="Stunde", 1="Tag", 2="Woche"]
                            Chart item=knx_Wetterstation_Aussentemp service="mysql" period=h refresh=300 visibility=[Chart_Intervall==0, Chart_Intervall=="Uninitialized"]
                          Chart item=knx_Wetterstation_Aussentemp service="mysql" period=D refresh=300 visibility=[Chart_Intervall==1]
                          Chart item=knx_Wetterstation_Aussentemp service="mysql" period=W refresh=300 visibility=[Chart_Intervall==2]
                          Chart item=fboxGuidoHandy service="mysql" period=D refresh=300 visibility=[Chart_Intervall==1]
                            }
                         }
                    
                       }
                    Zumindest ist somit klar das Openhab mit der Datenbank kommuniziert. Muss ich im obigen beispiel noch einen Verweis auf die Mysql machen? Oder macht rrd das automatisch und sucht im im Persitence ordner nach Einträgen in den Dateien.
                    Können dort auch mehrere Services Parallel laufen ?
                    Zum Beispiel benutze ich RRd4j um Daten die als Sollwerte dienen direkt auf den Raspi zu speichern. Alles Andere soll auf die Synology in die Datenbank.
                    Gruß

                    Guido

                    Kommentar


                      #11
                      Wie sieht denn Deine Persistence-Konfiguration in openHAB aus?
                      Gruß
                      Tobias

                      Kommentar


                        #12
                        Ich habe eine für rrd4j
                        Code:
                        Strategies {        // for rrd4j, we need a cron strategy
                        
                            everyMinute : "0 * * * * ?"
                        
                        }
                        Items {             // let's store Wheater_Chart values in rrd4j
                        
                            local_Sollwert_Helligkeit : strategy = everyChange, restoreOnStartup
                            local_durchlauf_Jalousie : strategy = everyChange, restoreOnStartup
                            local_freig_rule_fewo_heizung_sun : strategy = everyChange, restoreOnStartup
                        
                            local_RTR_Status_Wohnzimmer_Ferienwohnung_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Schlafzimmer_Ferienwohnung_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Kueche_Ferienwohnung_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Flur_Ferienwohnung_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Wohnzimmer_hinten_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Wohnzimmer_vorn_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Zimmer_Willi_send : strategy = everyChange, restoreOnStartup
                            local_RTR_Status_Zimmer_Paula_send : strategy = everyChange, restoreOnStartup
                        
                        
                        }
                        und eine für Mysql
                        Code:
                        Strategies {
                                    everyMinute : "0 * * * * ?"
                                    everyfiveMinutes : "5 * * * * ?"
                                    everyHour : "0 0 * * * ?"
                                    everyDay : "0 0 0 * * ?"
                                    }
                                // If no strategy is specified for an item entry below, the default list will be used.
                                //default =
                        
                        
                        Items {
                                knx_Wetterstation_Aussentemp : strategy = everyfiveMinutes
                        
                        }
                        Gruß

                        Guido

                        Kommentar


                          #13
                          Zitat von Höhlenbär Beitrag anzeigen
                          Muss ich im obigen beispiel noch einen Verweis auf die Mysql machen?
                          Nein, die Möglichkeit gibt es auch garnicht. Die Items heißen ja unterschiedlich, daher sollte es auch kein Problem sein. Nur wenn Du das selbe Item einmal per RRD und einmal per MySQL persistierst, dürfte es zu unvorhersehbaren Ergebnissen kommen (wobei ich vermuten würde, dass hier RRD bevorzugt wird, ist aber jetzt schon ein paar Jahre her als ich das programmiert habe, daher bin ich da nicht ganz sicher)

                          Zitat von Höhlenbär Beitrag anzeigen
                          Können dort auch mehrere Services Parallel laufen ?
                          s.o. so lange es keine Namenskonflikte gibt sollte das kein Problem sein.

                          Ich kann da erstmal keine Fehler erkennen, sieht alles richtig aus. Warum das Diagramm nun keine Daten bekommt weiß ich auch nicht. Hast Du mal eins von den RRD-Items ausprobiert? Kommt da auch nichts?

                          Gruß
                          Tobias

                          Kommentar


                            #14
                            Noch eine Frage vergessen: Sind auf der Javascript-Console im Browser (Öffnen mit F12) irgendwelche Fehlermeldungen zu sehen, beim Laden der CometVisu?
                            Gruß
                            Tobias

                            Kommentar


                              #15
                              Ja aus der RRD habe ich auch probiert leider mit dem gleichen Ergebnis das Diagram ist leer.
                              Code:
                              connection established 
                              [URL="http://192.168.179.175:8080/cometvisu/lib/CometVisuClient.js"]CometVisuClient.js:402[/URL] 
                              
                              Source-Map-Fehler: TypeError: NetworkError when attempting to fetch resource. Ressourcen-Adresse: moz-extension://3ddc067b-c946-4ed6-9b2b-fff0ea1f152f/content/js/purify.min.js Source-Map-Adresse: purify.min.js.map[Weitere Informationen]  
                              
                              connection established
                              dieser Eintag ist in der Liste vorhanden. Aber der bezieht sich auf dei 2 Baustelle rsslog ;-)

                              Und dieser
                              Code:
                              C: #rss_id_5_0_0, Error: SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data, Feed: plugins/rsslog/rsslog.php?state=0&j [URL="http://192.168.179.175:8080/cometvisu/plugins/rsslog/structure_plugin.js"]structure_plugin.js:205[/URL] 
                              
                              XML-Verarbeitungsfehler: Kein Wurzel-Element gefunden Adresse: [url]http://192.168.179.175:8080/cometvisu/plugins/rsslog/rsslog.php?state=0&j[/url] Zeile Nr. 1, Spalte 1: [URL="http://192.168.179.175:8080/cometvisu/plugins/rsslog/rsslog.php?state=0&j"]rsslog.php:1:1[/URL] 
                              
                              connection established
                              Gruß

                              Guido

                              Kommentar

                              Lädt...
                              X