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. Node-Red Funktion funktioniert nur im Debug

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Node-Red Funktion funktioniert nur im Debug

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

      Hallo Zusammen,

      ich habe eine Funktion erstellt, die mir ab 00:00Uhr stündlich (per Inject) die aktuelle Temperatur ausliest, diese aufaddiert und um 23:00Uhr den Tagesmittelwert bildet. Die Funktion tut absolut einwandfrei, jedoch nur solange man den Inject Node manuell triggert und sich das Ergebnis auf einem Debug-Node anschaut. Wenn ich dann alles laufen lasse, passiert um 23:00Uhr einfach garnichts. Kein return, keine Ausgabe. Kann mir jemand von euch sagen, was hier schief läuft?

      Eine zweite Funktion setzt um 23:05 die globalen Variablen zurück auf 0, also daran sollte es nicht scheitern. Und wie gesagt, im Debug tut alles wunderbar...

      Anbei mal der Code:

      var zeitstempel = msg.payloadTimeStampTemp;
      var currentTemp = global.get('currentTemp');
      var averageTemp = global.get('averageTemp');
      var sumCounter24 = global.get('sumCounter24');
      var sumTemp = global.get('sumTemp');
      
      if(zeitstempel === true)
      {
          sumCounter24 += 1;
          global.set('sumCounter24', sumCounter24);
          
          sumTemp = sumTemp + currentTemp;
          global.set('sumTemp', sumTemp);
      
          if(sumCounter24 == 24)
          {
              averageTemp = sumTemp/24;
              msg.payload = Number(averageTemp.toFixed(2));
      
              global.set('sumTemp',0.0);
              global.set('averageTemp', 0);
              global.set('sumCounter24', 0);
      
              return msg;
          }    
          
          msg.payload = {sumCounter: sumCounter24, sumTemp: sumTemp};
      
          return msg;
      }
      

      bc7a4d3c-1cd5-432d-9a87-f48ea1f1b3d5-grafik.png

      Vielen Dank euch schon Mal!!

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

        @stefan7d Na ja - mal abgesehen davon, dass es dafür ja eine fertige Node gibt, ist es halt nicht besonders glücklich, dass Du halt logische Zweige drin hast, in der Du keine Nachricht zurückgibst. Wenn Du immer eine Nachricht zurückgibst, dann siehst Du wenigsten ob getriggert wurde ansonsten kann ja die function Node Deine Nachricht verschlucken. Alternativ prüfst Du direkt an den Inject Nodes mit einer Debug Node, ob diese getriggert wurden.

        var zeitstempel = msg.payloadTimeStampTemp;
        

        schaut komisch aus - aber dazu müsste man ja Deine Inject Nodes sehen.

        1 Reply Last reply Reply Quote 0
        • S
          Stefan7D last edited by

          Hey Micky,

          danke für deine Antwort. Wie gesagt, beim manuellen triggern der Inject Nodes funktioniert alles prima. Und auch aktuell sieht alles sehr gut aus:

          fca3b755-8961-4f13-a13c-fe23b4979d95-grafik.png

          Wir haben es gerade 22:49 und der Counter passt, die Summe passt. Nur dass es gleich beim umschalten auf 23:00Uhr nicht zur erwünschten Ausgabe des Mittelwerts kommt. Wenn ich danach manuell injecte, springt er sauber von 23 auf 0, berechnet den Mittelwert und setzt den msg.payload entsprechend.

          Den aggregator Node kenne ich auch schon, aber ich komm damit nicht klar.

          Gruß
          Stefan

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

            @stefan7d Nochmal - wenn Du ein Problem eingrenzen willst, dann lass aus der Function Node IMMER eine Nachricht entstehen und/oder mach eine Debug an Deine Inject Nodes.
            Du musst doch sicherstellen, dass

            1. getriggert wird
            2. Deine Function Node keine Nachrichten verschluckt.

            Ich weiß nicht, wie Du sonst dem Problem auf die Spur kommen willst. An einen Fehler in NodeRed glaube ich am allerwenigsten.

            Letztlich habe ich Dir gesagt, dass kann niemand Deinen Code beurteilen - dann exportiere Deinen Flow - ansonsten kann man da nichts erkennen.

            1 Reply Last reply Reply Quote 0
            • S
              Stefan7D last edited by

              Hallo Micky,

              du hast natürlich Recht und ich hatte auch schon an allen Stellen einen Debug-Node dran, aber die hätten mir hierbei leider nicht geholfen 😉

              Die Funnktion arbeitet einwandfrein nur hatte ich den Inject-Node falsch konfiguriert:

              ab0088f4-6ea3-4af4-b7e4-eb4ce5872d37-grafik.png

              Meine Vorstellung war, dass wenn der erste Inject um 00:00Uhr kommt, dann kommt der letzte um 23:00Uhr. Weit gefehlt! Ich hab jetzt zwischen 00:00 und 00:00 drin und schon tuts.

              Aber danke dir für deine Unterstützung!

              Gruß
              Stefan

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

                @stefan7d eine debug node an der inject node hätte dir sehr wohl geholfen. man kann die debug nodes so konfigurieren, dass sie auf der systemkonsole loggen und dann wäre dir aufgefallen, dass um 23:00 Uhr nicht mehr getriggert worden wäre.

                Außerdem hättest dann ja eine Stunde später der Reset stattfinden müssen bzw. sich alles um 1 std/tag nach hinten verschieben müssen. Alles Informationen, die so nicht vorlagen.

                in solchen Fällen ist es deshalb wichtig, nicht nur einen Screenshot zu machen, sondern den Flow zu exportieren.

                Ausserdem wäre interessant, warum die aggregator Node für Dich nicht funktioniert hat. Das ich ausserdem kein Freund von Code schreiben bei solch einfachen Aufgaben bin, weiß ja auch jeder, der meine Posts etwas verfolgt.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                922
                Online

                31.7k
                Users

                79.7k
                Topics

                1.3m
                Posts

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