Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Könnte mir bitte jemand bei dem Script helfen?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Könnte mir bitte jemand bei dem Script helfen?

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

      @paul53

      ...ich sehe gerade das es die Javascript-Version 4.1.8 gibt. Sollte ich besser updaten?

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

        @Hicks Ein Versuch schadet nicht. Wenn es dann nicht funktioniert, mache ein Downgrade auf Version 3.6.4 (3.6.5), denn damit habe ich es gerade erfolgreich getestet.Test_miFenster.JPG

        W 2 Replies Last reply Reply Quote 1
        • W
          w00dy @paul53 last edited by

          @paul53

          OK, danke! Melde mich dann wieder...😏

          1 Reply Last reply Reply Quote 0
          • W
            w00dy @paul53 last edited by w00dy

            Hallo @paul53,

            du hattest den richtigen Riecher, die Javascript-Version war das Problem!

            Mit der Version 4.1.8 ging's auch nicht, bin jetzt wieder zurück auf Version 3.6.4. und damit läuft auch mein oben geändertes Skript.

            Schade, die neue Version hatte schon ihre Vorteile - ok, dann muss ich noch etwas warten.

            Vielen Dank für deine Hilfe, ohne die wäre ich aufgemschissen gewesen.👍 ☺

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

              Habe gerade mit Version 4.1.10 getestet und bei mir funktioniert es.
              Test_miFenster.JPG

              @Hicks Kannst Du bitte testen, ob es auch bei Dir funktioniert. Dann kann ich das Issue auf Github schließen.

              W 1 Reply Last reply Reply Quote 0
              • W
                w00dy @paul53 last edited by

                @paul53

                so, ich bin jetzt auf Version 4.1.10. Leider läuft das Skript hier auch nicht.

                P1.jpeg

                Zudem habe ich einige Warnungen im Log vom Javascript-Adapter:

                Javascript.0 2019-03-05 20:54:09.582 warn at TCP.onread (net.js:601:20)
                javascript.0 2019-03-05 20:54:09.582 warn at Socket.Readable.push (_stream_readable.js:208:10)
                javascript.0 2019-03-05 20:54:09.582 warn at readableAddChunk (_stream_readable.js:250:11)
                javascript.0 2019-03-05 20:54:09.581 warn at addChunk (_stream_readable.js:263:12)
                javascript.0 2019-03-05 20:54:09.581 warn at Socket.emit (events.js:211:7)
                javascript.0 2019-03-05 20:54:09.581 warn at emitOne (events.js:116:13)
                javascript.0 2019-03-05 20:54:09.581 warn at Socket._ultron.on (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:138:22)
                javascript.0 2019-03-05 20:54:09.581 warn at Receiver.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:139:10)
                javascript.0 2019-03-05 20:54:09.581 warn at Receiver.startLoop (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:165:16)
                javascript.0 2019-03-05 20:54:09.581 warn at Receiver.getData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:330:12)
                javascript.0 2019-03-05 20:54:09.581 warn at Receiver.dataMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:389:14)
                javascript.0 2019-03-05 20:54:09.581 warn at Receiver.receiver.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:141:47)
                javascript.0 2019-03-05 20:54:09.580 warn at WebSocket.emit (events.js:211:7)
                javascript.0 2019-03-05 20:54:09.580 warn at emitOne (events.js:116:13)
                javascript.0 2019-03-05 20:54:09.580 warn at WebSocket.onMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:99:16)
                javascript.0 2019-03-05 20:54:09.580 warn at WebSocket.ws.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:147:10)
                javascript.0 2019-03-05 20:54:09.580 warn at WS.Transport.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:137:8)
                javascript.0 2019-03-05 20:54:09.580 warn at WS.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:145:8)
                javascript.0 2019-03-05 20:54:09.579 warn at WS.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                javascript.0 2019-03-05 20:54:09.579 warn at WS.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:273:10)
                javascript.0 2019-03-05 20:54:09.579 warn at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:456:14)
                javascript.0 2019-03-05 20:54:09.579 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                javascript.0 2019-03-05 20:54:09.579 warn at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                javascript.0 2019-03-05 20:54:09.579 warn at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:335:16)
                javascript.0 2019-03-05 20:54:09.578 warn at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-parser/index.js:251:12)
                javascript.0 2019-03-05 20:54:09.578 warn at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                javascript.0 2019-03-05 20:54:09.578 warn at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                javascript.0 2019-03-05 20:54:09.578 warn at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8)
                javascript.0 2019-03-05 20:54:09.578 warn at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                javascript.0 2019-03-05 20:54:09.577 warn at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                javascript.0 2019-03-05 20:54:09.577 warn at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
                javascript.0 2019-03-05 20:54:09.577 warn at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:278:10)
                javascript.0 2019-03-05 20:54:09.576 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                javascript.0 2019-03-05 20:54:09.576 warn at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                javascript.0 2019-03-05 20:54:09.576 warn at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3425:37)
                javascript.0 2019-03-05 20:54:09.575 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:364:25)
                javascript.0 2019-03-05 20:54:09.575 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:963:38)
                javascript.0 2019-03-05 20:54:09.575 warn at Object.<anonymous> (script.js.Meldungen.Meldung
                -offene_Fenster+_Türen_unterdrücken:24:76)
                javascript.0 2019-03-05 20:54:09.574 warn getState "javascript.0.scriptEnabled.sayit-ansagen.sayit_Fenster_vergessen_zu_schließen" not found (3)
                javascript.0 2019-03-05 20:53:53.255 error In file included from /home/iobroker/.node-gyp/8.15.0/include/node/v8.h:26:0, from /home/iobroker/.node-gyp/8.15.0/include/node/node.h:63, from /home/iobroker/.node-g
                javascript.0 2019-03-05 20:53:53.254 error ../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::emitErrnoError()’: ../src/BluetoothHciSocket.cpp:275:72: warning: ‘v8::Localv8::Object v8::Function::NewInstance(int, v8::
                javascript.0 2019-03-05 20:53:53.236 error In file included from ../src/BluetoothHciSocket.cpp:8:0: ../../nan/nan.h:980:46: note: declared here NAN_DEPRECATED inline v8::Localv8::Value MakeCallback(
                javascript.0 2019-03-05 20:53:53.235 error ../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::poll()’: ../src/BluetoothHciSocket.cpp:251:95: warning: ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::L
                javascript.0 2019-03-05 20:53:44.640 error ^~~~~~~~~~~~
                javascript.0 2019-03-05 20:53:44.640 error NAN_DEPRECATED inline v8::Localv8::Value MakeCallback(
                javascript.0 2019-03-05 20:53:44.640 error ../../nan/nan.h:959:46: note: declared here
                javascript.0 2019-03-05 20:53:44.640 error from ../src/transfer.cc:1:
                javascript.0 2019-03-05 20:53:44.640 error from ../src/node_usb.h:21,
                javascript.0 2019-03-05 20:53:44.640 error In file included from ../src/helpers.h:3:0,
                javascript.0 2019-03-05 20:53:44.639 error ^
                javascript.0 2019-03-05 20:53:44.639 error Nan::MakeCallback(self->handle(), Nan::New(self->v8callback), 3, argv);
                javascript.0 2019-03-05 20:53:44.639 error ../src/transfer.cc:126:72: warning: ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value)’ is deprecated [-Wdeprecated-declarations]
                javascript.0 2019-03-05 20:53:44.639 error ../src/transfer.cc: In function ‘void handleCompletion(Transfer
                )’:
                javascript.0 2019-03-05 20:53:33.915 error ^~~~~~~~~~~~
                javascript.0 2019-03-05 20:53:33.915 error NAN_DEPRECATED inline v8::Localv8::Value MakeCallback(
                javascript.0 2019-03-05 20:53:33.915 error ../../nan/nan.h:959:46: note: declared here
                javascript.0 2019-03-05 20:53:33.915 error from ../src/device.cc:1:
                javascript.0 2019-03-05 20:53:33.915 error from ../src/node_usb.h:21,
                javascript.0 2019-03-05 20:53:33.915 error In file included from ../src/helpers.h:3:0,
                javascript.0 2019-03-05 20:53:33.914 error ^
                javascript.0 2019-03-05 20:53:33.914 error Nan::MakeCallback(device, Nan::New(baton->callback), 1, argv);
                javascript.0 2019-03-05 20:53:33.914 error ../src/device.cc:237:64: warning: ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value)’ is deprecated [-Wdeprecated-declarations]
                javascript.0 2019-03-05 20:53:33.914 error ../src/device.cc: In static member function ‘static void Req::default_after(uv_work_t
                )’:
                javascript.0 2019-03-05 20:53:18.574 error ^~~~~~~~~~~~
                javascript.0 2019-03-05 20:53:18.574 error NAN_DEPRECATED inline v8::Localv8::Value MakeCallback(
                javascript.0 2019-03-05 20:53:18.574 error ../../nan/nan.h:1001:46: note: declared here
                javascript.0 2019-03-05 20:53:18.574 error from ../src/node_usb.cc:1:
                javascript.0 2019-03-05 20:53:18.574 error from ../src/node_usb.h:21,
                javascript.0 2019-03-05 20:53:18.574 error In file included from ../src/helpers.h:3:0,
                javascript.0 2019-03-05 20:53:18.573 error ^
                javascript.0 2019-03-05 20:53:18.573 error Nan::MakeCallback(Nan::New(hotplugThis), "emit", 2, argv);
                javascript.0 2019-03-05 20:53:18.573 error ../src/node_usb.cc:151:58: warning: ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, const char*, int, v8::Localv8::Value)’ is deprecated [-Wdeprecated-declarations]
                javascript.0 2019-03-05 20:53:18.573 error ../src/node_usb.cc: In function ‘void handleHotplug(std::pair<libusb_device
                , libusb_hotplug_event>)’:
                javascript.0 2019-03-05 20:52:58.078 error
                javascript.0 2019-03-05 20:52:58.077 error node-pre-gyp WARN Pre-built binaries not found for usb@1.5.0 and node@8.15.0 (node-v57 ABI, glibc) (falling back to source compile with node-gyp)
                javascript.0 2019-03-05 20:52:58.077 error WARN Tried to download(404): https://github.com/tessel/node-usb/releases/download/1.5.0/usb_bindings-v1.5.0-node-v57-linux-arm64.tar.gz
                javascript.0 2019-03-05 20:52:58.076 error node-pre-gyp
                javascript.0 2019-03-05 20:52:57.223 error Using request for node-pre-gyp https download
                javascript.0 2019-03-05 20:52:57.221 error WARN
                javascript.0 2019-03-05 20:52:57.218 error node-pre-gyp

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

                  Sehr eigenartig 😮
                  Die Datenpunkte sind tatsächlich enum.functions.Fenster zugeordnet ?
                  Enum_functions_Fenster.JPG
                  Unter members im Objekt ?

                  {
                    "_id": "enum.functions.Fenster",
                    "common": {
                      "name": "Fenster",
                      "members": [
                        "alias.0.geraet_1.opened",
                        "alias.0.Geraet_2.opened"
                      ],
                      "icon": "",
                      "color": false
                    },
                    "type": "enum",
                    "from": "system.adapter.admin.1",
                    "ts": 1551716287358,
                    "acl": {
                      "object": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator"
                    },
                    "native": {}
                  }
                  
                  W 4 Replies Last reply Reply Quote 0
                  • W
                    w00dy @paul53 last edited by

                    @paul53

                    ja klar:

                    P2.jpeg

                    Das Skript läuft ja unter V. 3.4.6 einwandfrei - merkwürdig?!?

                    1 Reply Last reply Reply Quote 0
                    • W
                      w00dy @paul53 last edited by

                      @paul53 sagte in

                      Unter members im Objekt ?

                      ...suche mir gerade nen Wolf, wo finde ich das?

                      1 Reply Last reply Reply Quote 0
                      • W
                        w00dy @paul53 last edited by

                        @paul53

                        ...habe gerade festgestellt, dass dieses Skript mit der Version 4.1.10 auch Probleme macht.
                        Wenn es klingelt, schickt mir das Skript normalerweise drei Fotos von der Cam an Telegram.
                        Jetzt, scheint hier eine Endlosschleife vorzuliegen, dass Skript schickt ständig Fotos, Ruhe ist erst, wenn ich das Skript stoppe.

                        // Telegram Bild senden durch Klingel oder Text to command
                         var source_url = 'http://192.168.xxx.xx/tmpfs/snap.jpg?usr=xxxxx&pwd=xxxxx', //IP Adresse der Instar mit user und password
                             dest_path = '/tmp/'; //Speicherort für das Bild
                          
                         var Nachricht = "Jemand klingelt"; // Nachricht, welche mit dem Bild gesendet wird
                          
                         var request = require('request');
                         var fs      = require('fs');
                          
                         //var timer = null;
                         var count = 0;
                          
                         // Bild an telegram schicken
                         function sendImage (pfad) {
                                 sendTo('telegram.0', pfad);
                                 //log('Webcam Bild per telegram verschickt');
                                 sendTo("telegram.0", Nachricht);    // <-- nach der Timeout funktion ausführen
                         }
                          
                         // Bild speichern
                         function saveImage() {
                             request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
                                 fs.writeFile(dest_path + 'image2.jpg', body, 'binary', function(err) {
                          
                                 if (err) {
                                     //log('Fehler beim Bild speichern: ' + err, 'warn');
                                 } else {
                                     //log('Webcam Bild gespeichert');
                                     sendImage(dest_path + 'image2.jpg');
                                 }
                               }); 
                             });
                         }
                          
                         //Trigger
                         // 3 Bilder senden wenn Bewegung erkannt und keiner zu Hause ist
                         on({id: "mqtt.0.xxxxxxx"/*xxx*/, val: true}, function () {
                         //    if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) {
                             count = 3;
                             counter();
                             timer = setInterval(counter, 3000);
                             }
                         );
                          
                         function counter() {
                             saveImage();
                             count--;
                             if(count === 0 && timer) clearInterval(timer);
                         } 
                        
                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          Entferne den Kommentar von

                          //var timer = null;
                          

                          Die Variable timer muss global deklariert werden.

                          W 1 Reply Last reply Reply Quote 1
                          • W
                            w00dy @paul53 last edited by

                            @paul53

                            Super, so läufts. Danke👍

                            1 Reply Last reply Reply Quote 0
                            • W
                              w00dy @paul53 last edited by w00dy

                              @paul53 sagte in [gelöst] Könnte mir bitte jemand bei dem Script helfen?:

                              Sehr eigenartig 😮
                              Die Datenpunkte sind tatsächlich enum.functions.Fenster zugeordnet ?
                              Enum_functions_Fenster.JPG
                              Unter members im Objekt ?

                              {
                                "_id": "enum.functions.Fenster",
                                "common": {
                                  "name": "Fenster",
                                  "members": [
                                    "alias.0.geraet_1.opened",
                                    "alias.0.Geraet_2.opened"
                                  ],
                                  "icon": "",
                                  "color": false
                                },
                                "type": "enum",
                                "from": "system.adapter.admin.1",
                                "ts": 1551716287358,
                                "acl": {
                                  "object": 1636,
                                  "owner": "system.user.admin",
                                  "ownerGroup": "system.group.administrator"
                                },
                                "native": {}
                              }
                              

                              @paul53
                              Sorry, dass ich den Thread nochmal ausgrabe.

                              Wo finde ich diese Auflistung der sensoren in der "enum.functions.Fenster"? Ich finde die einfach nicht.

                              Da der Javascript-Adapter mit der 4.1.12 nun default/stable ist und auch hier das Script nicht die Xiaomi-Sensoren findet, muss ich eine Lösung finden.

                              Merkwürdig ist, als ich den Eintrag "enum.functions.Fenster" in den Aufzählungen überprüft und erneut gespeichert habe, wurde komischerweise ein Xiaomi-TFK-Sensor gefunden, aber eben auch nur dieser eine?!?😤

                              Es ist zum verrückt werden😒

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

                                @Hicks sagte:

                                Wo finde ich diese Auflistung der sensoren in der "enum.functions.Fenster"?

                                Im Reiter "Objekte" die Eigenschaften des Objektes enum.functions.Fenster (Bleistift rechts) und dann auf Reiter "RAW (NUR EXPERTEN)".

                                W 1 Reply Last reply Reply Quote 0
                                • W
                                  w00dy @paul53 last edited by w00dy

                                  @paul53
                                  hmm, unter Objekte finde ich die Eigenschaften des Objektes enum.functions.Fenster nicht?

                                  P1.jpeg

                                  Und wenn ich unter dem Reiter "Aufzählungen" die Eigenschaften des Objektes enum.functions.Fenster mit dem Bleistift öffne, wird mir das angezeigt:

                                  P2.jpeg

                                  Und in einem der betroffenen Sensoren nur das:

                                  {
                                    "type": "state",
                                    "common": {
                                      "name": "Test-TFK",
                                      "type": "boolean",
                                      "read": true,
                                      "write": false,
                                      "role": "state"
                                    },
                                    "from": "system.adapter.zigbee.0",
                                    "ts": 1552228078774,
                                    "_id": "zigbee.0.00158d0002d4382e.opened",
                                    "acl": {
                                      "object": 1636,
                                      "state": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator"
                                    },
                                    "native": {}
                                  }
                                  

                                  Verwirrend😬

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

                                    @Hicks sagte:

                                    unter Objekte finde ich die Eigenschaften des Objektes enum.functions.Fenster nicht?

                                    Im Reiter "Objekte" den Expertenmodus einschalten (oben 6. Button).

                                    W 1 Reply Last reply Reply Quote 1
                                    • W
                                      w00dy @paul53 last edited by w00dy

                                      @paul53

                                      Ok, bin im Expertenmode die ganzen Einträge nun fünf mal durchgegangen, aber dort ist kein einziger enum.functions.xxxxxxx-Eintrag zu finden.

                                      Liegt hier evtl. schon der Fehler?

                                      Obwohl das System erst vor etwa zwei Wochen neu aufgesetzt wurde

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

                                        Im Expertenmodus sollte es etwa so aussehen (abhängig von den vorhandenen Instanzen):
                                        Objekte_Expert.JPG

                                        W 1 Reply Last reply Reply Quote 0
                                        • W
                                          w00dy @paul53 last edited by w00dy

                                          @paul53
                                          Verrückt, davon ist kein einziger Eintrag vorhanden! Wie kann das sein? Komisch, dass es überhaupt funktioniert...

                                          Homoran paul53 2 Replies Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @w00dy last edited by

                                            @Hicks
                                            wenn du keine Räume, Gewerke usw. in der Homematic-CCU angelegt hast, oder überhaupt keine CCU besitzt, musst du diese Punkte selber anlegen und befüllen

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            909
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            36
                                            1631
                                            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