Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. node-red-contrib-virtual-smart-home mit Loxone

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    node-red-contrib-virtual-smart-home mit Loxone

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

      @heinloth Na mit dem Screenshot passt schon - ich nutze unter Win10 das Ausschneiden und Skizzieren Tool.

      Wie Du siehst ist Deine Brightness wie gedacht in Deiner payload.brightness - Sprich wenn Du den Wert wieder selbst brauchst - ChangeNode und Setze msg.payload auf msg.payload.brightness und Du kannst mit dem Wert Loxone Nodes steuern.

      Ansonsten kannst Du eine Wert oder Objekt einfach in die Zwischenablage kopieren:

      54e7903c-05ac-4c0b-a67d-e869c63094d5-image.png

      das dann hier in CodeTags posten

      Code-Tags.gif

      1 Reply Last reply Reply Quote 0
      • H
        Heinloth last edited by

        {"powerState":"OFF","brightness":90,"source":"alexa","directive":"TurnOff","name":"Licht Blume","type":"DIMMER_SWITCH","rawDirective":{"directive":{"header":{"namespace":"Alexa.PowerController","name":"TurnOff","correlationToken":"AAAAAAAAAQCw0bwrflIo+0qYcrwV9e8J/AEAAAAAAAAylaQQ5wGPISckoJiD/xOWAVWdL/owRplUh4sbSVXCprwxMavX7XsxUQxRuzYPwCQ/nO8v2XuZySozwhsICHqXqiAsxi/HGwUf6Bvx/PPf+nGo4uoV13RysfxfBzwCDF3EkqxPeKn8Bzt6kQ2/1Zt/G3KxA1FS+tNgG84ApLdNvVfuxHICJdEDmyK+rDgknlmXp0JuAoAft8+AZOY4LRtSOtZyDmo/zVZTb1E7vzGbxpwXMTeEdjvPZKUJyEo2blvr5X9xZRzEb5BdPvNeXXTvgvCbFSRBiiFfJBBoJbn9x2alMBYpzL6LZvNxAMpyp51lmQ2fcrvYYOA6JeYgtlWVOiWba7Lva62RPGbKWitm15qMkP1mM3j2uEVND47zhI4rzaNfFDX9rPzFLqUJdmHsUY+xT/VW21VBOlcU5S5Hv7k6UJbCy2Y7wCa67JzfSD4iJNUpYb6/6XG76p4Mk64GBBI4AkFLluPbM5E2fpf+ngpkQbvJY4UO6SzHEpQZU46/TjpifmBsvZsIefma4e2lcPEWq3xwgRH7qhT3on+CQLxuvSZ24ewLQChBJ0QOnGnakisN1+6NfnXhOWpCuLleDDeIRJydPn0q8lwEwbXLKwSv74rYKBzceUrl7IO1Rl7Q9ooKYPdQk34kTfqA+9zh1HWFPIwdZDvJ10Ho"},"endpoint":{"endpointId":"vshd-18fdbc21689b64"},"payload":{}}}}
        
        1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Heinloth last edited by

          @heinloth sagte in node-red-contrib-virtual-smart-home mit Loxone:

          Screenshot 2021-12-10 225358.jpg

          Nein - damit hast Du das Prinzip nicht verstanden, was ein Objekt ist.

          Das ganze Nachrichtenobjekt das Nodered Durch die Gegend schickt ist ein msg - Objekt. Das ist ein Javascript Objekt.
          https://www.w3schools.com/js/js_objects.asp

          Wie Du siehst hat ein Java Script Objekt Eigenschaften:

          const car = {type:"Fiat", model:"500", color:"white"};
          

          Also das Auto hat einen Typ, eine Modellbezeichnung und eine Farbe. Auf die kann man mit Punkt zugreifen.
          Also car.type enthält Fiat, car.model enthält 500, car.color enthält white.

          In NodeRed werden msg Objekte durch die Kabel und Nodes geschickt. Die meisten msg Objekte haben 2 Eigenschaften: ein topic und eine payload. Also spricht man die mit msg.topic bzw. msg.payload an.

          Deine payload enthält nun wiederum ein Objekt.

          Das heisst Du bekommst raus - wohin das Ziel bei Rolladen ist - in percentage.
          Also wenn Du das alleine haben möchstest ist Deine Prozentzahl wohin in payload.percentage.

          In mode siehst Du ob der Rolladen auf oder zu fahren soll : payload.mode enthält Position.Up

          msg.0 und 1-100 sind keine Eigenschaften des msg. Objektes und deshalb der Fehler.

          1 Reply Last reply Reply Quote 0
          • H
            Heinloth last edited by

            Das hat schon mal funktioniert, jetzt müsste ich den TurnOn mit 100 und Turn off mit 0 belegen

            1 Reply Last reply Reply Quote 0
            • H
              Heinloth last edited by

              Screenshot 2021-12-10 231038.jpg

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

                @heinloth Na das schaut doch schon gut aus nur dass das TurnOff/On in der directive und nicht in der brightness steht - wenn Du mit 0 und 100 Deine Lampe ein und ausschaltest. 🙂

                Übrigens warum Du es mir erleichterst - wenn Du mir die Werte in die CodeTags packst - dann kann ich es in eine Inject Node speichern und bekomme das identische Objekt raus:

                78afea22-7bf2-4340-82f9-e68f2ac9c97d-image.png

                Übrigens wenn Du im Debug Fenster den Pfeil nach unten ausklappst - dann siehst Du die Eigenschaften des Objektes viel besser. Habs mal grün markiert.

                735a07bd-418b-46f7-9431-f27ed40dc52d-image.png

                e886425e-32fe-40df-aca6-d904bace28df-image.png

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

                  @mickym Die Directiven sind wichtig - ob hier AN - AUS Geschaltet oder gedimmt wird - wenn Du also sag dimme auf 45% dann ist die directive anders und dann musst Du den Wert der Brightness nehmen. Deswegen hängst Du am Besten eine Switch Node hinter Deine Alexa Node und setzt direkt die Werte die Loxone braucht.

                  H 1 Reply Last reply Reply Quote 0
                  • H
                    Heinloth last edited by

                    Ich lerne heute richtig viel, herzlichen Dank.

                    Wenn ich jetzt einen change mit brigthnes mache und einen seperaten change mit directive und dann die Änderung von TurnOn/Off auf 100 bzw 0 mache funktioniert es noch nicht richtig. Kann ich das auch in ein change packen?

                    Wo bekomme ich die Info her was alles unter welchen Namen im Payload hinterlegt ist.

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

                      @mickym said in node-red-contrib-virtual-smart-home mit Loxone:

                      @mickym Die Directiven sind wichtig - ob hier AN - AUS Geschaltet oder gedimmt wird - wenn Du also sag dimme auf 45% dann ist die directive anders und dann musst Du den Wert der Brightness nehmen. Deswegen hängst Du am Besten eine Switch Node hinter Deine Alexa Node und setzt direkt die Werte die Loxone braucht.

                      Da musst du mir nochmal helfen, das habe ich noch nicht kapiert!

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

                        @heinloth Wie gesagt ich habe Dir gesagt die Hilfe gibt zumindest Auskunft. Poste doch mal das Objekt den Wert wenn Du zu Alexa sagst dimme auf 45%.

                        Die directiven sind wohl sehr viele die stehen nicht in der Hilfe - deshalb musst Du einfach die Befehle sprechn und wir schauen, was aus der Alexa Node rauskommt.

                        Die Hilfe zu den Nodes bekommst Du wenn Du die Node anklickst und dann auf das Buch:

                        27b2d31c-9cff-494e-8eb0-ab9f3478881f-image.png

                        Dann siehst bei Rollläden dass Du dort die Position des Rollladen findest - auf und zu machen über die Directive.

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

                          @heinloth sagte in node-red-contrib-virtual-smart-home mit Loxone:

                          @mickym said in node-red-contrib-virtual-smart-home mit Loxone:

                          @mickym Die Directiven sind wichtig - ob hier AN - AUS Geschaltet oder gedimmt wird - wenn Du also sag dimme auf 45% dann ist die directive anders und dann musst Du den Wert der Brightness nehmen. Deswegen hängst Du am Besten eine Switch Node hinter Deine Alexa Node und setzt direkt die Werte die Loxone braucht.
                          

                          Da musst du mir nochmal helfen, das habe ich noch nicht kapiert!

                          Nun Du hast doch eine Debug Node - da kommt doch jedesmal was raus und die postest Du dann hier wieder - dann kann ich das über Inject Nodes simulieren.

                          1 Reply Last reply Reply Quote 0
                          • H
                            Heinloth last edited by Heinloth

                            
                            
                            1 Reply Last reply Reply Quote 0
                            • H
                              Heinloth last edited by Heinloth

                              `
                              },
                              {

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

                                Aktuell verhindert der brightness das der directive arbeiten kann

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

                                  @heinloth Lösche mal den ganzen Flow hier raus - zumindest ohne die Alexa Node - weil da ist Dein Alexa Zugang drin - also ohne Alexa Node exportieren.

                                  Ansonsten schaut der Flow nun so aus:

                                  5af924e7-6732-42c4-85ef-5af6f135602d-image.png

                                  hier zum Import:

                                  [{"id":"a00cd64c3cdb4aae","type":"switch","z":"34a03c31fc3710a3","name":"Analysiere Directive","property":"payload.directive","propertyType":"msg","rules":[{"t":"eq","v":"TurnOn","vt":"str"},{"t":"eq","v":"TurnOff","vt":"str"},{"t":"eq","v":"SetBrightness","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":1140,"y":2380,"wires":[["bd4ab7e2e461457d"],["8b0f168e745ae4fd"],["04ab779f2aabecc5"]]},{"id":"bd4ab7e2e461457d","type":"change","z":"34a03c31fc3710a3","name":"auf 100","rules":[{"t":"set","p":"payload","pt":"msg","to":"100","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1420,"y":2340,"wires":[["b5821dba10da4c79"]]},{"id":"04ab779f2aabecc5","type":"change","z":"34a03c31fc3710a3","name":"auf payload.brightness","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.brightness","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1380,"y":2420,"wires":[["b5821dba10da4c79"]]},{"id":"8b0f168e745ae4fd","type":"change","z":"34a03c31fc3710a3","name":"auf 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1430,"y":2380,"wires":[["b5821dba10da4c79"]]},{"id":"b5821dba10da4c79","type":"debug","z":"34a03c31fc3710a3","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1660,"y":2380,"wires":[]}]
                                  

                                  Der Ansatz sieht also wie folgt aus:

                                  Am Anfang werten wir über die Switch Node aus, was für eine Directive Alexa ausgibt:

                                  Diese stand in der msg.payload.directive

                                  9df98852-dba4-4a4d-9091-2ca37f7b6d48-image.png

                                  Nun wird an den ersten beiden Ausgängen 0 oder 100 gesetzt, beim letzten Ausgang auf die payload.brightness

                                  1 Reply Last reply Reply Quote 0
                                  • H
                                    Heinloth last edited by

                                    Herzlichen Dank, du warst mir wirklich eine sehr große Hilfe. Gibt es hier eine Funktion Daumen hoch? 👍

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

                                      @heinloth sagte in node-red-contrib-virtual-smart-home mit Loxone:

                                      Gibt es hier eine Funktion Daumen hoch?

                                      Ja 😁

                                      65d5c2fc-40e9-4a3f-b2b7-5de6ef61d5cd-image.png

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        Heinloth last edited by

                                        Hallo, jetzt hänge ich gerade ein wenig an der Raffstoresteuerung.

                                        Mit Beschattung Küche fährt er immer ganz runter und stellt dann die Lamellen gerade, das funktioniert.

                                        Mit Raffstore Küche möchte ich den Raffstore steuern. Mit Sprachbefehl schließen macht er zu, mit Sprachbefehl auf öffnet er. Wenn ich sage 0% schließt er, wenn ich sage 100% öffnet er.

                                        Jetzt möchte ich :

                                        Raffstore definieren mit Prozentangabe ( z.B. 30%)
                                        Sprachbefehl ändern zusätzlich zu Befehl auf z.B. Befehl hoch

                                        Wie kann ich das noch umsetzen und wie kann ich meine Programmierung optimieren!

                                        Herzlichen Dank

                                        mickym F 2 Replies Last reply Reply Quote 0
                                        • H
                                          Heinloth last edited by

                                          Raffstore.jpg

                                          1 Reply Last reply Reply Quote 0
                                          • H
                                            Heinloth last edited by

                                            [
                                                {
                                                    "id": "e34db2b2.a93fc",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 370,
                                                    "y": 400,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "3ba04a95.88a9a6",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 930,
                                                    "y": 260,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "5eafccaa.672334",
                                                    "type": "switch",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "Analysiere Directive",
                                                    "property": "payload.percentage",
                                                    "propertyType": "msg",
                                                    "rules": [
                                                        {
                                                            "t": "eq",
                                                            "v": "0",
                                                            "vt": "str"
                                                        },
                                                        {
                                                            "t": "eq",
                                                            "v": "100",
                                                            "vt": "str"
                                                        },
                                                        {
                                                            "t": "btwn",
                                                            "v": "1",
                                                            "vt": "num",
                                                            "v2": "99",
                                                            "v2t": "num"
                                                        }
                                                    ],
                                                    "checkall": "true",
                                                    "repair": false,
                                                    "outputs": 3,
                                                    "x": 420,
                                                    "y": 340,
                                                    "wires": [
                                                        [
                                                            "2b5ff971.9facd6",
                                                            "6e3cf6b8.251598"
                                                        ],
                                                        [
                                                            "7bfe0352.318f1c",
                                                            "c343f71d.636c38"
                                                        ],
                                                        [
                                                            "46980042.d750c",
                                                            "b6b591a7.d3c9c"
                                                        ]
                                                    ]
                                                },
                                                {
                                                    "id": "2b5ff971.9facd6",
                                                    "type": "change",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "auf 0",
                                                    "rules": [
                                                        {
                                                            "t": "set",
                                                            "p": "payload",
                                                            "pt": "msg",
                                                            "to": "0",
                                                            "tot": "num"
                                                        }
                                                    ],
                                                    "action": "",
                                                    "property": "",
                                                    "from": "",
                                                    "to": "",
                                                    "reg": false,
                                                    "x": 700,
                                                    "y": 340,
                                                    "wires": [
                                                        [
                                                            "1d2c69c6.9bd3d6",
                                                            "a23d546d.30cc58"
                                                        ]
                                                    ]
                                                },
                                                {
                                                    "id": "7bfe0352.318f1c",
                                                    "type": "change",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "auf 100",
                                                    "rules": [
                                                        {
                                                            "t": "set",
                                                            "p": "payload",
                                                            "pt": "msg",
                                                            "to": "100",
                                                            "tot": "num"
                                                        }
                                                    ],
                                                    "action": "",
                                                    "property": "",
                                                    "from": "",
                                                    "to": "",
                                                    "reg": false,
                                                    "x": 730,
                                                    "y": 380,
                                                    "wires": [
                                                        [
                                                            "1d2c69c6.9bd3d6",
                                                            "3ba04a95.88a9a6"
                                                        ]
                                                    ]
                                                },
                                                {
                                                    "id": "a23d546d.30cc58",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 930,
                                                    "y": 200,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "d683d5a9.696698",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 930,
                                                    "y": 140,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "6e3cf6b8.251598",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 610,
                                                    "y": 500,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "c343f71d.636c38",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 610,
                                                    "y": 560,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "3462d884.5cf738",
                                                    "type": "change",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "Payloadänderung",
                                                    "rules": [
                                                        {
                                                            "t": "set",
                                                            "p": "payload",
                                                            "pt": "msg",
                                                            "to": "payload.mode",
                                                            "tot": "msg"
                                                        },
                                                        {
                                                            "t": "change",
                                                            "p": "payload",
                                                            "pt": "msg",
                                                            "from": "Position.Down",
                                                            "fromt": "str",
                                                            "to": "down",
                                                            "tot": "str"
                                                        },
                                                        {
                                                            "t": "change",
                                                            "p": "payload",
                                                            "pt": "msg",
                                                            "from": "Position.Up",
                                                            "fromt": "str",
                                                            "to": "up",
                                                            "tot": "str"
                                                        }
                                                    ],
                                                    "action": "",
                                                    "property": "",
                                                    "from": "",
                                                    "to": "",
                                                    "reg": false,
                                                    "x": 690,
                                                    "y": 280,
                                                    "wires": [
                                                        [
                                                            "d683d5a9.696698",
                                                            "1d2c69c6.9bd3d6"
                                                        ]
                                                    ]
                                                },
                                                {
                                                    "id": "ed7b05a3.e24f58",
                                                    "type": "ioBroker out",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "Küche Liegefenster: shade",
                                                    "topic": "loxone.0.0e6abcb9-033a-68b6-ffff1382f11b2d79.shade",
                                                    "ack": "false",
                                                    "autoCreate": "false",
                                                    "stateName": "",
                                                    "role": "",
                                                    "payloadType": "",
                                                    "readonly": "",
                                                    "stateUnit": "",
                                                    "stateMin": "",
                                                    "stateMax": "",
                                                    "x": 480,
                                                    "y": 100,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "46980042.d750c",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 610,
                                                    "y": 620,
                                                    "wires": []
                                                },
                                                {
                                                    "id": "b6b591a7.d3c9c",
                                                    "type": "change",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "auf 100",
                                                    "rules": [
                                                        {
                                                            "t": "change",
                                                            "p": "payload",
                                                            "pt": "msg",
                                                            "from": "20",
                                                            "fromt": "num",
                                                            "to": "80",
                                                            "tot": "num"
                                                        }
                                                    ],
                                                    "action": "",
                                                    "property": "",
                                                    "from": "",
                                                    "to": "",
                                                    "reg": false,
                                                    "x": 740,
                                                    "y": 420,
                                                    "wires": [
                                                        [
                                                            "1d2c69c6.9bd3d6",
                                                            "85644c84.026fa"
                                                        ]
                                                    ]
                                                },
                                                {
                                                    "id": "85644c84.026fa",
                                                    "type": "debug",
                                                    "z": "7d95d556.9cdadc",
                                                    "name": "",
                                                    "active": true,
                                                    "tosidebar": true,
                                                    "console": false,
                                                    "tostatus": true,
                                                    "complete": "payload",
                                                    "targetType": "msg",
                                                    "statusVal": "payload",
                                                    "statusType": "auto",
                                                    "x": 930,
                                                    "y": 560,
                                                    "wires": []
                                                }
                                            ]
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            648
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            32
                                            2760
                                            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