Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Node Red Optimierung PV Überschuss für Anfänger

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Harry_vlbg @mickym last edited by

      @mickym

      ja wenn das so einfach wäre 😉 habe mal den chronos runtergeladen und angeschaut.
      Da stoße ich an meine Grenzen.

      Grundsätzlich kenn ich das Kochbuch.
      So wie es jetzt ist für den Tag passt recht gut.
      Wenn die Batterie den Ladezustand erreicht hat wird der Boiler geheizt.
      Dann nach 45 Minuten wieder deaktivert. Alles nur 1 mal pro Tag da die Übermittlung dann wieder für 12 Stunden unterbrochen wird. Somit müsste eh wieder der Tag kommen und das Spiel beginnt von vorne.
      Schön wäre noch ein Schalter vorab um dies zu aktivieren/deaktivieren. Also den ganzen Flow. Dann könnte ich es im Urlaub deaktivieren.

      jetzt müsste ich mit einem Trigger den Zustand das geheizt worden ist speichern und somit die nächsten 12 Stunden nicht mehr einschalten.
      Wenn nicht geheizt wurde sollte theoretisch am nächsten Tag von 01.00 Uhr bis 02:30 eingeschaltet werden.
      und der Trigger müsste auch zurückgesetzt werden....

      d5d9f075-ff0a-461e-b7db-4c4a61a8cc6c-image.png

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

        @harry_vlbg

        jetzt müsste ich mit einem Trigger den Zustand das geheizt worden ist speichern

        Nein Du setzt einfach eine Flowvariable Boiler_geheizt zusemmen mit dem Befehl Boiler ein. Eine Frage noch was machen die http Request Nodes wenn Du mit Shelly Nodes schaltest?

        Dann nimmst Du einen Zeittrigger - da langt eine Inject Node - die prüft den Status, ob der Boiler geheizt wurde. Wenn nein wird der Boiler geheizt und anschließend die Variable zurückgesetzt. Wenn ja wird nur die Variable gesetzt.

        MIt dem Urlaub kannst Du eine globale Kontextvariable Urlaub setzen (kannst Du dann für mehrere Flows nehmen) und den Flow mit einer Switch Node blockieren, wenn Du im Urlaub bist. Diese setzt Du gleich am Anfang in Serie. Ich würde auch an Deiner Stelle nicht mit einer Delay Node 12 h warten, sondern anhand der Flowvariable ob der Boiler geheizt wurde. Denn in er muss ja auch bei Überschuss nicht geheizt werden, wenn Du ihn in der Nacht bereits geheizt hast. Du musst das immer ganzheitlich betrachten.

        H 1 Reply Last reply Reply Quote 0
        • H
          Harry_vlbg @mickym last edited by

          @mickym
          also bei der Shelly Node verwende ich nur das ein/ausschalten
          http://192.168.xx.xx/relay/0?turn=on
          im Shelly selber mache ich nichts - aber vielleicht noch zu überdenken ob der mir was zurückgeben könnte ???
          Das mit den 12 Stunden habe ich mir so gedacht da ja dieser Zustand auch 2 mal am Tag erreicht werden könnte. Dafür gibts mir dann aber über Telegramm die Info über den Akkustand.
          Dann kann ich ganz analog bei Bedarf den Geschirrspüler oder die Waschmaschine einschalten.
          Oder eben im Sommer den Außenkühlschrank dass das Bier nicht warm wird. 😉
          Klingt ja alles einfach wenn man das so liest bei dir

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

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

            Klingt ja alles einfach wenn man das so liest bei dir

            Na wenn Du Hilfe zu dem Geschriebenen brauchst, dann machen wir das gerne zusammen.

            H 1 Reply Last reply Reply Quote 0
            • H
              Harry_vlbg @mickym last edited by

              @mickym das wäre volle super. Können wir über Teams oder so?
              Gerne kannst du mir deine eMail an mein Telegramm senden dann lade ich dich ein.
              @harrybeinfort

              und natürlich deine Wunschzeit??

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

                @harry_vlbg Nein - ich mache das meist hier im Thread. Ich finde dazu ist so ein Forum da, damit auch andere profitieren können.

                Als allererstes aber nochmal die Frage, warum schaltest Du die Shelly über http, wenn Du die Shelly Nodes hast?

                H 1 Reply Last reply Reply Quote 0
                • H
                  Harry_vlbg @mickym last edited by

                  @mickym aber kannst du hier auf mein PC Zugreifen das wir das gemeinsam machen können oder wie stellst du dir das vor?

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

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

                    @mickym aber kannst du hier auf mein PC Zugreifen das wir das gemeinsam machen können oder wie stellst du dir das vor?

                    Nun Du kannst Deinen Flow exportieren und dann kann ich den importieren - ansonsten meist über Screenshots und halt schreiben. Solche Projekte habe ich schon mehrfach gemacht. Nur nochmal die Frage, warum Shelly Nodes UND http`?

                    H 2 Replies Last reply Reply Quote 0
                    • H
                      Harry_vlbg @mickym last edited by

                      @mickym den Shelly Node habe ich halt hier im Node Red und damit kann ich mittels http den Shelly ein und ausschalten.
                      war für mich der erste Ansatz und hat geklappt

                      ok dann werde ich mal das unnutze Zeugs löschen und dir die Json daten hier reinstellen

                      1 Reply Last reply Reply Quote 0
                      • H
                        Harry_vlbg @mickym last edited by Homoran

                        @mickym
                        dann ist das der Stand wie beim letzten Bild.
                        Also das mit den 12 Stunden passt so für mich. Wenn in der Nacht geheizt wird soll er dennoch am Tag bei den richtigen Bedingungen nachfeuern.

                        [
                            {
                                "id": "0be53785c72fb931",
                                "type": "tab",
                                "label": "Flow 1",
                                "disabled": false,
                                "info": "",
                                "env": []
                            },
                            {
                                "id": "cf09bc5276f7be79",
                                "type": "shelly-gen2",
                                "z": "0be53785c72fb931",
                                "hostname": "192.168.178.54",
                                "description": "Boiler_Bad",
                                "mode": "polling",
                                "verbose": false,
                                "server": "",
                                "outputmode": "event",
                                "uploadretryinterval": 5000,
                                "pollinginterval": "6000",
                                "pollstatus": false,
                                "getstatusoncommand": true,
                                "devicetype": "SNSW-001P16EU",
                                "devicetypemustmatchexactly": true,
                                "captureblutooth": false,
                                "outputs": 1,
                                "x": 950,
                                "y": 240,
                                "wires": [
                                    [
                                        "aa58cc0f316c4f70"
                                    ]
                                ],
                                "inputLabels": [
                                    "payload.switch0.id"
                                ],
                                "outputLabels": [
                                    "1"
                                ]
                            },
                            {
                                "id": "8fab423dfb34e072",
                                "type": "switch",
                                "z": "0be53785c72fb931",
                                "name": "Ladezustand Batterie > 95%",
                                "property": "payload",
                                "propertyType": "msg",
                                "rules": [
                                    {
                                        "t": "gte",
                                        "v": "95",
                                        "vt": "num"
                                    }
                                ],
                                "checkall": "true",
                                "repair": false,
                                "outputs": 1,
                                "x": 160,
                                "y": 240,
                                "wires": [
                                    [
                                        "93e2aa46a4a02ee0"
                                    ]
                                ]
                            },
                            {
                                "id": "0b247bc8d9ca735e",
                                "type": "victron-input-battery",
                                "z": "0be53785c72fb931",
                                "service": "com.victronenergy.battery/512",
                                "path": "/Capacity",
                                "serviceObj": {
                                    "service": "com.victronenergy.battery/512",
                                    "name": "Pytes battery"
                                },
                                "pathObj": {
                                    "path": "/Capacity",
                                    "type": "float",
                                    "name": "Capacity (Ah)"
                                },
                                "name": "",
                                "onlyChanges": true,
                                "roundValues": "no",
                                "x": 140,
                                "y": 60,
                                "wires": [
                                    [
                                        "8fab423dfb34e072"
                                    ]
                                ]
                            },
                            {
                                "id": "b2a7ee2ce7767b6b",
                                "type": "http request",
                                "z": "0be53785c72fb931",
                                "name": "Shelly Befehl Boiler ein",
                                "method": "GET",
                                "ret": "txt",
                                "paytoqs": "ignore",
                                "url": "http://192.168.178.54/relay/0?turn=on",
                                "tls": "",
                                "persist": false,
                                "proxy": "",
                                "insecureHTTPParser": false,
                                "authType": "",
                                "senderr": false,
                                "headers": [],
                                "x": 670,
                                "y": 140,
                                "wires": [
                                    [
                                        "cf09bc5276f7be79",
                                        "bc55c22dbd242ea5"
                                    ]
                                ]
                            },
                            {
                                "id": "bc55c22dbd242ea5",
                                "type": "delay",
                                "z": "0be53785c72fb931",
                                "name": "",
                                "pauseType": "delay",
                                "timeout": "45",
                                "timeoutUnits": "minutes",
                                "rate": "1",
                                "nbRateUnits": "1",
                                "rateUnits": "second",
                                "randomFirst": "1",
                                "randomLast": "5",
                                "randomUnits": "seconds",
                                "drop": false,
                                "allowrate": false,
                                "outputs": 1,
                                "x": 490,
                                "y": 240,
                                "wires": [
                                    [
                                        "a8814585a8e2257f"
                                    ]
                                ]
                            },
                            {
                                "id": "a8814585a8e2257f",
                                "type": "http request",
                                "z": "0be53785c72fb931",
                                "name": "Boiler aus nach 45 Min",
                                "method": "GET",
                                "ret": "txt",
                                "paytoqs": "ignore",
                                "url": "http://192.168.178.54/relay/0?turn=off",
                                "tls": "",
                                "persist": false,
                                "proxy": "",
                                "insecureHTTPParser": false,
                                "authType": "",
                                "senderr": false,
                                "headers": [],
                                "x": 720,
                                "y": 240,
                                "wires": [
                                    [
                                        "cf09bc5276f7be79"
                                    ]
                                ]
                            },
                            {
                                "id": "93e2aa46a4a02ee0",
                                "type": "delay",
                                "z": "0be53785c72fb931",
                                "name": "1 Message pro 12 H",
                                "pauseType": "rate",
                                "timeout": "5",
                                "timeoutUnits": "seconds",
                                "rate": "1",
                                "nbRateUnits": "12",
                                "rateUnits": "hour",
                                "randomFirst": "1",
                                "randomLast": "5",
                                "randomUnits": "seconds",
                                "drop": false,
                                "allowrate": false,
                                "outputs": 1,
                                "x": 380,
                                "y": 140,
                                "wires": [
                                    [
                                        "b2a7ee2ce7767b6b"
                                    ]
                                ],
                                "info": "1 Message pro 12 Stunden um dem Boiler nicht mehrmals im tag einzuschalten.\n"
                            },
                            {
                                "id": "aa58cc0f316c4f70",
                                "type": "change",
                                "z": "0be53785c72fb931",
                                "name": "Boiler geheizt",
                                "rules": [
                                    {
                                        "t": "set",
                                        "p": "payload",
                                        "pt": "msg",
                                        "to": "boiler geheizt",
                                        "tot": "str"
                                    }
                                ],
                                "action": "",
                                "property": "",
                                "from": "",
                                "to": "",
                                "reg": false,
                                "x": 1200,
                                "y": 240,
                                "wires": [
                                    []
                                ]
                            }
                        ]
                        

                        **MOD-EDIT: Code in code-tags gesetzt!*ĺ

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

                          @harry_vlbg Ja aber so kann man das nicht importieren.

                          Du musst das ganze in CodeTags packen und dann kannst Du das ganze noch mit einem Spoiler klein machen.

                          Also erst das Auge:

                          code_text
                          

                          36947db1-d12d-4c58-856e-0b65530b052a-image.png

                          dann den Codecs in den Spoiler

                          dd66e987-f045-40c6-ad57-598cd8395e06-image.png

                          und dann immer halb des Auges die CodeTags

                          und dann innerhalb der CodeTags den Code des Exports den "code_text" überschreiben

                          Code-Tags.gif

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

                            Also ändere Deinen Post nochmal . so dass der Export entsprechend importierbar ist.

                            Und dann werden wir uns um die Shelly Nodes kümmern - denn es macht keinen Sinn, dass Du HTTP und die Shelly Nodes verwendest.

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              Harry_vlbg @mickym last edited by

                              @mickym

                              [
                                 {
                                     "id": "0be53785c72fb931",
                                     "type": "tab",
                                     "label": "Flow 1",
                                     "disabled": false,
                                     "info": "",
                                     "env": []
                                 },
                                 {
                                     "id": "cf09bc5276f7be79",
                                     "type": "shelly-gen2",
                                     "z": "0be53785c72fb931",
                                     "hostname": "192.168.178.54",
                                     "description": "Boiler_Bad",
                                     "mode": "polling",
                                     "verbose": false,
                                     "server": "",
                                     "outputmode": "event",
                                     "uploadretryinterval": 5000,
                                     "pollinginterval": "6000",
                                     "pollstatus": false,
                                     "getstatusoncommand": true,
                                     "devicetype": "SNSW-001P16EU",
                                     "devicetypemustmatchexactly": true,
                                     "captureblutooth": false,
                                     "outputs": 1,
                                     "x": 950,
                                     "y": 240,
                                     "wires": [
                                         [
                                             "aa58cc0f316c4f70"
                                         ]
                                     ],
                                     "inputLabels": [
                                         "payload.switch0.id"
                                     ],
                                     "outputLabels": [
                                         "1"
                                     ]
                                 },
                                 {
                                     "id": "8fab423dfb34e072",
                                     "type": "switch",
                                     "z": "0be53785c72fb931",
                                     "name": "Ladezustand Batterie > 95%",
                                     "property": "payload",
                                     "propertyType": "msg",
                                     "rules": [
                                         {
                                             "t": "gte",
                                             "v": "95",
                                             "vt": "num"
                                         }
                                     ],
                                     "checkall": "true",
                                     "repair": false,
                                     "outputs": 1,
                                     "x": 160,
                                     "y": 240,
                                     "wires": [
                                         [
                                             "93e2aa46a4a02ee0"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "0b247bc8d9ca735e",
                                     "type": "victron-input-battery",
                                     "z": "0be53785c72fb931",
                                     "service": "com.victronenergy.battery/512",
                                     "path": "/Capacity",
                                     "serviceObj": {
                                         "service": "com.victronenergy.battery/512",
                                         "name": "Pytes battery"
                                     },
                                     "pathObj": {
                                         "path": "/Capacity",
                                         "type": "float",
                                         "name": "Capacity (Ah)"
                                     },
                                     "name": "",
                                     "onlyChanges": true,
                                     "roundValues": "no",
                                     "x": 140,
                                     "y": 60,
                                     "wires": [
                                         [
                                             "8fab423dfb34e072"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "b2a7ee2ce7767b6b",
                                     "type": "http request",
                                     "z": "0be53785c72fb931",
                                     "name": "Shelly Befehl Boiler ein",
                                     "method": "GET",
                                     "ret": "txt",
                                     "paytoqs": "ignore",
                                     "url": "http://192.168.178.54/relay/0?turn=on",
                                     "tls": "",
                                     "persist": false,
                                     "proxy": "",
                                     "insecureHTTPParser": false,
                                     "authType": "",
                                     "senderr": false,
                                     "headers": [],
                                     "x": 670,
                                     "y": 140,
                                     "wires": [
                                         [
                                             "cf09bc5276f7be79",
                                             "bc55c22dbd242ea5"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "bc55c22dbd242ea5",
                                     "type": "delay",
                                     "z": "0be53785c72fb931",
                                     "name": "",
                                     "pauseType": "delay",
                                     "timeout": "45",
                                     "timeoutUnits": "minutes",
                                     "rate": "1",
                                     "nbRateUnits": "1",
                                     "rateUnits": "second",
                                     "randomFirst": "1",
                                     "randomLast": "5",
                                     "randomUnits": "seconds",
                                     "drop": false,
                                     "allowrate": false,
                                     "outputs": 1,
                                     "x": 490,
                                     "y": 240,
                                     "wires": [
                                         [
                                             "a8814585a8e2257f"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "a8814585a8e2257f",
                                     "type": "http request",
                                     "z": "0be53785c72fb931",
                                     "name": "Boiler aus nach 45 Min",
                                     "method": "GET",
                                     "ret": "txt",
                                     "paytoqs": "ignore",
                                     "url": "http://192.168.178.54/relay/0?turn=off",
                                     "tls": "",
                                     "persist": false,
                                     "proxy": "",
                                     "insecureHTTPParser": false,
                                     "authType": "",
                                     "senderr": false,
                                     "headers": [],
                                     "x": 720,
                                     "y": 240,
                                     "wires": [
                                         [
                                             "cf09bc5276f7be79"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "93e2aa46a4a02ee0",
                                     "type": "delay",
                                     "z": "0be53785c72fb931",
                                     "name": "1 Message pro 12 H",
                                     "pauseType": "rate",
                                     "timeout": "5",
                                     "timeoutUnits": "seconds",
                                     "rate": "1",
                                     "nbRateUnits": "12",
                                     "rateUnits": "hour",
                                     "randomFirst": "1",
                                     "randomLast": "5",
                                     "randomUnits": "seconds",
                                     "drop": false,
                                     "allowrate": false,
                                     "outputs": 1,
                                     "x": 380,
                                     "y": 140,
                                     "wires": [
                                         [
                                             "b2a7ee2ce7767b6b"
                                         ]
                                     ],
                                     "info": "1 Message pro 12 Stunden um dem Boiler nicht mehrmals im tag einzuschalten.\n"
                                 },
                                 {
                                     "id": "aa58cc0f316c4f70",
                                     "type": "change",
                                     "z": "0be53785c72fb931",
                                     "name": "Boiler geheizt",
                                     "rules": [
                                         {
                                             "t": "set",
                                             "p": "payload",
                                             "pt": "msg",
                                             "to": "boiler geheizt",
                                             "tot": "str"
                                         }
                                     ],
                                     "action": "",
                                     "property": "",
                                     "from": "",
                                     "to": "",
                                     "reg": false,
                                     "x": 1200,
                                     "y": 240,
                                     "wires": [
                                         []
                                     ]
                                 }
                              ]
                              

                              1 Reply Last reply Reply Quote 0
                              • H
                                Harry_vlbg @mickym last edited by

                                @mickym hat das jetzt so geklappt?
                                funktioniert aber hervorragend mit http
                                Ist halte ein Gen2

                                mickym 2 Replies Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Harry_vlbg last edited by

                                  @harry_vlbg Ja der import hat soweit funktioniert.

                                  7014aa6b-ed0c-4e26-b82d-67935bbd1541-image.png

                                  Das Victron Teil habe ich nicht, aber das kann ich mit Inject Nodes simulieren.

                                  H 1 Reply Last reply Reply Quote 0
                                  • H
                                    Harry_vlbg @mickym last edited by

                                    @mickym bin ich schon froh das ich das soweit geschafft habe 😉

                                    wäre einfacher auf meinem PC.

                                    also du machst jetzt diesen Change Note mit der Variable Boiler geheizt und startest um 1 Uhr morgens am nächsten Tag den Boiler wenn er die letzten 12 Stunden nicht geheizt hat?

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

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

                                      Ist halte ein Gen2

                                      Ja aber es macht keinen Sinn. Schau mal die Shelly Nodes bringen Beispiele mit. Als erstes probiere mal die Beispiele.

                                      Also erstes gehst Du unter import

                                      b0049d7e-1824-45c6-8b28-5be4560c4f4d-image.png

                                      und unter Beispiele siehst Du die Beispiele, die Shelly mitliefert.

                                      Dann importierst Du mal das Beispiel mit dem switch:

                                      7d72ded2-048f-46f3-ae01-ac3f5f0cf743-image.png

                                      Als Hostname gibst mal Deinen Boiler IP-Adresse ein und schaust mal - ob Du mit dem Flow den Boiler schalten und auslesen kannst.

                                      Mit diesen Inject Nodes kannst Du ein- und ausschalten bzw. den Status abrufen.

                                      f7aa20dc-a52c-46fa-938c-b7a9c04149cf-image.png

                                      Schau mal ob das klappt.

                                      Ansonsten, wenn Du lieber über Http schalten willst - dann kannst Dir die Shelly Nodes wieder deinstallieren - weil die sonst überflüssig sind. Da kann man dann später auch Http nehmen.

                                      Er schaltet den Boiler aber nur für 2 Sekunden. Schau einfach mal, ob Du die Config auslesen kannst.

                                      Wir werden das ohne function Nodes machen

                                      69047608-fd86-419a-9dd3-84e49028d37c-image.png

                                      und dieses toggle ausschalten. Aber wie gesagt wir können auch einfach anfangen - aber dann lösche die Shelly Nodes aus Deinem Flow - die dürfen NICHT dazwischenfunken. Wenn Du rein über HTTP schalten willst, dann verwende die erst mal nicht in Deinem Flow.

                                      H 3 Replies Last reply Reply Quote 0
                                      • H
                                        Harry_vlbg @mickym last edited by

                                        @mickym
                                        also ich bekomme fehlermeldungen

                                        20.1.2025, 20:12:02node: 4ec3bc22e66b23bf
                                        msg : string[39]
                                        "Wrong node type. Please use shelly-gen2"

                                        kann aber auch den shelly plus nicht auswählen. allerdings hat er eingeschaltet

                                        mickym 1 Reply Last reply Reply Quote 0
                                        • H
                                          Harry_vlbg @mickym last edited by

                                          @mickym der richtige wäre shelly plus 1 PM also bleiben wir beim alten

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

                                            @harry_vlbg
                                            Wie gesagt, dann stelle mal in der Node - auf Deinen Typ um:

                                            5db35501-8d76-4ae8-b5ea-61240d9b18f2-image.png

                                            Also wie gesagt, wir können ja erstmal bei Deinem Schalten bleiben - ABER dann mach den Shelly Node aus Deinem Flow.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            795
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            73
                                            2607
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo