Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Betatest NSPanel-lovelace-ui v0.6.x

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Betatest NSPanel-lovelace-ui v0.6.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki last edited by

      0.6.2 (2025-10-10)

      • (ticaki) PageUnlock: Config updated — fixed issue where some settings were not applied correctly.
      • (ticaki) IconSelect showed a too short list. Fixed.
      • (ticaki) Admin: Added responsive layout for Admin PageUnlock (mobile devices)

      iobroker.nspanel-lovelace-ui@latest

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

        @ilovegym

        das von @teletapi ist doch das selbe wie meins, nur das er eine subpage erstellt hat.

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

          @tt-tom sagte in Betatest NSPanel-lovelace-ui v0.6.x:

          @ilovegym

          das von @teletapi ist doch das selbe wie meins, nur das er eine subpage erstellt hat.

          ja, aber ... 🙂 dann ist da irgendwo nochn Kaefer drin, wenns nur mit Subpage geht und ohne nicht..

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

            @ilovegym
            Kannst du mal deine komplette Seitenkonfig(alle) posten. Muss das mal bei mir testen, was da die Farben überschreibt.

            1 Reply Last reply Reply Quote 0
            • ilovegym
              ilovegym last edited by ilovegym

              @tt-tom

              klar, ist nicht viel drin, da ich jetzt erst anfange, Menus zu erstellen, die Hauptfunktionen liegen auf den Buttons unter den Displays, die Menues sind nur nice-to-have (ausser Alarm und bei einigen eine Seite fuer die Schloesser).
              Adapter Version 0.6.2+2715b8f und Script Version 13.3

              async function configuration (): Promise<void> {
              
                 const overrideConfig: Partial<ScriptConfig.Config> = {
                     
                     weatherEntity: 'brightsky.0.',
                     defaultOffColor: Off,
                     defaultOnColor: On,
              
                     
                     "weatherAddDefaultItems": true
              
                 }
              
                 
                 const Hauptseite: ScriptConfig.PageGrid = {
                     type: 'cardGrid',
                     uniqueName: 'main',
                     heading: 'Bueros',
                     items: []
                 };
                     const powerGrid: ScriptConfig.PagePower = {
                     uniqueName: 'powereg', // muss mit dem Namen im Admin übereinstimmen
                     type: 'cardPower'
                 };
                 const abfall: any = {
                     heading: 'Abfallkalender',
                     prev: 'main',
                   home: 'main',
                    subPage: true,
                    native: {
                       card: 'cardEntities',
                      dpInit: '0_userdata.0.vis.Abfallkalender',
                        uniqueID: 'abfall',
                        template: 'entities.waste-calendar',
                     },
                 };
                 
              
                 
              
                 const config: ScriptConfig.Config = {
                     panelTopic: 'NSPanel2',
                     weatherEntity: 'brightsky.0.',
                     defaultOffColor: Off,
                     defaultOnColor: On,
                     defaultBackgroundColor: HMIDark,
                     weatherAddDefaultItems: true,
              
                    
                     pages: [
                         Hauptseite,
                         powerGrid,
                         abfall,
                         //irgendeinName,
                         //grid1,
                         //qrCode,
                         //chartHeizung,
                     ],
                     // Unterseiten / Subpages
                     subPages: [
                         //fahrplan
                     ],
              
                     /***********************************************************************
                      **                                                                   **
                      **                    Screensaver Configuration                      **
                      **                                                                   **
                      ***********************************************************************/
              
              
                     favoritScreensaverEntity: [
                         {
                             type: 'template',
                             template: 'text.brightsky.favorit',
                             dpInit: `/^brightsky\\.0\\.current\\./`,
                             modeScr: 'favorit',
                         }
                     ],
                     alternateScreensaverEntity: [
                         // only used with alternate Screensaver
                     ],
              
                     indicatorScreensaverEntity: [
                         // indicatorScreensaverEntity 1 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.NSPanel.allgemein.Status_offene_Fenster.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityIconOn: 'window-open-variant',
                             ScreensaverEntityIconOff: 'window-closed-variant',
                             ScreensaverEntityText: 'Fenster',
                             ScreensaverEntityUnitText: '%',
                             ScreensaverEntityIconColor: {val_min: 0, val_max: 1},
                         },
                         // indicatorScreensaverEntity 2 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.NSPanel.allgemein.Status_offene_Tuer.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityIconOn: 'door-open',
                             ScreensaverEntityIconOff: 'door-closed',
                             ScreensaverEntityText: 'Tür',
                             ScreensaverEntityUnitText: '',
                             ScreensaverEntityIconColor: {val_min: 0, val_max: 1},
                         },
                         // indicatorScreensaverEntity 3 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.NSPanel.allgemein.Status_Licht_An.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityIconOn: 'lightbulb',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Licht',
                             ScreensaverEntityUnitText: '',
                             ScreensaverEntityIconColor: {val_min: 0, val_max: 1},
                         },
                         // indicatorScreensaverEntity 4 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.Türschloss.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityIconOn: 'lock',
                             ScreensaverEntityIconOff: 'lock-open',
                             ScreensaverEntityText: 'Türschloss',
                             ScreensaverEntityUnitText: '',
                             ScreensaverEntityIconColor: {val_min: 0, val_max: 1, val_best: 1},
                         },
                         // indicatorScreensaverEntity 5 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.NSPanel.allgemein.Auto.Safety.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityIconOn: 'car-key',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Auto',
                             ScreensaverEntityUnitText: '',
                             ScreensaverEntityIconColor: {val_min: 0, val_max: 1, val_best: 1},
                         },
                     ],
              
                     bottomScreensaverEntity: [
                         // bottomScreensaverEntity 1
                         {
                             type: 'template',
                             template: 'text.brightsky.sunriseset',
                             dpInit: `/^brightsky\\.0\\.daily\\.00.+/`,
                             modeScr: 'bottom',
                         },
                         // bottomScreensaverEntity 2
                         /*{
                             type: 'template',
                             template: 'text.hmip.windcombo',
                             dpInit: 'hmip.0.devices.3014G71HA0001XXXXXXXXXX',
                             modeScr: 'bottom',
                             //readOptions: {directionOfPanel: 81}
                         },*/
                         {
                             type: 'script',
                             ScreensaverEntity: 'brightsky.0.current.wind_speed_10'/*Wind Speed 10 min*/,
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 1,
                             ScreensaverEntityIconOn: 'weather-windy',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: "Wind",
                             ScreensaverEntityUnitText: 'm/s',
                             ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120}
                         },
                         // bottomScreensaverEntity 3
                         {
                             type: 'script',
                             ScreensaverEntity: 'brightsky.0.current.wind_gust_speed_10'/*Wind Gust Speed 10 min*/,
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 1,
                             ScreensaverEntityIconOn: 'weather-tornado',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Böen',
                             ScreensaverEntityUnitText: 'm/s',
                             ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 120}
                         },
                         // bottomScreensaverEntity 4
                         {
                             type: 'template',
                             template: 'text.brightsky.winddirection',
                             dpInit: `/^brightsky\\.0\\.current./`,
                             modeScr: 'bottom',
                         },
                         // bottomScreensaverEntity 5 (Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'brightsky.0.current.relative_humidity'/*Relative Humidity*/,
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityIconOn: 'water-percent',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Feuchte',
                             ScreensaverEntityUnitText: '%',
                             ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 60}
                         },
                         // bottomScreensaverEntity 6 (for Advanced Screensaver)
                         {
                             type: 'template',
                             template: 'text.brightsky.uvindex',
                             dpInit: `/^brightsky\\.0\\.current./`,
                             modeScr: 'bottom',
                         }
                         // Examples for Advanced-Screensaver: https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver#entity-status-icons-ab-v400 
              
                         // Some templates for the screensaver uncomment the lines to use them
                         // If u use an other instance for the weather data, change the instance in the following lines
                         // If you want to have them all, set weatherAddDefaultItems=true in the config and leave the following lines as they are!
              
                         // zum nutzen der Vorlagen für den Bildschirmschoner die Zeilen auskommentieren, um sie zu verwenden
                         // Wenn du eine andere Instanz für die Wetterdaten verwendest, ändere die Instanz in den folgenden Zeilen
                         // Wenn du sie alle haben willst, setze weatherAddDefaultItems=true in der Konfiguration ganz oben und lass die folgenden Zeilen so wie sie sind!
              
                         /*
              
                         
              
                          Bright Sky*/,
                         {
                             type: 'template',
                             template: 'text.brightsky.sunriseset',
                             dpInit: `/^brightsky\\.0\\.daily\\.00.+/`,
                             modeScr: 'bottom',
                         },
                          //Bottom 2 - brightsky.0. Forecast Day 1
                         {
                             type: 'template',
                             template: 'text.brightsky.bot2values',
                             dpInit: `/^brightsky\\.0\\.daily\\.01/`,
                             modeScr: 'bottom',
                         },
              
                         // Bottom 3 - brightsky.0. Forecast Day 2
                         {
                             type: 'template',
                             template: 'text.brightsky.bot2values',
                             dpInit: `/^brightsky\\.0\\.daily\\.02/`,
                             modeScr: 'bottom',
                         },
              
                         //Bottom 4 - brightsky.0. Forecast Day 3
                         {
                             type: 'template',
                             template: 'text.brightsky.bot2values',
                             dpInit: `/^brightsky\\.0\\.daily\\.03/`,
                             modeScr: 'bottom',
                         },
              
                         // Bottom 5 - brightsky.0. Forecast Day 4
                         {
                             type: 'template',
                             template: 'text.brightsky.bot2values',
                             dpInit: `/^brightsky\\.0\\.daily\\.04/`,
                             modeScr: 'bottom',
                         },
                         // Bottom 6 - brightsky.0. Forecast Day 5
                         {
                             type: 'template',
                             template: 'text.brightsky.bot2values',
                             dpInit: `/^brightsky\\.0\\.daily\\.05/`,
                             modeScr: 'bottom',
                         },
                         // Bottom 7 - brightsky.0. Forecast Day 6
                         {
                             type: 'template',
                             template: 'text.brightsky.bot2values',
                             dpInit: `/^brightsky\\.0\\.daily\\.06/`,
                             modeScr: 'bottom',
                         },
                         // Bottom 8 - Windgeschwindigkeit
                         {
                             type: 'template',
                             template: 'text.brightsky.windspeed',
                             dpInit: `/^brightsky\\.0\\.current./`,
                             modeScr: 'bottom',
                         },
                         // Bottom 9 - Boen
                         {
                             type: 'template',
                             template: 'text.brightsky.windgust',
                             dpInit: `/^brightsky\\.0\\.current./`,
                             modeScr: 'bottom',
                         },
              
                         // Bottom 10 - Windrichtung
                         {
                             type: 'template',
                             template: 'text.brightsky.winddirection',
                             dpInit: `/^brightsky\\.0\\.current./`,
                             modeScr: 'bottom',
                         },
                         // Bottom 10 - Solar
                         {
                             type: 'template',
                             template: 'text.brightsky.solar',
                             dpInit: `/^brightsky\\.0\\.current./`,
                             modeScr: 'bottom',
                         },
                         
                     ],
              
                     leftScreensaverEntity: [
                         // leftScreensaverEntity 1 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.NSPanel.Flur.Sensor.ANALOG.Temperature.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 1,
                             ScreensaverEntityIconOn: 'thermometer',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Temperatur',
                             ScreensaverEntityUnitText: '°C',
                             ScreensaverEntityIconColor: {val_min: 0, val_max: 35, val_best: 22},
                         },
                         // leftScreensaverEntity 2 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.Heizung.WärmeTagesVerbrauch.ACTUAL',
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 1,
                             ScreensaverEntityIconOn: 'counter',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Wärme',
                             ScreensaverEntityUnitText: ' kWh',
                             ScreensaverEntityIconColor: MSYellow, //{'val_min': 0, 'val_max': 5000}
                         },
                         // leftScreensaverEntity 3 (only Advanced Screensaver)
                         {
                             type: 'script',
                             ScreensaverEntity: 'alias.0.Haus.Abfall.event1.INFO'/*Info*/,
                             ScreensaverEntityFactor: 1,
                             ScreensaverEntityDecimalPlaces: 0,
                             ScreensaverEntityDateFormat: {year: 'numeric', month: '2-digit', day: '2-digit'},
                             ScreensaverEntityIconOn: 'trash-can',
                             ScreensaverEntityIconOff: null,
                             ScreensaverEntityText: 'Abfall',
                             ScreensaverEntityUnitText: '',
                             ScreensaverEntityIconColor: '0_userdata.0.vis.Abfallkalender.1.color',
                         },
                     ],
              
                     // Status Icon 
                     mrIcon1ScreensaverEntity: {
                         type: 'script',
                         ScreensaverEntity: 'Relay.1',
                         ScreensaverEntityIconOn: 'lightbulb',
                         ScreensaverEntityIconOff: null,
                         ScreensaverEntityValue: null,
                         ScreensaverEntityValueDecimalPlace: 0,
                         ScreensaverEntityValueUnit: null,
                         ScreensaverEntityOnColor: On,
                         ScreensaverEntityOffColor: HMIOff
                     },
                     mrIcon2ScreensaverEntity: {
                         type: 'script',
                         ScreensaverEntity: 'Relay.2',
                         ScreensaverEntityIconOn: 'lightbulb',
                         ScreensaverEntityIconOff: null,
                         ScreensaverEntityValue: null,
                         ScreensaverEntityValueDecimalPlace: 0,
                         ScreensaverEntityValueUnit: null,
                         ScreensaverEntityOnColor: On,
                         ScreensaverEntityOffColor: HMIOff
                     },
                     // ------ DE: Ende der Screensaver Einstellungen --------------------
                     // ------ EN: End of screensaver settings ---------------------------
              
                     //-------DE: Anfang Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
                     //-------EN: Start Settings for Hardware Button, if used in software (Rule2) --------------------------------------
                     // DE: Konfiguration des linken Schalters des NSPanels
                     // EN: Configuration of the left switch of the NSPanel
                     buttonLeft: {
                         // DE: Mögliche Werte wenn Rule2 definiert: 'page', 'switch', 'set' - Wenn nicht definiert --> mode: null
                         // EN: Possible values if Rule2 defined: 'page', 'switch', 'set' - If not defined --> mode: null
                         mode: 'switch',
                         // DE: Zielpage - Verwendet wenn mode = page
                         // EN: Target page - Used if mode = page
                        state: '0_userdata.0.Schalter.AstronautOGB',
                     },
              
                     // DE: Konfiguration des rechten Schalters des NSPanels
                     // EN: Configuration of the right switch of the NSPanel
                     buttonRight: {
                         mode: 'switch',
                         state:'0_userdata.0.Schalter.Essenfertig'/*Essenfertig*/,
                         
                     },
              
                     //--------- DE: Ende - Einstellungen für Hardware Button, wenn Sie softwareseitig genutzt werden (Rule2) -------------
                     //--------- EN: End - settings for hardware button if they are used in software (Rule2) ------------------------------
              

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

                @ilovegym

                zeige mir mal die Ordnerstrucktur von '0_userdata.0.vis.Abfallkalender'

                1 Reply Last reply Reply Quote 0
                • ilovegym
                  ilovegym last edited by

                  @tt-tom

                  Screenshot 2025-10-13 at 07.42.08.png

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

                    Achtung! - BREAKING change in der Tasmota Firmware

                    Tasmota 15.1.0 hat ungenannte Änderungen, die das flashen der TFT Firmware unmöglich machen

                    nicht updaten auf die neuste Tasmota Version

                    Wir sind dran. 🙂

                    ilovegym 1 Reply Last reply Reply Quote 1
                    • ilovegym
                      ilovegym @ticaki last edited by

                      @ticaki

                      feature-request: halte die Update-Meldung im Adapter zurueck, bis es getestet wurde.. hab heute morgen schon eins gemacht.. 🙂

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

                        @ilovegym

                        Sind 2 Dinge die aktuell bei der Tasmota 15.1.0 zur Spaßbremse werden:

                        • FlashNextion kommt mit Fehler zurück oder zeigt falsches Model. Zumindest führt kein Flash mehr zum Erfolg!
                        • Nur die tasmota (release-nspanel) nutzt aktuell den PSRAM (4MB) vom ESP32
                        ilovegym 1 Reply Last reply Reply Quote 0
                        • ilovegym
                          ilovegym @Armilar last edited by

                          @armilar danke fuer die Details, interessant. Ich nutze generell die tasmota32-nspanel.bin - der Adapter laedt immer die tasmota32-de was ich jedesmal wieder umflashe 🙂

                          @ticaki bitte im Adapter auf tasmota32-nspanel.bin umstellen.. 🙂

                          Soll ich Issues auf Git machen, damits net vergessen geht?

                          1 Reply Last reply Reply Quote 0
                          • T
                            ticaki @ilovegym last edited by ticaki

                            @ilovegym

                            Im Adapter? ... wühl guck ... mist

                            Das war anders gedacht - ok mache ich gleich.

                            EDIT: Ich stelle da erst was um wenn wir das durch diskutiert haben.

                            EDIT2: Adapter kann zur alten zurück flashen - gleich gib mir mal 20 Min.

                            ilovegym 1 Reply Last reply Reply Quote 1
                            • ilovegym
                              ilovegym @ticaki last edited by

                              @ticaki sagte in Betatest NSPanel-lovelace-ui v0.6.x:

                              @ilovegym

                              Im Adapter? ... wühl guck ... mist

                              Das war anders gedacht - ok mache ich gleich.

                              EDIT: Ich stelle da erst was um wenn wir das durch diskutiert haben.

                              ok, Bier, Wein oder Whiskey?

                              Flashen muss nicht der Adapter, kann ich auch selbst, ist ja nurn klick..aber fuer die Zukunft.. da sollte man immer das sicherere bin nehmen.. und ich meine, im nspanel.bin ist mehr dafuer aufgeraeumt und optimiert..

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                ticaki @ilovegym last edited by

                                @ilovegym

                                Die nspanel-version war bis vor 1 Stunde für mich eine mit unnötigen und überflüssigen Funktionen angefüllte Version, die war nicht sicherer. Jetzt ist sie das noch immer - aber die andere geht ja nicht mehr.

                                ilovegym 1 Reply Last reply Reply Quote 1
                                • ilovegym
                                  ilovegym @ticaki last edited by

                                  @ticaki ah.. ok.. so gesehen.. haste Recht.. 🙂 ich dachte immer, ihr braucht das... und wenn man eine eigene macht? Reduziert auf das, was man braucht, den Rest raus.. normal sind meine Displays sowieso nicht im Internet, und bei Tasmota hab ich sogar v7 und 9 irgendwo .. bei der 5er und 6er gabs ja damals noch viele wifi connect faults.. aber das war noch, als man das selber compilieren musste.. Das Ding ist ja mittlerweile so ueberladen..

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    ticaki @ilovegym last edited by

                                    @ilovegym
                                    Also lt. @Armilar ghet das flashen mit 15.1.0 mit keiner version - es wird nur mehr psram angezeigt - adapter update kommt gleich - ja rückwärts gehen hat geklappt. Ich mache ne neue Verison

                                    Wenn du mit der "besseren" Unlock/Alarm probleme hast bitte melden, sind da laufend am rumschrauben 🙂

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

                                      Test and Release
                                      wenn das grün ist sollte sie auf npm sein - oder kurze zeit später

                                      Installation über benutzerdefiniert und dort:

                                      iobroker.nspanel-lovelace-ui@latest

                                      eintragen - dann wird das paket von npm genommen und die installation geht sehr zügig

                                      0.6.4 (2025-10-13)

                                      • (ticaki) use tasmota version from version.json
                                      • (ticaki) Added disarmed buttons (5–8) to UnlockPage, implemented a responsive two-column layout.
                                      • (ticaki) Improved NavigationAssignmentPanel to show per-panel notices in the lower overview, add a per-item trash icon (hover + mobile two-step confirmation)
                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      997
                                      Online

                                      32.3k
                                      Users

                                      80.9k
                                      Topics

                                      1.3m
                                      Posts

                                      20
                                      544
                                      72314
                                      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