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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • Rene55
      Rene55 @Armilar last edited by Rene55

      @armilar Ich hab irgendwas übersehen/überlesen: Meine Datenstruktur sieht so aus:

      NSP_Abfall_1.png

      und in 'color' ist eine '0' drin.

      
      script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
      
      T 1 Reply Last reply Reply Quote 0
      • T
        TT-Tom @Rene55 last edited by TT-Tom

        @Rene55
        Das Event wird nicht richtig erkannt. Nutzt du das aus Script???

        Stell mal Debug auf true.

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

          @tt-tom Ja mit dem Script und steht auf Debug. Was soll ich zeigen?

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

            @rene55
            Die config der Events und das log

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

              @tt-tom Die Konfiguration:

              const anzahlZeichenLoeschen: number = 0; // x Zeichen links vom String abziehen, wenn vor dem Eventname noch Text steht z.B. Strassenname; Standard = 0
              const jsonEventName1: string = 'Restmülltonne'; // Vergleichstring für Schwarze Tonne
              const customEventName1: string = 'Restmüll';        // benutzerdefinierter Text für schwarze Tonne
              const jsonEventName2: string = 'Verpackungen'; // Vergleichstring für Gelbe Tonne / Sack
              const customEventName2: string = 'Gelbe Tonne';       // benutzerdefinierter Text für gelbe Tonne
              const jsonEventName3: string = 'Papier';    // Vergleichstring für Blaue Tonne
              const customEventName3: string = 'Papiertonne';       // benutzerdefinierter Text für blaue Tonne
              const jsonEventName4: string = 'Biomüll';   // Vergleichstring für Braune Tonne
              const customEventName4: string = 'Bio';        // benutzerdefinierter Text für braune Tonne
              

              und das Log

              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Rohdaten von Instanz ical: [{"date":"Morgen ","event":"Restmüll (grau) // GEM","_class":"ical_Rene55 ical_tomorrow","_date":"2024-01-21T23:00:00.000Z","_end":"2024-01-22T23:00:00.000Z","_IDID":"grau-2024-01-22@mags.de","_allDay":true,"_private":false,"_rule":" ","location":"","_calName":"Rene55","_calColor":"#000000","_object":{"type":"VEVENT","params":[],"start":"2024-01-21T23:00:00.000Z","datetype":"date","end":"2024-01-22T23:00:00.000Z","dtstamp":"2024-01-21T19:00:27.000Z","uid":"grau-2024-01-22@mags.de","created":"2023-12-29T13:06:11.000Z","lastmodified":"2023-12-29T13:37:04.000Z","sequence":"0","status":"CONFIRMED","summary":"Restmüll (grau) // GEM","transparency":"OPAQUE","method":"PUBLISH"}},{"date":"In 3 Tagen ","event":"Altpapier (blau) // GEM","_class":"ical_Rene55 ical_3days","_date":"2024-01-23T23:00:00.000Z","_end":"2024-01-24T23:00:00.000Z","_IDID":"blau-2024-01-24@mags.de","_allDay":true,"_private":false,"_rule":" ","location":"","_calName":"Rene55","_calColor":"#000000","_object":{"type":"VEVENT","params":[],"start":"2024-01-23T23:00:00.000Z","datetype":"date","end":"2024-01-24T23:00:00.000Z","dtstamp":"2024-01-21T19:00:27.000Z","uid":"blau-2024-01-24@mags.de","created":"2023-12-29T13:06:11.000Z","lastmodified":"2023-12-29T13:37:04.000Z","sequence":"0","status":"CONFIRMED","summary":"Altpapier (blau) // GEM","transparency":"OPAQUE","method":"PUBLISH"}},{"date":"In 5 Tagen ","event":"Bioabfall (braun) // GEM","_class":"ical_Rene55 ical_5days","_date":"2024-01-25T23:00:00.000Z","_end":"2024-01-26T23:00:00.000Z","_IDID":"braun-2024-01-26@mags.de","_allDay":true,"_private":false,"_rule":" ","location":"","_calName":"Rene55","_calColor":"#000000","_object":{"type":"VEVENT","params":[],"start":"2024-01-25T23:00:00.000Z","datetype":"date","end":"2024-01-26T23:00:00.000Z","dtstamp":"2024-01-21T19:00:27.000Z","uid":"braun-2024-01-26@mags.de","created":"2023-12-29T13:06:11.000Z","lastmodified":"2023-12-29T13:37:04.000Z","sequence":"0","status":"CONFIRMED","summary":"Bioabfall (braun) // GEM","transparency":"OPAQUE","method":"PUBLISH"}},{"date":"29.01.2024 ","event":"Treppe","_class":"ical_Rene55 ","_date":"2024-01-28T23:00:00.000Z","_end":"2024-02-04T23:00:00.000Z","_section":"Treppe fegen","_IDID":"vbdvlermk3o4b7dgui0293h4d9@google.com","_allDay":true,"_private":false,"_rule":" rrule ","location":"","_calName":"Rene55","_calColor":"#000000","_object":{"type":"VEVENT","params":[],"start":"2024-01-28T23:00:00.000Z","datetype":"date","end":"2024-02-04T23:00:00.000Z","rrule":{"_cache":{"all":false,"before":[],"after":[],"between":[]},"origOptions":{"dtstart":"2023-11-06T00:00:00.000Z","freq":2,"wkst":{"weekday":6},"interval":4,"byweekday":[{"weekday":0}]},"options":{"freq":2,"dtstart":"2023-11-06T00:00:00.000Z","interval":4,"wkst":6,"count":null,"until":null,"bysetpos":null,"bymonth":null,"bymonthday":[],"bynmonthday":[],"byyearday":null,"byweekno":null,"byweekday":[0],"bynweekday":null,"byhour":[0],"byminute":[0],"bysecond":[0],"byeaster":null}},"dtstamp":"2024-01-21T19:00:27.000Z","uid":"vbdvlermk3o4b7dgui0293h4d9@google.com","created":"2022-01-01T11:41:28.000Z","description":"Treppe fegen","lastmodified":"2022-12-16T09:22:43.000Z","sequence":"2","status":"CONFIRMED","summary":"Treppe","transparency":"OPAQUE","method":"PUBLISH"}},{"date":"31.01.2024 ","event":"Verpackungen (gelb) // GEM","_class":"ical_Rene55 ","_date":"2024-01-30T23:00:00.000Z","_end":"2024-01-31T23:00:00.000Z","_IDID":"gelb-2024-01-31@mags.de","_allDay":true,"_private":false,"_rule":" ","location":"","_calName":"Rene55","_calColor":"#000000","_object":{"type":"VEVENT","params":[],"start":"2024-01-30T23:00:00.000Z","datetype":"date","end":"2024-01-31T23:00:00.000Z","dtstamp":"2024-01-21T19:00:27.000Z","uid":"gelb-2024-01-31@mags.de","created":"2023-12-29T13:06:11.000Z","lastmodified":"2023-12-29T13:37:04.000Z","sequence":"0","status":"CONFIRMED","summary":"Verpackungen (gelb) // GEM","transparency":"OPAQUE","method":"PUBLISH"}},{"date":"05.02.2024 ","event":"Restmüll (grau) // GEM","_class":"ical_Rene55 ","_date":"2024-02-04T23:00:00.000Z","_end":"2024-02-05T23:00:00.000Z","_IDID":"grau-2024-02-05@mags.de","_allDay":true,"_private":false,"_rule":" ","location":"","_calName":"Rene55","_calColor":"#000000","_object":{"type":"VEVENT","params":[],"start":"2024-02-04T23:00:00.000Z","datetype":"date","end":"2024-02-05T23:00:00.000Z","dtstamp":"2024-01-21T19:00:27.000Z","uid":"grau-2024-02-05@mags.de","created":"2023-12-29T13:06:11.000Z","lastmodified":"2023-12-29T13:37:04.000Z","sequence":"0","status":"CONFIRMED","summary":"Restmüll (grau) // GEM","transparency":"OPAQUE","method":"PUBLISH"}}]
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Anzahl Trash - Daten: 6
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Daten vom ical Adapter werden ausgewertet
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: --------- Nächster Termin wird geprüft ---------
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Startdatum UTC: 2024-01-21T23:00:00.000Z
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Datum: Morgen
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Event: Restmüll (grau) // GEM
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Kontrolle Leerzeichen %Restmüll (grau) // GEM%
              2024-01-21 20:00:27.863 - warn: javascript.0 (364) script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Daten vom ical Adapter werden ausgewertet
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: --------- Nächster Termin wird geprüft ---------
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Startdatum UTC: 2024-01-23T23:00:00.000Z
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Datum: In 3 Tagen
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Event: Altpapier (blau) // GEM
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Kontrolle Leerzeichen %Altpapier (blau) // GEM%
              2024-01-21 20:00:27.863 - warn: javascript.0 (364) script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
              2024-01-21 20:00:27.863 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Daten vom ical Adapter werden ausgewertet
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: --------- Nächster Termin wird geprüft ---------
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Startdatum UTC: 2024-01-25T23:00:00.000Z
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Datum: In 5 Tagen
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Event: Bioabfall (braun) // GEM
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Kontrolle Leerzeichen %Bioabfall (braun) // GEM%
              2024-01-21 20:00:27.864 - warn: javascript.0 (364) script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Daten vom ical Adapter werden ausgewertet
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: --------- Nächster Termin wird geprüft ---------
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Startdatum UTC: 2024-01-28T23:00:00.000Z
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Datum: 29.01.2024
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Event: Treppe
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Kontrolle Leerzeichen %Treppe%
              2024-01-21 20:00:27.864 - warn: javascript.0 (364) script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Daten vom ical Adapter werden ausgewertet
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: --------- Nächster Termin wird geprüft ---------
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Startdatum UTC: 2024-01-30T23:00:00.000Z
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Datum: 31.01.2024
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Event: Verpackungen (gelb) // GEM
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Kontrolle Leerzeichen %Verpackungen (gelb) // GEM%
              2024-01-21 20:00:27.864 - warn: javascript.0 (364) script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Daten vom ical Adapter werden ausgewertet
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: --------- Nächster Termin wird geprüft ---------
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Startdatum UTC: 2024-02-04T23:00:00.000Z
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Datum: 05.02.2024
              2024-01-21 20:00:27.864 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Event: Restmüll (grau) // GEM
              2024-01-21 20:00:27.865 - info: javascript.0 (364) script.js.common.NSPanel.Abfall: Kontrolle Leerzeichen %Restmüll (grau) // GEM%
              2024-01-21 20:00:27.865 - warn: javascript.0 (364) script.js.common.NSPanel.Abfall: Kein Abfalltermin => Event passt mit keinem Abfallnamen überein.
              2024-01-21 20:00:32.916 - info: ical.0 (6453) Terminated (NO_ERROR): Without reason
              2024-01-21 20:00:33.464 - info: host.iobroker-pmx instance system.adapter.ical.0 terminated with code 0 (NO_ERROR)

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

                @doggie

                Wenn man erstmal verstanden hat wie es geht, dann ist es einfach und geht auch verdammt schnell. Ich habe über 3000 Zeilen "nur Config" und von der Struktur her ist das meiste auch in jedem NSPanel vorhanden.

                Wie @TT-Tom schon korrekt erwähnt hat ist bei einem Info nur ein .ACTUAL vorhanden und das reicht auch aus. Also jedes Icon in einer cardGrid oder cardEntities ist genau ein Alias vom Gerätetyp XYZ.
                Manche Alias Geräte-Typen wie z.B. eine Lampe haben mehrere Eigenschaften. Eine "Info" nicht. Die liefert genau einen Wert eines Datenpunktes und ist somit auch ein eigenes pageItem.
                Wenn nun diverse Werte eines Gaszählers (hast ja eigentlich nie Infos zu den Datenpunkten geliefert) angezeigt werden sollen, dann ist jeder Wert des Gaszählers ein Alias vom Geräte-Typ Info.

                Bei den ganz komplexen Aliassen legen wir die ja automatisch an (z.B. Gerätetyp media bei der cardMedia)

                Wenn ich einmal "Gaszähler" angelegt habe und dann wieder lösche (wegen meiner Probiererei) bekomme ich bei dem nächsten Anlegen von "Gaszähler" nicht mehr das Fenster angezeigt, wo ich die Datenpunkte auswählen kann. Dann wird gleich ein Gerät Gaszähler mit Icon angezeigt. Ich muss dann "Gaszähler 2" oder "Gaszähler neu" anlegen.

                Ist manchmal so. Der Device-Manager ist leider nicht der perfekteste Adapter und eben auch an vielen Stellen fehlerbehaftet. Dummerweise auch der einzige der es "einfach" hinbekommt. Sollten irgendwo Reste eines Alias warum auch immer nach dem Löschen noch vorhanden sein, so lassen sich diese auch unter Objekte alias.0... löschen.

                Wenn man die Rollen, Channels und der Aliasse erst einmal verstanden hat, kann man sie auch per Hand anlegen. Aber auch da gibt es genügend Fallstricke. Würde also weiterhin den Geräte-Manager verwenden. Wenn etwas nicht geht, dann einfach hier eine Frage stellen. Habe zu fast jedem Alias mittlerweile raus, wie man die Bug's (auch wenn es langsam nervt) umgeht und dennoch zu einem positiven Ergebnis kommt 😉

                Da der Alias-Manager nun etwas sehr komplex und ebenfalls alles andere als intuitiv ist, würde ich dir die Erstellung dort ebenfalls nicht empfehlen...

                Ich denke nach der ganzen Probiererei, wird es in einem hohen Tempo vorwärts gehen... 😊

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

                  @rene55 dein jsonEvent passt nicht zum Event vom iCal. Z. B. iCal Restmüll (grau) // GEM und jsonEvent Restmülltonne. Diese beiden Werte müssen immer gleich sein.
                  Also muss

                  jsonEventName1: string = 'Restmüll (grau) // GEM';
                  
                  Rene55 1 Reply Last reply Reply Quote 1
                  • Rene55
                    Rene55 @TT-Tom last edited by Rene55

                    @tt-tom Ah, kompletter Eintrag. I will try.

                    Edit: Danke, so hat es funktioniert. Die Datenpunkte sind abgefüllt. Panel mache ich morgen.

                    Gibt es auch die Möglichkeit für jsonEventName5 ?

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

                      @rene55

                      Kenne jetzt zwar "jsonEventName5" nicht, aber wenn das weitere Einträge des Abfallkalenders sind - warum nicht?

                      Als Subpages kannst du nach rechts ja weitere Seiten durchlaufen, die dann 5-8, 9-12, etc. beinhalten...

                      Wahrscheinlich müsste das "Abfall"-Script nur dahingehend angepasst werden, die restlichen Daten zu verarbeiten und in weitere Datenpunkte zu legen.

                      Rene55 1 Reply Last reply Reply Quote 0
                      • Rene55
                        Rene55 @Armilar last edited by

                        @armilar Da sollen die Termine für die Treppnhausreinigung rein. Sind auch im Kalender geführt. Ich weiß ja nicht, ob es da ein Limit gibt.

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

                          @rene55

                          Das NSPanelTs.ts kennt keine Limitierungen... Du kannst wirklich "unendlich" viele Seiten für das NSPanel anlegen...

                          T Rene55 2 Replies Last reply Reply Quote 0
                          • T
                            TT-Tom @Armilar last edited by

                            @armilar das Script ist da limitiert. Mache ich morgen fertig.

                            Rene55 Armilar 2 Replies Last reply Reply Quote 1
                            • Rene55
                              Rene55 @Armilar last edited by

                              @armilar Ich werd mal schauen, wenn ich morgen die 'Kachel' mache. Dann gibt es vllt. weitere Fragen. 😊
                              Tatsächlich ist das Script für 4 Einträge ausgelegt - sollte ich aber hinkriegen.

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

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

                                Mache ich morgen fertig.

                                Wow, Danke! 👍

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

                                  @tt-tom

                                  Das meinte ich ja - im Beitrag darüber...

                                  Einfach aufbohren und weitere Events abfragen...

                                  @Rene55
                                  Nicht dabei vergessen, dass der ical eine Einstellung hat, die die Anzahl an Tagen berücksichtigt... und ggfs. höher werden muss.

                                  Rene55 1 Reply Last reply Reply Quote 1
                                  • T
                                    ticaki Developer @Doggie last edited by

                                    @doggie
                                    Wollte das nur klar stellen, wenn Tom oder Armilar von einem Alias sprechen meinen sie meistens einen Channel und einen Datenpunkt. 🙂

                                    Armilar 1 Reply Last reply Reply Quote 3
                                    • Rene55
                                      Rene55 @Armilar last edited by

                                      @armilar Ich hab ne Vorschau von 15 Tagen eingestellt - und Treppe fegen dauert immer eine Woche.

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

                                        @ticaki sagte in SONOFF NSPanel mit Lovelace UI:

                                        wenn Tom oder Armilar von einem Alias sprechen meinen sie meistens einen Channel

                                        @Doggie
                                        nein - meinen sie eigentlich immer 😉

                                        Ohne channel ist ein Alias nutzlos.

                                        Für alle Fälle hier nochmal aufgeführt:
                                        https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-ALIAS-Table

                                        und etwas Lektüre:
                                        https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-ALIAS-Definitionen

                                        Rene55 D 2 Replies Last reply Reply Quote 1
                                        • K
                                          Kuckuckmann last edited by

                                          Leute wir brauchen noch 14 Posts bis zur Nummer 5000
                                          Auf gehts

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

                                            @kuckuckmann
                                            Glaube nicht das ich jetzt anfange hier sinnlos rumzuposten... echt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            537
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            263
                                            7225
                                            4957669
                                            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