Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. DancerVlt69

    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

    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 5
    • Best 0
    • Groups 1

    DancerVlt69

    @DancerVlt69

    Starter

    0
    Reputation
    5
    Profile views
    5
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    DancerVlt69 Follow
    Starter

    Latest posts made by DancerVlt69

    • RE: Test PV Forecast Adapter

      Erst mal Danke für die Reaktion @haus-automatisierung

      In Sachen Log hat sich ja inzwischen erledigt, wie aus dem nachfolgenden Post ersichtlich.

      Validieren: war u.a. ein Gedanke. Oder aber eine Check-Box, mit der man de-/aktivieren kann, welche der eingetragenen PV's in die Forecast-Abfrage einbezogen werden sollen oder nicht.
      Aber wenn das programmiertechnisch zu aufwendig ist, dann halt nur einen Hinweis in die Anleitung, dass kWp-Werte unter 100 Watt (von Forecast-Solar) nicht unterstützt werden bzw. zu fehlerhaften Rückmeldungen/Werten führen (können).
      Mein Gedanke war halt nur, schon mal die Datenpunkte für die in 4 Teilebereiche aufgeteilte Anlage zu haben, um diese schon in die Auswertung einbinden zu können.

      Und doch, das passt schon zusammen: Als ich den Adapter das aller erste mal eingerichtet hatte, hatte ich von Anfang an 4 Teilbereiche konfiguriert. Davon 2 mit reellen Werten, und 2 mit 0,0001.
      Das hat bis Ende Jan auch wunderbar funktioniert. Man kann also mutmaßen bzw. davon ausgehen. dass Forecast-Solar Änderungen vorgenommen hat. Denn der Adapter wird ja kaum von einem Tag auf den anderen 'der Meinung sein' seine Ausgabe mal eben von 0,0 auf (NULL) zu ändern. 😉

      posted in Tester
      DancerVlt69
      DancerVlt69
    • RE: Test PV Forecast Adapter

      @dancervlt69 @haus-automatisierung

      Kaine Antwort ist bekanntlich auch eine Antwort... Aber dann antworte ich mir mal selbst.

      Habe den Grund für den "NULL"-Wert gefunden:

      Wenn eine oder mehrere der (vor-) konfigurierten PV-Anlagen einen kWp-Wert kleiner einer 3 oder 4 Stellen hinter dem Komma hat, kann pvForecast oder Forecast-Solar diese/n Wert/e scheinbar nicht verarbeiten/nutzen und schreibt bzw. sendet NULL statt eines 'regulären' Werts zurück. Ob es nun kleiner 3 oder 4 oder mehr Stellen hinterm Komma sind, kann ich gerade nicht testen, hab (mal wieder) das Api-Limit ausgereizt 😉

      Hintergrund, warum ich so geringe Werte gewählt hatte:

      Da die Anlage, für die ich das aktuell einrichte, wg. 'wandernder' Verschattung, auf bis zu 4 Teilbereiche/MPPT's je Dachseite aufgeteilt ist/wird, wollte ich diese schon vorab konfigurieren, aber die kWp-Werte für die (noch) nicht montierten Teile halt so gering wie möglich wählen, dass sie keinen oder nur einen möglichst geringen Einfluss auf die Summe der gesamten Anlage haben. Bei einem kWp-Wert von (Korrektur) 0,1 wird aktuell ein Wert für summery_energy._tomorrow zurückgegeben/eingetragen.

      posted in Tester
      DancerVlt69
      DancerVlt69
    • RE: Test PV Forecast Adapter

      @haus-automatisierung
      Ich klinke mich an dieser Stelle mal ein, weil sich das Ganze so liest, wie es derzeit bei mir ist.

      Ja, ich weiß, die bisherigen Posts sind alle schon ein paar Jahre alt, aber

      67b0cdd2-012b-40fd-80be-7f8dc133413a-image.png

      • Hab/bekomme, leider erst jetzt bemerkt, seit Ende Januar 25 ein NULL in den Datenpunkt "pvforecast.0.summary.energy.tomorrow" geschrieben. Und ich bin mir nicht 100% sicher, aber bis auf das Update zur Version 2.8.(?) 1 oder 2, hatte ich glaube nichts verändert. Weiter zurück geht ja inzwischen auch nicht mehr.
        Ist aber nur so ein Gefühl, kann mich auch täuschen.

      Versuche, das Problem mittels Downgrade, oder des hier Beschriebenen zu fixen, haben nichts gebracht. Auch Neuinstallation des Adapters, und sogar des kompletten ioB, änderten nichts. Es gibt auch keine Debug-/Fehlermeldungen dahingehend.
      a10d16be-4bd8-4c5c-ac6c-cd91435c7ef3-image.png

      Insgesamt ist es nicht wirklich dramatisch, da die Anlage in 2 Teilbereich (Ost und West) unterteilt ist, und die tomorrow-Werte für die Bereich kommen. Die Summe derer in einen User-Datenpunkt erfüllt ja den gleichen Zweck. Aber da es j schon mal eine solche Situation gab...

      • Und dann gibt es da noch die Sache mit dem Intervall. der Adapter meldet, alle 15 Minuten aktualisieren zu wollen, aber ich habe ich habe zu vollen Stunde alle 60 Minuten (Forecast-Solar) eingestellt.

      Könnte es da einen Zusammenhang mit dem NULL-Eintrag geben?

      Nach ein wenig Stöbern in einer der letzten Log's habe ich dann doch noch was gefunden, dass vielleicht interessant sein könnte. Ist allerdings 'nur' eine Warnung, dass die Config nicht ok sei. Recht weit unten -> 2025-03-28 01:56:33.233

      20250328_0145_log.txt

      Wenn es irgend einen Anhaltspunkt und/oder nen Fix geben sollte, wäre natürlich schön.

      Besten Dank und Grüße...

      posted in Tester
      DancerVlt69
      DancerVlt69
    • RE: Node Red Werte addieren

      Die Frage steht im Post @mickym : was mache ich falsch oder habe ich übersehen, dass die ersten beiden Varianten nicht so funktionieren, wie sie eigentlich sollen/sollten.

      ioB-In-Node 'richtig' konfigurieren: jo, aber wie, denn in allen 3 Varianten ist die selbe Node, nur mit unterschiedlicher Datenpunktabfrage. Alle 9 sind per copy & paste 'entstanden' aber jeweils nur die für L2 wird sofort abgefragt/eingelesen, die für L1 und L3 erst, wenn sich Daten ändern.

      Und ja, die dritte Variante funktioniert so wie sie ist, nur das kann ja nicht die 'korrekte' Lösung sein, nur weil sie (zufällig) funktioniert. Denke ich zumindest mal. Wie erwähnt, meine Kenntnisse in Sachen ioB, Blockly, JS und Node-Red stecken noch in den Kinderschuhen. Da ist man, zumindest ich, doch recht Dankbar, wenn man den einen oder anderen Tipp bekommt, oder zumindest mit der Nase draufgestoßen wird, wo das Problem liegt. Ganze Lösungen müssen es ja nicht sein, will schließlich noch was lernen, auch debugging will erst mal gelernt sein...

      posted in Node-Red
      DancerVlt69
      DancerVlt69
    • RE: Node Red Werte addieren

      Der Thread ist zwar inzwischen schon etwas älter, aber da ich beim Suchen nach anderen Infos auf ihn aufmerksam geworden bin und auch gerade in den Vorbereitungen für diverse Auswertungen von Daten bin, kam mir das Thema gelegen und ich habe versucht, die hier geposteten Ansätze mal nachzubauen.

      Noch angemerkt, meine Kenntnisse in Sachen ioB, NodeRed und JS sind noch recht begrenzt.

      Grundgedanke: alle 3 Phasen sollen (permanent/mit Intervall) auf Veränderungen abgefragt werden, und aus den Werten, so denn vorhanden, die Summer ermittelt werden und in einen Datenpunkt (ioB/MQTT) geschrieben werden. Soweit so gut. Hab da aber auch jeden Fall schon konkretere Vorstellungen als @siporax in welche Richtung es gehen soll.

      Bei der Variante mit der functionNode hole ich mir die Daten mit der ioB-in-Node, mit Join verbinden und in der functionNode berechnen. Nur das Berechnen funktioniert bei mir erst dann vollständig, wenn mindestens alle 3 Datenpunkte einmal aktualisiert wurden.

      Gleiches scheint bei der Variante 2x changeNode von @mickym zu sein.

      Was mache ich falsch oder was übersehe ich?

      Bei der dritten Variante, Datenpunkte nach injectNode abfragen, funktioniert soweit alles, aber es ist ja angedacht, dass die Werte bei Veränderung 'abgeholt' und berechnet werden. In dem Fall habe ich mir mit einer ioB-in-Node und anschließen einer changeNode ohne Regeln weitergeholfen. Sicher nicht die beste Lösung, aber was machen wenn man zu doof oder zu doof ist, nodeRed und/oder JS zu verstehen... 😉

      Eins ist aber dennoch interessant an der Sache: bei allen 3 Varianten wird der Wert für L2 IMMER sofort abgeholt! Warum auch immer.

      Btw. Der Vollständigkeit halber, da @Jacke Blockly erwähnte: habe Gleiches, also Daten holen nach Änderung/en, ausrechnen, an/in MQTT/ioB-Datenpunkt schreiben, in kaum 30 Min. zusammen 'geschustert' und nach weiteren knapp 30 Min sah das Ganze auch halbwegs übersichtlich aus und hat sogar noch 'Tendenz-Info' bekommen. Auch hier, erst mal nur mit meinem aktuellen, doch noch recht beschränktem Wissen.

      Da ich noch keine Daten für die 3 Phasen erfassen kann hab ich mich bei Temeratursensoren bedien... 's geht, ja erst mal um's Gurndsätzliche.

      Hier mal Screenshots von Node-Red und Blockly
      2825cbf5-d8d7-4193-82d5-895f63b41c63-image.png

      3bef52c6-991d-4924-98e3-d411fa2c916b-image.png

      Und der Code...

      [
          {
              "id": "fb47b7d546e2b4ec",
              "type": "tab",
              "label": "Flow 9",
              "disabled": false,
              "info": "",
              "env": []
          },
          {
              "id": "1238a9470f81ac99",
              "type": "function",
              "z": "fb47b7d546e2b4ec",
              "name": "function 6",
              "func": "var L1, L2, L3 = 0;\nif (msg.topic === \"alias/0/Grid/GridHome/L1\") context.set(\"L1\", msg.payload[\"alias/0/Grid/GridHome/L1\"]);\nif (msg.topic === \"alias/0/Grid/GridHome/L2\") context.set(\"L2\", msg.payload[\"alias/0/Grid/GridHome/L2\"]);\nif (msg.topic === \"alias/0/Grid/GridHome/L3\") context.set(\"L3\", msg.payload[\"alias/0/Grid/GridHome/L3\"]);\n\nL1 = context.get(\"L1\" || 0);\nL2 = context.get(\"L2\" || 0);\nL3 = context.get(\"L3\" || 0); \n\nmsg.payload = (L1 + L2 + L3);\n// msg.payload = (L1 + L2 + L3);\n\nreturn msg;",
              "outputs": 1,
              "timeout": 0,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 560,
              "y": 100,
              "wires": [
                  [
                      "3b3f83cc2b2c710e",
                      "d419b93fcd0c50bb",
                      "beed7e1d8aeba85c"
                  ]
              ]
          },
          {
              "id": "2d63044d06f5f168",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "debug 9.6.2",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 170,
              "y": 100,
              "wires": []
          },
          {
              "id": "399d9b7ab5e6c96a",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "debug 9.6.3",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 170,
              "y": 340,
              "wires": []
          },
          {
              "id": "37bea2fc3821ecf1",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "debug 9.6.3",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 170,
              "y": 220,
              "wires": []
          },
          {
              "id": "c4ed9bb19bd931a4",
              "type": "join",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "mode": "custom",
              "build": "object",
              "property": "payload",
              "propertyType": "msg",
              "key": "topic",
              "joiner": "\\n",
              "joinerType": "str",
              "accumulate": true,
              "timeout": "",
              "count": "1",
              "reduceRight": false,
              "reduceExp": "",
              "reduceInit": "",
              "reduceInitType": "",
              "reduceFixup": "",
              "x": 390,
              "y": 100,
              "wires": [
                  [
                      "9e12902d4bf4665e",
                      "1238a9470f81ac99"
                  ]
              ]
          },
          {
              "id": "9e12902d4bf4665e",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "debug 9.6.4",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 430,
              "y": 160,
              "wires": []
          },
          {
              "id": "1d99d6cc13089cd2",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L1",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 40,
              "wires": [
                  [
                      "c4ed9bb19bd931a4",
                      "2d63044d06f5f168"
                  ]
              ]
          },
          {
              "id": "3b3f83cc2b2c710e",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "debug 9.6.5",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 750,
              "y": 160,
              "wires": []
          },
          {
              "id": "5dcac88d0577f3fe",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L2",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 160,
              "wires": [
                  [
                      "c4ed9bb19bd931a4",
                      "37bea2fc3821ecf1"
                  ]
              ]
          },
          {
              "id": "5a5366652ecdade5",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L3",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 280,
              "wires": [
                  [
                      "c4ed9bb19bd931a4",
                      "399d9b7ab5e6c96a"
                  ]
              ]
          },
          {
              "id": "a872a7ba51fd3484",
              "type": "inject",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "props": [
                  {
                      "p": "trigger",
                      "v": "true",
                      "vt": "bool"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "x": 390,
              "y": 640,
              "wires": [
                  [
                      "256da960d23f9755"
                  ]
              ]
          },
          {
              "id": "256da960d23f9755",
              "type": "ioBroker get",
              "z": "fb47b7d546e2b4ec",
              "name": "L1",
              "topic": "alias.0.Grid.GridHome.L1",
              "attrname": "L1",
              "payloadType": "value",
              "errOnInvalidState": "nothing",
              "x": 530,
              "y": 680,
              "wires": [
                  [
                      "a4730fef776c6647"
                  ]
              ]
          },
          {
              "id": "a4730fef776c6647",
              "type": "ioBroker get",
              "z": "fb47b7d546e2b4ec",
              "name": "L2",
              "topic": "alias.0.Grid.GridHome.L2",
              "attrname": "L2",
              "payloadType": "value",
              "errOnInvalidState": "nothing",
              "x": 650,
              "y": 680,
              "wires": [
                  [
                      "0f84e002a70cacc1"
                  ]
              ]
          },
          {
              "id": "c5166dda9c56917b",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "Summe",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 840,
              "y": 680,
              "wires": []
          },
          {
              "id": "9685e5e1edcb1ba4",
              "type": "change",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "rules": [
                  {
                      "t": "set",
                      "p": "payload",
                      "pt": "msg",
                      "to": "$round((L1 + L2 + L3),4)",
                      "tot": "jsonata"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 810,
              "y": 740,
              "wires": [
                  [
                      "c5166dda9c56917b"
                  ]
              ]
          },
          {
              "id": "0f84e002a70cacc1",
              "type": "ioBroker get",
              "z": "fb47b7d546e2b4ec",
              "name": "L3",
              "topic": "alias.0.Grid.GridHome.L3",
              "attrname": "L3",
              "payloadType": "value",
              "errOnInvalidState": "nothing",
              "x": 650,
              "y": 740,
              "wires": [
                  [
                      "9685e5e1edcb1ba4"
                  ]
              ]
          },
          {
              "id": "d9b451ed1ef8f471",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L1",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 640,
              "wires": [
                  [
                      "7eeb50a189819a75"
                  ]
              ]
          },
          {
              "id": "7eeb50a189819a75",
              "type": "change",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "rules": [],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 370,
              "y": 700,
              "wires": [
                  [
                      "256da960d23f9755"
                  ]
              ]
          },
          {
              "id": "5aaed265aab69983",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L2",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 700,
              "wires": [
                  [
                      "7eeb50a189819a75"
                  ]
              ]
          },
          {
              "id": "63b5caefee96f50c",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L3",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 760,
              "wires": [
                  [
                      "7eeb50a189819a75"
                  ]
              ]
          },
          {
              "id": "d419b93fcd0c50bb",
              "type": "mqtt out",
              "z": "fb47b7d546e2b4ec",
              "name": "HomeGridSummary (2)",
              "topic": "homegrid/phases/phases_sum2",
              "qos": "",
              "retain": "",
              "respTopic": "",
              "contentType": "",
              "userProps": "",
              "correl": "",
              "expiry": "",
              "broker": "dddaa640df8fba6b",
              "x": 780,
              "y": 100,
              "wires": []
          },
          {
              "id": "beed7e1d8aeba85c",
              "type": "ioBroker out",
              "z": "fb47b7d546e2b4ec",
              "name": "HomeGridSummary",
              "topic": "0_userdata.0.HomeGrid.HomeGrid_Summary",
              "ack": "true",
              "autoCreate": "false",
              "stateName": "",
              "role": "",
              "payloadType": "",
              "readonly": "",
              "stateUnit": "",
              "stateMin": "",
              "stateMax": "",
              "x": 770,
              "y": 40,
              "wires": []
          },
          {
              "id": "07ae2369fe461fbe",
              "type": "change",
              "z": "fb47b7d546e2b4ec",
              "name": "topic: L1",
              "rules": [
                  {
                      "t": "set",
                      "p": "topic",
                      "pt": "msg",
                      "to": "L1",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 360,
              "y": 420,
              "wires": [
                  [
                      "a244a31c5bcbea91"
                  ]
              ]
          },
          {
              "id": "bf7144a4e29d4279",
              "type": "change",
              "z": "fb47b7d546e2b4ec",
              "name": "topic: L2",
              "rules": [
                  {
                      "t": "set",
                      "p": "topic",
                      "pt": "msg",
                      "to": "L2",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 360,
              "y": 480,
              "wires": [
                  [
                      "a244a31c5bcbea91"
                  ]
              ]
          },
          {
              "id": "64441cb4c466b694",
              "type": "change",
              "z": "fb47b7d546e2b4ec",
              "name": "topic: L3",
              "rules": [
                  {
                      "t": "set",
                      "p": "topic",
                      "pt": "msg",
                      "to": "L3",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 360,
              "y": 540,
              "wires": [
                  [
                      "a244a31c5bcbea91"
                  ]
              ]
          },
          {
              "id": "a244a31c5bcbea91",
              "type": "join",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "mode": "custom",
              "build": "object",
              "property": "payload",
              "propertyType": "msg",
              "key": "topic",
              "joiner": "\\n",
              "joinerType": "str",
              "accumulate": true,
              "timeout": "",
              "count": "3",
              "reduceRight": false,
              "reduceExp": "",
              "reduceInit": "",
              "reduceInitType": "",
              "reduceFixup": "",
              "x": 550,
              "y": 480,
              "wires": [
                  [
                      "add94d9ab1b506bd"
                  ]
              ]
          },
          {
              "id": "3ceea4dfeb31a8e4",
              "type": "debug",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 750,
              "y": 540,
              "wires": []
          },
          {
              "id": "add94d9ab1b506bd",
              "type": "change",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "rules": [
                  {
                      "t": "set",
                      "p": "payload",
                      "pt": "msg",
                      "to": "payload.L1 + payload.L2 + payload.L3",
                      "tot": "jsonata"
                  },
                  {
                      "t": "set",
                      "p": "topic",
                      "pt": "msg",
                      "to": "Summe von L1,L2,L3",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 730,
              "y": 480,
              "wires": [
                  [
                      "3ceea4dfeb31a8e4"
                  ]
              ]
          },
          {
              "id": "af27203b1ea10edc",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L1",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 420,
              "wires": [
                  [
                      "07ae2369fe461fbe"
                  ]
              ]
          },
          {
              "id": "f9752f905b3825cb",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L2",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 480,
              "wires": [
                  [
                      "bf7144a4e29d4279"
                  ]
              ]
          },
          {
              "id": "c7ba8809df9440d9",
              "type": "ioBroker in",
              "z": "fb47b7d546e2b4ec",
              "name": "",
              "attrname": "payload",
              "topic": "alias.0.Grid.GridHome.L3",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "false",
              "outFormat": "MQTT",
              "x": 130,
              "y": 540,
              "wires": [
                  [
                      "64441cb4c466b694"
                  ]
              ]
          },
          {
              "id": "dddaa640df8fba6b",
              "type": "mqtt-broker",
              "name": "HomeGridSummary",
              "broker": "localhost",
              "port": "1884",
              "clientid": "",
              "autoConnect": true,
              "usetls": false,
              "protocolVersion": "4",
              "keepalive": "60",
              "cleansession": true,
              "autoUnsubscribe": true,
              "birthTopic": "",
              "birthQos": "0",
              "birthRetain": "false",
              "birthPayload": "",
              "birthMsg": {},
              "closeTopic": "",
              "closeQos": "0",
              "closeRetain": "false",
              "closePayload": "",
              "closeMsg": {},
              "willTopic": "",
              "willQos": "0",
              "willRetain": "false",
              "willPayload": "",
              "willMsg": {},
              "userProps": "",
              "sessionExpiry": ""
          }
      ]
      

      für Blockly

      var Phase_L1, phases_summary, Phase_L2, tendency, summary_old, Phase_L3;
      
      // Beschreibe diese Funktion …
      async function get_data() {
        Phase_L1 = getState('alias.0.Grid.GridHome.L1').val;
        Phase_L2 = getState('alias.0.Grid.GridHome.L2').val;
        Phase_L3 = getState('alias.0.Grid.GridHome.L3').val;
        if (getState('mqtt.2.homegrid.phases.phases_sum').val) {
          summary_old = getState('mqtt.2.homegrid.phases.phases_sum').val;
        }
      }
      
      // Beschreibe diese Funktion …
      async function debug_show_data() {
        // weglassen/deaktivieren fall nicht gebraucht
        console.log((['Die Summe über alle 3 Phasen beträgt: ',phases_summary,' | Tendenz ',tendency].join('')));
      }
      
      // Beschreibe diese Funktion …
      async function calculate_summary() {
        phases_summary = Math.round(((Phase_L1 + Phase_L2 + Phase_L3) / 3) * 1000) / 1000;
      }
      
      // Beschreibe diese Funktion …
      async function send_data() {
        sendTo('mqtt.2', 'sendMessage2Client', { topic: 'homegrid/phases/phases_L1', message: Phase_L1, retain: true }, (res) => { if (res && res.error) { console.error(res.error); } });sendTo('mqtt.2', 'sendMessage2Client', { topic: 'homegrid/phases/phases_L2', message: Phase_L2, retain: true }, (res) => { if (res && res.error) { console.error(res.error); } });sendTo('mqtt.2', 'sendMessage2Client', { topic: 'homegrid/phases/phases_L3', message: Phase_L3, retain: true }, (res) => { if (res && res.error) { console.error(res.error); } });sendTo('mqtt.2', 'sendMessage2Client', { topic: 'homegrid/phases/phases_sum', message: phases_summary, retain: true }, (res) => { if (res && res.error) { console.error(res.error); } });sendTo('mqtt.2', 'sendMessage2Client', { topic: 'homegrid/phases/tendency', message: tendency, retain: true }, (res) => { if (res && res.error) { console.error(res.error); } });}
      
      // Beschreibe diese Funktion …
      async function calculate_tendency() {
        if (Math.round(phases_summary * 100) / 100 == Math.round(summary_old * 100) / 100) {
          tendency = '⏺' + ' gleichbleibend';
        } else if (phases_summary < summary_old) {
          tendency = '🔽' + ' fallend';
        } else if (phases_summary > summary_old) {
          tendency = '🔼' + ' steigend';
        } else {
          tendency = '❓' + ' unbekannt';
        }
        summary_old = phases_summary;
      }
      
      
      on({ id: [].concat(['alias.0.Grid.GridHome.L1']).concat(['alias.0.Grid.GridHome.L2']).concat(['alias.0.Grid.GridHome.L3']), change: 'ne' }, async (obj) => {
        await get_data();
        await calculate_summary();
        await calculate_tendency();
        await debug_show_data();
        await send_data();
      });
      
      

      Ooops, ist dann doch ganz schön lang geworden... Sorry.

      Falls jemand findet/sieht, was ich 'vergurkt' habe... tät mich über Hinweise freuen. Danke im Voraus

      posted in Node-Red
      DancerVlt69
      DancerVlt69
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo