Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Datenexport CSV Verlaufsdaten (aus MYSQL) *gelöst*

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Datenexport CSV Verlaufsdaten (aus MYSQL) *gelöst*

    This topic has been deleted. Only users with topic management privileges can see it.
    • surfer09
      surfer09 @Guest last edited by

      @dp20eic Ich bin da absolut kein Profi, was SQL Geschichten angeht... Vorallem, wie man die Daten dort herauszieht. Für jemand, der sich auskennt mit Sicherheit ein Kinderspiel.
      Aber Danke schonmal für deine Mühe! 😉

      ? 1 Reply Last reply Reply Quote 0
      • ?
        A Former User @surfer09 last edited by A Former User

        @surfer09

        Moin,

        läuft schon, ich kenne mich auch nicht mit jedem Dialekt aus, habe früher mit DB2 zu tun gehabt.
        Also aktuell baue ich mir das SQL zusammen, da ich jetzt das Datenmodell sehe.

        VG
        Bernd

        Edit
        Ich habe in die von meiner Synology bereitgestellte mariaDB mal die Raumtemperatur meine 11 Meross Thermostate und die Stromzähler Daten Aktuell und Total in die iobroker DB schreiben lassen.

        Da die mariaDB auf der Syno nicht ganz den Anforderungen das Applikation workbench entspricht, habe ich das von mir bevorzugte dbeaver genutzt um die abfrage zu erstellen, ist aber nicht wichtig, nur falls Du auf den Bildern was siehst, dass in der workbench anders aussieht.

        Daten unter datapoints
        bdf2461c-4684-4257-91fd-6fea11a5bbeb-grafik.png

        Daten unter sources
        1b215673-72f6-41bb-8a6c-a68ce4b79a13-grafik.png

        Daten unter ts_number
        6e6cfe8d-010e-43c0-9e05-8cbd06e9b7ea-grafik.png

        Abfrage

        SELECT	ts_number.id as ts_ID,
        	ts_number.ts as Unix_Time,
        	datapoints.name as Name,
        	ts_number.val as Temp
        	from iobroker.datapoints inner join iobroker.ts_number
        	on datapoints.id = ts_number.id
        	where ts_number.val is NOT NULL
        	AND   datapoints.name REGEXP  'meross.0.*.room'
        

        Ergebnis

        ts_ID|Unix_Time    |Name                                                   |Temp|
        -----+-------------+-------------------------------------------------------+----+
            1|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100F469.room|22.0|
            1|1676214572839|meross.0.1911084120365426280348e1e91141bc.0100F469.room|22.5|
            1|1676214754242|meross.0.1911084120365426280348e1e91141bc.0100F469.room|22.0|
            1|1676219460179|meross.0.1911084120365426280348e1e91141bc.0100F469.room|21.5|
            1|1676224469133|meross.0.1911084120365426280348e1e91141bc.0100F469.room|21.0|
            1|1676225917126|meross.0.1911084120365426280348e1e91141bc.0100F469.room|21.5|
            1|1676226098332|meross.0.1911084120365426280348e1e91141bc.0100F469.room|21.0|
            1|1676226279574|meross.0.1911084120365426280348e1e91141bc.0100F469.room|21.5|
            1|1676227546666|meross.0.1911084120365426280348e1e91141bc.0100F469.room|21.0|
            2|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100B602.room|21.5|
            2|1676219840673|meross.0.1911084120365426280348e1e91141bc.0100B602.room|21.0|
            3|1676212957358|meross.0.1911084120365426280348e1e91141bc.01008C35.room|23.0|
            3|1676214038963|meross.0.1911084120365426280348e1e91141bc.01008C35.room|23.5|
            3|1676216934601|meross.0.1911084120365426280348e1e91141bc.01008C35.room|23.0|
            3|1676220193325|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.5|
            3|1676220374605|meross.0.1911084120365426280348e1e91141bc.01008C35.room|23.0|
            3|1676220555801|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.5|
            3|1676225442568|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.0|
            3|1676225625231|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.5|
            3|1676226168439|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.0|
            3|1676226530140|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.5|
            3|1676227073163|meross.0.1911084120365426280348e1e91141bc.01008C35.room|22.0|
            4|1676212957358|meross.0.1911084120365426280348e1e91141bc.01008C27.room|23.0|
            4|1676214238293|meross.0.1911084120365426280348e1e91141bc.01008C27.room|23.5|
            4|1676216047364|meross.0.1911084120365426280348e1e91141bc.01008C27.room|23.0|
            4|1676219486260|meross.0.1911084120365426280348e1e91141bc.01008C27.room|22.5|
            4|1676223830481|meross.0.1911084120365426280348e1e91141bc.01008C27.room|22.0|
            4|1676224011761|meross.0.1911084120365426280348e1e91141bc.01008C27.room|22.5|
            4|1676224373988|meross.0.1911084120365426280348e1e91141bc.01008C27.room|22.0|
            5|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100BC36.room|21.5|
            5|1676215518002|meross.0.1911084120365426280348e1e91141bc.0100BC36.room|21.0|
            5|1676215698033|meross.0.1911084120365426280348e1e91141bc.0100BC36.room|21.5|
            5|1676216060095|meross.0.1911084120365426280348e1e91141bc.0100BC36.room|21.0|
            5|1676218775997|meross.0.1911084120365426280348e1e91141bc.0100BC36.room|20.5|
            5|1676223844540|meross.0.1911084120365426280348e1e91141bc.0100BC36.room|20.0|
            6|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100B4CC.room|20.5|
            6|1676218019673|meross.0.1911084120365426280348e1e91141bc.0100B4CC.room|20.0|
            6|1676218199673|meross.0.1911084120365426280348e1e91141bc.0100B4CC.room|20.5|
            6|1676218924187|meross.0.1911084120365426280348e1e91141bc.0100B4CC.room|20.0|
            7|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|20.0|
            7|1676217741376|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.5|
            7|1676220637903|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.0|
            7|1676224504203|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|18.5|
            7|1676225407490|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.0|
            7|1676226854865|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.5|
            7|1676227040071|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.0|
            7|1676227763340|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.5|
            7|1676228125340|meross.0.1911084120365426280348e1e91141bc.0100D4DC.room|19.0|
            8|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100E679.room|22.0|
            8|1676215468924|meross.0.1911084120365426280348e1e91141bc.0100E679.room|21.5|
            8|1676217459894|meross.0.1911084120365426280348e1e91141bc.0100E679.room|21.0|
            8|1676220175039|meross.0.1911084120365426280348e1e91141bc.0100E679.room|20.5|
            8|1676223613839|meross.0.1911084120365426280348e1e91141bc.0100E679.room|20.0|
            8|1676228682820|meross.0.1911084120365426280348e1e91141bc.0100E679.room|19.5|
            8|1676228863967|meross.0.1911084120365426280348e1e91141bc.0100E679.room|20.0|
            8|1676229045099|meross.0.1911084120365426280348e1e91141bc.0100E679.room|19.5|
            8|1676229587781|meross.0.1911084120365426280348e1e91141bc.0100E679.room|20.0|
            8|1676229768906|meross.0.1911084120365426280348e1e91141bc.0100E679.room|19.5|
            9|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100A870.room|20.0|
            9|1676214099030|meross.0.1911084120365426280348e1e91141bc.0100A870.room|20.5|
            9|1676216271031|meross.0.1911084120365426280348e1e91141bc.0100A870.room|20.0|
            9|1676218745174|meross.0.1911084120365426280348e1e91141bc.0100A870.room|19.5|
            9|1676222185462|meross.0.1911084120365426280348e1e91141bc.0100A870.room|19.0|
            9|1676229309291|meross.0.1911084120365426280348e1e91141bc.0100A870.room|18.5|
            9|1676229490431|meross.0.1911084120365426280348e1e91141bc.0100A870.room|19.0|
           10|1676212957358|meross.0.1911084120365426280348e1e91141bc.0100F304.room|20.0|
           10|1676214255341|meross.0.1911084120365426280348e1e91141bc.0100F304.room|20.5|
           10|1676215345772|meross.0.1911084120365426280348e1e91141bc.0100F304.room|20.0|
           10|1676215526589|meross.0.1911084120365426280348e1e91141bc.0100F304.room|20.5|
           10|1676216250564|meross.0.1911084120365426280348e1e91141bc.0100F304.room|20.0|
           10|1676219690473|meross.0.1911084120365426280348e1e91141bc.0100F304.room|19.5|
           10|1676223671281|meross.0.1911084120365426280348e1e91141bc.0100F304.room|19.0|
           10|1676225546566|meross.0.1911084120365426280348e1e91141bc.0100F304.room|19.5|
           10|1676226813458|meross.0.1911084120365426280348e1e91141bc.0100F304.room|20.0|
           11|1676212957358|meross.0.1911084120365426280348e1e91141bc.01009381.room|22.5|
           11|1676221760028|meross.0.1911084120365426280348e1e91141bc.01009381.room|22.0|
           11|1676224293867|meross.0.1911084120365426280348e1e91141bc.01009381.room|22.5|
           11|1676224836869|meross.0.1911084120365426280348e1e91141bc.01009381.room|22.0|
        

        Jetzt muss man evtl. noch die Zeit eingrenzen auf die Periode, die Du gern exportieren möchtest.

        Muss ich mir aber später anschauen, da ich mich langsam auf den Weg machen muss Super Bowl Night 🙂

        VG
        Bernd

        surfer09 1 Reply Last reply Reply Quote 1
        • surfer09
          surfer09 @Guest last edited by

          @dp20eic Das ist ja schonmal gut. Jetzt gibt es zwar die Werte aus, aber dazugehörige Datum fehlt? Zumindest kann ich es in deiner Ausgabe nicht sehen...

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @surfer09 last edited by

            @surfer09

            Moin,

            das ist die Spalte Unix_Time, das kann man sich auch umrechnen lassen, bin aber wegen Super Bowl heute noch nicht richtig wach 🙂

            Wichtig ist auch, wieso möchtest Du das Exportieren, denn je nachdem was Du vor hast, muss dann auch noch aus der Tabelle sources etwas geholt werden.

            VG
            Bernd

            surfer09 1 Reply Last reply Reply Quote 0
            • surfer09
              surfer09 @Guest last edited by surfer09

              @dp20eic Also ich habe gerade mal deinen Befehl auf meine DB angepasst. Allerdings läuft das Ganze auf einen Fehler, den ich nicht ganz beheben kann...

              Befehl.jpg

              Meldung.jpg

              Achso zu der Frage, warum exportieren: Ich würde gerne die Daten nach Excel exportieren und diese grafisch darstellen lassen. Würde diese Daten dann gerne archivieren pro Jahr.

              ? 1 Reply Last reply Reply Quote 0
              • ?
                A Former User @surfer09 last edited by

                @surfer09 sagte in Datenexport Verlaufsdaten:

                Achso zu der Frage, warum exportieren: Ich würde gerne die Daten nach Excel exportieren und diese grafisch darstellen lassen. Würde diese Daten dann gerne archivieren pro Jahr.

                Moin,

                zum Archivieren ist ja eigentlich die Datenbank da 😉

                Du kannst Excel auch mit einer Datenbank verbinden, ohne dass Du Daten exportieren musst 😉

                Hast Du dich schon einmal mit Grafana befasst? Das ist genau dafür gemacht um sich mit einer Datenbank oder Anderen Datenquellen zu verbinden und dann Auswertungen grafisch darzustellen, auch dafür muss man keine Daten exportieren.

                Noch ein Tip hier für das Forum, wenn es sich um Text, wie die Fehlermeldung handelt, dann ist es besser diese in die sogenannten Code Tags zu packen, Bilder sind dazu nicht wirklich gut geeignet.
                Auch wenn Du dein SQL als Text in die Code Tags packst, dann könnte ich das einfach kopieren, ich werde das nicht aus einem Bild abtippen ;), aber beim drüber Schauen, würde ich sagen, das das - in iobroker-db das Problem ist, - ist eine Rechenoperationen wenn ich das auf dem anderen Bild richtig entziffern konnte sagte das auch die Workbench das Du ein Problem bei -db.datapoints hast.
                Ich müsste schauen wie bei mysql die Syntax zum Quoten des - ist, gerade keinen blassen Schimmer, Du kannst mal so versuchen

                'iobroker-db'.datapoints
                

                Natürlich bei allen Ausdrücken im SQL wo der Datenbankname benutzt wird.

                Die Code Tags findest Du über dem Bereich wo Du den Text verfasst </>, Du kannst dich aber auch in die sogenannte Markdown Syntax einlesen oder beim Schreiben eines Posts einfach 3 mal dann Enter, dann den Text, den Du zeigen möchtest, wieder Enter und wieder 3 mal. Sieht dann wie folgt aus

                ich habe 3 mal ` eingegeben
                Enter
                Dann den text und
                wieder 3 mal `
                

                VG
                Bernd

                surfer09 1 Reply Last reply Reply Quote 0
                • surfer09
                  surfer09 @Guest last edited by surfer09

                  @dp20eic: Fehler bleibt leider gleich, ich hab's mal in die Code-Tags gepackt 😉

                  19:51:46	SELECT ts_number.id as ts_ID,  ts_number.ts as Unix_Time,  datapoints.name as Name,  ts_number.val as Watt  from 'iobroker-db'.datapoints inner join 'iobroker-db'.ts_number  on datapoints.id = ts_number.id  where ts_number.val is NOT NULL  AND   datapoints.name REGEXP  'hs100.0.192_168_1_215.power'	Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''iobroker-db'.datapoints inner join 'iobroker-db'.ts_number  on datapoints.id = ' at line 5	0.000 sec
                  
                  
                  Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''iobroker-db'.datapoints inner join 'iobroker-db'.ts_number  on datapoints.id = ' at line 5
                  
                  

                  Von Grafana gehört ja, aber noch nicht benutzt.
                  Ich muss den Datenpunkt löschen, weil ich ein neues Gerät dafür einsetzen möchte, daher auch der Export, damit mir die Daten nicht verloren gehen. Ich möchte den "toten" Datenpunkt nicht in den Objekten behalten, nur dafür das ich die Daten noch im Zugriff habe.

                  ? 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @surfer09 last edited by A Former User

                    @surfer09

                    Moin,

                    also bei mir zeig dbeaver folgende Syntax an

                    SELECT	ts_number.id as ts_ID,
                    		ts_number.ts as Unix_Time,
                    		datapoints.name as Name,
                    		ts_number.val as Temp
                    	from `iobroker-db`.datapoints inner join `iobroker-db`.ts_number
                    	on datapoints.id = ts_number.id
                    	where ts_number.val is NOT NULL
                    	AND   datapoints.name REGEXP  'meross.0.*.room'
                    ;
                    

                    Hatte vorhin die falschen Hochkommas genommen.

                    VG
                    Bernd

                    P.S.: also, wenn Du für die Zukunft, nicht auf die gleichen Probleme stoßen möchtest, immer wenn Du ein Gerät austauschen Musst, dann solltest Du dich mal mit dem Thema Alias beschäftigen. Grob gesagt, ist das z.B.:

                    Alias Orig. Device Austausch Device
                    Kaffeemaschine.power hs100.0.192_168_1_215.power da original ok, nicht vorhanden
                    Kaffeemaschine.power original defekt neues-device.power

                    Somit bleibt der Name des Datenpunkts nach außen hin gleich, auch in der Historie/Datenbank, oder für Scripts , nur der original Datenpunkt ändert sich.

                    surfer09 1 Reply Last reply Reply Quote 1
                    • surfer09
                      surfer09 @Guest last edited by

                      @dp20eic Perfekt, mit den Hochkommas funktionierte der Export! 🙂 Eine Schwierigkeit habe ich jetzt noch mit dem Datum / Uhrzeit. In Excel ist das Ganze noch ein Zahlendurcheinander.
                      Muss beim Befehl "Unix_Time" vielleicht gegen etwas anderes ausgetauscht werden?

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @surfer09 last edited by A Former User

                        @surfer09

                        Moin,
                        lass mich mal schauen, war heute mit anderen Dingen beschäftigt.

                        VG
                        Bernd

                        Edit

                        SELECT	ts_number.id as ts_ID,
                        		ts_number.ts as Unix_Time,
                        		DATE_FORMAT(FROM_UNIXTIME(ts/1000), GET_FORMAT(DATETIME,'EUR')) as formated_date,
                        		datapoints.name as Name,
                        		ts_number.val as Temp
                        	from iobroker.datapoints inner join iobroker.ts_number
                        	on datapoints.id = ts_number.id
                        	where ts_number.val is NOT NULL
                        	AND   datapoints.name REGEXP  'meross.0.*.room'
                        ;
                        

                        Oder in Excel umwandeln -> Google "unixtime in datum umwandeln"

                        VG

                        surfer09 1 Reply Last reply Reply Quote 1
                        • surfer09
                          surfer09 @Guest last edited by

                          @dp20eic sagte in Datenexport Verlaufsdaten:

                          DATE_FORMAT(FROM_UNIXTIME(ts/1000), GET_FORMAT(DATETIME,'EUR')) as formated_date,

                          Perfekt, ich danke dir! Hat alles funktioniert! 🙂

                          ? 1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User @surfer09 last edited by

                            @surfer09 sagte in Datenexport CSV Verlaufsdaten (aus MYSQL) *gelöst*:

                            @dp20eic sagte in Datenexport Verlaufsdaten:

                            DATE_FORMAT(FROM_UNIXTIME(ts/1000), GET_FORMAT(DATETIME,'EUR')) as formated_date,

                            Perfekt, ich danke dir! Hat alles funktioniert! 🙂

                            Moin,

                            Bitte schön. Danke, das ich wieder etwas lernen konnte 🙂

                            Aber, Du solltest Dich wirklich mal mit den Aliase auseinander setzen, denn es kann immer mal etwas Kaputt gehen oder man Baut etwas um, dann passen die dazugehörigen Daten auch nicht mehr, und jedes mal die Daten aus der Datenbank zu nehmen ist auch nicht weise 😉

                            VG
                            Bernd

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            426
                            Online

                            32.0k
                            Users

                            80.3k
                            Topics

                            1.3m
                            Posts

                            3
                            21
                            691
                            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