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.
    • G
      Garf @mickym last edited by

      @mickym

      Alles klar. Die Datei war noch geöffnet und mit Text in Spalte kommt dann folgendes Ergebnis heraus:

      Excel_2.JPG

      Ergebnis sieht mehr als brauchbar aus. Werde gleich den von dir beschriebenen Weg probieren. Insgesamt kann es sich schon mal sehen lassen.

      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

        Alles klar. Die Datei war noch geöffnet und mit Text in Spalte kommt dann folgendes Ergebnis heraus:

        Excel_2.JPG

        Ergebnis sieht mehr als brauchbar aus. Werde gleich den von dir beschriebenen Weg probieren. Insgesamt kann es sich schon mal sehen lassen.

        Dann hast Du wahrscheinlich wie ich gesagt habe - den Dateipfad fest in die file Node geschrieben. Ich habe nicht umsonst den fetten Text hier reingeschrieben:

        https://forum.iobroker.net/topic/49120/datenpunkt-in-log-oder-csv-file-schreiben/8?_=1637518991766

        wie gesagt Dateinamen nicht in die File Node schreiben - dann wird die Datei auch nach jedem Datensatz geschlossen.

        Bin in der nächsten Zeit nur sporadisch an Board.

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

          @mickym

          Nein habe ich nur bei den Eigenversuchen gemacht. Die Datei habe ich mit Filezilla auf den Desktop kopiert. Ich muss es gleich noch einmal nach deiner Beschreibung machen. Gebe dir dazu im Laufe des Abends noch eine Rückmeldung. Allerdings die Fehlermeldung kommt immer noch.

          Payload_2.JPG

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

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

            Bin in der nächsten Zeit nur sporadisch an Board.

            Kein Problem. Ich kann jetzt ja schon einmal die Daten in den csv-File schreiben lassen. Dies hilft mir doch schon sehr weiter. Der Rest wird schon noch im Laufe der Zeit.

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

              @garf Na dann hast die File Nodes zum Testen des Zugriffs nicht installiert oder falschen Dateinamen eingetragen.

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

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

                Na dann hast die File Nodes zum Testen des Zugriffs nicht installiert oder falschen Dateinamen eingetragen.

                Ja, durchaus möglich, dass ich da noch etwas nicht gemacht habe. Die Datei wird ja angelegt. Ich mache mal eins nach dem anderen.

                Danke für deine Unterstützung.

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

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

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

                  Na dann hast die File Nodes zum Testen des Zugriffs nicht installiert oder falschen Dateinamen eingetragen.

                  Ja, durchaus möglich, dass ich da noch etwas nicht gemacht habe. Die Datei wird ja angelegt. Ich mache mal eins nach dem anderen.

                  Danke für deine Unterstützung.

                  https://flows.nodered.org/node/node-red-contrib-fs-ops

                  node-red-contrib-fs-ops installieren - ist Bestandteil des Flows

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

                    @mickym

                    Habe ich installiert.

                    Flow.JPG

                    Entwarnung. Ist die Ausgabe der msg-Node und das Ergebnis der Prüfung. Das Thema können wir abhaken.

                    Fehlermeldung.JPG

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

                      @mickym
                      @rewenode

                      In Teilen bin ich nun weiter gekommen. Die csv Datei wird nun so geschrieben , dass man diese nun nicht mehr für die Aufteilung in Spalten in Excel noch umwandeln muss. Öffnet man die csv in Excel erscheint nun direkt folgende Darstellung:

                      csv_SpaltendarstellungJPG.JPG

                      Die ersten Werte sammel ich gerade über MQTT für die Datenbank ein. Dabei ist mir aufgefallen, das die Wetterstation als Dezimaltrennzeichen einen Punkt verwendet und bei ganzen Zahlen keine Nachkommastellen sendet. Dies kann ich zwar über ein function-Node und der Funktion replace korrigieren. Ich würde dies aber lieber über JSONata und dem Change-Node machen. Leider steige ich da nicht wirklich durch. Angesehen habe ich mir die string Funktionen zwar, aber eine Lösung konnte ich mir damit nicht herleiten. Könnt ihr mir evtl. weiterhelfen?

                      Danke.

                      P.S: Ich habe hier https://forum.iobroker.net/topic/49835/vergleich-von-zwei-eingangswerten-um-wert-festzulegen/49 sehr interessiert mitgelesen, auch wenn ich in der Tiefe nicht alles verstanden habe,

                      mickym 1 Reply Last reply Reply Quote 0
                      • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            846
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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