Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Daten 1 mal im Monat schreiben

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Daten 1 mal im Monat schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SaschaH2511 last edited by

      Hallo Zusammen

      stehe gerade vor einem Kleinen Problem und vieleicht hat hier jemand eine Passende Lösung.

      Ich Lese Daten von Stromzählern wasserzählern etc. ab.
      Diese Daten möchte ich gerne für die Weitere Verarbeitung in eine csv schreiben.
      Soweit gut und Funktioniert.

      Allerdings werden die Daten ja permanente geschrieben was die csv nur ünnötig Groß macht.
      Ich Benötige die Werte nur am 1sten des Monats in der csv.

      Weis jemand wie ich das am einfachsten steuern kann ?
      aa4cf908-605c-4cdd-a6b1-407b7d2c007e-grafik.png
      323d4ad4-f7af-4bb8-8ac2-2d38fc39f552-grafik.png
      901ecb9a-b841-465f-aaf3-525d9168d2f4-grafik.png

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

        @saschah2511 nimm eine cron-plus Node. Die triggert wann du es Dir wünschst.

        https://flows.nodered.org/node/node-red-contrib-cron-plus

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

          @mickym soweit verstanden und auch schon eingebaut aber wie verknüpf ich das nun? (wie ein und)
          der Ausgang der Funktion 18 schreibt ja immer !

          Muss da ja jetzt irgendwie dazwischen das das dann nur zur eingestellten zeit durchgeht in die write file

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

            @saschah2511 Na durch irgendwas wird der Flow ja getriggert. Wenn Du das aus den iobroker-In Nodes nimmst, dann ersetze die durch die Cron Node und hol Dir die Werte über iobroker-get Nodes. Man sieht halt nur einen Miniausschnitt.

            Die andere Möglichkeit ist - Du kannst es so lassen wie es ist und nutzt eine switch Node um zu filtern - zusätzlich nimmst Du noch ein trigger Node, damit in dem gewünschten Zeitfenster nur eine Nachricht durchkommt. Das geht auch.

            Ich würde allerdings die 1. Methode verwenden und genau auf den Punkt triggern und die Werte holen.

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

              @mickym Muss leider nochmal Stören

              komm hier echt nicht weiter bzw. versteh es warscheinlich einfach nicht.

              Meine Werte Hole ich leider nicht über einen IO Brocker sondern habe die Direkt in Node Red und im Endefekt Spukt die Funktion 18 Folgendes Aus was genau so in die CSV muss ! Jedoch nur 1 Mal im Monat !
              Test2.JPG
              Crone-Plus soweit verstanden Würde auch Funktionieren gibt ein Payload zur eingestellten Zeit aus !

              Aber wie Verknüpf ich das jetzt das ich nur wenn Crone Plus sein Ausgang bringt die SCV Mit dem Inhalt der Function 18 beschrieben wird ?
              TEST.JPG

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

                Du schreibst den Inhalt Deiner function 18 in einer Flowvariable und die cronnode holt diese dann ab:

                Deine function 18 - speicher die payload in einer Flow variablen - z.Bsp SML

                dann machst den Ausgang Deiner function Node einfach weg:

                82f5937f-191c-4919-90ad-9ed5fa1e6af2-image.png

                Deine payload speicherst Du in einer Flow variable:

                msg.payload = {
                    "SML.Total.in" : 5000,
                    "SML.Total.out": 15000,
                    "SML.Power_curren": 500,
                
                    "Time" : new Date()
                }
                
                flow.set ("SML", msg.payload);
                
                

                Die function Node selbst gibt nichts mehr aus!!! (Also return msg; als letzte Zeile kannst wegschmeissen und die Ausgänge der function Node auf 0 stellen).
                EDIT: Kannst natürlich auch den Ausgang dran lassen, um zu Debug Zwecken irgendwas mit einer Debug Node zu kontrollieren!! Wichtig ist ja nur die Speicherung im Flow-Kontext.

                In Deinem Kontext sind aber die Inhalt gespeichert und werden aktualisiert.

                2e4d010f-a24a-43a2-afb1-c9060808ad80-image.png

                Die cron-plus Node holt nun den Inhalt der Flowvariablen ab und Du schreibst in die csv:

                5b3a7a29-b73c-4ead-8c32-eff460baf7e7-image.png

                Hier der Beispielflow zum Import:

                [
                    {
                        "id": "5d827132f180d9ea",
                        "type": "function",
                        "z": "00b2bb10c6f72961",
                        "name": "function 18",
                        "func": "msg.payload = {\n    \"SML.Total.in\" : 5000,\n    \"SML.Total.out\": 15000,\n    \"SML.Power_curren\": 500,\n\n    \"Time\" : new Date()\n}\n\nflow.set (\"SML\", msg.payload);\n// return msg;",
                        "outputs": 0,
                        "noerr": 0,
                        "initialize": "",
                        "finalize": "",
                        "libs": [],
                        "x": 390,
                        "y": 500,
                        "wires": []
                    },
                    {
                        "id": "2245ac4b3ce16c32",
                        "type": "inject",
                        "z": "00b2bb10c6f72961",
                        "name": "trigger",
                        "props": [
                            {
                                "p": "payload"
                            }
                        ],
                        "repeat": "",
                        "crontab": "",
                        "once": false,
                        "onceDelay": 0.1,
                        "topic": "",
                        "payload": "",
                        "payloadType": "date",
                        "x": 190,
                        "y": 500,
                        "wires": [
                            [
                                "5d827132f180d9ea"
                            ]
                        ]
                    },
                    {
                        "id": "73eb8037e9423096",
                        "type": "cronplus",
                        "z": "00b2bb10c6f72961",
                        "name": "",
                        "outputField": "payload",
                        "timeZone": "",
                        "persistDynamic": false,
                        "commandResponseMsgOutput": "output1",
                        "outputs": 1,
                        "options": [
                            {
                                "name": "SML",
                                "topic": "monthlySML",
                                "payloadType": "flow",
                                "payload": "SML",
                                "expressionType": "cron",
                                "expression": "0 0 0 1 * * *",
                                "location": "",
                                "offset": "0",
                                "solarType": "all",
                                "solarEvents": "sunrise,sunset"
                            }
                        ],
                        "x": 420,
                        "y": 560,
                        "wires": [
                            [
                                "2698d7c79fc129a6",
                                "c5e7d602db5a4f04"
                            ]
                        ]
                    },
                    {
                        "id": "66e2ea42728c843c",
                        "type": "inject",
                        "z": "00b2bb10c6f72961",
                        "name": "manueller Trigger",
                        "props": [
                            {
                                "p": "payload"
                            },
                            {
                                "p": "topic",
                                "vt": "str"
                            }
                        ],
                        "repeat": "",
                        "crontab": "",
                        "once": false,
                        "onceDelay": 0.1,
                        "topic": "trigger",
                        "payload": "SML",
                        "payloadType": "str",
                        "x": 200,
                        "y": 560,
                        "wires": [
                            [
                                "73eb8037e9423096"
                            ]
                        ]
                    },
                    {
                        "id": "2698d7c79fc129a6",
                        "type": "debug",
                        "z": "00b2bb10c6f72961",
                        "name": "SML zur CSV Node",
                        "active": true,
                        "tosidebar": true,
                        "console": false,
                        "tostatus": false,
                        "complete": "payload",
                        "targetType": "msg",
                        "statusVal": "",
                        "statusType": "auto",
                        "x": 630,
                        "y": 540,
                        "wires": []
                    },
                    {
                        "id": "c5e7d602db5a4f04",
                        "type": "file",
                        "z": "00b2bb10c6f72961",
                        "d": true,
                        "name": "",
                        "filename": "test.csv",
                        "filenameType": "str",
                        "appendNewline": true,
                        "createDir": false,
                        "overwriteFile": "false",
                        "encoding": "none",
                        "x": 620,
                        "y": 600,
                        "wires": [
                            []
                        ]
                    }
                ]
                

                =============================================================================================

                Du musst halt dafür Sorge tragen, dass zum Zeitpunkt halt was korrektes im Flowkontext drin steht.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                788
                Online

                31.7k
                Users

                79.8k
                Topics

                1.3m
                Posts

                2
                6
                339
                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