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. Node-Red
  5. Node Red Optimierung PV Überschuss für Anfänger

NEWS

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

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

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

Node Red Optimierung PV Überschuss für Anfänger

Geplant Angeheftet Gesperrt Verschoben Node-Red
73 Beiträge 2 Kommentatoren 6.9k Aufrufe 2 Watching
  • Ä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.
  • mickymM mickym

    @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

    @mickym danke

    dann lass ich heute mal heizen und probiere morgen den Testurlaub.
    eine Nacht haltet es der Boiler aus

    Dann hast Du ja übermorgen kein warmes Wasser - brrr :sneezing_face:

    H Offline
    H Offline
    Harry_vlbg
    schrieb am zuletzt editiert von
    #53

    @mickym
    hat gut funktioniert alles, jetzt hätte ich noch eine Node die ich haben sollte.

    Wenn der Akku die 100% erreicht sollte ich eine PV ausschalten. Also wie gehabt wieder mit dem HTTP request wie gewohnt nur mit anderer IP Adresse.
    Grund ist das ich nicht zu viel Strom einspeise da ich in Ö nur 800 Watt unangemeldet darf.
    Jetzt ist das Ausschalten ja nicht das Problem - sollte aber wenn es dann wieder von 100 auf 98 geht natürlich wieder einschalten. Auch dann am nächsten Tag wieder anspringen.
    Der Shelly wird dabei durch die eigene Oberfläche mit einer Delay von 30 Minuten nach Sonnenaufgang ein und 30 Minuten nach Sonnenuntergang ausgeschalten.
    Dies könnte ich natürlich dort auch löschen und ebenfalls im Node Red implementieren.
    Also meine Herausforderung ist dass, das der Ladezustand ein nur von oben herunter erfolgen soll. Nicht das ich den ganzen Tag bei jedem Ladezustand ein Einschalten sende.
    Geht das?

    Danke

    1 Antwort Letzte Antwort
    0
    • mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #54

      @harry_vlbg Nun ja - im Prinzip ist alles möglich, was man logisch einigermassen in Worte fassen kann.

      Jetzt ist das Ausschalten ja nicht das Problem - sollte aber wenn es dann wieder von 100 auf 98 geht natürlich wieder einschalten. Auch dann am nächsten Tag wieder anspringen.

      Du vergleichst einfach mit dem vorherigen Wert, um eine Tendenz festzustellen. Ich habe mal =98% als Einschaltsignal und 100% als Ausschaltsignal genommen, in der richtigen Tendenz. Falls 98% übersprungen wird - weiß nicht ob das möglich ist, dann kann man auch <=98% nehmen und dann mit true und false und einer Filternode arbeiten.

      NodeRedSupport.png

      Hier der Flow zum Import:

      [
         {
             "id": "0e43a5fbf07c8f26",
             "type": "inject",
             "z": "7e6af0015415146d",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "topic",
                     "vt": "str"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "Akku",
             "payload": "100",
             "payloadType": "num",
             "x": 240,
             "y": 6160,
             "wires": [
                 [
                     "4f1a218eb9883c64"
                 ]
             ]
         },
         {
             "id": "62a8e78e071f074a",
             "type": "inject",
             "z": "7e6af0015415146d",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "topic",
                     "vt": "str"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "Akku",
             "payload": "99",
             "payloadType": "num",
             "x": 240,
             "y": 6200,
             "wires": [
                 [
                     "4f1a218eb9883c64"
                 ]
             ]
         },
         {
             "id": "1f3a16499e2c0790",
             "type": "inject",
             "z": "7e6af0015415146d",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "topic",
                     "vt": "str"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "Akku",
             "payload": "98",
             "payloadType": "num",
             "x": 240,
             "y": 6240,
             "wires": [
                 [
                     "4f1a218eb9883c64"
                 ]
             ]
         },
         {
             "id": "47d3cab9b7d27a9d",
             "type": "inject",
             "z": "7e6af0015415146d",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 },
                 {
                     "p": "topic",
                     "vt": "str"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "Akku",
             "payload": "97",
             "payloadType": "num",
             "x": 240,
             "y": 6280,
             "wires": [
                 [
                     "4f1a218eb9883c64"
                 ]
             ]
         },
         {
             "id": "4f1a218eb9883c64",
             "type": "switch",
             "z": "7e6af0015415146d",
             "name": "Tendenz",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "gt",
                     "v": "",
                     "vt": "prev"
                 },
                 {
                     "t": "lt",
                     "v": "",
                     "vt": "prev"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 2,
             "x": 440,
             "y": 6200,
             "wires": [
                 [
                     "56beb37bf0190b8c"
                 ],
                 [
                     "90c3a1a960bb652d"
                 ]
             ],
             "outputLabels": [
                 "Tendenz steigend",
                 "Tendenz fallend"
             ]
         },
         {
             "id": "95e1e5e77bc43cd1",
             "type": "debug",
             "z": "7e6af0015415146d",
             "name": "Boiler ausschalten",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 910,
             "y": 6160,
             "wires": []
         },
         {
             "id": "56beb37bf0190b8c",
             "type": "switch",
             "z": "7e6af0015415146d",
             "name": "Bei 100 % ausschalten",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "eq",
                     "v": "100",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 1,
             "x": 660,
             "y": 6160,
             "wires": [
                 [
                     "95e1e5e77bc43cd1"
                 ]
             ]
         },
         {
             "id": "d17e712dec0e3055",
             "type": "debug",
             "z": "7e6af0015415146d",
             "name": "Boiler einschalten",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 910,
             "y": 6240,
             "wires": []
         },
         {
             "id": "90c3a1a960bb652d",
             "type": "switch",
             "z": "7e6af0015415146d",
             "name": "Bei = 98 % einschalten",
             "property": "payload",
             "propertyType": "msg",
             "rules": [
                 {
                     "t": "eq",
                     "v": "98",
                     "vt": "num"
                 }
             ],
             "checkall": "true",
             "repair": false,
             "outputs": 1,
             "x": 660,
             "y": 6240,
             "wires": [
                 [
                     "d17e712dec0e3055"
                 ]
             ]
         }
      ]
      

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      H 2 Antworten Letzte Antwort
      0
      • mickymM mickym

        @harry_vlbg Nun ja - im Prinzip ist alles möglich, was man logisch einigermassen in Worte fassen kann.

        Jetzt ist das Ausschalten ja nicht das Problem - sollte aber wenn es dann wieder von 100 auf 98 geht natürlich wieder einschalten. Auch dann am nächsten Tag wieder anspringen.

        Du vergleichst einfach mit dem vorherigen Wert, um eine Tendenz festzustellen. Ich habe mal =98% als Einschaltsignal und 100% als Ausschaltsignal genommen, in der richtigen Tendenz. Falls 98% übersprungen wird - weiß nicht ob das möglich ist, dann kann man auch <=98% nehmen und dann mit true und false und einer Filternode arbeiten.

        NodeRedSupport.png

        Hier der Flow zum Import:

        [
           {
               "id": "0e43a5fbf07c8f26",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "Akku",
               "payload": "100",
               "payloadType": "num",
               "x": 240,
               "y": 6160,
               "wires": [
                   [
                       "4f1a218eb9883c64"
                   ]
               ]
           },
           {
               "id": "62a8e78e071f074a",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "Akku",
               "payload": "99",
               "payloadType": "num",
               "x": 240,
               "y": 6200,
               "wires": [
                   [
                       "4f1a218eb9883c64"
                   ]
               ]
           },
           {
               "id": "1f3a16499e2c0790",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "Akku",
               "payload": "98",
               "payloadType": "num",
               "x": 240,
               "y": 6240,
               "wires": [
                   [
                       "4f1a218eb9883c64"
                   ]
               ]
           },
           {
               "id": "47d3cab9b7d27a9d",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   },
                   {
                       "p": "topic",
                       "vt": "str"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "Akku",
               "payload": "97",
               "payloadType": "num",
               "x": 240,
               "y": 6280,
               "wires": [
                   [
                       "4f1a218eb9883c64"
                   ]
               ]
           },
           {
               "id": "4f1a218eb9883c64",
               "type": "switch",
               "z": "7e6af0015415146d",
               "name": "Tendenz",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "gt",
                       "v": "",
                       "vt": "prev"
                   },
                   {
                       "t": "lt",
                       "v": "",
                       "vt": "prev"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 440,
               "y": 6200,
               "wires": [
                   [
                       "56beb37bf0190b8c"
                   ],
                   [
                       "90c3a1a960bb652d"
                   ]
               ],
               "outputLabels": [
                   "Tendenz steigend",
                   "Tendenz fallend"
               ]
           },
           {
               "id": "95e1e5e77bc43cd1",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "Boiler ausschalten",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 910,
               "y": 6160,
               "wires": []
           },
           {
               "id": "56beb37bf0190b8c",
               "type": "switch",
               "z": "7e6af0015415146d",
               "name": "Bei 100 % ausschalten",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "eq",
                       "v": "100",
                       "vt": "num"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 660,
               "y": 6160,
               "wires": [
                   [
                       "95e1e5e77bc43cd1"
                   ]
               ]
           },
           {
               "id": "d17e712dec0e3055",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "Boiler einschalten",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 910,
               "y": 6240,
               "wires": []
           },
           {
               "id": "90c3a1a960bb652d",
               "type": "switch",
               "z": "7e6af0015415146d",
               "name": "Bei = 98 % einschalten",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "eq",
                       "v": "98",
                       "vt": "num"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 660,
               "y": 6240,
               "wires": [
                   [
                       "d17e712dec0e3055"
                   ]
               ]
           }
        ]
        

        H Offline
        H Offline
        Harry_vlbg
        schrieb am zuletzt editiert von
        #55

        @mickym
        Hi,
        ist ja super - das mit der Tendenz habe ich noch gar nirgends gelesen.
        Dieses Akku 100 / 99... bekommt er das aus meiner Batterie oder muss das noch irgendwo übermittelt werden?

        Ein Wert überspringen kann es nicht da die Pytes Batterie mir bei jeder Änderung ein msg erzeugt. Weiß aber noch nicht ob ich hier dann noch so ein MSG Topic "Akku" brauche.

        1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @harry_vlbg Nun ja - im Prinzip ist alles möglich, was man logisch einigermassen in Worte fassen kann.

          Jetzt ist das Ausschalten ja nicht das Problem - sollte aber wenn es dann wieder von 100 auf 98 geht natürlich wieder einschalten. Auch dann am nächsten Tag wieder anspringen.

          Du vergleichst einfach mit dem vorherigen Wert, um eine Tendenz festzustellen. Ich habe mal =98% als Einschaltsignal und 100% als Ausschaltsignal genommen, in der richtigen Tendenz. Falls 98% übersprungen wird - weiß nicht ob das möglich ist, dann kann man auch <=98% nehmen und dann mit true und false und einer Filternode arbeiten.

          NodeRedSupport.png

          Hier der Flow zum Import:

          [
             {
                 "id": "0e43a5fbf07c8f26",
                 "type": "inject",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "props": [
                     {
                         "p": "payload"
                     },
                     {
                         "p": "topic",
                         "vt": "str"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "Akku",
                 "payload": "100",
                 "payloadType": "num",
                 "x": 240,
                 "y": 6160,
                 "wires": [
                     [
                         "4f1a218eb9883c64"
                     ]
                 ]
             },
             {
                 "id": "62a8e78e071f074a",
                 "type": "inject",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "props": [
                     {
                         "p": "payload"
                     },
                     {
                         "p": "topic",
                         "vt": "str"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "Akku",
                 "payload": "99",
                 "payloadType": "num",
                 "x": 240,
                 "y": 6200,
                 "wires": [
                     [
                         "4f1a218eb9883c64"
                     ]
                 ]
             },
             {
                 "id": "1f3a16499e2c0790",
                 "type": "inject",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "props": [
                     {
                         "p": "payload"
                     },
                     {
                         "p": "topic",
                         "vt": "str"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "Akku",
                 "payload": "98",
                 "payloadType": "num",
                 "x": 240,
                 "y": 6240,
                 "wires": [
                     [
                         "4f1a218eb9883c64"
                     ]
                 ]
             },
             {
                 "id": "47d3cab9b7d27a9d",
                 "type": "inject",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "props": [
                     {
                         "p": "payload"
                     },
                     {
                         "p": "topic",
                         "vt": "str"
                     }
                 ],
                 "repeat": "",
                 "crontab": "",
                 "once": false,
                 "onceDelay": 0.1,
                 "topic": "Akku",
                 "payload": "97",
                 "payloadType": "num",
                 "x": 240,
                 "y": 6280,
                 "wires": [
                     [
                         "4f1a218eb9883c64"
                     ]
                 ]
             },
             {
                 "id": "4f1a218eb9883c64",
                 "type": "switch",
                 "z": "7e6af0015415146d",
                 "name": "Tendenz",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "gt",
                         "v": "",
                         "vt": "prev"
                     },
                     {
                         "t": "lt",
                         "v": "",
                         "vt": "prev"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 440,
                 "y": 6200,
                 "wires": [
                     [
                         "56beb37bf0190b8c"
                     ],
                     [
                         "90c3a1a960bb652d"
                     ]
                 ],
                 "outputLabels": [
                     "Tendenz steigend",
                     "Tendenz fallend"
                 ]
             },
             {
                 "id": "95e1e5e77bc43cd1",
                 "type": "debug",
                 "z": "7e6af0015415146d",
                 "name": "Boiler ausschalten",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "payload",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 910,
                 "y": 6160,
                 "wires": []
             },
             {
                 "id": "56beb37bf0190b8c",
                 "type": "switch",
                 "z": "7e6af0015415146d",
                 "name": "Bei 100 % ausschalten",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "eq",
                         "v": "100",
                         "vt": "num"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 1,
                 "x": 660,
                 "y": 6160,
                 "wires": [
                     [
                         "95e1e5e77bc43cd1"
                     ]
                 ]
             },
             {
                 "id": "d17e712dec0e3055",
                 "type": "debug",
                 "z": "7e6af0015415146d",
                 "name": "Boiler einschalten",
                 "active": true,
                 "tosidebar": true,
                 "console": false,
                 "tostatus": false,
                 "complete": "payload",
                 "targetType": "msg",
                 "statusVal": "",
                 "statusType": "auto",
                 "x": 910,
                 "y": 6240,
                 "wires": []
             },
             {
                 "id": "90c3a1a960bb652d",
                 "type": "switch",
                 "z": "7e6af0015415146d",
                 "name": "Bei = 98 % einschalten",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "eq",
                         "v": "98",
                         "vt": "num"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 1,
                 "x": 660,
                 "y": 6240,
                 "wires": [
                     [
                         "d17e712dec0e3055"
                     ]
                 ]
             }
          ]
          

          H Offline
          H Offline
          Harry_vlbg
          schrieb am zuletzt editiert von
          #56

          @mickym habe es nun so gelöst. Müsste meiner Meinung auch klappen.
          wenn er sich in diesem Bereich bewegt schaltet es und morgens geht es ohnehin an bei Sonnenaufgang.
          Spricht was dagegen?

          50ee73b0-7af1-4283-8c95-a752a297cb30-image.png

          mickymM 1 Antwort Letzte Antwort
          0
          • H Harry_vlbg

            @mickym habe es nun so gelöst. Müsste meiner Meinung auch klappen.
            wenn er sich in diesem Bereich bewegt schaltet es und morgens geht es ohnehin an bei Sonnenaufgang.
            Spricht was dagegen?

            50ee73b0-7af1-4283-8c95-a752a297cb30-image.png

            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #57

            @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

            @mickym habe es nun so gelöst. Müsste meiner Meinung auch klappen.
            wenn er sich in diesem Bereich bewegt schaltet es und morgens geht es ohnehin an bei Sonnenaufgang.
            Spricht was dagegen?

            50ee73b0-7af1-4283-8c95-a752a297cb30-image.png

            ac58609a-fdff-42bc-998f-5cc082e42240-image.png

            So was macht gar keinen Sinn - war soll eine Switch Node mit 3 Ausgängen, wenn die dann alle in einen Eingang münden.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            H 2 Antworten Letzte Antwort
            0
            • mickymM mickym

              @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

              @mickym habe es nun so gelöst. Müsste meiner Meinung auch klappen.
              wenn er sich in diesem Bereich bewegt schaltet es und morgens geht es ohnehin an bei Sonnenaufgang.
              Spricht was dagegen?

              50ee73b0-7af1-4283-8c95-a752a297cb30-image.png

              ac58609a-fdff-42bc-998f-5cc082e42240-image.png

              So was macht gar keinen Sinn - war soll eine Switch Node mit 3 Ausgängen, wenn die dann alle in einen Eingang münden.

              H Offline
              H Offline
              Harry_vlbg
              schrieb am zuletzt editiert von
              #58

              @mickym ich dachte das die Funktion Tendenz das steuert ob es mehr oder weniger wird?

              mickymM 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

                @mickym habe es nun so gelöst. Müsste meiner Meinung auch klappen.
                wenn er sich in diesem Bereich bewegt schaltet es und morgens geht es ohnehin an bei Sonnenaufgang.
                Spricht was dagegen?

                50ee73b0-7af1-4283-8c95-a752a297cb30-image.png

                ac58609a-fdff-42bc-998f-5cc082e42240-image.png

                So was macht gar keinen Sinn - war soll eine Switch Node mit 3 Ausgängen, wenn die dann alle in einen Eingang münden.

                H Offline
                H Offline
                Harry_vlbg
                schrieb am zuletzt editiert von
                #59

                @mickym
                ah - jetzt ist es mir geschossen. Macht nur mit 2 Sinn

                mickymM 1 Antwort Letzte Antwort
                0
                • H Harry_vlbg

                  @mickym ich dachte das die Funktion Tendenz das steuert ob es mehr oder weniger wird?

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #60

                  @harry_vlbg Hast Du Dir denn die Switch Node angeschaut? Diese Node vergleicht einfach die payload mit dem Vorgängerwert. - Da muss nichts davor geschaltet werden.

                  Sprich es kommt ein Wert - ist der größer (am Anfang immer der Fall) - dann geht der Wert an den oberen Ausgang, wenn kleiner an den unteren Ausgang

                  1385ef29-9f52-4639-854e-5c6f29e4bd94-image.png

                  aber wo bekommt er denn diesen Wert her von der Batterie ?

                  Ja ich hab das doch mit den Inject Nodes simuliert:
                  a61dae83-9499-4af4-b647-f5166add30c4-image.png

                  Du musst also dafür sorgen, dass der Akkustand zwischen 0 und 100 einfach in die Switch NOde kommt -

                  Keine Ahnung ob die 77 Deine blaue Node Pytes Ah sind oder % des Akkus. Du musst halt den Akkustand zwischen 0-100 einspeisen. Du willst das bei 100% ausgeschaltet wird und bei 98% wieder eingeschaltet wird - also musst Du dafür Sorge tragen, dass der Akkustand in den Flow eingespeist wird.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  H 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @harry_vlbg Hast Du Dir denn die Switch Node angeschaut? Diese Node vergleicht einfach die payload mit dem Vorgängerwert. - Da muss nichts davor geschaltet werden.

                    Sprich es kommt ein Wert - ist der größer (am Anfang immer der Fall) - dann geht der Wert an den oberen Ausgang, wenn kleiner an den unteren Ausgang

                    1385ef29-9f52-4639-854e-5c6f29e4bd94-image.png

                    aber wo bekommt er denn diesen Wert her von der Batterie ?

                    Ja ich hab das doch mit den Inject Nodes simuliert:
                    a61dae83-9499-4af4-b647-f5166add30c4-image.png

                    Du musst also dafür sorgen, dass der Akkustand zwischen 0 und 100 einfach in die Switch NOde kommt -

                    Keine Ahnung ob die 77 Deine blaue Node Pytes Ah sind oder % des Akkus. Du musst halt den Akkustand zwischen 0-100 einspeisen. Du willst das bei 100% ausgeschaltet wird und bei 98% wieder eingeschaltet wird - also musst Du dafür Sorge tragen, dass der Akkustand in den Flow eingespeist wird.

                    H Offline
                    H Offline
                    Harry_vlbg
                    schrieb am zuletzt editiert von
                    #61

                    @mickym
                    aber wo bekommt er denn diesen Wert her von der Batterie ?

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • H Harry_vlbg

                      @mickym
                      aber wo bekommt er denn diesen Wert her von der Batterie ?

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #62

                      @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

                      @mickym
                      aber wo bekommt er denn diesen Wert her von der Batterie ?

                      Ja klar - woher soll denn der Akkustand kommen? Und ich weiß nicht, ob das Ah oder 0-100%. Du musst doch wissen, wie man den Akkustand berechnet, wenn Du willst, dass er bei bestimmten Zuständen ein- und ausgeschaltet wird.

                      Bei dem 1. Flow war es doch auch der Akkustand:

                      daa0bd75-4437-44a8-aafa-286df39d10b1-image.png

                      Also brauchst Du doch nur von der blauen Node noch eine Verbindung zu dem jetzigen Flow machen oder eine 2. blaue Node nehmen.

                      eb046235-8ba3-4816-8d76-560191ec523b-image.png

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      H 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

                        @mickym
                        aber wo bekommt er denn diesen Wert her von der Batterie ?

                        Ja klar - woher soll denn der Akkustand kommen? Und ich weiß nicht, ob das Ah oder 0-100%. Du musst doch wissen, wie man den Akkustand berechnet, wenn Du willst, dass er bei bestimmten Zuständen ein- und ausgeschaltet wird.

                        Bei dem 1. Flow war es doch auch der Akkustand:

                        daa0bd75-4437-44a8-aafa-286df39d10b1-image.png

                        Also brauchst Du doch nur von der blauen Node noch eine Verbindung zu dem jetzigen Flow machen oder eine 2. blaue Node nehmen.

                        eb046235-8ba3-4816-8d76-560191ec523b-image.png

                        H Offline
                        H Offline
                        Harry_vlbg
                        schrieb am zuletzt editiert von
                        #63

                        @mickym
                        also es sind %

                        somit müsste ich wieder so einen flow. Akku setzten
                        c6f5f1c2-d3b5-4250-bd7e-fe0c984c20fe-image.png

                        und dann am switch node umstellen
                        e5eecf94-bee9-4149-97b5-12e3282f6efc-image.png

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • H Harry_vlbg

                          @mickym
                          also es sind %

                          somit müsste ich wieder so einen flow. Akku setzten
                          c6f5f1c2-d3b5-4250-bd7e-fe0c984c20fe-image.png

                          und dann am switch node umstellen
                          e5eecf94-bee9-4149-97b5-12e3282f6efc-image.png

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #64

                          @harry_vlbg Nein - lasss doch alles wie es ist. Es gibt keine flow.Akku. Es ist einfach die payload - da musst du doch nichts ändern.

                          2cda136c-593b-40d1-8f52-de44df48b8f2-image.png

                          Die payload aus der blauen Node wird untersucht und die switch Node vergleicht die payload mit dem Vorgängerwert und damit wird doch automatisch ermittelt, ob der Wert steigt oder fällt.

                          Hänge einfach Deine blaue Node, anstelle meiner Inject Nodes vor die Switch Node, die ich erstellt habe. Dann siehst Du anhand der Debug Nodes was geschaltet wird bzw. schaltest direkt mit den HTTP Request Nodes.

                          d2950cb9-f27b-47cc-a0bc-a82a807480a3-image.png

                          Durchgestrichen LÖSCHEN, die blaue Node mit der Switch Node verbinden - ohne was zu ändern - und gut ist.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          H 1 Antwort Letzte Antwort
                          0
                          • mickymM mickym

                            @harry_vlbg Nein - lasss doch alles wie es ist. Es gibt keine flow.Akku. Es ist einfach die payload - da musst du doch nichts ändern.

                            2cda136c-593b-40d1-8f52-de44df48b8f2-image.png

                            Die payload aus der blauen Node wird untersucht und die switch Node vergleicht die payload mit dem Vorgängerwert und damit wird doch automatisch ermittelt, ob der Wert steigt oder fällt.

                            Hänge einfach Deine blaue Node, anstelle meiner Inject Nodes vor die Switch Node, die ich erstellt habe. Dann siehst Du anhand der Debug Nodes was geschaltet wird bzw. schaltest direkt mit den HTTP Request Nodes.

                            d2950cb9-f27b-47cc-a0bc-a82a807480a3-image.png

                            Durchgestrichen LÖSCHEN, die blaue Node mit der Switch Node verbinden - ohne was zu ändern - und gut ist.

                            H Offline
                            H Offline
                            Harry_vlbg
                            schrieb am zuletzt editiert von
                            #65

                            @mickym
                            ohhh man - da habe ich wieder um die Kurve gedacht.
                            das kann ich machen

                            1 Antwort Letzte Antwort
                            0
                            • H Harry_vlbg

                              @mickym
                              ah - jetzt ist es mir geschossen. Macht nur mit 2 Sinn

                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von mickym
                              #66

                              @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

                              @mickym
                              ah - jetzt ist es mir geschossen. Macht nur mit 2 Sinn

                              Stimmt auch nicht - mit einer Switch Node kann man auch Filtern, wie beim Urlaub - aber dann hast Du auch nur eine Bedingung und einen Ausgang.

                              Aber wenn Du an einen Ausgang macht - ich bin im Urlaub - und an den anderen ich bin nicht im Urlaub - und behandelst dann beides anschließend gleich, dann kann man sich diese Abfrage auch sparen. Wenn es egal ist, ob Du im Urlaub bist oder nicht, da Du dann mit der gleichen Bearbeitung weiter verfährst, dann ist diese Abfrage sinnlos.

                              Logisch?

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              H 2 Antworten Letzte Antwort
                              0
                              • mickymM mickym

                                @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

                                @mickym
                                ah - jetzt ist es mir geschossen. Macht nur mit 2 Sinn

                                Stimmt auch nicht - mit einer Switch Node kann man auch Filtern, wie beim Urlaub - aber dann hast Du auch nur eine Bedingung und einen Ausgang.

                                Aber wenn Du an einen Ausgang macht - ich bin im Urlaub - und an den anderen ich bin nicht im Urlaub - und behandelst dann beides anschließend gleich, dann kann man sich diese Abfrage auch sparen. Wenn es egal ist, ob Du im Urlaub bist oder nicht, da Du dann mit der gleichen Bearbeitung weiter verfährst, dann ist diese Abfrage sinnlos.

                                Logisch?

                                H Offline
                                H Offline
                                Harry_vlbg
                                schrieb am zuletzt editiert von
                                #67

                                @mickym
                                logisch - jetzt jedenfalls.
                                Habe die Funktion definitiv falsch interpretiert

                                1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  @harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:

                                  @mickym
                                  ah - jetzt ist es mir geschossen. Macht nur mit 2 Sinn

                                  Stimmt auch nicht - mit einer Switch Node kann man auch Filtern, wie beim Urlaub - aber dann hast Du auch nur eine Bedingung und einen Ausgang.

                                  Aber wenn Du an einen Ausgang macht - ich bin im Urlaub - und an den anderen ich bin nicht im Urlaub - und behandelst dann beides anschließend gleich, dann kann man sich diese Abfrage auch sparen. Wenn es egal ist, ob Du im Urlaub bist oder nicht, da Du dann mit der gleichen Bearbeitung weiter verfährst, dann ist diese Abfrage sinnlos.

                                  Logisch?

                                  H Offline
                                  H Offline
                                  Harry_vlbg
                                  schrieb am zuletzt editiert von
                                  #68

                                  @mickym
                                  HI - ich bin noch etwas am optimieren für die "schlechen" Sonnentage. Aber irgendwie hat es mir gestern nicht abgeschaltet obwohl es von mir erwartet wurde.

                                  den Flow.Boiler ist hier nicht ersichtlich damit es nicht ein zu großer Durcheinander gibt. Das funktioniert ja dank dir hervorragend.

                                  Ziel ist bei Sunset die Variable nachtabschaltung und um 23 uhr dies abfragen und umsetzten.
                                  mit 4 wird der Victron abgeschaltet und mit 3 dann wieder eingeschalten.

                                  0862d2b5-2e00-477d-8680-e83c8e1c15f6-image.png

                                  code:

                                  [
                                     {
                                         "id": "4d648bd1ec0fc1eb",
                                         "type": "tab",
                                         "label": "Flow 1",
                                         "disabled": false,
                                         "info": "",
                                         "env": []
                                     },
                                     {
                                         "id": "95942d289e2311d1",
                                         "type": "victron-input-ess",
                                         "z": "4d648bd1ec0fc1eb",
                                         "service": "com.victronenergy.system/0",
                                         "path": "/Control/ActiveSocLimit",
                                         "serviceObj": {
                                             "service": "com.victronenergy.system/0",
                                             "name": "Venus system"
                                         },
                                         "pathObj": {
                                             "path": "/Control/ActiveSocLimit",
                                             "type": "integer",
                                             "name": "Active SOC limit (%)"
                                         },
                                         "name": "",
                                         "onlyChanges": false,
                                         "x": 240,
                                         "y": 340,
                                         "wires": [
                                             [
                                                 "0e2a88ab0952c1fc"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "0e2a88ab0952c1fc",
                                         "type": "function",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "Activ sock",
                                         "func": "flow.set('activ_soc', msg.payload);\nreturn msg;",
                                         "outputs": 1,
                                         "timeout": "",
                                         "noerr": 0,
                                         "initialize": "",
                                         "finalize": "",
                                         "libs": [],
                                         "x": 500,
                                         "y": 340,
                                         "wires": [
                                             []
                                         ]
                                     },
                                     {
                                         "id": "02aabb2d5a8bcd69",
                                         "type": "function",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "State of charge",
                                         "func": "flow.set('state_of_charge', msg.payload);\nreturn msg;",
                                         "outputs": 1,
                                         "timeout": "",
                                         "noerr": 0,
                                         "initialize": "",
                                         "finalize": "",
                                         "libs": [],
                                         "x": 520,
                                         "y": 280,
                                         "wires": [
                                             []
                                         ]
                                     },
                                     {
                                         "id": "21b9289b8a0d8d4f",
                                         "type": "chronos-switch",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "sunset",
                                         "config": "532a95bedeae68c9",
                                         "baseTime": "",
                                         "baseTimeType": "msgIngress",
                                         "conditions": [
                                             {
                                                 "operator": "equal",
                                                 "label": "== Bürgerliche Abenddämmerung",
                                                 "operands": {
                                                     "type": "sun",
                                                     "value": "dusk",
                                                     "offset": 0,
                                                     "random": false,
                                                     "precision": "millisecond"
                                                 }
                                             }
                                         ],
                                         "stopOnFirstMatch": false,
                                         "outputs": 1,
                                         "x": 150,
                                         "y": 440,
                                         "wires": [
                                             [
                                                 "check-conditions"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "6d370b95d9c02804",
                                         "type": "victron-input-battery",
                                         "z": "4d648bd1ec0fc1eb",
                                         "service": "com.victronenergy.battery/512",
                                         "path": "/Soc",
                                         "serviceObj": {
                                             "service": "com.victronenergy.battery/512",
                                             "name": "Pytes battery"
                                         },
                                         "pathObj": {
                                             "path": "/Soc",
                                             "type": "float",
                                             "name": "State of charge (%)"
                                         },
                                         "name": "",
                                         "onlyChanges": true,
                                         "x": 240,
                                         "y": 280,
                                         "wires": [
                                             [
                                                 "02aabb2d5a8bcd69"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "check-conditions",
                                         "type": "function",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "Check Conditions",
                                         "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                         "outputs": 1,
                                         "timeout": "",
                                         "noerr": 0,
                                         "initialize": "",
                                         "finalize": "",
                                         "libs": [],
                                         "x": 390,
                                         "y": 440,
                                         "wires": [
                                             []
                                         ]
                                     },
                                     {
                                         "id": "timer-node",
                                         "type": "inject",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "23 Uhr",
                                         "props": [
                                             {
                                                 "p": "payload",
                                                 "v": "",
                                                 "vt": "date"
                                             },
                                             {
                                                 "p": "topic",
                                                 "v": "",
                                                 "vt": "str"
                                             }
                                         ],
                                         "repeat": "",
                                         "crontab": "0 23 * * *",
                                         "once": false,
                                         "onceDelay": 0.1,
                                         "topic": "",
                                         "payload": "",
                                         "payloadType": "date",
                                         "x": 160,
                                         "y": 500,
                                         "wires": [
                                             [
                                                 "retrieve-nachtabschaltung"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "retrieve-nachtabschaltung",
                                         "type": "function",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "Retrieve Nachtabschaltung",
                                         "func": "msg.payload = flow.get('nachtabschaltung');\nreturn msg;",
                                         "outputs": 1,
                                         "noerr": 0,
                                         "x": 420,
                                         "y": 500,
                                         "wires": [
                                             [
                                                 "a1091abadb4c529d"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "a1091abadb4c529d",
                                         "type": "switch",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "",
                                         "property": "nachtabschaltung",
                                         "propertyType": "flow",
                                         "rules": [
                                             {
                                                 "t": "true"
                                             }
                                         ],
                                         "checkall": "true",
                                         "repair": false,
                                         "outputs": 1,
                                         "x": 630,
                                         "y": 500,
                                         "wires": [
                                             [
                                                 "db5d1fe2433cb8a8"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "1c02f205392a324c",
                                         "type": "delay",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "Verezögerung 6 Stunden",
                                         "pauseType": "delay",
                                         "timeout": "6",
                                         "timeoutUnits": "hours",
                                         "rate": "1",
                                         "nbRateUnits": "1",
                                         "rateUnits": "second",
                                         "randomFirst": "1",
                                         "randomLast": "5",
                                         "randomUnits": "seconds",
                                         "drop": false,
                                         "allowrate": false,
                                         "outputs": 1,
                                         "x": 190,
                                         "y": 660,
                                         "wires": [
                                             [
                                                 "3e3309acb01e7e5f"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "b0d0d38a8880ee0f",
                                         "type": "victron-output-vebus",
                                         "z": "4d648bd1ec0fc1eb",
                                         "service": "com.victronenergy.vebus/276",
                                         "path": "/Mode",
                                         "serviceObj": {
                                             "service": "com.victronenergy.vebus/276",
                                             "name": "MultiPlus-II 48/3000/35-32"
                                         },
                                         "pathObj": {
                                             "path": "/Mode",
                                             "type": "enum",
                                             "name": "Switch Position",
                                             "remarks": "<p>Note that <tt>/ModeIsAdjustable</tt> needs to be set to 1.</p> ",
                                             "enum": {
                                                 "1": "Charger Only",
                                                 "2": "Inverter Only",
                                                 "3": "On",
                                                 "4": "Off"
                                             },
                                             "writable": true
                                         },
                                         "initial": "",
                                         "name": "",
                                         "onlyChanges": false,
                                         "x": 810,
                                         "y": 660,
                                         "wires": []
                                     },
                                     {
                                         "id": "db5d1fe2433cb8a8",
                                         "type": "change",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "Schalter",
                                         "rules": [
                                             {
                                                 "t": "set",
                                                 "p": "payload",
                                                 "pt": "msg",
                                                 "to": "4",
                                                 "tot": "num"
                                             }
                                         ],
                                         "action": "",
                                         "property": "",
                                         "from": "",
                                         "to": "",
                                         "reg": false,
                                         "x": 780,
                                         "y": 500,
                                         "wires": [
                                             [
                                                 "1c02f205392a324c",
                                                 "b0d0d38a8880ee0f"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "e2d72c437587dd5d",
                                         "type": "inject",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "",
                                         "props": [
                                             {
                                                 "p": "payload"
                                             },
                                             {
                                                 "p": "topic",
                                                 "vt": "str"
                                             }
                                         ],
                                         "repeat": "",
                                         "crontab": "",
                                         "once": false,
                                         "onceDelay": 0.1,
                                         "topic": "",
                                         "payload": "",
                                         "payloadType": "date",
                                         "x": 140,
                                         "y": 560,
                                         "wires": [
                                             [
                                                 "retrieve-nachtabschaltung"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "3e3309acb01e7e5f",
                                         "type": "change",
                                         "z": "4d648bd1ec0fc1eb",
                                         "name": "Schalter EIN",
                                         "rules": [
                                             {
                                                 "t": "set",
                                                 "p": "payload",
                                                 "pt": "msg",
                                                 "to": "3",
                                                 "tot": "num"
                                             }
                                         ],
                                         "action": "",
                                         "property": "",
                                         "from": "",
                                         "to": "",
                                         "reg": false,
                                         "x": 450,
                                         "y": 660,
                                         "wires": [
                                             [
                                                 "b0d0d38a8880ee0f"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "532a95bedeae68c9",
                                         "type": "chronos-config",
                                         "name": "",
                                         "latitudeType": "num",
                                         "longitudeType": "num",
                                         "timezone": "",
                                         "sunPositions": []
                                     }
                                  ]
                                  

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • H Harry_vlbg

                                    @mickym
                                    HI - ich bin noch etwas am optimieren für die "schlechen" Sonnentage. Aber irgendwie hat es mir gestern nicht abgeschaltet obwohl es von mir erwartet wurde.

                                    den Flow.Boiler ist hier nicht ersichtlich damit es nicht ein zu großer Durcheinander gibt. Das funktioniert ja dank dir hervorragend.

                                    Ziel ist bei Sunset die Variable nachtabschaltung und um 23 uhr dies abfragen und umsetzten.
                                    mit 4 wird der Victron abgeschaltet und mit 3 dann wieder eingeschalten.

                                    0862d2b5-2e00-477d-8680-e83c8e1c15f6-image.png

                                    code:

                                    [
                                       {
                                           "id": "4d648bd1ec0fc1eb",
                                           "type": "tab",
                                           "label": "Flow 1",
                                           "disabled": false,
                                           "info": "",
                                           "env": []
                                       },
                                       {
                                           "id": "95942d289e2311d1",
                                           "type": "victron-input-ess",
                                           "z": "4d648bd1ec0fc1eb",
                                           "service": "com.victronenergy.system/0",
                                           "path": "/Control/ActiveSocLimit",
                                           "serviceObj": {
                                               "service": "com.victronenergy.system/0",
                                               "name": "Venus system"
                                           },
                                           "pathObj": {
                                               "path": "/Control/ActiveSocLimit",
                                               "type": "integer",
                                               "name": "Active SOC limit (%)"
                                           },
                                           "name": "",
                                           "onlyChanges": false,
                                           "x": 240,
                                           "y": 340,
                                           "wires": [
                                               [
                                                   "0e2a88ab0952c1fc"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "0e2a88ab0952c1fc",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Activ sock",
                                           "func": "flow.set('activ_soc', msg.payload);\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 500,
                                           "y": 340,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "02aabb2d5a8bcd69",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "State of charge",
                                           "func": "flow.set('state_of_charge', msg.payload);\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 520,
                                           "y": 280,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "21b9289b8a0d8d4f",
                                           "type": "chronos-switch",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "sunset",
                                           "config": "532a95bedeae68c9",
                                           "baseTime": "",
                                           "baseTimeType": "msgIngress",
                                           "conditions": [
                                               {
                                                   "operator": "equal",
                                                   "label": "== Bürgerliche Abenddämmerung",
                                                   "operands": {
                                                       "type": "sun",
                                                       "value": "dusk",
                                                       "offset": 0,
                                                       "random": false,
                                                       "precision": "millisecond"
                                                   }
                                               }
                                           ],
                                           "stopOnFirstMatch": false,
                                           "outputs": 1,
                                           "x": 150,
                                           "y": 440,
                                           "wires": [
                                               [
                                                   "check-conditions"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "6d370b95d9c02804",
                                           "type": "victron-input-battery",
                                           "z": "4d648bd1ec0fc1eb",
                                           "service": "com.victronenergy.battery/512",
                                           "path": "/Soc",
                                           "serviceObj": {
                                               "service": "com.victronenergy.battery/512",
                                               "name": "Pytes battery"
                                           },
                                           "pathObj": {
                                               "path": "/Soc",
                                               "type": "float",
                                               "name": "State of charge (%)"
                                           },
                                           "name": "",
                                           "onlyChanges": true,
                                           "x": 240,
                                           "y": 280,
                                           "wires": [
                                               [
                                                   "02aabb2d5a8bcd69"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "check-conditions",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Check Conditions",
                                           "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 390,
                                           "y": 440,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "timer-node",
                                           "type": "inject",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "23 Uhr",
                                           "props": [
                                               {
                                                   "p": "payload",
                                                   "v": "",
                                                   "vt": "date"
                                               },
                                               {
                                                   "p": "topic",
                                                   "v": "",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "0 23 * * *",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "",
                                           "payload": "",
                                           "payloadType": "date",
                                           "x": 160,
                                           "y": 500,
                                           "wires": [
                                               [
                                                   "retrieve-nachtabschaltung"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "retrieve-nachtabschaltung",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Retrieve Nachtabschaltung",
                                           "func": "msg.payload = flow.get('nachtabschaltung');\nreturn msg;",
                                           "outputs": 1,
                                           "noerr": 0,
                                           "x": 420,
                                           "y": 500,
                                           "wires": [
                                               [
                                                   "a1091abadb4c529d"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "a1091abadb4c529d",
                                           "type": "switch",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "property": "nachtabschaltung",
                                           "propertyType": "flow",
                                           "rules": [
                                               {
                                                   "t": "true"
                                               }
                                           ],
                                           "checkall": "true",
                                           "repair": false,
                                           "outputs": 1,
                                           "x": 630,
                                           "y": 500,
                                           "wires": [
                                               [
                                                   "db5d1fe2433cb8a8"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "1c02f205392a324c",
                                           "type": "delay",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Verezögerung 6 Stunden",
                                           "pauseType": "delay",
                                           "timeout": "6",
                                           "timeoutUnits": "hours",
                                           "rate": "1",
                                           "nbRateUnits": "1",
                                           "rateUnits": "second",
                                           "randomFirst": "1",
                                           "randomLast": "5",
                                           "randomUnits": "seconds",
                                           "drop": false,
                                           "allowrate": false,
                                           "outputs": 1,
                                           "x": 190,
                                           "y": 660,
                                           "wires": [
                                               [
                                                   "3e3309acb01e7e5f"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "b0d0d38a8880ee0f",
                                           "type": "victron-output-vebus",
                                           "z": "4d648bd1ec0fc1eb",
                                           "service": "com.victronenergy.vebus/276",
                                           "path": "/Mode",
                                           "serviceObj": {
                                               "service": "com.victronenergy.vebus/276",
                                               "name": "MultiPlus-II 48/3000/35-32"
                                           },
                                           "pathObj": {
                                               "path": "/Mode",
                                               "type": "enum",
                                               "name": "Switch Position",
                                               "remarks": "<p>Note that <tt>/ModeIsAdjustable</tt> needs to be set to 1.</p> ",
                                               "enum": {
                                                   "1": "Charger Only",
                                                   "2": "Inverter Only",
                                                   "3": "On",
                                                   "4": "Off"
                                               },
                                               "writable": true
                                           },
                                           "initial": "",
                                           "name": "",
                                           "onlyChanges": false,
                                           "x": 810,
                                           "y": 660,
                                           "wires": []
                                       },
                                       {
                                           "id": "db5d1fe2433cb8a8",
                                           "type": "change",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Schalter",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "4",
                                                   "tot": "num"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 780,
                                           "y": 500,
                                           "wires": [
                                               [
                                                   "1c02f205392a324c",
                                                   "b0d0d38a8880ee0f"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "e2d72c437587dd5d",
                                           "type": "inject",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               },
                                               {
                                                   "p": "topic",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "",
                                           "payload": "",
                                           "payloadType": "date",
                                           "x": 140,
                                           "y": 560,
                                           "wires": [
                                               [
                                                   "retrieve-nachtabschaltung"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "3e3309acb01e7e5f",
                                           "type": "change",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Schalter EIN",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "3",
                                                   "tot": "num"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 450,
                                           "y": 660,
                                           "wires": [
                                               [
                                                   "b0d0d38a8880ee0f"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "532a95bedeae68c9",
                                           "type": "chronos-config",
                                           "name": "",
                                           "latitudeType": "num",
                                           "longitudeType": "num",
                                           "timezone": "",
                                           "sunPositions": []
                                       }
                                    ]
                                    

                                    mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #69

                                    @harry_vlbg Also - warum Du generell immer noch so gerne mit function Nodes "programmierst" - erschließt sich mir zwar nicht, aber das ist nicht Dein Problem. Im Grunde

                                    Das Du, die von mir empfohlenen Chronos-Nodes verwendest ist eine gute Entscheidung.

                                    So nun also zu Deinem Flow.

                                    1. Zu Deiner Check Conditions Node:

                                    den Flow.Boiler ist hier nicht ersichtlich damit es nicht ein zu großer Durcheinander gibt. Das funktioniert ja dank dir hervorragend.

                                    Die Flowvariable wird aber in diesem Flow gar nicht gesetzt.

                                    2c0447e6-7d1f-42b5-bc5a-06cb9ca6c728-image.png

                                    Wenn Du Ihn in einem anderen Flow setzt, dann benötigst du GLOBALE Variablen - da Flowvariablen immer nur innerhalb EINES Flows Gültigkeit haben.

                                    Deshalb wird bei Deiner Prüfung immer der "else" Zweig eintreten und die Nachtabschaltung auf "aktiv" setzen.

                                    Also:
                                    Korrektur: Entweder Du kopierst den Flow wieder in den Boiler Flow ODER Du setzt im Boilerflow - die Kontextvariable "boiler" GLOBAL. Wenn Du also im Boiler Flow die Variable "boiler" GLOBAL gesetzt hast, dann musst Du den Code natürlich auch ändern.

                                    Das Problem ist aber, dass Dein Code - bei Sonnenuntergang AUCH setzt, wenn der Boiler NICHT true war, wenn Du NodeRed oder den Flow NEU gestartet hast, da Deine Variablen nicht initialisierst.

                                    In diesem Fall kann man der Variablen "boiler" mit einem Wert vorbelegen, wenn die Kontextvariable noch nicht belegt ist.

                                    488e4d31-7b69-4e1c-8409-bb6d8eda84be-image.png

                                    Also 2 Pipesymbole und ich habe mal "boiler" auf true gesetzt, wenn die Variable NICHT existiert.

                                    Zusammenfassend:

                                    1. Die Kontextvariable "boiler" aus dem anderen Flow musst Du "global" setzen. Dann musst Du natürlich überall, wo du in diesem Flow die Variable "boiler" abfragst auch auf "global" ändern.
                                    2. Die globale Variable "boiler" solltest Du vorbelegen, da wenn diese nicht gesetzt ist, immer die Nachtabschaltung true wird, da immer der "else" Ast wahr wird.

                                    Also hier ein Vorschlag zur Korrektur Deiner Check Conditions Node (Warum auch immer Du denkst, dass Du hier mit JS programmieren musst).

                                    let activ_soc = flow.get('activ_soc');
                                    let state_of_charge = flow.get('state_of_charge');
                                    let boiler = global.get('boiler')|| true;
                                    
                                    if (boiler === true && state_of_charge >= activ_soc + 20) {
                                        flow.set('nachtabschaltung', false);
                                    } else {
                                        flow.set('nachtabschaltung', true);
                                    }
                                    return msg;
                                    
                                    1. So nun Dein 2. Problem mit dem sunset. Die Cronos Nodes sind toll - Du hast hier aber einen "Switch" genommen. Ein Switch kann aber nur bestehende Nachrichtenfiltern - aber da wird ja gar nichts getriggert, da am Eingang gar keine Nachrichten eingehen.

                                    19d5a237-4ad6-4ad5-af5b-6263009586e7-image.png

                                    Wenn Du willst, das eine Chronos zum Sonnenuntergang triggert, dann musst Du den Scheduler nehmen und nicht einen Switch, der durch eine vorhandene Nachricht getriggert wird.

                                    7a0cd838-5d6b-4e89-a698-5db0aee2ecc9-image.png

                                    6b4351f1-1874-4115-918a-8b8ec1bb237d-image.png

                                    Der Scheduler zeigt Dir dann auch automatisch im Status, wann das nächste Ereignis eintritt.

                                    1. Wenn Du schon die Chronos Nodes installiert hast, dann kann man im selben Flow auch diese Nodes ggf. anstelle der Inject Nodes verwenden, das ergibt dann etwas mehr Übersichtlichkeit.

                                    4ad7ed01-f0fb-4565-9298-1388fd038954-image.png


                                    Wenn Dir das mit den Chronos Nodes zu komplizert ist, dann gibts noch eine weitere sehr mächtig Scheduler Node und die kann ich Dir auch wärmstens empfehlen

                                    2d2f2803-6ad0-46c9-a8d9-29b1e715fd9e-image.png

                                    Hier kannst Du auch mehrere Ereignisse definieren und auch Sonnensstandsereignisse.

                                    Diese Nodes kannst Du Dir also alternativ zu den chronos Nodes installieren:

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

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

                                    So hier mal die "neuen" bzw. korrigierten Nodes zum Import:

                                    [
                                       {
                                           "id": "b2a53b5b0a28831f",
                                           "type": "chronos-scheduler",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Trigger Sonnenuntergang",
                                           "config": "532a95bedeae68c9",
                                           "schedule": [
                                               {
                                                   "trigger": {
                                                       "type": "sun",
                                                       "value": "dusk",
                                                       "offset": 0,
                                                       "random": false
                                                   },
                                                   "output": {
                                                       "type": "msg",
                                                       "property": {
                                                           "name": "payload",
                                                           "type": "str",
                                                           "value": ""
                                                       }
                                                   }
                                               }
                                           ],
                                           "disabled": false,
                                           "multiPort": false,
                                           "nextEventPort": false,
                                           "delayOnStart": true,
                                           "onStartDelay": 0.1,
                                           "outputs": 1,
                                           "x": 270,
                                           "y": 440,
                                           "wires": [
                                               [
                                                   "check-conditions"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "check-conditions",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Check Conditions",
                                           "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 550,
                                           "y": 440,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "e46d2c234b1e6cc0",
                                           "type": "chronos-scheduler",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "config": "532a95bedeae68c9",
                                           "schedule": [
                                               {
                                                   "trigger": {
                                                       "type": "time",
                                                       "value": "23:00",
                                                       "offset": 0,
                                                       "random": false
                                                   },
                                                   "output": {
                                                       "type": "msg",
                                                       "property": {
                                                           "name": "payload",
                                                           "type": "str",
                                                           "value": ""
                                                       }
                                                   }
                                               }
                                           ],
                                           "disabled": false,
                                           "multiPort": false,
                                           "nextEventPort": false,
                                           "delayOnStart": true,
                                           "onStartDelay": 0.1,
                                           "outputs": 1,
                                           "x": 160,
                                           "y": 600,
                                           "wires": [
                                               [
                                                   "retrieve-nachtabschaltung"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "532a95bedeae68c9",
                                           "type": "chronos-config",
                                           "name": "Testkonfiguration",
                                           "latitudeType": "num",
                                           "longitudeType": "num",
                                           "timezone": "",
                                           "sunPositions": []
                                       }
                                    ]
                                    

                                    und hier die grafische Vorlage:
                                    4e794cf3-58e6-4a73-a858-0e96746fc7ac-image.png

                                    Und nochmals - versuche auf function Nodes zu verzichten - Du willst doch grafisch sehen, was Dein Flow macht und Dich nicht durch Code quälen.

                                    Hier auch nochmal mein Testflow - da ich ja keine Victron Nodes habe ;)

                                    [
                                       {
                                           "id": "0e2a88ab0952c1fc",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Activ sock",
                                           "func": "flow.set('activ_soc', msg.payload);\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 500,
                                           "y": 340,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "02aabb2d5a8bcd69",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "State of charge",
                                           "func": "flow.set('state_of_charge', msg.payload);\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 520,
                                           "y": 280,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "check-conditions",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Check Conditions",
                                           "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 550,
                                           "y": 440,
                                           "wires": [
                                               []
                                           ]
                                       },
                                       {
                                           "id": "retrieve-nachtabschaltung",
                                           "type": "function",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Retrieve Nachtabschaltung",
                                           "func": "msg.payload = flow.get('nachtabschaltung');\nreturn msg;",
                                           "outputs": 1,
                                           "timeout": "",
                                           "noerr": 0,
                                           "initialize": "",
                                           "finalize": "",
                                           "libs": [],
                                           "x": 440,
                                           "y": 600,
                                           "wires": [
                                               [
                                                   "a1091abadb4c529d"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "a1091abadb4c529d",
                                           "type": "switch",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "property": "nachtabschaltung",
                                           "propertyType": "flow",
                                           "rules": [
                                               {
                                                   "t": "true"
                                               }
                                           ],
                                           "checkall": "true",
                                           "repair": false,
                                           "outputs": 1,
                                           "x": 650,
                                           "y": 600,
                                           "wires": [
                                               [
                                                   "db5d1fe2433cb8a8"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "1c02f205392a324c",
                                           "type": "delay",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Verezögerung 6 Stunden",
                                           "pauseType": "delay",
                                           "timeout": "6",
                                           "timeoutUnits": "hours",
                                           "rate": "1",
                                           "nbRateUnits": "1",
                                           "rateUnits": "second",
                                           "randomFirst": "1",
                                           "randomLast": "5",
                                           "randomUnits": "seconds",
                                           "drop": false,
                                           "allowrate": false,
                                           "outputs": 1,
                                           "x": 210,
                                           "y": 760,
                                           "wires": [
                                               [
                                                   "3e3309acb01e7e5f"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "db5d1fe2433cb8a8",
                                           "type": "change",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Schalter",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "4",
                                                   "tot": "num"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 800,
                                           "y": 600,
                                           "wires": [
                                               [
                                                   "1c02f205392a324c",
                                                   "bdd5a2f2d1718a26"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "e2d72c437587dd5d",
                                           "type": "inject",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               },
                                               {
                                                   "p": "topic",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "",
                                           "payload": "",
                                           "payloadType": "date",
                                           "x": 160,
                                           "y": 660,
                                           "wires": [
                                               [
                                                   "retrieve-nachtabschaltung"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "3e3309acb01e7e5f",
                                           "type": "change",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Schalter EIN",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "3",
                                                   "tot": "num"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 470,
                                           "y": 760,
                                           "wires": [
                                               [
                                                   "bdd5a2f2d1718a26"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "bdd5a2f2d1718a26",
                                           "type": "debug",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "victron-output-vebus",
                                           "active": true,
                                           "tosidebar": true,
                                           "console": false,
                                           "tostatus": false,
                                           "complete": "payload",
                                           "targetType": "msg",
                                           "statusVal": "",
                                           "statusType": "auto",
                                           "x": 1000,
                                           "y": 780,
                                           "wires": []
                                       },
                                       {
                                           "id": "2af9f056aeeec679",
                                           "type": "inject",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               },
                                               {
                                                   "p": "topic",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "victron-input-battery",
                                           "payload": "54",
                                           "payloadType": "num",
                                           "x": 300,
                                           "y": 280,
                                           "wires": [
                                               [
                                                   "02aabb2d5a8bcd69"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "a10fac8e5f58ae09",
                                           "type": "inject",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               },
                                               {
                                                   "p": "topic",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "victron-input-ess",
                                           "payload": "55",
                                           "payloadType": "num",
                                           "x": 290,
                                           "y": 340,
                                           "wires": [
                                               [
                                                   "0e2a88ab0952c1fc"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "b2a53b5b0a28831f",
                                           "type": "chronos-scheduler",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "Trigger Sonnenuntergang",
                                           "config": "532a95bedeae68c9",
                                           "schedule": [
                                               {
                                                   "trigger": {
                                                       "type": "sun",
                                                       "value": "dusk",
                                                       "offset": 0,
                                                       "random": false
                                                   },
                                                   "output": {
                                                       "type": "msg",
                                                       "property": {
                                                           "name": "payload",
                                                           "type": "str",
                                                           "value": ""
                                                       }
                                                   }
                                               }
                                           ],
                                           "disabled": false,
                                           "multiPort": false,
                                           "nextEventPort": false,
                                           "delayOnStart": true,
                                           "onStartDelay": 0.1,
                                           "outputs": 1,
                                           "x": 270,
                                           "y": 440,
                                           "wires": [
                                               [
                                                   "check-conditions"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "e46d2c234b1e6cc0",
                                           "type": "chronos-scheduler",
                                           "z": "4d648bd1ec0fc1eb",
                                           "name": "",
                                           "config": "532a95bedeae68c9",
                                           "schedule": [
                                               {
                                                   "trigger": {
                                                       "type": "time",
                                                       "value": "23:00",
                                                       "offset": 0,
                                                       "random": false
                                                   },
                                                   "output": {
                                                       "type": "msg",
                                                       "property": {
                                                           "name": "payload",
                                                           "type": "str",
                                                           "value": ""
                                                       }
                                                   }
                                               }
                                           ],
                                           "disabled": false,
                                           "multiPort": false,
                                           "nextEventPort": false,
                                           "delayOnStart": true,
                                           "onStartDelay": 0.1,
                                           "outputs": 1,
                                           "x": 160,
                                           "y": 600,
                                           "wires": [
                                               [
                                                   "retrieve-nachtabschaltung"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "532a95bedeae68c9",
                                           "type": "chronos-config",
                                           "name": "Testkonfiguration",
                                           "latitudeType": "num",
                                           "longitudeType": "num",
                                           "timezone": "",
                                           "sunPositions": []
                                       }
                                    ]
                                    

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    H 2 Antworten Letzte Antwort
                                    0
                                    • mickymM mickym

                                      @harry_vlbg Also - warum Du generell immer noch so gerne mit function Nodes "programmierst" - erschließt sich mir zwar nicht, aber das ist nicht Dein Problem. Im Grunde

                                      Das Du, die von mir empfohlenen Chronos-Nodes verwendest ist eine gute Entscheidung.

                                      So nun also zu Deinem Flow.

                                      1. Zu Deiner Check Conditions Node:

                                      den Flow.Boiler ist hier nicht ersichtlich damit es nicht ein zu großer Durcheinander gibt. Das funktioniert ja dank dir hervorragend.

                                      Die Flowvariable wird aber in diesem Flow gar nicht gesetzt.

                                      2c0447e6-7d1f-42b5-bc5a-06cb9ca6c728-image.png

                                      Wenn Du Ihn in einem anderen Flow setzt, dann benötigst du GLOBALE Variablen - da Flowvariablen immer nur innerhalb EINES Flows Gültigkeit haben.

                                      Deshalb wird bei Deiner Prüfung immer der "else" Zweig eintreten und die Nachtabschaltung auf "aktiv" setzen.

                                      Also:
                                      Korrektur: Entweder Du kopierst den Flow wieder in den Boiler Flow ODER Du setzt im Boilerflow - die Kontextvariable "boiler" GLOBAL. Wenn Du also im Boiler Flow die Variable "boiler" GLOBAL gesetzt hast, dann musst Du den Code natürlich auch ändern.

                                      Das Problem ist aber, dass Dein Code - bei Sonnenuntergang AUCH setzt, wenn der Boiler NICHT true war, wenn Du NodeRed oder den Flow NEU gestartet hast, da Deine Variablen nicht initialisierst.

                                      In diesem Fall kann man der Variablen "boiler" mit einem Wert vorbelegen, wenn die Kontextvariable noch nicht belegt ist.

                                      488e4d31-7b69-4e1c-8409-bb6d8eda84be-image.png

                                      Also 2 Pipesymbole und ich habe mal "boiler" auf true gesetzt, wenn die Variable NICHT existiert.

                                      Zusammenfassend:

                                      1. Die Kontextvariable "boiler" aus dem anderen Flow musst Du "global" setzen. Dann musst Du natürlich überall, wo du in diesem Flow die Variable "boiler" abfragst auch auf "global" ändern.
                                      2. Die globale Variable "boiler" solltest Du vorbelegen, da wenn diese nicht gesetzt ist, immer die Nachtabschaltung true wird, da immer der "else" Ast wahr wird.

                                      Also hier ein Vorschlag zur Korrektur Deiner Check Conditions Node (Warum auch immer Du denkst, dass Du hier mit JS programmieren musst).

                                      let activ_soc = flow.get('activ_soc');
                                      let state_of_charge = flow.get('state_of_charge');
                                      let boiler = global.get('boiler')|| true;
                                      
                                      if (boiler === true && state_of_charge >= activ_soc + 20) {
                                          flow.set('nachtabschaltung', false);
                                      } else {
                                          flow.set('nachtabschaltung', true);
                                      }
                                      return msg;
                                      
                                      1. So nun Dein 2. Problem mit dem sunset. Die Cronos Nodes sind toll - Du hast hier aber einen "Switch" genommen. Ein Switch kann aber nur bestehende Nachrichtenfiltern - aber da wird ja gar nichts getriggert, da am Eingang gar keine Nachrichten eingehen.

                                      19d5a237-4ad6-4ad5-af5b-6263009586e7-image.png

                                      Wenn Du willst, das eine Chronos zum Sonnenuntergang triggert, dann musst Du den Scheduler nehmen und nicht einen Switch, der durch eine vorhandene Nachricht getriggert wird.

                                      7a0cd838-5d6b-4e89-a698-5db0aee2ecc9-image.png

                                      6b4351f1-1874-4115-918a-8b8ec1bb237d-image.png

                                      Der Scheduler zeigt Dir dann auch automatisch im Status, wann das nächste Ereignis eintritt.

                                      1. Wenn Du schon die Chronos Nodes installiert hast, dann kann man im selben Flow auch diese Nodes ggf. anstelle der Inject Nodes verwenden, das ergibt dann etwas mehr Übersichtlichkeit.

                                      4ad7ed01-f0fb-4565-9298-1388fd038954-image.png


                                      Wenn Dir das mit den Chronos Nodes zu komplizert ist, dann gibts noch eine weitere sehr mächtig Scheduler Node und die kann ich Dir auch wärmstens empfehlen

                                      2d2f2803-6ad0-46c9-a8d9-29b1e715fd9e-image.png

                                      Hier kannst Du auch mehrere Ereignisse definieren und auch Sonnensstandsereignisse.

                                      Diese Nodes kannst Du Dir also alternativ zu den chronos Nodes installieren:

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

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

                                      So hier mal die "neuen" bzw. korrigierten Nodes zum Import:

                                      [
                                         {
                                             "id": "b2a53b5b0a28831f",
                                             "type": "chronos-scheduler",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Trigger Sonnenuntergang",
                                             "config": "532a95bedeae68c9",
                                             "schedule": [
                                                 {
                                                     "trigger": {
                                                         "type": "sun",
                                                         "value": "dusk",
                                                         "offset": 0,
                                                         "random": false
                                                     },
                                                     "output": {
                                                         "type": "msg",
                                                         "property": {
                                                             "name": "payload",
                                                             "type": "str",
                                                             "value": ""
                                                         }
                                                     }
                                                 }
                                             ],
                                             "disabled": false,
                                             "multiPort": false,
                                             "nextEventPort": false,
                                             "delayOnStart": true,
                                             "onStartDelay": 0.1,
                                             "outputs": 1,
                                             "x": 270,
                                             "y": 440,
                                             "wires": [
                                                 [
                                                     "check-conditions"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "check-conditions",
                                             "type": "function",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Check Conditions",
                                             "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                             "outputs": 1,
                                             "timeout": "",
                                             "noerr": 0,
                                             "initialize": "",
                                             "finalize": "",
                                             "libs": [],
                                             "x": 550,
                                             "y": 440,
                                             "wires": [
                                                 []
                                             ]
                                         },
                                         {
                                             "id": "e46d2c234b1e6cc0",
                                             "type": "chronos-scheduler",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "",
                                             "config": "532a95bedeae68c9",
                                             "schedule": [
                                                 {
                                                     "trigger": {
                                                         "type": "time",
                                                         "value": "23:00",
                                                         "offset": 0,
                                                         "random": false
                                                     },
                                                     "output": {
                                                         "type": "msg",
                                                         "property": {
                                                             "name": "payload",
                                                             "type": "str",
                                                             "value": ""
                                                         }
                                                     }
                                                 }
                                             ],
                                             "disabled": false,
                                             "multiPort": false,
                                             "nextEventPort": false,
                                             "delayOnStart": true,
                                             "onStartDelay": 0.1,
                                             "outputs": 1,
                                             "x": 160,
                                             "y": 600,
                                             "wires": [
                                                 [
                                                     "retrieve-nachtabschaltung"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "532a95bedeae68c9",
                                             "type": "chronos-config",
                                             "name": "Testkonfiguration",
                                             "latitudeType": "num",
                                             "longitudeType": "num",
                                             "timezone": "",
                                             "sunPositions": []
                                         }
                                      ]
                                      

                                      und hier die grafische Vorlage:
                                      4e794cf3-58e6-4a73-a858-0e96746fc7ac-image.png

                                      Und nochmals - versuche auf function Nodes zu verzichten - Du willst doch grafisch sehen, was Dein Flow macht und Dich nicht durch Code quälen.

                                      Hier auch nochmal mein Testflow - da ich ja keine Victron Nodes habe ;)

                                      [
                                         {
                                             "id": "0e2a88ab0952c1fc",
                                             "type": "function",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Activ sock",
                                             "func": "flow.set('activ_soc', msg.payload);\nreturn msg;",
                                             "outputs": 1,
                                             "timeout": "",
                                             "noerr": 0,
                                             "initialize": "",
                                             "finalize": "",
                                             "libs": [],
                                             "x": 500,
                                             "y": 340,
                                             "wires": [
                                                 []
                                             ]
                                         },
                                         {
                                             "id": "02aabb2d5a8bcd69",
                                             "type": "function",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "State of charge",
                                             "func": "flow.set('state_of_charge', msg.payload);\nreturn msg;",
                                             "outputs": 1,
                                             "timeout": "",
                                             "noerr": 0,
                                             "initialize": "",
                                             "finalize": "",
                                             "libs": [],
                                             "x": 520,
                                             "y": 280,
                                             "wires": [
                                                 []
                                             ]
                                         },
                                         {
                                             "id": "check-conditions",
                                             "type": "function",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Check Conditions",
                                             "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                             "outputs": 1,
                                             "timeout": "",
                                             "noerr": 0,
                                             "initialize": "",
                                             "finalize": "",
                                             "libs": [],
                                             "x": 550,
                                             "y": 440,
                                             "wires": [
                                                 []
                                             ]
                                         },
                                         {
                                             "id": "retrieve-nachtabschaltung",
                                             "type": "function",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Retrieve Nachtabschaltung",
                                             "func": "msg.payload = flow.get('nachtabschaltung');\nreturn msg;",
                                             "outputs": 1,
                                             "timeout": "",
                                             "noerr": 0,
                                             "initialize": "",
                                             "finalize": "",
                                             "libs": [],
                                             "x": 440,
                                             "y": 600,
                                             "wires": [
                                                 [
                                                     "a1091abadb4c529d"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "a1091abadb4c529d",
                                             "type": "switch",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "",
                                             "property": "nachtabschaltung",
                                             "propertyType": "flow",
                                             "rules": [
                                                 {
                                                     "t": "true"
                                                 }
                                             ],
                                             "checkall": "true",
                                             "repair": false,
                                             "outputs": 1,
                                             "x": 650,
                                             "y": 600,
                                             "wires": [
                                                 [
                                                     "db5d1fe2433cb8a8"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "1c02f205392a324c",
                                             "type": "delay",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Verezögerung 6 Stunden",
                                             "pauseType": "delay",
                                             "timeout": "6",
                                             "timeoutUnits": "hours",
                                             "rate": "1",
                                             "nbRateUnits": "1",
                                             "rateUnits": "second",
                                             "randomFirst": "1",
                                             "randomLast": "5",
                                             "randomUnits": "seconds",
                                             "drop": false,
                                             "allowrate": false,
                                             "outputs": 1,
                                             "x": 210,
                                             "y": 760,
                                             "wires": [
                                                 [
                                                     "3e3309acb01e7e5f"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "db5d1fe2433cb8a8",
                                             "type": "change",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Schalter",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "4",
                                                     "tot": "num"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 800,
                                             "y": 600,
                                             "wires": [
                                                 [
                                                     "1c02f205392a324c",
                                                     "bdd5a2f2d1718a26"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "e2d72c437587dd5d",
                                             "type": "inject",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 },
                                                 {
                                                     "p": "topic",
                                                     "vt": "str"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "",
                                             "payload": "",
                                             "payloadType": "date",
                                             "x": 160,
                                             "y": 660,
                                             "wires": [
                                                 [
                                                     "retrieve-nachtabschaltung"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "3e3309acb01e7e5f",
                                             "type": "change",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Schalter EIN",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "3",
                                                     "tot": "num"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 470,
                                             "y": 760,
                                             "wires": [
                                                 [
                                                     "bdd5a2f2d1718a26"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "bdd5a2f2d1718a26",
                                             "type": "debug",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "victron-output-vebus",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 1000,
                                             "y": 780,
                                             "wires": []
                                         },
                                         {
                                             "id": "2af9f056aeeec679",
                                             "type": "inject",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 },
                                                 {
                                                     "p": "topic",
                                                     "vt": "str"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "victron-input-battery",
                                             "payload": "54",
                                             "payloadType": "num",
                                             "x": 300,
                                             "y": 280,
                                             "wires": [
                                                 [
                                                     "02aabb2d5a8bcd69"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "a10fac8e5f58ae09",
                                             "type": "inject",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 },
                                                 {
                                                     "p": "topic",
                                                     "vt": "str"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "victron-input-ess",
                                             "payload": "55",
                                             "payloadType": "num",
                                             "x": 290,
                                             "y": 340,
                                             "wires": [
                                                 [
                                                     "0e2a88ab0952c1fc"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "b2a53b5b0a28831f",
                                             "type": "chronos-scheduler",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "Trigger Sonnenuntergang",
                                             "config": "532a95bedeae68c9",
                                             "schedule": [
                                                 {
                                                     "trigger": {
                                                         "type": "sun",
                                                         "value": "dusk",
                                                         "offset": 0,
                                                         "random": false
                                                     },
                                                     "output": {
                                                         "type": "msg",
                                                         "property": {
                                                             "name": "payload",
                                                             "type": "str",
                                                             "value": ""
                                                         }
                                                     }
                                                 }
                                             ],
                                             "disabled": false,
                                             "multiPort": false,
                                             "nextEventPort": false,
                                             "delayOnStart": true,
                                             "onStartDelay": 0.1,
                                             "outputs": 1,
                                             "x": 270,
                                             "y": 440,
                                             "wires": [
                                                 [
                                                     "check-conditions"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "e46d2c234b1e6cc0",
                                             "type": "chronos-scheduler",
                                             "z": "4d648bd1ec0fc1eb",
                                             "name": "",
                                             "config": "532a95bedeae68c9",
                                             "schedule": [
                                                 {
                                                     "trigger": {
                                                         "type": "time",
                                                         "value": "23:00",
                                                         "offset": 0,
                                                         "random": false
                                                     },
                                                     "output": {
                                                         "type": "msg",
                                                         "property": {
                                                             "name": "payload",
                                                             "type": "str",
                                                             "value": ""
                                                         }
                                                     }
                                                 }
                                             ],
                                             "disabled": false,
                                             "multiPort": false,
                                             "nextEventPort": false,
                                             "delayOnStart": true,
                                             "onStartDelay": 0.1,
                                             "outputs": 1,
                                             "x": 160,
                                             "y": 600,
                                             "wires": [
                                                 [
                                                     "retrieve-nachtabschaltung"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "532a95bedeae68c9",
                                             "type": "chronos-config",
                                             "name": "Testkonfiguration",
                                             "latitudeType": "num",
                                             "longitudeType": "num",
                                             "timezone": "",
                                             "sunPositions": []
                                         }
                                      ]
                                      

                                      H Offline
                                      H Offline
                                      Harry_vlbg
                                      schrieb am zuletzt editiert von
                                      #70

                                      @mickym
                                      Danke - den Boiler habe ich jetzt mal überall auf Global. umgestellt.
                                      Dann kann ich auf dem anderen Blatt löschen und werklen wie ich will.
                                      Sheduler auch in Verwendung gebracht.
                                      Jetzt kann ich mal testen was heute so geschieht ;-)

                                      1 Antwort Letzte Antwort
                                      0
                                      • mickymM mickym

                                        @harry_vlbg Also - warum Du generell immer noch so gerne mit function Nodes "programmierst" - erschließt sich mir zwar nicht, aber das ist nicht Dein Problem. Im Grunde

                                        Das Du, die von mir empfohlenen Chronos-Nodes verwendest ist eine gute Entscheidung.

                                        So nun also zu Deinem Flow.

                                        1. Zu Deiner Check Conditions Node:

                                        den Flow.Boiler ist hier nicht ersichtlich damit es nicht ein zu großer Durcheinander gibt. Das funktioniert ja dank dir hervorragend.

                                        Die Flowvariable wird aber in diesem Flow gar nicht gesetzt.

                                        2c0447e6-7d1f-42b5-bc5a-06cb9ca6c728-image.png

                                        Wenn Du Ihn in einem anderen Flow setzt, dann benötigst du GLOBALE Variablen - da Flowvariablen immer nur innerhalb EINES Flows Gültigkeit haben.

                                        Deshalb wird bei Deiner Prüfung immer der "else" Zweig eintreten und die Nachtabschaltung auf "aktiv" setzen.

                                        Also:
                                        Korrektur: Entweder Du kopierst den Flow wieder in den Boiler Flow ODER Du setzt im Boilerflow - die Kontextvariable "boiler" GLOBAL. Wenn Du also im Boiler Flow die Variable "boiler" GLOBAL gesetzt hast, dann musst Du den Code natürlich auch ändern.

                                        Das Problem ist aber, dass Dein Code - bei Sonnenuntergang AUCH setzt, wenn der Boiler NICHT true war, wenn Du NodeRed oder den Flow NEU gestartet hast, da Deine Variablen nicht initialisierst.

                                        In diesem Fall kann man der Variablen "boiler" mit einem Wert vorbelegen, wenn die Kontextvariable noch nicht belegt ist.

                                        488e4d31-7b69-4e1c-8409-bb6d8eda84be-image.png

                                        Also 2 Pipesymbole und ich habe mal "boiler" auf true gesetzt, wenn die Variable NICHT existiert.

                                        Zusammenfassend:

                                        1. Die Kontextvariable "boiler" aus dem anderen Flow musst Du "global" setzen. Dann musst Du natürlich überall, wo du in diesem Flow die Variable "boiler" abfragst auch auf "global" ändern.
                                        2. Die globale Variable "boiler" solltest Du vorbelegen, da wenn diese nicht gesetzt ist, immer die Nachtabschaltung true wird, da immer der "else" Ast wahr wird.

                                        Also hier ein Vorschlag zur Korrektur Deiner Check Conditions Node (Warum auch immer Du denkst, dass Du hier mit JS programmieren musst).

                                        let activ_soc = flow.get('activ_soc');
                                        let state_of_charge = flow.get('state_of_charge');
                                        let boiler = global.get('boiler')|| true;
                                        
                                        if (boiler === true && state_of_charge >= activ_soc + 20) {
                                            flow.set('nachtabschaltung', false);
                                        } else {
                                            flow.set('nachtabschaltung', true);
                                        }
                                        return msg;
                                        
                                        1. So nun Dein 2. Problem mit dem sunset. Die Cronos Nodes sind toll - Du hast hier aber einen "Switch" genommen. Ein Switch kann aber nur bestehende Nachrichtenfiltern - aber da wird ja gar nichts getriggert, da am Eingang gar keine Nachrichten eingehen.

                                        19d5a237-4ad6-4ad5-af5b-6263009586e7-image.png

                                        Wenn Du willst, das eine Chronos zum Sonnenuntergang triggert, dann musst Du den Scheduler nehmen und nicht einen Switch, der durch eine vorhandene Nachricht getriggert wird.

                                        7a0cd838-5d6b-4e89-a698-5db0aee2ecc9-image.png

                                        6b4351f1-1874-4115-918a-8b8ec1bb237d-image.png

                                        Der Scheduler zeigt Dir dann auch automatisch im Status, wann das nächste Ereignis eintritt.

                                        1. Wenn Du schon die Chronos Nodes installiert hast, dann kann man im selben Flow auch diese Nodes ggf. anstelle der Inject Nodes verwenden, das ergibt dann etwas mehr Übersichtlichkeit.

                                        4ad7ed01-f0fb-4565-9298-1388fd038954-image.png


                                        Wenn Dir das mit den Chronos Nodes zu komplizert ist, dann gibts noch eine weitere sehr mächtig Scheduler Node und die kann ich Dir auch wärmstens empfehlen

                                        2d2f2803-6ad0-46c9-a8d9-29b1e715fd9e-image.png

                                        Hier kannst Du auch mehrere Ereignisse definieren und auch Sonnensstandsereignisse.

                                        Diese Nodes kannst Du Dir also alternativ zu den chronos Nodes installieren:

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

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

                                        So hier mal die "neuen" bzw. korrigierten Nodes zum Import:

                                        [
                                           {
                                               "id": "b2a53b5b0a28831f",
                                               "type": "chronos-scheduler",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Trigger Sonnenuntergang",
                                               "config": "532a95bedeae68c9",
                                               "schedule": [
                                                   {
                                                       "trigger": {
                                                           "type": "sun",
                                                           "value": "dusk",
                                                           "offset": 0,
                                                           "random": false
                                                       },
                                                       "output": {
                                                           "type": "msg",
                                                           "property": {
                                                               "name": "payload",
                                                               "type": "str",
                                                               "value": ""
                                                           }
                                                       }
                                                   }
                                               ],
                                               "disabled": false,
                                               "multiPort": false,
                                               "nextEventPort": false,
                                               "delayOnStart": true,
                                               "onStartDelay": 0.1,
                                               "outputs": 1,
                                               "x": 270,
                                               "y": 440,
                                               "wires": [
                                                   [
                                                       "check-conditions"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "check-conditions",
                                               "type": "function",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Check Conditions",
                                               "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                               "outputs": 1,
                                               "timeout": "",
                                               "noerr": 0,
                                               "initialize": "",
                                               "finalize": "",
                                               "libs": [],
                                               "x": 550,
                                               "y": 440,
                                               "wires": [
                                                   []
                                               ]
                                           },
                                           {
                                               "id": "e46d2c234b1e6cc0",
                                               "type": "chronos-scheduler",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "",
                                               "config": "532a95bedeae68c9",
                                               "schedule": [
                                                   {
                                                       "trigger": {
                                                           "type": "time",
                                                           "value": "23:00",
                                                           "offset": 0,
                                                           "random": false
                                                       },
                                                       "output": {
                                                           "type": "msg",
                                                           "property": {
                                                               "name": "payload",
                                                               "type": "str",
                                                               "value": ""
                                                           }
                                                       }
                                                   }
                                               ],
                                               "disabled": false,
                                               "multiPort": false,
                                               "nextEventPort": false,
                                               "delayOnStart": true,
                                               "onStartDelay": 0.1,
                                               "outputs": 1,
                                               "x": 160,
                                               "y": 600,
                                               "wires": [
                                                   [
                                                       "retrieve-nachtabschaltung"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "532a95bedeae68c9",
                                               "type": "chronos-config",
                                               "name": "Testkonfiguration",
                                               "latitudeType": "num",
                                               "longitudeType": "num",
                                               "timezone": "",
                                               "sunPositions": []
                                           }
                                        ]
                                        

                                        und hier die grafische Vorlage:
                                        4e794cf3-58e6-4a73-a858-0e96746fc7ac-image.png

                                        Und nochmals - versuche auf function Nodes zu verzichten - Du willst doch grafisch sehen, was Dein Flow macht und Dich nicht durch Code quälen.

                                        Hier auch nochmal mein Testflow - da ich ja keine Victron Nodes habe ;)

                                        [
                                           {
                                               "id": "0e2a88ab0952c1fc",
                                               "type": "function",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Activ sock",
                                               "func": "flow.set('activ_soc', msg.payload);\nreturn msg;",
                                               "outputs": 1,
                                               "timeout": "",
                                               "noerr": 0,
                                               "initialize": "",
                                               "finalize": "",
                                               "libs": [],
                                               "x": 500,
                                               "y": 340,
                                               "wires": [
                                                   []
                                               ]
                                           },
                                           {
                                               "id": "02aabb2d5a8bcd69",
                                               "type": "function",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "State of charge",
                                               "func": "flow.set('state_of_charge', msg.payload);\nreturn msg;",
                                               "outputs": 1,
                                               "timeout": "",
                                               "noerr": 0,
                                               "initialize": "",
                                               "finalize": "",
                                               "libs": [],
                                               "x": 520,
                                               "y": 280,
                                               "wires": [
                                                   []
                                               ]
                                           },
                                           {
                                               "id": "check-conditions",
                                               "type": "function",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Check Conditions",
                                               "func": "let activ_soc = flow.get('activ_soc');\nlet state_of_charge = flow.get('state_of_charge');\nlet boiler = flow.get('boiler');\n\nif (boiler === true && state_of_charge >= activ_soc + 20) {\n    flow.set('nachtabschaltung', false);\n} else {\n    flow.set('nachtabschaltung', true);\n}\nreturn msg;",
                                               "outputs": 1,
                                               "timeout": "",
                                               "noerr": 0,
                                               "initialize": "",
                                               "finalize": "",
                                               "libs": [],
                                               "x": 550,
                                               "y": 440,
                                               "wires": [
                                                   []
                                               ]
                                           },
                                           {
                                               "id": "retrieve-nachtabschaltung",
                                               "type": "function",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Retrieve Nachtabschaltung",
                                               "func": "msg.payload = flow.get('nachtabschaltung');\nreturn msg;",
                                               "outputs": 1,
                                               "timeout": "",
                                               "noerr": 0,
                                               "initialize": "",
                                               "finalize": "",
                                               "libs": [],
                                               "x": 440,
                                               "y": 600,
                                               "wires": [
                                                   [
                                                       "a1091abadb4c529d"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "a1091abadb4c529d",
                                               "type": "switch",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "",
                                               "property": "nachtabschaltung",
                                               "propertyType": "flow",
                                               "rules": [
                                                   {
                                                       "t": "true"
                                                   }
                                               ],
                                               "checkall": "true",
                                               "repair": false,
                                               "outputs": 1,
                                               "x": 650,
                                               "y": 600,
                                               "wires": [
                                                   [
                                                       "db5d1fe2433cb8a8"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "1c02f205392a324c",
                                               "type": "delay",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Verezögerung 6 Stunden",
                                               "pauseType": "delay",
                                               "timeout": "6",
                                               "timeoutUnits": "hours",
                                               "rate": "1",
                                               "nbRateUnits": "1",
                                               "rateUnits": "second",
                                               "randomFirst": "1",
                                               "randomLast": "5",
                                               "randomUnits": "seconds",
                                               "drop": false,
                                               "allowrate": false,
                                               "outputs": 1,
                                               "x": 210,
                                               "y": 760,
                                               "wires": [
                                                   [
                                                       "3e3309acb01e7e5f"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "db5d1fe2433cb8a8",
                                               "type": "change",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Schalter",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "4",
                                                       "tot": "num"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 800,
                                               "y": 600,
                                               "wires": [
                                                   [
                                                       "1c02f205392a324c",
                                                       "bdd5a2f2d1718a26"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "e2d72c437587dd5d",
                                               "type": "inject",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "payload": "",
                                               "payloadType": "date",
                                               "x": 160,
                                               "y": 660,
                                               "wires": [
                                                   [
                                                       "retrieve-nachtabschaltung"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "3e3309acb01e7e5f",
                                               "type": "change",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Schalter EIN",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "3",
                                                       "tot": "num"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 470,
                                               "y": 760,
                                               "wires": [
                                                   [
                                                       "bdd5a2f2d1718a26"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "bdd5a2f2d1718a26",
                                               "type": "debug",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "victron-output-vebus",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1000,
                                               "y": 780,
                                               "wires": []
                                           },
                                           {
                                               "id": "2af9f056aeeec679",
                                               "type": "inject",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "victron-input-battery",
                                               "payload": "54",
                                               "payloadType": "num",
                                               "x": 300,
                                               "y": 280,
                                               "wires": [
                                                   [
                                                       "02aabb2d5a8bcd69"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "a10fac8e5f58ae09",
                                               "type": "inject",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "victron-input-ess",
                                               "payload": "55",
                                               "payloadType": "num",
                                               "x": 290,
                                               "y": 340,
                                               "wires": [
                                                   [
                                                       "0e2a88ab0952c1fc"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "b2a53b5b0a28831f",
                                               "type": "chronos-scheduler",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "Trigger Sonnenuntergang",
                                               "config": "532a95bedeae68c9",
                                               "schedule": [
                                                   {
                                                       "trigger": {
                                                           "type": "sun",
                                                           "value": "dusk",
                                                           "offset": 0,
                                                           "random": false
                                                       },
                                                       "output": {
                                                           "type": "msg",
                                                           "property": {
                                                               "name": "payload",
                                                               "type": "str",
                                                               "value": ""
                                                           }
                                                       }
                                                   }
                                               ],
                                               "disabled": false,
                                               "multiPort": false,
                                               "nextEventPort": false,
                                               "delayOnStart": true,
                                               "onStartDelay": 0.1,
                                               "outputs": 1,
                                               "x": 270,
                                               "y": 440,
                                               "wires": [
                                                   [
                                                       "check-conditions"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "e46d2c234b1e6cc0",
                                               "type": "chronos-scheduler",
                                               "z": "4d648bd1ec0fc1eb",
                                               "name": "",
                                               "config": "532a95bedeae68c9",
                                               "schedule": [
                                                   {
                                                       "trigger": {
                                                           "type": "time",
                                                           "value": "23:00",
                                                           "offset": 0,
                                                           "random": false
                                                       },
                                                       "output": {
                                                           "type": "msg",
                                                           "property": {
                                                               "name": "payload",
                                                               "type": "str",
                                                               "value": ""
                                                           }
                                                       }
                                                   }
                                               ],
                                               "disabled": false,
                                               "multiPort": false,
                                               "nextEventPort": false,
                                               "delayOnStart": true,
                                               "onStartDelay": 0.1,
                                               "outputs": 1,
                                               "x": 160,
                                               "y": 600,
                                               "wires": [
                                                   [
                                                       "retrieve-nachtabschaltung"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "532a95bedeae68c9",
                                               "type": "chronos-config",
                                               "name": "Testkonfiguration",
                                               "latitudeType": "num",
                                               "longitudeType": "num",
                                               "timezone": "",
                                               "sunPositions": []
                                           }
                                        ]
                                        

                                        H Offline
                                        H Offline
                                        Harry_vlbg
                                        schrieb am zuletzt editiert von
                                        #71

                                        @mickym

                                        jetzt mit mehr Sonne zeigt sich doch noch ein Thema das nicht so tut wie es soll.
                                        Der erste Behfehl um den Boiler zu heizen klappt gut. Auch das dann nachher 12 Stunden nichts passiert. Da ich jetzt aber wieder an die 95% Grenze komme wird das Einschaltsignal zwar zurückgehalten, dafür dann aber nach 12 Stunden nochmals gesendet. Somit läuft der Boiler auch zur falschen Zeit.

                                        Irgendwie sollte ich nach 11 Stunden das Signal doch löschen können?
                                        Hat jemand ein Tipp für mich?

                                        Danke

                                        79414f7a-a438-4706-8683-b3fe2490b229-image.png

                                        H 1 Antwort Letzte Antwort
                                        0
                                        • H Harry_vlbg

                                          @mickym

                                          jetzt mit mehr Sonne zeigt sich doch noch ein Thema das nicht so tut wie es soll.
                                          Der erste Behfehl um den Boiler zu heizen klappt gut. Auch das dann nachher 12 Stunden nichts passiert. Da ich jetzt aber wieder an die 95% Grenze komme wird das Einschaltsignal zwar zurückgehalten, dafür dann aber nach 12 Stunden nochmals gesendet. Somit läuft der Boiler auch zur falschen Zeit.

                                          Irgendwie sollte ich nach 11 Stunden das Signal doch löschen können?
                                          Hat jemand ein Tipp für mich?

                                          Danke

                                          79414f7a-a438-4706-8683-b3fe2490b229-image.png

                                          H Offline
                                          H Offline
                                          Harry_vlbg
                                          schrieb am zuletzt editiert von
                                          #72

                                          @harry_vlbg
                                          oh - habe gerade gesehen das ich die Zwischennachrichten löschen kann.
                                          Ist das schon die Lösung für mein Problem?

                                          dacfad71-7715-44c1-b71e-53fd65161b54-image.png

                                          mickymM 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

                                          415

                                          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