Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Steuerung Poolpumpe

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Steuerung Poolpumpe

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

      @GeorgS:

      Kann es vielleicht am Error liegen das es bei mir nicht geht? `
      Der Error ist neu. Verändere bitte die Startzeit_2 noch einmal.

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators last edited by

        @GeorgS:

        Kann es vielleicht am Error liegen das es bei mir nicht geht? `
        Dann sind wir bei einem ganz anderen Thema

        Wie gibst du die Zeit ein?

        EDIT:

        ein paar Zeilen vorher muss im log der "Wert" stehen - wie sieht der aus?

        Gruß

        Rainer

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

          @Homoran:

          ein paar Zeilen vorher muss im log der "Wert" stehen - wie sieht der aus? `
          Der ist noch "halb" zu erkennen: undefined

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

            @Homoran:

            @GeorgS:

            Kann es vielleicht am Error liegen das es bei mir nicht geht? `
            Dann sind wir bei einem ganz anderen Thema

            Wie gibst du die Zeit ein?

            EDIT:

            ein paar Zeilen vorher muss im log der "Wert" stehen - wie sieht der aus?

            Gruß

            Rainer `

            unter Objekte hinten in der Werte Zeile schreibe ich halt 19:35 und drücke enter dan blink es kurz grün und dann schau ich in den Log

            javascript.0 2018-06-13 17:28:09.270 info script.js.common.Pool.Filteranlage: 19:31

            und hoffe mal das das richtig ist.

            @paul53:

            @GeorgS:

            Kann es vielleicht am Error liegen das es bei mir nicht geht? Der Error ist neu. Verändere bitte die Startzeit_2 noch einmal.

            Mach ich nach jedem versuch muss ja eine neue Zeit eingeben 😃 der Error taucht jetzt auch nicht mehr auf habe das Script mehr mals aus und wieder an gemacht

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

              @GeorgS:

              habe das Script mehr mals aus und wieder an gemacht `
              Und nach dem letzten "an" den Wert für Startzeit_2 geändert ? Ohne Wertänderung <u>nach</u> Skriptstart passiert nix !

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                Und?

                Läuft es jetzt?

                Bei mir sieht das log so aus:

                javascript.0	2018-06-13 19:34:00.891	info	script.js.Hardware.Master.Poolsteuerung: Pumpe aus
                javascript.0	2018-06-13 19:33:00.893	info	script.js.Hardware.Master.Poolsteuerung: Pumpe aus
                javascript.0	2018-06-13 19:32:00.683	info	script.js.Hardware.Master.Poolsteuerung: Pumpe an
                javascript.0	2018-06-13 19:31:53.666	info	script.js.Hardware.Master.Poolsteuerung: 19:32
                

                Gruß

                Rainer

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

                  Nach der Zeit änderung passiert nix mehr
                  7208_1.png

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by

                    Dann mal ein paar debug-Blöcke an sinnvollen Stellen einbauen und beobachten

                    1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators last edited by

                      OHO!!!

                      Dein RasPi hat die falsche Uhrzeit!!!!

                      Der RasPi geht zwei Stunden nach

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

                        @Homoran:

                        Bei mir sieht das log so aus: `
                        Laufzeit_2 ist 2 Minuten ?
                        @GeorgS:

                        Nach der Zeit änderung passiert nix mehr `
                        Dann scheint schedule nicht zu funktionieren ? Teste mal das Skript

                        schedule('45 19 * * *', function() {
                           log('Schedule funktioniert');
                        });
                        
                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators last edited by

                          @paul53:

                          Laufzeit_2 ist 2 Minuten ? `
                          Ja!

                          Systemzeit bei Georg im log gesehen?

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

                            @Homoran:

                            Der RasPi geht zwei Stunden nach `
                            Stimmt ! Dann muss halt 2 Stunden gewartet werden, bis der Test-Schedule ausgeführt wird :lol:

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

                              Ich denke das Script geht jetzt es war wirklich die falsche Zeit auf dem Server…

                              Warum er aber sagt das der Testschalter nicht da ist weiß ich nicht 😞 Ich hab jetzt den DECT Schalter wieder genommen zum Testen
                              7208_1.png

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                Text editieren ist ja nett, aber wie ist das Ergebnis?

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

                                  @Homoran:

                                  Text editieren ist ja nett, aber wie ist das Ergebnis? `

                                  javascript.0 2018-06-13 19:55:00.821 warn script.js.common.Pool.Filteranlage: setForeignState(id=fritzdect.0.DECT200_087610446720.state, state=true) - was not executed, while debug mode is active

                                  habe jetzt noch den Debug ausgeschalten mal sehen 😃

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

                                    Es geht, na endlich…

                                    DANKE für eure Gedult mir und der supper hilfe... jetzt nur noch die 2. Zeit scripten und die Schadule :shock:

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

                                      Dann versuche es mal mit dem folgenden Blockly-Export (Datenpunkte "Test.Schalter" müssen getauscht werden).

                                      ! ````
                                      <xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_defnoreturn" id="Tt0xA0VHK,r.z*!/F^qy" x="-337" y="113"><mutation><arg name="val"></arg></mutation>
                                      <field name="NAME">setSchedule1</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      <statement name="STACK"><block type="variables_set" id=":TM{I_9V?m1Ee_.hPN{H"><field name="VAR">uhrzeit</field>
                                      <value name="VALUE"><block type="lists_split" id=",ZR]bZp7s68icCbFu}r{"><mutation mode="SPLIT"></mutation>
                                      <field name="MODE">SPLIT</field>
                                      <value name="INPUT"><block type="variables_get" id="Rr}ftb+:QVF{0BgH!lw"><field name="VAR">val</field></block></value>
                                      <value name="DELIM"><shadow type="text" id="Z_uEO+Fh)/BJmRl[klKf"><field name="TEXT">:</field></shadow>
                                      <block type="text" id="EK0BSe78ZX-?A2~fDl8{"><field name="TEXT">:</field></block></value></block></value>
                                      <next><block type="schedule_clear" id="9KnW0{[3G~MIYO?l8f?f"><field name="NAME">schedule1</field>
                                      <next><block type="schedule_create" id="wCivpX31v44lJw7_xJDu"><field name="NAME">schedule1</field>
                                      <value name="SCHEDULE"><shadow type="field_cron" id="+8y!j8q]Sur^hPyYtgi%"><field name="CRON">* * * * </field></shadow>
                                      <block type="cron_builder" id="^UHwrC
                                      c(v|w]C-+#GkF"><mutation seconds="false" as_line="false"></mutation>
                                      <field name="LINE">FALSE</field>
                                      <field name="WITH_SECONDS">FALSE</field>
                                      <value name="DOW"><shadow type="text" id="k+0Up{NX:8#}^/@./N5"><field name="TEXT">*</field></shadow></value> <value name="MONTHS"><shadow type="text" id="ewTOM~F/WOLpE-a0lnUL"><field name="TEXT">*</field></shadow></value> <value name="DAYS"><shadow type="text" id="w,T#?S|GH8/Xf6XudwO("><field name="TEXT">*</field></shadow></value> <value name="HOURS"><shadow type="text" id="m@SJ8RwvU[7ABk*YT!{?"><field name="TEXT">*</field></shadow> <block type="lists_getIndex" id="jMrWMISH#4TF1wTzs4pv"><mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"><block type="variables_get" id=".(30DCd,DMb:?A_6HyOd"><field name="VAR">uhrzeit</field></block></value> <value name="AT"><block type="math_number" id="Gl}%9i=g-b)xymxGs4iC"><field name="NUM">1</field></block></value></block></value> <value name="MINUTES"><shadow type="text" id=";zCdi%bQk+N8M0ZJ;D,"><field name="TEXT">*</field></shadow>
                                      <block type="lists_getIndex" id="g./,PD-SgU8u.FSm)u4"><mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"><block type="variables_get" id="wbp}06P,).t[ZUoj!(h1"><field name="VAR">uhrzeit</field></block></value> <value name="AT"><block type="math_number" id="e[|}CD;gH11o-@dHS|L"><field name="NUM">2</field></block></value></block></value></block></value>
                                      <statement name="STATEMENT"><block type="controls_if" id="%^~t=c|M8s.h8g/J}wgQ"><value name="IF0"><block type="logic_compare" id="UQety?LU4%o.,Bb!QerE"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="tZsLmoA54T2U[FT@lqol"><field name="ATTR">val</field>
                                      <field name="OID">javascript.0.Pool.Filteranlage.Automatik_an_aus</field></block></value>
                                      <value name="B"><block type="logic_boolean" id="kn1R#)VS,DPaw%{%+#;4"><field name="BOOL">TRUE</field></block></value></block></value>
                                      <statement name="DO0"><block type="variables_set" id="7)^4Io3eZrq-kGd~Qj"><field name="VAR">cnt</field>
                                      <value name="VALUE"><block type="math_number" id="1Kj|oil3plRrR]s0NPd)"><field name="NUM">0</field></block></value>
                                      <next><block type="control" id="ben}AEk{jucTv9a4]l/K"><mutation delay_input="false"></mutation>
                                      <field name="OID">javascript.0.Test.Schalter</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE"><block type="logic_boolean" id="dJp+,[-fIDuMe_YQo,ox"><field name="BOOL">TRUE</field></block></value>
                                      <next><block type="timeouts_setinterval" id="/[Nu7w?[nEsQGqozYz=m"><field name="NAME">Intervall</field>
                                      <field name="INTERVAL">1</field>
                                      <field name="UNIT">min</field>
                                      <statement name="STATEMENT"><block type="math_change" id="r~n}#k],X4[F]!,n
                                      )="><field name="VAR">cnt</field>
                                      <value name="DELTA"><shadow type="math_number" id="C}F]WEMTQ~EhL[0o8ih|"><field name="NUM">1</field></shadow></value>
                                      <next><block type="controls_if" id="xB!NUsb#R5BJqkLe0]|9"><value name="IF0"><block type="logic_compare" id="/1i(aPh}KZRqi^qOI#t3"><field name="OP">EQ</field>
                                      <value name="A"><block type="variables_get" id="]v},qw4o{KvMdFdL6+}"><field name="VAR">cnt</field></block></value>
                                      <value name="B"><block type="get_value" id="IBU)^98k6^Tb~ECDm37q"><field name="ATTR">val</field>
                                      <field name="OID">javascript.0.Pool.Filteranlage.Laufzeit_1</field></block></value></block></value>
                                      <statement name="DO0"><block type="control" id="U
                                      oxjrCm~3MpaX.crkAy"><mutation delay_input="false"></mutation>
                                      <field name="OID">javascript.0.Test.Schalter</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE"><block type="logic_boolean" id="(JNXSu!TbE3*?sYQ+eSy"><field name="BOOL">FALSE</field></block></value>
                                      <next><block type="timeouts_clearinterval" id="?jnoAd7epof4w?49i/7K"><field name="NAME">Intervall</field></block></next></block></statement></block></next></block></statement></block></next></block></next></block></statement></block></statement></block></next></block></next></block></statement></block>
                                      <block type="procedures_defnoreturn" id="RFQ.obPn!Y7srwy90O|" x="438" y="113"><mutation><arg name="val"></arg></mutation>
                                      <field name="NAME">setSchedule2</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      <statement name="STACK"><block type="variables_set" id="d^=ZEUy]GYZ56.gl?F/"><field name="VAR">uhrzeit</field> <value name="VALUE"><block type="lists_split" id="f:6FRWJ%cZ~K!w#ZT3s5"><mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"><block type="variables_get" id="2Gi,?Ofc~pYi*W%?G[zk"><field name="VAR">val</field></block></value> <value name="DELIM"><shadow type="text" id="Z_uEO+Fh)/BJmRl[klKf"><field name="TEXT">:</field></shadow> <block type="text" id="3dJ|85Z45w)?jCRwr(cf"><field name="TEXT">:</field></block></value></block></value> <next><block type="schedule_clear" id="n#^bdT@l;~@;S2wj3WNB"><field name="NAME">schedule2</field> <next><block type="schedule_create" id="Tth=l}xOD^gwvo14SBiZ"><field name="NAME">schedule2</field> <value name="SCHEDULE"><shadow type="field_cron" id="+8y!j8q]Sur^hPyYtgi%"><field name="CRON">* * * * *</field></shadow> <block type="cron_builder" id="Z+im4IIyiq9X}0KmhG7U"><mutation seconds="false" as_line="false"></mutation> <field name="LINE">FALSE</field> <field name="WITH_SECONDS">FALSE</field> <value name="DOW"><shadow type="text" id="ZW/lJ4FetQBaRc^YW]pE"><field name="TEXT">*</field></shadow></value> <value name="MONTHS"><shadow type="text" id="SBvGN@~F37(zDi4tXC{X"><field name="TEXT">*</field></shadow></value> <value name="DAYS"><shadow type="text" id="}UMqO#rLTH3DN6Te_sR"><field name="TEXT">*</field></shadow></value>
                                      <value name="HOURS"><shadow type="text" id="
                                      +#6NNfd8./nAtqP[2M}"><field name="TEXT">*</field></shadow>
                                      <block type="lists_getIndex" id="r7A^e?z]jD8)*Na?vP
                                      "><mutation statement="false" at="true"></mutation>
                                      <field name="MODE">GET</field>
                                      <field name="WHERE">FROM_START</field>
                                      <value name="VALUE"><block type="variables_get" id="%tBj3-pz@Eh/Z-jKAPw,"><field name="VAR">uhrzeit</field></block></value>
                                      <value name="AT"><block type="math_number" id="lHIQYeE/shk_~nHg[v23"><field name="NUM">1</field></block></value></block></value>
                                      <value name="MINUTES"><shadow type="text" id="A(cHLXuA#!Ub@)JSZ[F"><field name="TEXT"></field></shadow>
                                      <block type="lists_getIndex" id="_+g[C.u[wN25;(@x{V5h"><mutation statement="false" at="true"></mutation>
                                      <field name="MODE">GET</field>
                                      <field name="WHERE">FROM_START</field>
                                      <value name="VALUE"><block type="variables_get" id="R!4JRYqCfZZ)|nly@]x"><field name="VAR">uhrzeit</field></block></value> <value name="AT"><block type="math_number" id="S6+bNTS,wgM6X9Ufhl2?"><field name="NUM">2</field></block></value></block></value></block></value> <statement name="STATEMENT"><block type="controls_if" id="=2N:wbHsftvm]p;FsJCF"><value name="IF0"><block type="logic_compare" id="UWu:XEP!vB0d!=iev}"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="xlXV5KS.1[?8ldNLt1"><field name="ATTR">val</field> <field name="OID">javascript.0.Pool.Filteranlage.Automatik_an_aus</field></block></value> <value name="B"><block type="logic_boolean" id="Vt,;D7oJB*Fj*{CBX(V|"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="variables_set" id=",(Bh^gsl@%mfb#qCSN)%"><field name="VAR">cnt</field> <value name="VALUE"><block type="math_number" id="xeJe=Ol;Y%Rj8M(@BMGj"><field name="NUM">0</field></block></value> <next><block type="control" id="P^Jwf-#R-[c5W8+aqyvh"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Test.Schalter</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="jtY%VYmJ0(hQABpsLa/X"><field name="BOOL">TRUE</field></block></value> <next><block type="timeouts_setinterval" id="qe6MZO;Fn3n{e8-@?r_4"><field name="NAME">Intervall2</field> <field name="INTERVAL">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="math_change" id="*7Li#M!Eb==AI7qd~(:v"><field name="VAR">cnt</field> <value name="DELTA"><shadow type="math_number" id="7Uy%-?!Rtk)+vTMv?d@f"><field name="NUM">1</field></shadow></value> <next><block type="controls_if" id="0fuMbP7US_qs!CW~6}^K"><value name="IF0"><block type="logic_compare" id="yL%B1QG/*spywVvL=lpV"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="#Q@P}egw*Z5_Uy/dKO8G"><field name="VAR">cnt</field></block></value> <value name="B"><block type="get_value" id="?{y#}8;PI,k.UY[#CNAD"><field name="ATTR">val</field> <field name="OID">javascript.0.Pool.Filteranlage.Laufzeit_2</field></block></value></block></value> <statement name="DO0"><block type="control" id="58@zNMKs3-ZCcfmaUO2}"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Test.Schalter</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="/@Yp6:tXUYSDAxK9!2a"><field name="BOOL">FALSE</field></block></value>
                                      <next><block type="timeouts_clearinterval" id="Zr.iu~OgJJ[#s1r;ya6"><field name="NAME">Intervall2</field></block></next></block></statement></block></next></block></statement></block></next></block></next></block></statement></block></statement></block></next></block></next></block></statement></block> <block type="comment" id="k6^.];r8m3:y)N[A{6o" x="-338" y="788"><field name="COMMENT">Skriptstart</field>
                                      <next><block type="procedures_callnoreturn" id="(K695hTsOXlhC?7Jq2+9"><mutation name="setSchedule1"><arg name="val"></arg></mutation>
                                      <value name="ARG0"><block type="get_value" id="jUX[vzWO{txM+twF=!3
                                      "><field name="ATTR">val</field>
                                      <field name="OID">javascript.0.Pool.Filteranlage.Startzeit_1</field></block></value>
                                      <next><block type="on_ext" id="Ho}{E7]v|11A@#,,{R;X"><mutation items="1"></mutation>
                                      <field name="CONDITION">ne</field>

                                              <value name="OID0"><shadow type="field_oid" id=":q5=lHsO](F;AWud(hn5"><field name="oid">javascript.0.Pool.Filteranlage.Startzeit_1</field></shadow></value> 
                                              <statement name="STATEMENT"><block type="procedures_callnoreturn" id="@XLk%7Nongxr!YE5ghK/"><mutation name="setSchedule1"><arg name="val"></arg></mutation> 
                                                  <value name="ARG0"><block type="on_source" id="UIvUD^a@j3Tz~=7G]]Mz"><field name="ATTR">state.val</field></block></value></block></statement></block></next></block></next></block> 
                                      

                                      <block type="procedures_callnoreturn" id="seX.K5(H,N6eh5SE2g,I" x="438" y="813"><mutation name="setSchedule2"><arg name="val"></arg></mutation>
                                      <value name="ARG0"><block type="get_value" id="e.ff(JG4kUMnJoz/rR0D"><field name="ATTR">val</field>
                                      <field name="OID">javascript.0.Pool.Filteranlage.Startzeit_2</field></block></value>
                                      <next><block type="on_ext" id="tEGUw-0PVW2Bd5]mp(X*"><mutation items="1"></mutation>
                                      <field name="CONDITION">ne</field>

                                          <value name="OID0"><shadow type="field_oid" id="E@nvnFg;~odK9A[#%1#A"><field name="oid">javascript.0.Pool.Filteranlage.Startzeit_2</field></shadow></value> 
                                          <statement name="STATEMENT"><block type="procedures_callnoreturn" id="Jp/vAu4!G0PIRK7GqX}^"><mutation name="setSchedule2"><arg name="val"></arg></mutation> 
                                              <value name="ARG0"><block type="on_source" id="/uJH*pd@H5-P+O4CX}Uw"><field name="ATTR">state.val</field></block></value></block></statement></block></next></block></xml> 
                                      
                                      Damit müssen nach einem Skriptstart nicht die Startzeiten verändert werden.
                                      1 Reply Last reply Reply Quote 0
                                      • G
                                        GeorgS last edited by

                                        @paul53:

                                        Wenn das Schedule auch bei Skriptstart gesetzt werden soll, ohne dass man anschließend den Zeitpunkt ändern muss, pacck man das ganze in eine Funktion, die sowohl bei Skriptstart als auch bei Startzeitänderung aufgerufen wird. Beispiel für Schedule1:

                                        Blockly_EDsteuern_Minuten_Funktion.JPG `

                                        Also das Script geht jetzt jetzt habe ich versucht noch dein Zusatz siehe ohne einzubauen… stimmt das so wie ich das eingebaut habe?
                                        7208_1.png

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

                                          @GeorgS:

                                          jetzt habe ich versucht noch dein Zusatz siehe ohne einzubauen… `
                                          Das ist kein Zusatz, sondern das vollständige Skript.
                                          @GeorgS:

                                          stimmt das so wie ich das eingebaut habe? `
                                          Nein. Ganz oben: Es muss die Startzeit an die Funktion übergeben werden, nicht die Laufzeit.

                                          Packe den Debug-Baustein "Pumpe aus" in den falls-Block (direkt unter stoppe…), sonst erscheint jede Minute ein Log.

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

                                            Noch ein Fehler rechts unten: Es mus das verwendete Intervall3 gestoppt werden !

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            923
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            144
                                            14805
                                            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