Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. SONOFF NSPanel mit Lovelace UI

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • icebear
      icebear @TT-Tom last edited by

      @tt-tom said in SONOFF NSPanel mit Lovelace UI:

      Somit sollte auch ein gemischter Kalender funktionieren.

      Sag einfach bescheid wenn du fertig bist dann probier ich es aus.

      Zwei fragen hätt ich auch noch, kann ich bei einer 'cardGrid' wie im Beispiel

      home.png

      z.B. bei der Garage auch darstellen durch ein zweites Icon wenn diese geöffnet ist, bis jetzt hab ich das nich hinbekommen.
      Bei Mail z.B. hab ich es hinbekommen das das Icon die Farbe wechselt wenn Post da ist, aber das Icon wechselt auch nich auf z.b. 'Briefumschlag offen'

      so hab ich es versucht

      let Grundstueck = <PageGrid> {
          'type': 'cardGrid',
          'heading': 'Grundstück',
          'useColor': true,
          'subPage': false, 
          'items': [
              <PageItem>{ navigate: true, id: null, targetPage: 'Erdgeschoss', name: 'Haus', icon: 'home-roof', offColor: Blue, onColor: Blue},
      		<PageItem>{ navigate: true, id: null, targetPage: 'Garage', name: 'Garage', icon: 'garage-variant', offColor: Red, onColor: White},
              <PageItem>{ id: 'alias.0.Home.NewMail', name: 'Mail', icon: 'email-outline', icon2: 'email-outline-open', offColor: Green, onColor: Red},
      

      Und zweite Frage:

      Kann man auch ein Türschloß (Nuki) darstellen wie z.B. das Thermostat?
      Also in der Mitte das Türschloß und unten Indicatoren für die verschiedenen Zustände?

      K T Armilar 4 Replies Last reply Reply Quote 0
      • K
        Kuckuckmann @icebear last edited by Kuckuckmann

        @icebear

        Also das Darstellen von geöffnet/geschlossen hängt letztlich vom verwendeten Alias ab. Wenn Du zum Beispiel Schloss nimmst, kannst Du mit 2 Icons in einem Pageitem arbeiten. Schau mal in den Beispielen, da wirst Du das ein oder andere finden. Hier mal ein Beispiel von mir mit einer Lampe, wo ich zwei verschieden Icons verwende um an und aus darzustellen:

        <PageItem>{ id: "alias.0.Shelly.Shelly_WZ_Lampe", icon: "lamp", icon2: "lamp-outline", offColor: White, onColor: White, name: "Ikea Lampe"},
        

        Da es sich bei Dir um das Icons aus einer Subpage letztlich handelt, schau mal in der Wiki hier. Mit dieser Beschreibung solltest Du das hin bekommen 🙂

        Hier findest Du die aktuelle Übersicht der möglichen Icons. Schau mal ob Du da ein Schloss nach Deinen Anforderungen findest. Wenn nicht, gerne mit einem Bespiel im GitHub ein Ticket aufmachen.

        Bezüglich des Nuki, welche Zustände können denn da angezeigt werden?
        Ich denke @Armilar kann uns da sicher weiterhelfen, ob das möglich ist 🙂

        Ich hoffe das hilft Dir.

        LG

        1 Reply Last reply Reply Quote 2
        • F
          Futty @Marc Berg last edited by

          @marc-berg sagte in SONOFF NSPanel mit Lovelace UI:

          @futty sagte in SONOFF NSPanel mit Lovelace UI:

          was mach ich nun wieder falsch...

          Wenn du einen Button drückst, wird der Befehl bei dir nach "mqtt.0.SmartHome.tasmota_C4CF8C.tele.RESULT" publiziert (wenn dein MQTT Adapter die Instanz "0" ist). Das Skript wiederum hört auf das Topic, welches in der Variable "panelRecvTopic" definiert wurde. Also musst du mal schauen, ob beide übereinstimmen. Wenn nicht, muss die Rule2 angepasst werden.

          das wars, musste die rule2 anpassen, danke!
          Man darf halt auch nicht alles Blind kopieren 😉

          1 Reply Last reply Reply Quote 1
          • T
            TT-Tom @Flipps last edited by

            @flipps sagte in SONOFF NSPanel mit Lovelace UI:

            Wenn ich die Taster am Display drücke verändern sich die werte im IObroker

            welche Werte, unter mqtt?
            wie hast du den Datenpunkt CustomSend angelegt?

            Armilar 1 Reply Last reply Reply Quote 1
            • T
              TT-Tom @icebear last edited by TT-Tom

              @icebear sagte in SONOFF NSPanel mit Lovelace UI:

              z.B. bei der Garage auch darstellen durch ein zweites Icon wenn diese geöffnet ist, bis jetzt hab ich das nich hinbekommen.
              Bei Mail z.B. hab ich es hinbekommen das das Icon die Farbe wechselt wenn Post da ist, aber das Icon wechselt auch nich auf z.b. 'Briefumschlag offen'

              Wie @Kuckuckmann schon geschrieben hat ist es hauptsächlich davon abhängig welche Rolle der Alias (Channel) hat. Hier findest du eine Übersicht zu den Rollen.

              <PageItem>{ navigate: true, id: null, targetPage: 'Garage', name: 'Garage', icon: 'garage-variant', offColor: Red, onColor: White},
              

              hier fehlt hinter id: der Verweis auf den Alias, denn dadurch kann erst der Zustand ausgewertet werden.

              Wie sieht den dein Alias von dem Mail icon aus.

              1 Reply Last reply Reply Quote 1
              • Armilar
                Armilar Most Active Forum Testing @icebear last edited by Armilar

                @icebear

                Kann man auch ein Türschloß (Nuki) darstellen wie z.B. das Thermostat?

                Also in der Mitte das Türschloß und unten Indicatoren für die verschiedenen Zustände?

                @Kuckuckmann

                Bezüglich des Nuki, welche Zustände können denn da angezeigt werden?

                Ich denke @Armilar kann uns da sicher weiterhelfen, ob das möglich ist 🙂

                für den Nuki (also das Türschloss) gibt es keine komplette Seite wie bei z.B. der cardThermo oder der cardMedia. Allerdings kannst du das auf einer cardGrid steuern, die ja auch alle Zustände dann auf einer Seite darstellen kann. (alternativ cardEntities oder cardGrid2)

                Ich würde eine cardGrid bauen, in der das Türschloss als Alias Verschluss angelegt wird:
                001f7614-981e-476d-b4eb-f5093facd26b-image.png

                und die restlichen Indikatoren dann als Info-Aliase zuweisen...

                1 Reply Last reply Reply Quote 1
                • Armilar
                  Armilar Most Active Forum Testing @TT-Tom last edited by Armilar

                  @tt-tom sagte in SONOFF NSPanel mit Lovelace UI:

                  @flipps sagte in SONOFF NSPanel mit Lovelace UI:

                  Wenn ich die Taster am Display drücke verändern sich die werte im IObroker

                  welche Werte, unter mqtt?
                  wie hast du den Datenpunkt CustomSend angelegt?

                  Nur weil der ioBroker Daten empfängt und die in den Datenpunkten anlegt, heißt es nicht, dass der mqtt-"Sendekanal" funktioniert...

                  Daher ist die Frage von @TT-Tom schon richtig... der CustomSend muss vom MQTT-Broker abonniert werden.

                  Das funktioniert eigentlich am Besten mit dem MQTT-Explorer (siehe Basis-Anleitung github).

                  Ich würde ebenfalls nochmal einen Blick in die MQTT-Instanz werfen und diesen Spielverderber:
                  22508810-7f05-4450-9063-000d20a086d3-image.png

                  überprüfen. Darf auf keinen Fall gesetzt sein...

                  Und das leidige Thema der MQTT-Ports sollte auch gleich mit überprüft werden. Daher am Besten gleich den Port 1883 z.B. auf Port 1886 setzen (ebenfalls in der Device-GUI), bevor er mit anderen Adaptern kollidiert.

                  EDIT:
                  Habe eh nie verstanden, warum die Adapter-Entwickler immer wieder den Standard-Port 1883 für ihre Adapter verwenden, wenn sie doch wissen, dass die in der Regel belegt sind 😉 Zumindest ein Hinweis, dass dieser Port bei Anlage einer Insztanz bereits belegt ist, könnte schon hilfreich sein...

                  F 1 Reply Last reply Reply Quote 1
                  • F
                    Flipps @Armilar last edited by

                    @armilar @TT-Tom

                    Meine erste Vermutung geht auch in Richtung MQTT.

                    Ich schaue im MQTT Ordner nach den Power1 und Power2 Datenpunkten, die verändern sich wenn ich die Taster taste.

                    CustomSent habe ich von Hand erstellt, habe ihn aber auch nochmal über die Tasmota Konsole erstellt. das hat keinen unterschied gemacht.

                    Den Port habe ich geändert, ich denke aber das der ioBroker keine Daten raussendet, ich habe hier mal Bilder von der config vom mqtt adapter.
                    mqtt2.PNG mqtt.PNG

                    für mich sieht das erstmal richtig aus, ich sehe den io Broker aber nicht im MQTT explorer:
                    mqtt expl.PNG
                    😧
                    VG Philipp

                    Armilar T 2 Replies Last reply Reply Quote 0
                    • Armilar
                      Armilar Most Active Forum Testing @Flipps last edited by Armilar

                      @flipps

                      Ich schaue im MQTT Ordner nach den Power1 und Power2 Datenpunkten, die verändern sich wenn ich die Taster taste.

                      Ich sagte ja bereits das die Empfangsrichtung funktioniert... aber die Senderichtung nicht

                      Bitte mal den CustomSend löschen. Der legt sich bei korrekter Verwendung mit de MQTT-Explorer selbst an (erst dann kann er auch über das TS-Script senden!!!)

                      Gehe noch mal den Punkt durch:
                      https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker---Basisinstallation#4-mqtt-tasmota-config
                      Du musst z.B. die Uhrzeit im MQTT-Explorer senden. Sonst wird's nix. Und bist erst fertig, wenn sich der CustomSend von selbst anlegt.

                      Im Tasmota steht der Port ebenfalls auf 1886?

                      Und stelle den MQTT mal als Broker ein...

                      1d36c61d-95d7-444b-8cf7-aa01f55c02ac-image.png

                      Lässt sich bei IP im ersten Fenster der MQTT-Instanz umstellen

                      462a66d0-30b5-4234-ae24-cad87e19c4bd-image.png

                      Den Client/Subscriber brauchst du nur, wenn du mit einem externen MQTT-Broker arbeitest - wie z.B. dem Mosquitto. Würde ich allerdings nur Usern empfehlen, die in der Tiefe wissen, was ein MQTT-Broker macht und wie er funktioniert. Ansonsten schaffst du dir neue Baustellen...

                      Und noch ein Tipp: Vergib dem NSPanel eine IP außerhalb des DHCP-Bereiches mit einer statischen IP. Dann gibt es auch keine unerwünschten Wechsel der IP. Für den NUC ebenfalls.

                      1 Reply Last reply Reply Quote 1
                      • T
                        TT-Tom @Flipps last edited by TT-Tom

                        @flipps

                        noch ein Hinweis zu @Armilar Ausführung. Als erstes den MQTT Adapter umstellen, dann den DP anlegen.

                        ggf. auch die alten Objekte unter mqtt.0 löschen, die legen sich wieder neu an.

                        Armilar 1 Reply Last reply Reply Quote 1
                        • Armilar
                          Armilar Most Active Forum Testing @TT-Tom last edited by

                          @tt-tom

                          @Flipps

                          exakt, eigentlich den gesamten Post von unten nach oben abarbeiten 😉

                          F 1 Reply Last reply Reply Quote 1
                          • F
                            Flipps @Armilar last edited by

                            @armilar @TT-Tom

                            Soooo! 😄 Ich habe wieder eine Uhrzeit, Ich denke es lag daran das ich das Panel das erste mal nach M. Kleine installiert habe und beim zweiten mal nach Github, das ausschlaggebende war, glaube ich, das ich die "autoexec.be" nicht neu angelegt habe beim zweiten mal, das hab ich bestimmt 5 mal überflogen bevor ich das richtig gecheckt habe 😄 danach das Berrytreiber upgrade und jetzt läufts. 🙂 vielen Dank für die Hilfe. Ich begebe mich jetzt nochmal an die Pages.

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              TT-Tom @Flipps last edited by

                              @flipps na dann viel Spass. schön das es läuft

                              1 Reply Last reply Reply Quote 0
                              • T
                                TT-Tom @icebear last edited by TT-Tom

                                @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                                @tt-tom said in SONOFF NSPanel mit Lovelace UI:

                                Somit sollte auch ein gemischter Kalender funktionieren.

                                Sag einfach bescheid wenn du fertig bist dann probier ich es aus.

                                so das Script ist komplett umgestellt und sollte jetzt auch mit gemischten Kalendern funktionieren.
                                Es prüft zuerst das Datum, ob der Termin heute oder in der Zukunft liegt. Dann wird das Event geprüft, also auf die Abfallnamen. Wenn beides übereinstimmt wird der erste Datenpunkt gefüllt, wenn alle 4 gefüllt sind bricht das Script ab. Getriggert wird es durch die Aktualisierung des iCal Adapters.

                                EDIT Script entfernt und auf Github geladen

                                bitte testen, danke.

                                PS : Wenn es funktioniert kann die Zeile auf "false" geändert werden. (weniger Meldungen im LOG)

                                const Debug: boolean = true;
                                
                                icebear 1 Reply Last reply Reply Quote 1
                                • icebear
                                  icebear @TT-Tom last edited by

                                  @tt-tom said in SONOFF NSPanel mit Lovelace UI:

                                  bitte testen, danke.

                                  Hab's getestet, funktioniert! 👍
                                  Zweimal, mit verschiedenen Terminen an verschiedenen Tage als Fake.
                                  Es werden jetzt nur noch die Abfuhrtermine angezeigt. Debug hab ich nach dem Test auf False gesetzt.

                                  T 1 Reply Last reply Reply Quote 0
                                  • icebear
                                    icebear last edited by

                                    Ich hab dann nochmal zwei Fragen:

                                    1. Ich hab mir jetzt eine cardGrid für mein Nuki Türschloß gebaut.

                                      card.png

                                    kann man da auch unten (roter Rahmen) 'Indicator' einfügen für 'LowBat' 'UNREACH' usw.
                                    Ich habs versucht indem ich unter Geräte bei dem NUKI im unteren Teil bei 'Indicator die jeweiligen DP angegeben hab, funktioniert aber so nich.

                                    1. Ich kämpf auch noch ein bischen mit dem erweiterten Screensaver, soweit klappt alles bis auf die 'indicatorScreensaverEntity:' wenn ich da wie folgt etwas eintrage
                                       indicatorScreensaverEntity:
                                            [
                                    		// Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400
                                                { 
                                                    ScreensaverEntity: 'alias.0.Home.Nuki.Nuki',
                                                    ScreensaverEntityFactor: 1,
                                                    ScreensaverEntityDecimalPlaces: 0,
                                                    ScreensaverEntityIconOn: 'home-lock',
                                                    ScreensaverEntityIconOff: 'home-lock-open',
                                                    ScreensaverEntityText: 'Nuki',
                                                    ScreensaverEntityUnitText: '',
                                                    ScreensaverEntityIconColor: { 'val_min': 0, 'val_max': 1 }
                                                },              
                                            ],
                                    

                                    Dann bekomm ich folgende Warnmeldungen

                                    javascript.1
                                    2023-08-27 15:35:48.419	warn	at processImmediate (node:internal/timers:466:21)
                                    
                                    javascript.1
                                    2023-08-27 15:35:48.419	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5916:56)
                                    
                                    javascript.1
                                    2023-08-27 15:35:48.418	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
                                    
                                    javascript.1
                                    2023-08-27 15:35:48.418	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1266:38)
                                    
                                    javascript.1
                                    2023-08-27 15:35:48.418	warn	at Object.<anonymous> (script.js.NSPanel.NsPanelTs_DEV:8150:13)
                                    
                                    javascript.1
                                    2023-08-27 15:35:48.418	warn	at HandleScreensaverUpdate (script.js.NSPanel.NsPanelTs_DEV:8103:31)
                                    
                                    javascript.1
                                    2023-08-27 15:35:48.417	warn	getState "alias.0.Home.Nuki.Nuki" not found (3)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at processImmediate (node:internal/timers:466:21)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5916:56)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1266:38)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at Object.<anonymous> (script.js.NSPanel.NsPanelTs_DEV:3402:12)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at __awaiter (script.js.NSPanel.NsPanelTs_DEV:4:12)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.919	warn	at new Promise (<anonymous>)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at script.js.NSPanel.NsPanelTs_DEV:8:71
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at Object.next (script.js.NSPanel.NsPanelTs_DEV:14:53)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at step (script.js.NSPanel.NsPanelTs_DEV:33:23)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at Object.<anonymous> (script.js.NSPanel.NsPanelTs_DEV:3410:25)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at HandleMessage (script.js.NSPanel.NsPanelTs_DEV:3483:21)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at HandleScreensaver (script.js.NSPanel.NsPanelTs_DEV:7821:5)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.918	warn	at HandleScreensaverUpdate (script.js.NSPanel.NsPanelTs_DEV:8103:31)
                                    
                                    javascript.1
                                    2023-08-27 15:35:46.912	warn	getState "alias.0.Home.Nuki.Nuki" not found (3)
                                    

                                    Ich seh dann zwar im Screensaver das Icon

                                    indicator1.png

                                    aber die Warnmeldungen kommen die ganze Zeit

                                    Was mach ich falsch?

                                    K Armilar 2 Replies Last reply Reply Quote 0
                                    • K
                                      Kuckuckmann @icebear last edited by Kuckuckmann

                                      @icebear
                                      Kannst Du mal eine Übersicht über die Datenpunkte des Nuki zur Verfügung stellen?

                                      Zu deinem 1.)

                                      Du hast da eine CardGrid. Die besteht aus einem Raster von 6 Zellen (auf der Cardgrid2 sind es 8). Zur Verdeutlichung mal hier das rohe Grid:

                                      fb85971e-9c37-4ad3-abbb-6e326b38aca5-image.png

                                      du siehst 6 Felder mit einer Lampe drin, das ist das was Du als Icon oder als Wert ( bei Temperatur z.B. ) hinterlegen kannst. Zusätzlich hast Du eine Beschriftung (tEntity1 - tEntity6). Mit Variablen kann man da auch Werte wie eine Temperatur oder einen Akkustand hinterlegen.

                                      Du siehst also, so wie Dein Gedanke war, Icons unten zu platzieren, wird mit der CardGrid nicht gehen.

                                      Ich hoffe das hilft beim Verständnis.

                                      Zu deinem 2.)

                                      Die Meldung sagt: Dein Alias wird nicht gefunden.

                                      getState "alias.0.Home.Nuki.Nuki" not found (3)
                                      

                                      Stimmt der Pfad?
                                      hast Du den Alias auch unter Geräte / Alias Manager angelegt oder von Hand?

                                      LG

                                      Armilar icebear 2 Replies Last reply Reply Quote 1
                                      • Armilar
                                        Armilar Most Active Forum Testing @icebear last edited by Armilar

                                        @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                                        kann man da auch unten (roter Rahmen) 'Indicator' einfügen für 'LowBat' 'UNREACH' usw.

                                        Die 6 Steuerelemente der cardGrid sind ja frei wählbar. Da können natürlich Info-Aliase rein, die Indikatoren des Nuki darstellen. Aber max. 6 Steuerelemente insgesamt... wie von @Kuckuckmann bereits beschrieben...

                                        1 Reply Last reply Reply Quote 0
                                        • Armilar
                                          Armilar Most Active Forum Testing @Kuckuckmann last edited by Armilar

                                          @kuckuckmann sagte in SONOFF NSPanel mit Lovelace UI:

                                          Stimmt der Pfad?
                                          hast Du den Alias auch unter Geräte / Alias Manager angelegt oder von Hand?

                                          @icebear

                                          Wenn's der Alias Verschluss ist, dann wird es wohl eher ein .ACTUAL oder .OPEN sein

                                          Also:
                                          alias.0.Home.Nuki.ACTUAL oder alias.0.Home.Nuki.Nuki.ACTUAL (keine Ahnung ob du wirklich 2x Nuki verwendet hast)

                                          1 Reply Last reply Reply Quote 0
                                          • icebear
                                            icebear @Kuckuckmann last edited by icebear

                                            @kuckuckmann said in SONOFF NSPanel mit Lovelace UI:

                                            hast Du den Alias auch unter Geräte / Alias Manager angelegt oder von Hand?

                                            @Armilar

                                            Tja, manchmal da sieht man den Wald vor lauter Bäumen nich mehr, wenn man den ganzen Tag rumbastelt. Es ist tatsächlich so das ich nicht den 'Alias' genommen habe sondern wie bei den 'card's' den Ordner aus wo die DP drinne liegen.

                                            Hab jetzt den richtigen 'alias.0.Home.Nuki.Nuki.ACTUAL' und schon funktionierts. Danke!!

                                            Das mit der 'cardGrid' hab ich jetzt verstanden. Werd mal sehen wie ich das umsetzte.

                                            @kuckuckmann said in SONOFF NSPanel mit Lovelace UI:

                                            Kannst Du mal eine Übersicht über die Datenpunkte des Nuki zur Verfügung stellen?

                                            Meinst du "originalen" aus dem Nuki Adapter?

                                            Weil ich hab auch noch selbst angelegte

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            999
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            260
                                            7128
                                            4284678
                                            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