Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Datenpunkt in LOG oder CSV File 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

    Datenpunkt in LOG oder CSV File schreiben

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

      @garf In der Change Node Zahlen Komma - habe ich doch alles gemacht?? Es war alles fix und fertig, so dass man nur einmal importieren muss und dann kann man einfach Daten aktualisieren im Excel machen.

      In dem Originalflow - war diese Change Node jedenfalls schon drin - ich weiß nicht, warum man die dann nicht verwenden kann?? Ich gehe eigentlich schon davon aus ,wenn ich mir die Mühe für eine Lösung mache, dass man die Flows auch importiert und zumindest anschaut. - Sonst kann ich mir das ja auch sparen.

      be512256-7c39-46f0-bef1-ee70311d3f5b-image.png

      [{"id":"579569f5.ebb9c8","type":"change","z":"58159633dd63b0d9","name":"Zahlen  Komma","rules":[{"t":"set","p":"payload","pt":"msg","to":"$formatNumber(payload, \"#,##\", {'decimal-separator':',', 'grouping-separator':'.'} )\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":760,"wires":[["8f46052e.5418c8"]]}]
      

      Wenn Du es nicht aufgerundet - sondern zwingend 2 Dezimalstellen haben willst - also auch bei Ganzzahlen musst halt den Formatstring auf #,00 anpassen.

      153c6efd-11fd-43ad-aae1-739b3497c92c-image.png

      a2d8f65d-88e7-47bb-81f8-a2f55311f187-image.png

      G 1 Reply Last reply Reply Quote 1
      • G
        Garf @mickym last edited by

        @mickym sagte in Datenpunkt in LOG oder CSV File schreiben:

        ich weiß nicht, warum man die dann nicht verwenden kann??

        Keine Sorge, deinen Flow habe ich schon 1:1 in das Testsystem übernommen.
        Soweit ich den den Change-Node verstehe wandelst Du einen Zahlenwert in ein beliebiges Format um und tauscht Punkt gegen Komma. Ich habe aber keinen Zahlenwert, sondern ein Textfeld.

        Und dies kommt, wenn ich den von MQTT übergeben Wert in deinen Flow übernehme:

        Fehlermeldungt.JPG

        Deshalb habe ich die Frage auch nach dem Tausch der Dezimalstelle in einem String gefragt. Im function-Node geht dies mit der replace Funktion. Beispiel: regenTag = regenTag.replace('.', ',');

        So sehen die von MQTT übegebenen Werte aus:
        MQTT_Werte.JPG

        Umwandeln von String in Number und dann von Punkt auf Komma?

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

          @garf Hast Du die unselige Option in den Adaptereinstellungen raus gemacht - dass alles in strings umgewandelt wird? Oder holst Du direkt alles aus mqtt Nodes? Wenn ja dann kommen da auch nur strings raus - dann musst Du in Zahlen mit Numbers umwandeln - einfach JSONATA erweitern.

          Dann einfach ein $number drum rum machen:

          $number(
             $formatNumber(
                 payload,
                 "#,00",
                 {
                     'decimal-separator':',',
                     'grouping-separator':'.'
                 } 
             )
          )
          
          G 2 Replies Last reply Reply Quote 0
          • G
            Garf @mickym last edited by

            @mickym

            Ich verwende keinen Adapter und kein iobroker. Ich verwende ausschließlich Node Red und zur Kommunikation unter den verschiedenen Reglern Modbus und den MQTT Broker. Die Werte in den MQTT Nodes sind leider immer im Stringformat. Ich glaube sogar die ELV Wetterstation übergibt die Werte schon als Stringwert.

            mickym 1 Reply Last reply Reply Quote 0
            • G
              Garf @mickym last edited by

              @mickym sagte in Datenpunkt in LOG oder CSV File schreiben:

              @garf Hast Du die unselige Option in den Adaptereinstellungen raus gemacht - dass alles in strings umgewandelt wird? Oder holst Du direkt alles aus mqtt Nodes? Wenn ja dann kommen da auch nur strings raus - dann musst Du in Zahlen mit Numbers umwandeln - einfach JSONATA erweitern.

              Dann einfach ein $number drum rum machen:

              $number(
                 $formatNumber(
                     payload,
                     "#,00",
                     {
                         'decimal-separator':',',
                         'grouping-separator':'.'
                     } 
                 )
              )
              

              Cool, wird sofort getestet. Dass wäre ja ein Ding. Du glaubst gar nicht was ich schon gesucht habe.

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

                @garf Ja ich habe es gerade gedacht - dann wie gesagt erst in Zahl umwandeln und dann mit dieser Format funktion wieder umwandeln - also einfach nochmal ein $number() drum rum -

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

                  @garf Halt war ein Fehler von mir - richtig muss es so aussehen:

                  $formatNumber(
                     $number(payload),
                     "#,00",
                     {
                         'decimal-separator':',',
                         'grouping-separator':'.'
                     } 
                  )
                  

                  damit funtkioniert es auch mit strings als Eingabe:

                  ec38b900-0b4d-47df-a0a3-681ebcc5c0d7-image.png

                  4b41a294-f896-4a2e-92b1-3d98b495b164-image.png

                  [
                     {
                         "id": "579569f5.ebb9c8",
                         "type": "change",
                         "z": "43977b1e.ee9a14",
                         "name": "Zahlen Komma",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$formatNumber(\t   $number(payload),\t   \"#,00\",\t   {\t       'decimal-separator':',',\t       'grouping-separator':'.'\t   } \t)",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 960,
                         "y": 120,
                         "wires": [
                             [
                                 "62823f6c.14d78"
                             ]
                         ]
                     }
                  ]
                  

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    Garf @mickym last edited by Garf

                    @mickym sagte in Datenpunkt in LOG oder CSV File schreiben:

                    damit funtkioniert es auch mit strings als Eingabe

                    Ja, funktionert 1A und ich kann auf das function Node verzichten. Auf diese Lösung wäre ich alleine in hundert Jahren wohl nicht gekommen. Gut, dass ich viel mitlese und dann auch mal nachfrage. Danke dir, ich mache dann mal weiter mit meiner Datenbank.

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

                      @garf sagte in Datenpunkt in LOG oder CSV File schreiben:

                      @mickym sagte in Datenpunkt in LOG oder CSV File schreiben:

                      damit funtkioniert es auch mit strings als Eingabe

                      Ja, funktionert 1A und ich kann auf das function Node verzichten. Auf diese Lösung wäre ich alleine in hundert Jahren wohl nicht gekommen. Gut, dass ich viel mitlese und dann auch mal nachfrage. Danke dir, ich mache dann mal weiter mit meiner Datenbank.

                      Schön, dass es funktioniert - unter JSONATA gibts auch für Strings eine Replace Funktion mit der Du Punkt gegen Komma tauschen kannst - allerdings hast Du mit meiner vorgeschlagenen Lösung, dass korrekt gerundet wird.

                      Bei Stringmanipulationen hast Du verschiedene Möglichkeiten:

                      dc4e6e1b-789b-4c95-bd92-0d3982e711d2-image.png

                      oder natürlich eine einfache Change Node. 😉

                      f6e847e0-c73d-41d3-b2c3-bd464f47873a-image.png

                      G 1 Reply Last reply Reply Quote 0
                      • G
                        Garf @mickym last edited by

                        @mickym sagte in Datenpunkt in LOG oder CSV File schreiben:

                        oder natürlich eine einfache Change Node

                        Auf die einfachste Lösung kommt man erst gar nicht. Aber das Ergebnis mit JSONata ist deutlich besser und mit den beiden Nachkommastellen gefällt es mir dann wirklich gut. Jedoch zeigt sich noch ein Problem, welches ich mir so gar nicht erklären kann. Bei der Niederschlagsmenge 0 kommt folgendes Zahlenwerk heraus: ,00. In der csv-Datei wird dieser Makel dann schon fast wieder vollständig behoben. aber schöner wäre natrlich 0,00. Hast Du vielleicht noch eine Idee?

                        Nullwert.JPG

                        csv-Tabelle.JPG

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

                          @garf Gib einfach in den Format string "0,00" statt "#,00" ein.

                          G 1 Reply Last reply Reply Quote 0
                          • G
                            Garf @mickym last edited by

                            @mickym
                            Hä, passt so. Irgendwie hatte ich dass mit dem Doppelkreuz anders verstanden. Gut bei Excel gibt es das Dateiformat vor. Egal es funktioniert mit diesem Format 0,00, mehr brauchts dann auch nicht. Vielen Dank für deine Hilfe. Das Logthema wäre dann für mich vorerst abgeschlossen. 😊

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

                              @garf Das Doppelkreuz heisst in der Regel wird weggelassen wenn führende oder hinten 0 - 0 heißt wird immer die Zahl - also auch die 0 geschrieben.

                              G 1 Reply Last reply Reply Quote 0
                              • G
                                Garf @mickym last edited by

                                @mickym
                                Danke für die Erklärung, die speicher ich mir direkt mal ab.👍

                                1 Reply Last reply Reply Quote 0
                                • Basti97
                                  Basti97 Most Active last edited by

                                  Hallo
                                  Würde es auch funktionieren wenn ich die csv (also die Excel Tabelle) auf einen Netzwerklaufwerk was ich unter Linux eingebunden habe zu speichern?
                                  Oder gibt es mittlerweile einen Adapter der das ganze einfacher Zu Handeln lässt.

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

                                    @basti97 sagte in Datenpunkt in LOG oder CSV File schreiben:

                                    Hallo
                                    Würde es auch funktionieren wenn ich die csv (also die Excel Tabelle) auf einen Netzwerklaufwerk was ich unter Linux eingebunden habe zu speichern?
                                    Oder gibt es mittlerweile einen Adapter der das ganze einfacher Zu Handeln lässt.

                                    Ja das geht - wenn per Default Schreibrechte nach dem Mounten vorhanden sind. Ich hab das nach langem hin und her nun bei mir so gelöst, wenn es ein Windows Netzlaufwerk ist - wahrscheinlich kann man das aber bei anderen Dateisystemen auch so machen

                                    file_mode=0664,dir_mode=0775
                                    

                                    die volle Zeile aus der fstab

                                    //Server/Share    /home/pi/Verzeichnis      cifs    vers=3.0,rw,noauto,users,file_mode=0664,dir_mode=0775,credentials=/home/pi/.smbcredentials      0       0
                                    

                                    Bei Dir wird halt auto .- statt noauto drin stehen.

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

                                      @mickym es wäre bei mir Linux. Ich könnte ihn doch einfach als Netzwerklaufwerk hinzufügen. Und den Pfad eingeben. Den unterschied wird doch node red nicht erkennen oder. Das muss ich mal am we probieren. Was schreibst du für Daten eigentlich in die Excel Tabelle. Ich dachte an den Stromverbrauch. Ich weiß aber nicht so richtig ob das ganze Sinn macht da ich auch eine influx DB habe. Was meinst du dazu?

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

                                        @basti97 Ich erklärte doch wie Du unter Linux das Netzlaufwerk einbindest. - Fürs permanente Sammeln würde ich auch lieber InfluxDB nutzen - ich beschäftige mich gerade damit (als Noob ein bisschen) und denke gerade dafür ist so eine Timeseries DB schon am Besten geeignet. Im Prinzip müsste es damit auch gehen über den output agent direkt csv Dateien zu schreiben. Hab ich aber noch nicht probiert.

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

                                          @mickym Achso ich dachte das wer für Windows die anweisung Entschuldigung. Ich bin noch nicht so der kenner aber könnte man aus Influx DB oder Grafana auch eine csv Datei exportieren. Zum Beispiel wo der Energieverbrauch für das Jahr drauf ist. Oder was auch ein bsp ist, wäre den Ertrag der PV Anlage in einer excel zuspeichern von influxdb oder grafana.

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

                                            @basti97 sagte in Datenpunkt in LOG oder CSV File schreiben:

                                            Achso ich dachte das wer für Windows die anweisung Entschuldigung.

                                            Es war die Anweisung - wie Du ein Windowslaufwerk unter LINUX einbindest.

                                            Im Prinzip kannst Du es aber auch für andere Dateisysteme nutzen, wichtig ist der file und dir mode - damit Du Schreibrechte nach dem mounten hast.

                                            Zum Thema Influx DB - manuell kannst Du die Daten ja jederzeit in eine CSV downloaden über den DataExplorer.

                                            dafec382-02b3-4f95-97ee-b29d9c3cef50-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            607
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            48
                                            6936
                                            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