Daten direkt in eine mysql schreiben

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

    #31
    Guten Abend und
    vielen Dank für die schnellen Antworten, ich war leider unterwegs und konnte noch nicht antworten.
    jdlwguard-loxone und @jeki: Geht das nur mit einem extra-Gerät oder würde der Webserver (Hoster) auch funktionieren?

    @rastablondi:
    wahrscheinlich würde deine Version auf einem Webserver laufen, sofern er die entsprechende Konfiguration hat, oder? Da ich vom Programmieren überhaupt keine Ahnung habe (außer meine Loxone und die 3 UVR 1611, die dranhängen), würde ich den ganzen Job an meinen Webdesigner geben. Um dort Zeit und Kosten zu sparen, sowie eine gangbare Möglichkeit zu wählen, die nicht Stunden kostet und im nichts endet, würde ich mich sehr freuen, wenn Du Deinen Ansatz weiter ausführen könntest. Ein Howto ist nicht notwendig, aber den groben Zusammenhang vielleicht?
    Vielleicht auch noch mal einen kleinen Tipp, wie ich den Ausgang in der Loxone belegen muß.

    Wie ist das eigentlich. Wenn ich die Werte dauernd in die Datenbank schicke, muss ich dann trotzdem noch Statistiken in der Loxone führen, oder kann ich das dann alles auslagern?

    Vielen Dank das ihr mir auf die Sprünge helft. Ich verzweifle an dem Thema mittlerweile.

    Viele Grüße

    Jogi

    Kommentar

    • Gast

      #32
      Hallo Jogi,

      Ja die Lösung läuft auf einem Webserver - in meinem Fall ist das ein "Apache".

      Wenn das Dein Webdesigner ausführen darf, dann sende ihm doch den "groben Zusammenhang"-Text, den ich in meinem letzten Post geschrieben habe, zu. Ich bin mir sicher er versteht wovon ich rede.
      Zusätzlich würde ihm ein Zugriff auf Deinen Miniserver zum Spielen helfen.

      Hast Du die von mir verlinkten Webseiten bereits angesehen und die Inhalte komplett gelesen?
      Vor allem die Loxone Doku zum Thema Webservices sollte Dir oder Deinem Webdesigner den entscheidenen Ansatz bringen um zu verstehen, wie man so etwas umsetzen kann.

      Deine Frage nach einem Tipp "...wie ich den Ausgang belegen muss..." Verstehe ich nicht.
      Temperatur-Fühler besitzen eine spezifische und einzigartige Bezeichung in der Loxone Config.
      Über diese eindeutige Bezeichnung kann man die Werte, wie in der Webservices-Doku beschrieben, mittels php abfragen.

      Deine letzte Frage, ob Du weiterhin die Loxone-interne Statistik weiter führen musst, kann ich leider ebenfalls nicht beantworten, da ich Deinen Beweggrund für das Speichern Loxone-Daten in MySQL nicht kenne.
      Die Loxone-Statistik ist generell eine tolle Sache. Vor allem das Handling von pan&zoom, sowohl auf Handy/Tablet als auch in Browser mit dem PC ist m.E. (nahezu) perfekt.
      Wenn man aber mehrere Werte in einem Chart sehen möchte, gibt es leider bis dato keine Möglichkeit mit Loxone-Boardmitteln so etwas zu realisieren.
      Nun muss man sich entscheiden was man denn genau haben will.
      Und danach entscheidet sich, welche Lösung für die jeweilige Anforderung zielführend ist.

      Gruß Andi


      Gesendet von iPad mit Tapatalk
      Zuletzt geändert von Gast; 23.12.2016, 00:20.

      Kommentar

      • Gast

        #33
        Hallo Andi,

        hoffe, dass Du schöne Festtage verlebt hast.
        Vielen Dank für die Infos. Ich habe mir gerade die Seiten noch einmal angeschaut und hoffe, dass mein Programmierer Anfang Januar mehr davon versteht als ich.
        Werde mich dann noch mal weiter einlesen. Wahrscheinlich kann mir der Programmierer sagen, welchen Befehl ich in den Ausgangsbefehl reinschreiben muss, oder?

        Ich denke, dass ich das Projekt mit den virtuellen Ausgängen realisieren werde, da ein auslesen bei Bausteinen nicht möglich ist, und ich fast ausschließlich Bausteine auslesen will.

        Werde mich in der zweiten Woche noch einmal mit dem Programmierer ransetzten und mich dann wahrscheinlich mit neuen Fragen melden.

        Ich wünsche allen einen guten Rutsch und einen gesunden und sicheren Start ins neue Jahr

        Jogi

        Kommentar

        • Gast

          #34
          Hallo Jogi,

          Vielen Dank, ich hoffe auch Du hattest schöne, ruhige Festtage.


          Bei der von mir verwendeten GET- oder PULL-Methode muss man keinen "Ausgangsbefehl" definieren.


          Ich versuche es mal Anhand eines Beispiels Step-by-Step zu beschreiben:

          Ein Temperatursensor hat eine bestimmte Bezeichung erhalten.
          Im nachfolgenden Beispiel "Temp Bad EG Temperatursensor"

          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: TempBez.png Ansichten: 1 Größe: 47,0 KB ID: 73848

          Wenn man nun die folgende URL im Browser öffnet, kann man den Wert (value) dieses Sensors anschauen:

          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: TempXML.png Ansichten: 1 Größe: 19,2 KB ID: 73849

          Will man diesen Wert nun für eine eigene Visualisierung oder eine Statistikaufzeichnung verwenden, kann man das wie folgt tun:


          PHP-Code:
          <?php>
          $xml = simplexml_load_file('http://'. $Username .':'. $Password .'@'. $Miniserver .'/dev/sps/io/Temp Bad EG Temperatursensor');
          ?>

          Der Wert (value) steht nach diesem Aufruf in der Variable $xml und kann damit beliebig weiterverarbeitet werden.
          Zum Beispiel für eine Anzeige auf einer Webseite:


          PHP-Code:
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
          
          <?php
          //Pfad zur Datei mit Zugangsdaten
          include "access.php";
          ?>
          
          <div id="BadEG">
          <?php
          $xml = simplexml_load_file('http://'. $Username .':'. $Password .'@'. $Miniserver .'/dev/sps/io/Temp Bad EG Temperatursensor');
          echo '<p>'. $xml['value'] .'</p>';
          ?>
          </div>
          
          </html>

          Inhalt 'access.php':

          PHP-Code:
          <?php
          // Hier werden die Config Variablen gespeichert
          $Miniserver = "MINISERVER-IP-ADRESSE";
          $Username = "USERNAME";
          $Password = "PASSWORT";
          ?>

          Das Ergebnis sieht dann so aus:


          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: TempValue.png Ansichten: 1 Größe: 5,9 KB ID: 73855


          Für die Übergabe an eine Datenbank ist etwas mehr Code notwendig.
          Ich mache das so:


          php-snippet 'auto.php' (exemplarisch für einen Wert):


          PHP-Code:
          <html>
          <head>
          <title></title>
          </head>
          <body>
          <?php
          include "access.php";
          
          $xml = simplexml_load_file('http://'. $Username .':'. $Password .'@'. $Miniserver .'/dev/sps/io/Temp Bad EG Temperatursensor');
          
          $messpunktid = "1";
          $datetime = date("Y-m-d H:i:s");
          $wert = $xml['value'];
          
          include ('write-to-db.php');
          ?>
          </body>
          </html>

          php-snippet 'write-to-db.php':


          PHP-Code:
          <?php
          echo $messpunktid;
          echo $datetime;
          echo $wert;
          
          if($wert == "") {
           echo "Du hast die Felder nicht ausgefüllt";
          } else {
          
          $verbindung = mysqli_connect("localhost", "MYSQL-USERNAME", "MYSQL-PASSWORD")
          or die ("mySQL connect nicht möglich");
          
          mysqli_select_db($verbindung, "MYSQL-DATENBANK")
          or die ("Vebindung zur Datenbank nicht möglich");
          
          $eintrag = "INSERT INTO messwerte
          (messpunktid, datetime, wert)
          
          VALUES
          ('$messpunktid', '$datetime', '$wert')";
          
          $eintragen = mysqli_query($verbindung, $eintrag);
          
          }
          
          mysqli_close($verbindung);
          
          ?>

          Die auto.php wird via wget alle 5min aufgerufen. Ich mache das mit einem cronjob auf dem Webserver.
          Inhalt crontab:

          Code:
          # m h  dom mon dow   command
          */5 * * * * /usr/bin/wget -q -O /var/log/loxstatistik.log http://localhost/loxstatistik/auto.php

          Damit werden alle in der 'auto.php' abgefragten Werte, alle 5 Minuten in die Datenbank geschrieben.

          Gruß Andi
          Zuletzt geändert von Gast; 29.12.2016, 22:41.

          Kommentar


          • .:Chris:.
            .:Chris:. kommentierte
            Kommentar bearbeiten
            Hi Andi,
            in "php-snippet 'auto.php'" muss $wert = $xml; durch $wert = $xml['value']; ersetzt werden.

          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            @Chris: Danke für den Hinweis! habe ich angepasst.
        • .:Chris:.
          Extension Master
          • 05.01.2016
          • 199

          #35
          Hallo rastablondi,
          super Erklärung. Vielen Dank dafür.

          Wie gehst du mit den unterschiedlichen Einheiten um?
          Ich habe z.B.
          • °C
          • %rF
          • Lux
          • V
          • Liter
          • ppm

          Du würdest diese dann 1:1 mit in die DB schreiben und hast dort somit keine Zahl, sondern einen Text.

          Mein Vorschlag die Einheiten aus dem Feld "value" vor dem Schreiben in die DB zu entfernen.

          PHP-Code:
          <?php
          $value = $xml['value']; // z.B. "33.7%rF"
          $value_NEU = str_replace("%rF", "", $value); // "%rF" wird abgeschnitten und durch "" ersetzt
          ?>

          Kommentar

          • Gast

            #36
            Hi Chris,

            An dieser Stelle habe ich nicht ganz so sauber gearbeitet:
            Die Werte werden teilweise mit Grad ° an die DB gesendet.
            Durch die Definition der Messwerte in MySQL als 'decimal 11,1' bleibt da aber nur der Dezimal-Wert übrig.

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Stat_def.png
Ansichten: 1157
Größe: 54,6 KB
ID: 74203

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Stat.png
Ansichten: 1115
Größe: 40,4 KB
ID: 74202

            Wie gesagt: nicht allzu sauber, aber effektiv :-)

            Gruß Andi

            Kommentar

            • Peter_Aschenberger
              Smart Home'r
              • 27.08.2015
              • 64

              #37
              Gast br>: Wow, da hast du aber ganze Arbeit geleistet. Sieht sehr imposant aus. Kennt du schon: https://www.loxforum.com/forum/proje...gin-diskussion da wird an genau so einer Raspberry-Lösugn gearbeitet von der du auch gesprochen hast. Vielleicht könnt ihr euch ja ergänzen oder die Kräfte bündeln.

              Schöne Grüße
              Peter
              Moin zusammen, ich möchte mich daran machen ein Statistik-Plugin für den LoxBerry zu erstellen. Es gibt/gab ja schon viele Versuche hier im Forum das
              Miniserver, 4 x Extension, 1wire, 12 fach KNX-Schaltaktor
              Raspi3 für: NAS und Audio-Server(2 Räume)
              Raspi2 zur Anbindung meiner Fröling Hackschnitzelheizung

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11238

                #38
                Wenn ihr wollt, bau ich euch das in meinen Import und in Michaels Polling ein.
                Ihr müsst mir genau sagen, wie euer Queries ausschauen sollen (Create DB, CREATE TABLE und INSERTs) mit welchen Daten und Format.

                Die Zeit+Messstelle braucht auf jeden Fall einen unique Index.

                lg, Christian
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar

                • Gast

                  #39
                  Peter_Aschenberger

                  Das Loxberry Statistik Plugin scheint ziemlich zeitgleich zu meiner Lösung entwickelt worden zu sein
                  Ich habe mir die sechs Seiten Posts mal durchgelesen.
                  Anfangs war da auch von mySQL/Highcharts die Rede. Nun ist es aber offensichtlich mit RRD umgesetzt worden.

                  Ich persönlich finde RRD ist eine tolle Lösung, vor allem für die schnelle Umseztung von Statistiken.
                  Problematisch fand ich aber, dass man an die Daten nicht herankommt - zumindest habe ich damals keinen Weg gefunden.
                  Deshalb habe ich mich für mySQL entschieden. Dort kann man, falls nötig, auch mal einzelne Werte löschen oder editieren.
                  Und man sieht sofort was in die DB geschrieben wird, was beim Entwickeln der Lösung enorm geholfen hat.


                  Christian Fenzl

                  Plant ihr für das Loxberry Statistk Plugin, zusätzlich zu der RRD-Lösung, auch eine Variante bei der die Werte in eine mySQL-DB geschrieben werden können?

                  Ich habe bei meiner Lösung eine Datenbank mit 2 Tabellen erzeugt:
                  Tabelle 1: messpunkte
                  Tabelle 2: messwerte
                  Die Struktur der Tabellen findest Du in den Screendumps im Anhang.

                  Die Datenbank und die Tabellen wurden von mir damals in phpmyadmin teils manuell, teils über SQL-Queries angelegt.
                  Leider habe ich mir die SQL-Querys nicht notiert.
                  Kannst Du die CREATE DB, CREATE TABLE und INSERTs aus meinen Screendumps ableiten?

                  Klicke auf die Grafik für eine vergrößerte Ansicht  Name: loxone_statistik_db_tabellen.png Ansichten: 1 Größe: 81,1 KB ID: 77234


                  Klicke auf die Grafik für eine vergrößerte Ansicht  Name: loxone_statistik_db_tabelle_messpunkte.png Ansichten: 1 Größe: 142,6 KB ID: 77235


                  Klicke auf die Grafik für eine vergrößerte Ansicht  Name: loxone_statistik_db_tabelle_messwerte.png Ansichten: 1 Größe: 123,7 KB ID: 77236
                  Zuletzt geändert von Gast; 12.01.2017, 19:51.

                  Kommentar

                  • Christian Fenzl
                    Lebende Foren Legende
                    • 31.08.2015
                    • 11238

                    #40
                    Leg noch einen Index auf Messpunktid+Datum an, und schick mir den Export ohne die Daten.

                    Michael hat jedenfalls mal erwähnt, dass er highcharts für die RRD-Datenbanken verwenden will, und damit getestet hat.

                    Habt ihr euch überlegt, wie Datensätze bei zwei oder mehreren Werten pro Messpunkt abgelegt werden sollen?
                    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                    Kommentar

                    Lädt...