Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Datenpunkt berechnen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Datenpunkt berechnen

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

      @moebius:

      Mit den Klammern und Strichpunkten musst du noch üben `
      Du aber auch mit dem Semikolon. Was bei Homoran zu viele, sind bei Dir zu wenig.

      1 Reply Last reply Reply Quote 0
      • M
        moebius last edited by

        @paul53: du bist aber streng! In js sind ja keine ; vorgeschrieben und der code funktioniert auch.

        Man kann natürlich welche machen - aber an den richtigen Stellen 😛

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          @moebius:

          …und der code funktioniert auch. `
          Ja, ist aber schlechter Stil und damit kein gutes Beispiel für einen absoluten Neuling.

          1 Reply Last reply Reply Quote 0
          • Y
            ykuendig last edited by

            Also, wenn ihr jetzt so Gas gebt, erwarte ich bei Sonnenaufgang die ersten Resultate. Vom Wechselrichter versteht sich.

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators last edited by

              @moebius:

              Am besten die ganze

              prozedurale Programmierung vergessen - der function node ist "böse" `

              ok :shock:

              Ich wollte damit anfangen kleine Brocken javascript einzusetzen um langsam mit js warm zu werden 😞

              Daher sieht es bei mir auch so aus:
              144_solar_node-red.jpg

              nur im letzten kommt nichts raus:

              habe aber auch noch nicht lange gesucht.

              var DC = parseFloat(((msg.payload[5])*parseFloat(msg.payload[3])+(msg.payload[9])*parseFloat(msg.payload[7])));
              var AC = parseFloat(msg.payload[0]);
              
              var Wirkung = (AC/DC*100);
              
              if (parseFloat(msg.payload[5]) > 0) {
                 msg.payload = Wirkung;
              } else {
                 msg.payload = 0;
              }
              
              return msg;
              

              kein Gemecker, aber einfach kein Ergebnis auch kein null??

              @paul53:

              Du aber auch mit dem Semikolon. Was bei Homoran zu viele, sind bei Dir zu wenig. `
              Node-red meckert dann "unneccessary semikolon" - das hat es aber nicht :oops: :oops:

              Danke erstmal

              Rainer

              1 Reply Last reply Reply Quote 0
              • Y
                ykuendig last edited by

                Ich seh jetzt nicht in Deine Funktion-Nodes. Aber trimmst Du auch die Daten wie @moebius das vorgeschlagen hat? Oder rechnest Du das mit den ganzen Leerzeichen zusammen?

                1 Reply Last reply Reply Quote 0
                • M
                  moebius last edited by

                  @homoran: wahrscheinlich ist DC = 0 -> schlimm! 🙂

                  Kann dir nur raten es nicht so zu machen - am Schluss endest du dann auch bei normalem javascript, tippst dir die finger wund und jagst die halbe Zeit bugs…

                  1 Reply Last reply Reply Quote 0
                  • Y
                    ykuendig last edited by

                    @moebius, aber Dein flow sieht ja eigentlich schon fast fertig aus. könntest Du da nicht die payloads noch gleich in Nummern wandeln. Dann müsste man blos noch die Datenpunkte richtig anschreiben. :lol:

                    1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators last edited by

                      @ykuendig:

                      Aber trimmst Du auch die Daten wie @moebius das vorgeschlagen hat? `
                      An dem node hänge ich gerade und verstehe ihn noch nicht ganz.

                      • Nein, ich arbeite noch mit allem, aber node-red scheint schlau zu sein und entfernt beim parseFloat() die Leerzeichen.

                      @moebius:

                      wahrscheinlich ist DC = 0 -> schlimm! `
                      klar, daher ist es im Moment "x x x", was immer das bei parseFloat() ergibt??

                      und hier in Köln heißt es: "Null x Null x Null is Null"

                      bei der Division wird es dann natürlich lustig - überzeugt, dann muss ich das auch noch abfangen.

                      @moebius:

                      am Schluss endest du dann auch bei normalem javascript `
                      Da will ich aber hin 😄

                      Einen Adapter in node-red wäre wahrscheinlich höchst ambitioniert 😉

                      Gruß

                      Rainer

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        Vor (msg.payload[9]) fehlt parseFloat.

                        var DC = parseFloat(msg.payload[5]) * parseFloat(msg.payload[3]) + parseFloat(msg.payload[9]) * parseFloat(msg.payload[7]);
                        var AC = parseFloat(msg.payload[0]);
                        
                        if(DC) {
                           msg.payload = 100 * AC / DC;
                        } else {
                           msg.payload = 0;
                        }
                        
                        return msg;
                        
                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators last edited by

                          @paul53:

                          Vor (msg.payload[9]) fehlt parseFloat. `
                          Stimmt :oops:

                          Das wars aber nicht alleine. nur damit lief es immer noch nicht aber Jetzt klappte es - warum???

                          Hierzu habe ich noch Fragen:

                          if(DC) {
                             msg.payload = 100 * AC / DC;
                          

                          Warum hast du das DC in Klammern?

                          die 100 nach vorne wegen der Rundungsfehler? oder Dezimalstellen?

                          Gruß

                          Rainer

                          1 Reply Last reply Reply Quote 0
                          • M
                            moebius last edited by

                            @homoran: wenn du gleich nach dem selector ein switch machst und auf x x x checkst, hast du dahinter schon nur mehr gültige Werte (hoffentlich).

                            Du kannst jeden flow natürlich wieder in reinem javascript implementieren.

                            Aber die Schönheit und Eleganz von node-red ist dann leider weg 😞

                            @ykuendig: ja schon, aber ein bischen was zum üben sollte doch noch sein…
                            1803_clipboard07.jpg

                            1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 last edited by

                              @Homoran:

                              Warum hast du das DC in Klammern? `
                              Das ist der if-Ausdruck und entspricht

                              if(DC != 0)
                              

                              @Homoran:

                              die 100 nach vorne wegen der Rundungsfehler? oder Dezimalstellen? `
                              Nein, in JS bleibt es bei Float (im Gegensatz zu HM Script). Es ist nur wegen der Optik.

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                :idea:

                                Danke euch Allen für eure Geduld!

                                Schonen Abend / Gute Nacht

                                Rainer

                                1 Reply Last reply Reply Quote 0
                                • Y
                                  ykuendig last edited by

                                  @Homoran:

                                  if(DC) {
                                     msg.payload = 100 * AC / DC;
                                  ```` `  
                                  

                                  Aber Musik spielt das Ding nicht ? Oder? [Dong dong dong dong….]

                                  1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators last edited by

                                    @ykuendig:

                                    Also, wenn ihr jetzt so Gas gebt, erwarte ich bei Sonnenaufgang die ersten Resultate. Vom Wechselrichter versteht sich. `
                                    144_screenshot_20170220-081231.jpg
                                    😄 😄 😄

                                    Jetzt muss ich nur noch die Datenpunkte anlegen und den cron eingeben.

                                    Wie wird eigentlich ein cron alle 15 Sekunden angelegt.

                                    Gruß

                                    Rainer

                                    1 Reply Last reply Reply Quote 0
                                    • Y
                                      ykuendig last edited by

                                      im JS Adapter kannst Du ein Beispiel machen 'lassen'

                                      Aber im Prinzip machst Du einfach einen Stern mehr. Und dann beim ersten "*/15". [Aus dem Kopf. Nicht getestet]

                                      1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 last edited by

                                        @Homoran:

                                        Das wars aber nicht alleine. nur damit lief es immer noch nicht aber Jetzt klappte es - warum??? `
                                        Änderungen in der Reihenfolge, wie ich sie gemacht habe:

                                        1. Orignal Script Zeile

                                        2. parseFloat hinzugefügt

                                        3. Leerzeichen verändert, um die Struktur der Zeile besser zu erkennen

                                        4. Falsche Klammern erkannt und korrigiert

                                        var DC = parseFloat(((msg.payload[5])*parseFloat(msg.payload[3])+(msg.payload[9])*parseFloat(msg.payload[7])));
                                        var DC = parseFloat(((msg.payload[5])*parseFloat(msg.payload[3])+parseFloat(msg.payload[9])*parseFloat(msg.payload[7])));
                                        var DC = parseFloat(((msg.payload[5]) * parseFloat(msg.payload[3]) + parseFloat(msg.payload[9]) * parseFloat(msg.payload[7])));
                                        var DC = parseFloat(msg.payload[5]) * parseFloat(msg.payload[3]) + parseFloat(msg.payload[9]) * parseFloat(msg.payload[7]);
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • Y
                                          ykuendig last edited by

                                          Und nun, wo's dunkel ist… erzähl. Wie liefs?

                                          1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators last edited by

                                            ich habe beim ersten Sonnenstrahl extra für dich ein Bild gepostet:

                                            ~~![](</s><URL url=)<link_text text="http://forum.iobroker.net/download/file ... &mode=view">http://forum.iobroker.net/download/file.php?id=9116&mode=view</link_text>" />

                                            jetzt habe ich vor ner halben Stunde die Datenstruktur erstellt und den Flow mit den Datenpunkten verknüpft.

                                            Seitdem ist alles wieder 0

                                            Gruß

                                            Rainer~~

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            907
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            70
                                            12406
                                            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