Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Automatisierung
    5. Sensorwerte in SQL-DB schreiben

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sensorwerte in SQL-DB schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @IOMAX 0 last edited by

      @iomax-0 Wieso Du hast doch bei _from immer 0 oder 1?

      Ich habe gerade mal so einen View erstellt.

      99cce1a3-8cf4-4ef9-85ec-d5c7a32b95f7-image.png

      Diese Tabelle enthält nur noch die Daten einer source.

      1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @IOMAX 0 last edited by mickym

        @iomax-0 Im Prinzip - gut bei Deinen Aliases ist das halt nicht so einfach - aber Du siehst doch bei jeder Tabelle, dass über _id eine eindeutige Quelle zugeordnet ist. Ist die Frage, ob es überhaupt Sinn macht hier mit Aliasen zu arbeiten, weil wenn man mal eine andere Source hat, automatisch eine neue ID erstellt wird, so dass man die Abfragen für die Views entsprechend erweitern kann.

        Über den View kann man mit dem SQL Statement ja ggf. das flexibel steuern.

        6958ec4d-7347-4175-9dc8-f2361bb94ee7-image.png

        Die Tabellen selbst schauen immer gleich aus, die legt ja der SQL Adapter an. Deswegen ist die Struktur der Tabellen bei allen identisch - egal wieviele Punkte. Das ist auch meines Erachtens sinnvoll, um da eine Struktur zu schaffen, die unabhängig von der Art und Anzahl an geloggten Punkten ist.

        1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @IOMAX 0 last edited by mickym

          @iomax-0 sagte in Sensorwerte in SQL-DB schreiben:

          Aber selbst wenn, dann könnte ich damit trotzdem nichts anfangen, denn die Zeilen in "ts_number" völlig ohne
          Identifier, sodass ein Mapping nicht möglich ist.

          Das stimmt nicht - mit dem _id - ist über die datapoints die Quelle eindeutig zuzuordnen. Wenn Du mal zwischenzeitlich das Logging deaktiviert hast und dann wieder aktiviert hast - dann kann es sein, dass vielleicht die datapoints nicht mehr da ist. Bei jeder Aktivierung eines Datenpunktes wird ein neuer Eintrag in der datapoints Table generiert.

          Sprich alle Datensätze in Deiner ts_number Tabelle, in der _id = 1 ist, stammen vom Datenpunkt ... consumptionMeterReadingKWh

          Sprich mit einem View consumptionMeterReadingKWh kannst Du Dir über einen entsprechenden View mit dem SQL Statement quasi eine eigene Tabelle mit genau einer definierten Quelle aus datapoints erstellen.

          1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @IOMAX 0 last edited by

            @iomax-0 sagte in Sensorwerte in SQL-DB schreiben:

            kann aber nicht zuordnen, welche Zeile zu welchem Datenpunkt von den 9 gehört

            dafür sind datenbanken da, das man hoch performant millionen von datensätze so abrufen kann wie man will.
            in iobroker gibt es eine separate tabelle datapoints mit allen datenpunkten die aufgezeichnet werden. der id in dieser tabelle entspricht der Zahl in _from in den Tabellen ts_number/etc,

            wenn du sehen willst wie der datenpunkt lautet, dann kann man das über eine query abfragen

            diese hier fragt den datenpunktnamen, den timestamp und den wert ab. über die where bedingung wird der id aus datapoint mit dem _from wert aus den ts_number verknüpft
            Der LIMIT befehl begrenzt mal auf 100 Datensätze, da unter umständen da ja ganz viele werte in der datenbank gespeichert ist
            evtl solltest du auch auf einen zeitbereich begrenzen

            SELECT dp.name,val.ts,val.val from ts_number as val,datapoints as dp where dp.id = val._from LIMIT 100
            

            hier ein kleines tutorial zu den datenbank abfragen
            https://www.w3schools.com/sql/sql_select.asp

            1 Reply Last reply Reply Quote 0
            • F
              fastfoot last edited by

              _from ist nicht ziehlführend, sondern die id, sie ist mit einer id aus datapoints identisch. Man muss keine view erstellen sondern macht das gleich im sql-statement

              SELECT d.id, d.name, FROM_UNIXTIME(n.ts/1000) datum, n.val
              FROM ts_number n JOIN datapoints d ON n.id=d.id AND d.name="tankerkoenig.0.stations.5.e5.feed"
              WHERE n.ts >= UNIX_TIMESTAMP(DATE('2022-6-1'))*1000
                AND n.ts <  UNIX_TIMESTAMP(DATE('2022-6-2'))*1000;
              

              liefert

              id;name;datum;val
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 09:56:30,2760;1.879
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 10:41:29,9850;1.879
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 10:56:30,1020;1.869
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 12:11:30,0160;1.869
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 12:26:30,0300;1.899
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 13:41:30,0650;1.899
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 13:56:30,0730;1.889
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 17:11:30,1950;1.889
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 17:26:30,1200;1.909
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 17:41:30,1120;1.889
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 17:56:30,1780;1.889
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 18:11:30,1100;1.879
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 18:41:30,2390;1.879
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 18:56:30,1310;1.859
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 19:11:30,1260;1.899
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 19:26:30,1350;1.889
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 20:41:30,1900;1.889
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 20:56:30,1740;1.859
              1;tankerkoenig.0.stations.5.e5.feed;2022-06-01 21:59:11,8280;1.859
              
              
              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @fastfoot last edited by mickym

                @fastfoot Ja OK - Du hast Recht - sorry mein Fehler. Ich verbessere das mal. 😉

                In den Screenshots hatte ich es ja richtig gemacht - nur hier falsch beschrieben.
                Finde das immer toll, wenn man das so aufmerksam mit liest. Vielen Dank an @fastfoot

                @fastfoot sagte in Sensorwerte in SQL-DB schreiben:

                Man muss keine view erstellen sondern macht das gleich im sql-statement

                Ja das habe ich ja auch gesagt, nur der TE meinte ja das Grafana wohl nicht mit SQL Statements umgehen kann, sondern man quasi nur Tabellen als Ganzes als Source angeben kann. Da kann ich aber nichts zu sagen, weil ich Grafana nicht verwende.

                S 1 Reply Last reply Reply Quote 0
                • S
                  stefank22 @mickym last edited by

                  Man kann in Grafana sowohl SQL-Statements eingeben, als auch eine Queryeditor verwenden.

                  46b11adf-6068-4ce3-a59e-17810a756be0-grafik.png

                  717cd437-4acf-4dd3-9628-5e6ebcbe5bc6-grafik.png

                  Würde mich auch mal interessieren, wie man das löst, bin in SQL aber nicht fit genug.

                  Was müsste man denn konkret in Grafana hinterlegen, bzw. wie sähe das SQL-Statement aus,
                  wenn man beispielsweise die Werte (Tabelle ts_numbers) der Geräte-ID 10 (Tabelle datapoints) selektieren möchte ?

                  3689f05e-62e1-4df6-b7b3-c10b3540961b-grafik.png

                  ac562e3d-35b4-4786-a59b-17c8ae4b9373-grafik.png

                  I mickym 2 Replies Last reply Reply Quote 0
                  • I
                    IOMAX 0 @stefank22 last edited by

                    Hey Leute,

                    ihr habt Recht. Über die ID ist das ja eindeutig zuordenbar !!! Ist schon spät 🙂
                    Brauche quasi nur nen SQL-"SVERWEIS" zu machen.

                    Wie das geht, weiß ich aber nicht. Schließe mich daher Stefank22 an ..

                    Grüße gehen raus !

                    1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @stefank22 last edited by mickym

                      @stefank22

                      SELECT  `id`,  `ts`, `val` FROM `iobroker`.`ts_number` WHERE `id` = 10 
                      

                      OK Du kannst noch ORDER by ts einfügen.

                      Und noch ein Fehler meinerseits - die Datenpunkte stehen in Tabelle datapoints. Source enthält die Quelle, die den Datenpunkt beschrieben hat.

                      ecbb2dff-b377-483c-8c54-35fc823a0663-image.png

                      Sorry für die Verwirrung.

                      Also
                      datapoints - enthält die Quelle also den Datenpunkt
                      source - ist die ID die den Datenpunkt beschrieben hat. (Also meist die Adapterinstanz).

                      Sorry für die Verwirrung, die ich vielleicht gestiftet habe.

                      I 1 Reply Last reply Reply Quote 0
                      • I
                        IOMAX 0 @mickym last edited by

                        Ha, ich habs. Das ist ja doch einfacher, als gedacht.

                        SELECT
                        ts AS "time",
                        val
                        FROM ts_number
                        WHERE
                        id = 8
                        ORDER BY ts

                        Über die ID kann ich nun schön alle Datenpunkte ansteuern.

                        DANKE EUCH ALLEN !

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        400
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        5
                        13
                        504
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo