Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen

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

      @dirk-peter
      Hallo Dirk, hallo Hunter-Freunde,

      mit der SuFu habe ich keine Antwort auf meine Frage erhalten.

      Welchen Wert stellt ihr beim Sprinklerverbrauch ein? Bildschirmfoto 2022-07-05 um 10.16.41.png

      Ich habe mehrere MP Rotatoren im Einsatz. Mit der Milchmädchenrechnung, dass ein MP Rotator z.B. 1,40 Liter pro Minute, also 84 Liter pro Stunde benötigt, würde ich meinen kompletten Bewässerungsstrang ausrechnen.
      f7673a37-8253-4fb9-a94c-7c2b675502ed-image.png
      Quelle:
      https://novelta-shop.de/montage-anleitungen/mp-rotatoren-leistungen/

      In Summe komme ich dann auf circa 1.100 l/h. Das ist doch dann die Zahl, welche ich dort einzutragen haben, richtig?

      Ich bin ein wenig Irritiert darüber, dass ich dem Adapter keine Größe der zu beregneten Fläche mitgeben muss. Macht es nicht einen gewaltigen Unterschied auf die Niederschlagsmenge, ob ich mit 1.100l/h nur 1m2 oder 100m2 bewässere?

      Dirk Peter 1 Reply Last reply Reply Quote 0
      • Dirk Peter
        Dirk Peter @SaschaS last edited by

        @saschas
        Hallo,

        In Summe komme ich dann auf circa 1.100 l/h. Das ist doch dann die Zahl, welche ich dort einzutragen haben, richtig?

        richtig!

        Ich bin ein wenig Irritiert darüber, dass ich dem Adapter keine Größe der zu beregneten Fläche mitgeben muss. Macht es nicht einen gewaltigen Unterschied auf die Niederschlagsmenge, ob ich mit 1.100l/h nur 1m2 oder 100m2 bewässere?

        Die Wassermenge wird über die Zeit bestimmt. Ich brauche die Durchflussmenge für die Pumpe! Weil diese ja entscheidet, welche Kreise zusammen laufen können.

        MfG Dirk Peter

        S 1 Reply Last reply Reply Quote 0
        • S
          SaschaS @Dirk Peter last edited by

          @dirk-peter

          Ich brauche die Durchflussmenge für die Pumpe! Weil diese ja entscheidet, welche Kreise zusammen laufen können.

          Macht Sinn. Habe ich bei mir aber auch schon extra durch "Maximaler Parallelbetrieb der Ventile = 1 " vorgegeben.

          Die Wassermenge wird über die Zeit bestimmt.

          Wenn die Durchlussmenge der Ventile nicht in die Bewässerungsdauer eingeht, dann verstehe ich das noch nicht. Kannst du mir das bitte Erklären @dirk-peter.

          Mit meinen Einstellungen habe ich in den letzten Zyklen festgestellt, dass die Bewässerungszeit jeweils deutlich über den 60min, eher bei 120 min lagen. Beim letzten Vorgang 1:44 Std. Das ist ja laut Vorgabe auch i.O., da < 200%.

          5c9ceb5a-aec3-4038-a7af-e07fc0f216ce-image.png

          Frage: Wie errechnet sich die Bewässerungsdauer? Und wo genau kommt in der Formel die Restriktion zur Variable "maximale Bodenfeuchtigkeit nach der Bewässerung in (mm)" vor?
          Zum Start der Bewässerung lag der actualSoilMoisture bei 13.60 %.
          Die Steigung von actualSoilMoisture ist nahezu konstant. Hast du da eine fixe Steigung hinterlegt? 🤔
          ccb06950-da52-4e8e-8f7e-45ab8a30fa87-image.png

          Wenn ich jetzt rechne, dass die Hunter MP Rotatoren im Durchschnitt 10mm/h/m2 (bei quadratischer Kopf-zu-Kopf Anordnung) abgeben, dann habe ich nach 1:44 Std circa 17,5 Liter / m2 ausgebracht. Das ist schon ne ordentliche Portion Wasser. Insbesondere sind das dann mehr als die 8mm, welche ich vorgegeben habe.

          So ganz klar ist mir die Berechnung noch nicht.

          Ansonsten ist das ein affengeiler Adapter!!! Schon lange nicht mehr so was pragmatisches und nützliches gesehen! Großes Lob und vielen Dank für deine Mühe, insb. zu den physikalischen Formeln.

          Dirk Peter 1 Reply Last reply Reply Quote 0
          • Dirk Peter
            Dirk Peter @SaschaS last edited by

            @saschas
            Hallo,

            Habe ich bei mir aber auch schon extra durch "Maximaler Parallelbetrieb der Ventile = 1 " vorgegeben.

            Der Adapter ist aber auch für kräftigere Pumpen entwickelt. Bei mir laufen z.B. bis zu 3 Kreise Parallel

            Bild1.jpg

            Diese Zeichnung sollte alles erklären! Alle grau eingekreiste Werte stammen aus deiner Konfiguration und mit diesen kann man alles erklären und berechnen.
            MfG Dirk Peter

            S 1 Reply Last reply Reply Quote 0
            • S
              SaschaS @Dirk Peter last edited by SaschaS

              @dirk-peter Herzlichen Dank für dein Diagramm. Kleine Rückfragen habe ich noch.

              Entsprechend die Parameter
              5d8a9a70-694a-41c7-9221-36823e126c1b-image.png
              immer
              Bewässerungszeit in min = 50 % acutalSoilMoisture auf der (Y-Achse deiner Grafik)
              Maximale Bewässerungsverlängerung in % = 0 % acutalSoilMoisture auf der (Y-Achse deiner Grafik)

              Wenn dem so ist, dann hätte ich verstanden, dass ich die zwei Parameter

              • Maximale Bewässerungsverlängerung in %
              • maximale Bodenfeuchtigkeit nach der Bewässerung in (mm)),
                habe, welche mir die Steigung (dunkelblaue Linie) festlegen.

              So ganz macht meine Annahme keinen Sinn.

              Gedankenexperiment:
              Wenn ich meinen Einstellungen Maximale Bewässerungsverlängerung in % = 100% (also keine Verlängerung erlaubt) setze, würde ich dann folgendes Bild erhalten? Meine Annahme habe ich mit rot eingetragen. -> Steigung wird steiler.
              d6e45119-a0f2-4c4f-a1cc-666e12c3d030-image.png

              Oder unter der Annahme, dass Bewässerungszeit in min = 50 % acutalSoilMoisture auf der (Y-Achse deiner Grafik) gilt, sich zunächst das gleiche Bild ergibt mit Schnittpunkt (120,0), aber lediglich 60 Minuten bewässert wird. Dann würde ich errechnen, dass ich nach 60 Minuten Bewässerung bei acutalSoilMoisture = 63,44 % (=13,6 + 49,84) lande.
              Herleitung: (100% - 13,6%) = 86,4%. => 86,4% in 140 Minuten => 0,83076% Pro Minute => In 60 Minuten 49,84%

              Dirk Peter 1 Reply Last reply Reply Quote 0
              • Dirk Peter
                Dirk Peter @SaschaS last edited by

                @saschas Hallo,
                falsche Annahme! Die Gerade bleibt die gleiche, da ja immer noch runningTime = 60 min (≙ max. Bodenfeuchtigkeit = 8 mm) und Einschaltpunkt = 50 %. Die Bewässerungszeit wird nur auf 100 % begrenzt und der Bewässerungskreis fährt mit der braunen Gerade zurück auf 100 %.
                Bild2.jpg
                MfG Dirk Peter

                S 1 Reply Last reply Reply Quote 0
                • G
                  gyle last edited by

                  ich habe eine frage zur pumpensteuerung:
                  meine "hauptpumpe" ist die in der Zisterne...
                  sehe ich es richtig, dass die hauptpumpe immer ausgeschaltet ist, wenn gerade keine bewässerung läuft?
                  Kann ich das auch verhindern? Hintergrund ist, dass ich auch Wassersteckdosen habe, auf denen immer druck anliegen soll (ohne ventile).
                  Müsste ich dann einfach die Angabe der Pumpe weglassen, oder wir löst man das?

                  Danke

                  1 Reply Last reply Reply Quote 0
                  • S
                    SaschaS @Dirk Peter last edited by

                    @dirk-peter Ich hab mit vielem gerechnet, aber das Bild ergibt in meinem Kopf am wenigsten Sinn. Sorry, dass ich da jetzt noch einmal nachfrage - ich will das unbedingt verstehen. Ich hoffe du kannst mir erneut helfen. Ich erkläre mich auch gerne bereit das anschließend Idiotensicher aufzuschreiben, dass wir das der Doku beifügen können.

                    Was mich an deinem letzten Bild irritiert ist die Aussage, dass man bei den 13,6% man innerhalb von 60 Minuten (braune Linie von dir) wieder bei den 100% (≙ max. Bodenfeuchtigkeit = 8 mm) ist. Wäre ich jetzt anstatt bei 13,6% bei 40% (rote durchgezogene Linie), dann folgt doch nach der gleichen Logik wieder, dass ich nach 60 Minuten (rote gestrichelte Linie) bei 100% (≙ max. Bodenfeuchtigkeit = 8 mm) bin.
                    Ich hätte erwartet, dass ich es aber doch von der runningTime einen Unterschied machen muss, ob ich bei 13,6% oder 40% (beides unterhalb des Schwellwertes von 50%) mit der Bewässerung beginne.

                    Vielleicht hilft ein weiteres fiktives Beispiel:
                    Bewässerungszeit in min: 40
                    maximale Bewässerungsverlängerung in %: 300
                    Einschaltpunkt (Bodenfeuchtigkeit) des Bewässerungsventile in %: 60
                    maximale Bodenfeuchtigkeit nach der Bewässerung in (mm): 8

                    Diese Größen kann ich in das Diagramm noch einzeichnen
                    43dedec6-c4bd-41f6-92bc-43d60348401d-image.png

                    Aber ab dann verstehe ich die Zusammenhänge nicht nicht mehr.
                    Nach deiner letzten Aussage, hatte ich jetzt verstanden, dass runningTime = 40 min (≙ max. Bodenfeuchtigkeit = 8 mm) und Einschaltpunkt = 60% maßgeblich für die Steigung sind.
                    9baf8d98-80ea-461e-914f-fab1cdf92449-image.png

                    Aus dem Bild würde ich dann schon einmal ablesen, dass der Bewässerungskreis niemals länger als 100 Minuten laufen muss um wieder auf 100% zu kommen?
                    Bei einer Feuchtigkeit im Boden von 20 % zum Start der Bewässerung würde ich dann eine runningTime von 80 Minuten erwarten?
                    3123769e-9630-409a-9539-2766ec4f7f11-image.png

                    Dirk Peter 1 Reply Last reply Reply Quote 0
                    • Dirk Peter
                      Dirk Peter @SaschaS last edited by

                      @saschas Oh Sorry, da habe ich Mist erzählt!
                      Berechnung der Rücklauf Gerade:

                      /** @type {number} */   newThread.soilMoisture15s = 15 * (myConfig.config[res.sprinkleID].soilMoisture.maxIrrigation - myConfig.config[res.sprinkleID].soilMoisture.triggersIrrigation)
                                                                                          / (60 * myConfig.config[res.sprinkleID].wateringTime);
                      

                      Bild3.jpg
                      Da dies aber auf Dauer Quatsch ist und der Bewässerungskreis Täglich starten würde gibt es die Funktion Bodenfeuchtigkeit = 100% nach der Bewässerung, womit wir wieder bei 100% sind.
                      So das sollte es jetzt gewesen sein,
                      MfG Dirk Peter

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        SaschaS @Dirk Peter last edited by SaschaS

                        @dirk-peter Sowohl das Bildchen als auch die Funktion Bodenfeuchtigkeit = 100% nach der Bewässerung machen Sinn. Damit kann ich/man was anfangen. Ich schreibe das die Tage mal auf 🙂

                        Kannst du mir noch kurz beantworten, was in unserem Beispiel die Werte in der Formel wären:
                        maxIrrigation = 8mm
                        triggersIrrigation = 4mm
                        wateringTime = 60min

                        -> soilMoisture15s = 15 * (8mm-4mm) / (60 * 60min) = 15 * 4 / 3600 mm/s = 60 / 3600 mm/15s
                        -> Alle 15 Sekunden steigt Bodenfeuchte um 0,016666667 mm.

                        Das passt dann auch zu der Grafik: Anhand der Grafik (blaue Linie) errechne ich eine Steigung von (8-0) / 60* (120-0) = 8 / 7200 = 0,001111111 mm/s --> Also 0,016666667mm alle 15 Sekunden.

                        Yeah! Es macht einfach Spaß, wenn die Zahlen und Formeln aufgehen. 🙂

                        Dirk Peter 1 Reply Last reply Reply Quote 1
                        • Dirk Peter
                          Dirk Peter @SaschaS last edited by Dirk Peter

                          @saschas
                          1657033198365-5c9ceb5a-aec3-4038-a7af-e07fc0f216ce-image.png

                          maxIrrigation = 8mm

                          maximale Bodenfeuchtigkeit nach der Bewässerung in (mm)

                          triggersIrrigation = 4mm

                          Einschaltpunkt (Bodenfeuchtigkeit) des Bewässerungsventils in % x maxIrrigation [8mm * 50% = 4mm]

                          wateringTime = 60min

                          Bewässerungszeit in min

                          MfG Dirk Peter

                          1 Reply Last reply Reply Quote 0
                          • G
                            gyle last edited by gyle

                            Hi,

                            ich habe 3 Ventile - davon habe ich Nr. 1 & 3 per option "autoOn" deaktiviert.
                            577012f4-ef16-4b59-9e88-6998f5f17399-image.png

                            Dennoch startet die Bewässerung mit einem dieser Ventile (Bewässerung Garage:3.STATE).
                            Wo liegt das problem?

                            {
                              "_id": "system.adapter.sprinklecontrol.0",
                              "common": {
                                "name": "sprinklecontrol",
                                "version": "0.2.11",
                                "title": "Sprinkle Control",
                                "authors": [
                                  "Dirk Peter <dirk.peter@freenet.de>"
                                ],
                                "keywords": [
                                  "Sprinkle",
                                  "Irrigation",
                                  "Bewässerung",
                                  "Steuerung",
                                  "ioBroker"
                                ],
                                "docs": {
                                  "en": "docs/en/sprinklecontrol.md",
                                  "de": "docs/de/sprinklecontrol.md"
                                },
                                "license": "MIT",
                                "platform": "Javascript/Node.js",
                                "main": "main.js",
                                "icon": "sprinklecontrol.png",
                                "enabled": true,
                                "extIcon": "https://raw.githubusercontent.com/Dirk-Peter-md/ioBroker.sprinklecontrol/master/admin/sprinklecontrol.png",
                                "readme": "https://github.com/Dirk-Peter-md/ioBroker.sprinklecontrol/blob/master/README.md",
                                "loglevel": "info",
                                "mode": "daemon",
                                "type": "garden",
                                "compact": true,
                                "materialize": true,
                                "messagebox": true,
                                "stopBeforeUpdate": true,
                                "connectionType": "local",
                                "dataSource": "assumption",
                                "dependencies": [
                                  {
                                    "js-controller": ">=2.0.0"
                                  }
                                ],
                                "installedFrom": "iobroker.sprinklecontrol@0.2.11",
                                "installedVersion": "0.2.11",
                                "host": "iobroker"
                              },
                              "native": {
                                "triggerControlVoltage": "",
                                "maximumParallelValves": 1,
                                "switchingDistance": 500,
                                "triggerMainPump": "hm-rpc.1.SEQ0343973.4.STATE",
                                "triggerMainPumpPower": 750,
                                "cisternSettings": false,
                                "triggerCisternPump": "",
                                "triggerCisternPumpPower": 1800,
                                "actualValueLevel": "30",
                                "triggerMinCisternLevel": 25,
                                "wateringStartTime": "livingTime",
                                "timeShift": 0,
                                "weekLiving": "21:10",
                                "publicWeekend": true,
                                "weekEndLiving": "23:00",
                                "publicHolidays": true,
                                "publicHolInstance": "feiertage.0",
                                "latitude": "50.22116135719122",
                                "longitude": "8.683589310246877",
                                "notificationEnabled": false,
                                "sensorOutsideTemperature": "",
                                "sensorOutsideHumidity": "",
                                "sensorWindSpeed": "",
                                "sensorBrightness": "",
                                "sensorRainfall": "",
                                "weatherForecast": false,
                                "weatherForInstance": "",
                                "thresholdRain": 2,
                                "notificationsType": "Telegram",
                                "telegramInstance": "",
                                "telegramUser": null,
                                "telegramNoticeType": "longTelegramNotice",
                                "telegramWaitToSend": 0,
                                "telegramSilentNotice": false,
                                "telegramOnlyError": false,
                                "whatsappInstance": "",
                                "whatsappNoticeType": "longWhatsappNotice",
                                "whatsappWaitToSend": 0,
                                "whatsappOnlyError": false,
                                "pushoverInstance": "",
                                "pushoverNoticeType": "longPushoverNotice",
                                "pushoverWaitToSend": 0,
                                "pushoverDeviceID": "",
                                "pushoverSound": "",
                                "pushoverSilentNotice": false,
                                "pushoverOnlyError": false,
                                "emailReceiver": "xxx@xxx.com",
                                "emailSender": "xxx@xxx.com",
                                "emailInstance": "",
                                "emailNoticeType": "longEmailNotice",
                                "emailWaitToSend": 0,
                                "emailOnlyError": false,
                                "events": [
                                  {
                                    "enabled": true,
                                    "sprinkleName": "Bewässerung Garage:1.STATE",
                                    "name": "hm-rpc.1.SEQ0343973.1.STATE",
                                    "triggerID": "",
                                    "wateringTime": "20",
                                    "wateringAdd": "130",
                                    "wateringInterval": "0",
                                    "maxSoilMoistureIrrigation": "8",
                                    "maxSoilMoistureRainPct": "120",
                                    "triggersIrrigation": "50",
                                    "pipeFlow": "1100",
                                    "booster": false,
                                    "endIrrigation": true,
                                    "methodControlSM": "fixDay",
                                    "inGreenhouse": false,
                                    "triggerSM": "",
                                    "analogZPct": "0",
                                    "analogOHPct": "100",
                                    "startDay": "fixDay",
                                    "sun": true,
                                    "mon": true,
                                    "tue": true,
                                    "wed": true,
                                    "thur": true,
                                    "fri": true,
                                    "sat": true
                                  },
                                  {
                                    "enabled": true,
                                    "sprinkleName": "Rasen",
                                    "name": "hm-rpc.1.SEQ0343973.2.STATE",
                                    "triggerID": "",
                                    "wateringTime": "50",
                                    "wateringAdd": "130",
                                    "wateringInterval": "0",
                                    "maxSoilMoistureIrrigation": "8",
                                    "maxSoilMoistureRainPct": "120",
                                    "triggersIrrigation": "50",
                                    "pipeFlow": "370",
                                    "booster": false,
                                    "endIrrigation": false,
                                    "methodControlSM": "fixDay",
                                    "inGreenhouse": false,
                                    "triggerSM": "",
                                    "analogZPct": "0",
                                    "analogOHPct": "100",
                                    "startDay": "fixDay",
                                    "sun": true,
                                    "mon": true,
                                    "tue": true,
                                    "wed": true,
                                    "thur": true,
                                    "fri": true,
                                    "sat": true
                                  },
                                  {
                                    "enabled": true,
                                    "sprinkleName": "Bewässerung Garage:3.STATE",
                                    "name": "hm-rpc.1.SEQ0343973.3.STATE",
                                    "triggerID": "",
                                    "wateringTime": "20",
                                    "wateringAdd": "130",
                                    "wateringInterval": "0",
                                    "maxSoilMoistureIrrigation": "8",
                                    "maxSoilMoistureRainPct": "120",
                                    "triggersIrrigation": "50",
                                    "pipeFlow": "700",
                                    "booster": false,
                                    "endIrrigation": true,
                                    "methodControlSM": "fixDay",
                                    "inGreenhouse": false,
                                    "triggerSM": "",
                                    "analogZPct": "0",
                                    "analogOHPct": "100",
                                    "startDay": "fixDay",
                                    "sun": true,
                                    "mon": true,
                                    "tue": true,
                                    "wed": true,
                                    "thur": true,
                                    "fri": true,
                                    "sat": true
                                  }
                                ]
                              }
                            }
                            
                            Dirk Peter 1 Reply Last reply Reply Quote 0
                            • Dirk Peter
                              Dirk Peter @gyle last edited by

                              @gyle
                              Hallo, das ist ein Fehler im Adapter! Wenn man die Konfiguration speichert, so wird autoOn nicht neu ausgelesen. Am besten du deaktivierst die Bewässerungskreise direkt in der Konfiguration. Ich ändere es in der nächsten Version.
                              Danke für die Info, Dirk Peter

                              G 2 Replies Last reply Reply Quote 0
                              • G
                                gyle @Dirk Peter last edited by

                                @dirk-peter super danke dir!

                                1 Reply Last reply Reply Quote 0
                                • S
                                  SaschaS last edited by

                                  Hat man denn die Möglichkeit die einzelnen Sprinkler zu resetten?
                                  Bin ja noch am Experimentieren. Wenn ich acutalSoilMoisture im Expertenmodus schreibe, dann wird bei der nächsten Berechnung wieder der alte Wert errechnet. Ich würde gerne gezielt den acutalSoilMoisture vorgeben können.

                                  525a1b4e-6603-4a8f-ae81-0a468dd76c8d-image.png

                                  D 1 Reply Last reply Reply Quote 0
                                  • D
                                    dirkhe Developer @SaschaS last edited by

                                    @saschas adapter stoppen, wert ändern und wieder starten

                                    S 1 Reply Last reply Reply Quote 0
                                    • Z
                                      Zeptran @Dirk Peter last edited by

                                      @dirk-peter
                                      Hallo,

                                      ich habe das ganze entsprechend deiner Anleitung umgestellt.
                                      Funktioniert soweit super bis auf ein kleines Problem.

                                      Bei jedem Regen Tag wird der Tages Unterschied wieder überschrieben und laufen wieder parallel.

                                      Hast du hierfür noch einen Tipp für mich, wie ich das manuelle Umstellen umgehen kann?

                                      MfG
                                      Paul

                                      Dirk Peter 1 Reply Last reply Reply Quote 0
                                      • S
                                        SaschaS @dirkhe last edited by SaschaS

                                        @dirkhe dann war das wohl mein Fehler, dass ich den Adapter zuvor nicht gestoppt habe. Werde ich direkt mal probieren.

                                        Edit: Funktioniert! Danke

                                        1 Reply Last reply Reply Quote 0
                                        • Dirk Peter
                                          Dirk Peter @Zeptran last edited by

                                          @zeptran
                                          Hallo,
                                          lad dir mal die Version von GitHub zum Testen herunter. Hier ist ein Taster zum weiterschalten der Tage integriert und bei Regen sollten jetzt alle Kreise verschoben werden und nicht nur der aktive. Die Verschiebung der Kreise sollte also bestehen bleiben!
                                          Screenshot 1.jpg
                                          Das Laden von GitHub kann unter npm 6 bis zu 30 min dauern!
                                          MfG Dirk Peter

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            gyle @Dirk Peter last edited by

                                            @dirk-peter hast du schon eine Idee, wann du den fehler beheben willst?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            644
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            bodenfeuchte-sensoren gartenbewässerung sprinkle control wetterabhängig
                                            41
                                            295
                                            34864
                                            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