Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Datenpunkt berechnen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Datenpunkt berechnen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
70 Beiträge 7 Kommentatoren 14.5k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    moebius
    schrieb am zuletzt editiert von
    #42

    Hab das Beispiel erweitert. So könnte man die Werte zu iobroker übertragen.

    ! [
    ! {
    ! "id": "1f5df07c.81145",
    ! "type": "tab",
    ! "label": "Flow 5"
    ! },
    ! {
    ! "id": "12035f81.de82c",
    ! "type": "html",
    ! "z": "1f5df07c.81145",
    ! "name": "",
    ! "tag": "[bgcolor="#FFFFFF"]",
    ! "ret": "text",
    ! "as": "single",
    ! "x": 372,
    ! "y": 157,
    ! "wires": [
    ! [
    ! "9a52a9cc.079668"
    ! ]
    ! ]
    ! },
    ! {
    ! "id": "d487fa3f.daea58",
    ! "type": "inject",
    ! "z": "1f5df07c.81145",
    ! "name": "",
    ! "topic": "",
    ! "payload": " <title>PV Webserver</title>
    ! <form method="&quot;post&quot;" action="&quot;&quot;">
    ! | |
    | | PIKO 5.5
    Helios (255) | Logo |
    ! | |
    ! * * *

    !
    !
    AC-Leistung Energie
    aktuell x x x W Gesamtenergie 23117 kWh
    Tagesenergie 7.47 kWh
    Status Aus
    !

    ! * * *

    !
    !
    PV-Generator Ausgangsleistung
    <u>String 1</u> <u>L1</u>
    Spannung x x x V Spannung x x x V
    Strom x x x A Leistung x x x W
    <u>String 2</u> <u>L2</u>
    Spannung x x x V Spannung x x x V
    Strom x x x A Leistung x x x W
    <u>String 3</u> <u>L3</u>
    Spannung x x x V Spannung x x x V
    Strom x x x A Leistung x x x W
    !

    ! * * *
    ! |
    | |
    ! |
    ! | | RS485 Kommunikation |
    | |
    | | Wechselrichter |
    | |
    ! * * *
    ! | |
    | | Historie       Infoseite | Einstellungen | |
    ! </form>
    ! ",
    ! "payloadType": "str",
    ! "repeat": "",
    ! "crontab": "",
    ! "once": false,
    ! "x": 220,
    ! "y": 100,
    ! "wires": [
    ! [
    ! "12035f81.de82c"
    ! ]
    ! ]
    ! },
    ! {
    ! "id": "9a52a9cc.079668",
    ! "type": "function",
    ! "z": "1f5df07c.81145",
    ! "name": "assign dps",
    ! "func": "var msgs = []\n\nvar newmsg = { "topic": "admin.0.ws333.Temp3", "payload": msg.payload[2].trim()}\nmsgs.push(newmsg)\nvar newmsg = { "topic": "admin.0.ws333.Temp4", "payload": msg.payload[3].trim()}\nmsgs.push(newmsg)\n\nreturn [msgs];",
    ! "outputs": 1,
    ! "noerr": 0,
    ! "x": 556,
    ! "y": 213,
    ! "wires": [
    ! [
    ! "6450ec54.d97594"
    ! ]
    ! ]
    ! },
    ! {
    ! "id": "6450ec54.d97594",
    ! "type": "ioBroker out",
    ! "z": "1f5df07c.81145",
    ! "name": "",
    ! "topic": "",
    ! "ack": "true",
    ! "autoCreate": "false",
    ! "x": 719,
    ! "y": 255,
    ! "wires": []
    ! }
    ! ]
    Mit den Klammern und Strichpunkten musst du noch üben :)

    if ( parseFloat(msg.payload[5] ) >0 ) {
    msg.payload = (Spannung * Stom)
    }
    else {
    msg.payload = 0
    }
    ````Du kommst bei node-red am leichtesten weiter, wenn du dich auf das Konzept einläßt. Am besten die ganze
    
    prozedurale Programmierung vergessen - der function node ist "böse" :evil: . Den darf man nur nehmen, wenns gar nicht anders geht.
    
    Edit sagt: function node auf multi message umgestellt - 2 nodes eingespart
    [1803_clipboard06.jpg](/assets/uploads/files/1803_clipboard06.jpg)
    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #43

      @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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        moebius
        schrieb am zuletzt editiert von
        #44

        @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 :P

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #45

          @moebius:

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

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • Y Offline
            Y Offline
            ykuendig
            schrieb am zuletzt editiert von
            #46

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

            Gruss Yves

            1 Antwort Letzte Antwort
            0
            • HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #47

              @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

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              0
              • Y Offline
                Y Offline
                ykuendig
                schrieb am zuletzt editiert von
                #48

                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?

                Gruss Yves

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  moebius
                  schrieb am zuletzt editiert von
                  #49

                  @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 Antwort Letzte Antwort
                  0
                  • Y Offline
                    Y Offline
                    ykuendig
                    schrieb am zuletzt editiert von
                    #50

                    @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:

                    Gruss Yves

                    1 Antwort Letzte Antwort
                    0
                    • HomoranH Nicht stören
                      HomoranH Nicht stören
                      Homoran
                      Global Moderator Administrators
                      schrieb am zuletzt editiert von
                      #51

                      @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 :D

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

                      Gruß

                      Rainer

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      1 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #52

                        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;
                        

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Antwort Letzte Antwort
                        0
                        • HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #53

                          @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

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          1 Antwort Letzte Antwort
                          0
                          • M Offline
                            M Offline
                            moebius
                            schrieb am zuletzt editiert von
                            #54

                            @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 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #55

                              @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.

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              • HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #56

                                :idea:

                                Danke euch Allen für eure Geduld!

                                Schonen Abend / Gute Nacht

                                Rainer

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                1 Antwort Letzte Antwort
                                0
                                • Y Offline
                                  Y Offline
                                  ykuendig
                                  schrieb am zuletzt editiert von
                                  #57

                                  @Homoran:

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

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

                                  Gruss Yves

                                  1 Antwort Letzte Antwort
                                  0
                                  • HomoranH Nicht stören
                                    HomoranH Nicht stören
                                    Homoran
                                    Global Moderator Administrators
                                    schrieb am zuletzt editiert von
                                    #58

                                    @ykuendig:

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

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

                                    Wie wird eigentlich ein cron alle 15 Sekunden angelegt.

                                    Gruß

                                    Rainer

                                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                    1 Antwort Letzte Antwort
                                    0
                                    • Y Offline
                                      Y Offline
                                      ykuendig
                                      schrieb am zuletzt editiert von
                                      #59

                                      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]

                                      Gruss Yves

                                      1 Antwort Letzte Antwort
                                      0
                                      • paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #60

                                        @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]);
                                        

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        1 Antwort Letzte Antwort
                                        0
                                        • Y Offline
                                          Y Offline
                                          ykuendig
                                          schrieb am zuletzt editiert von
                                          #61

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

                                          Gruss Yves

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          614

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe