Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Nuki Smart Lock 3.0 pro in ioBroker einbinden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

Nuki Smart Lock 3.0 pro in ioBroker einbinden

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
237 Beiträge 57 Kommentatoren 61.3k Aufrufe 49 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Dominic ReberD Dominic Reber

    Hallo zusammen

    Ich hab seit gestern eine Smart Lock 3.0 (kein Pro) mit Bridge.
    Ich kann das jetzt mit IoBroker und nuki-extended verwenden über die Web Api. Jedoch könnte ich das ja auch über die Nuki Hardware Bridge Api einbinden.
    Was genau ist da der Unterschied?

    Danke

    F Offline
    F Offline
    Fenrir
    schrieb am zuletzt editiert von Fenrir
    #86

    @dominic-reber Verstehe die frage leider gerade nicht so ganz?

    Wenn du das Nuki in den ioBroker integrieren willst brauchst du den Nuki Adapater, die Bridge ist beim Nuki ohne Pro mit dafür da aus der Ferne zu steuern und wenn ich mich jetzt nicht komplett Irre brauchst du Bridge um das Nuki überhaupt in den Nuki zu bringen (außer du hättest das Pro)

    1 Antwort Letzte Antwort
    0
    • Dominic ReberD Dominic Reber

      Hallo zusammen

      Ich hab seit gestern eine Smart Lock 3.0 (kein Pro) mit Bridge.
      Ich kann das jetzt mit IoBroker und nuki-extended verwenden über die Web Api. Jedoch könnte ich das ja auch über die Nuki Hardware Bridge Api einbinden.
      Was genau ist da der Unterschied?

      Danke

      smaragdschlangeS Offline
      smaragdschlangeS Offline
      smaragdschlange
      schrieb am zuletzt editiert von
      #87

      Hi @dominic-reber ,

      der Unterschied liegt darin, dass Du ohne Hardware Bridge immer eine funktionierende Internetverbindung benötigst, um das Nuki Lock mit ioBroker steuern zu können, da die Web API ja eine Cloud-Lösung ist. Über die Harware Bridge wird eine lokale API zur Verfügung gestellt, über die das Smart Lock auch gesteuert werden kann, wenn die Nuki-Server mal down ist oder Deine Internetverbindung mal nicht funktioniert. Ich persönlich strebe immer, wenn möglich, eine Lösung an, die ohne Cloud auskommt, aber das ist wohl Geschmachssache.

      Gruß
      Sven

      Gruß,

      Sven

      1 Antwort Letzte Antwort
      0
      • B Bahazay

        Hallo @fenrir,

        ich glaube, dass ich das schon versucht habe. Sicherheitshalber werde ich es aber nochmal testen.
        Wenn ich mich richtig erinnere, wird der wert in der Bridge angepasst - aber er wird anscheinend nicht an das Lock übertragen.

        Ich habe das Gefühl, dass ich für das beschriebene Problem wirklich keine Lösung finde. ;(
        Schade, weil das Nuki eigentlich echt eine tolle Lösung ist.

        cashC Offline
        cashC Offline
        cash
        Most Active
        schrieb am zuletzt editiert von
        #88

        @bahazay das was Du willst geht an anderer Stelle:

        nuki-extended.1.smartlocks.wohnungstür._ACTION.xxxx

        Datenpunkt dann mit true befüllen und Tür wird geschlossen

        Musst natürlich gucken wo bei Dir der _Action Baum ist.... Mein Tür heißt "Wohnungstür"...

        1 Antwort Letzte Antwort
        0
        • caravandriverC Offline
          caravandriverC Offline
          caravandriver
          schrieb am zuletzt editiert von
          #89

          Ich habe das Nuki 3.0 Pro. Keine Bridge. Welchen Adapter muss ich nehmen? Geht das überhaupt?

          W 1 Antwort Letzte Antwort
          0
          • caravandriverC caravandriver

            Ich habe das Nuki 3.0 Pro. Keine Bridge. Welchen Adapter muss ich nehmen? Geht das überhaupt?

            W Offline
            W Offline
            wideblick
            schrieb am zuletzt editiert von
            #90

            @caravandriver

            1.) Dieselbe Frage ist hier im Thread schon mehrfach beantwortet worden! Man könnte den Thread auch mal überfliegen!
            2.) Geht nicht! Pro hat Wifi Modul integriert, keine Bridge, wird auch so bei Nuki beworben!
            3.) Für die Integration ist die Bridge nötig, egal ob schwarze oder weisse, sind bis auf Farbe identisch! Nur die Bridge liefert dir den 6-stelligen API Token, der im Adapter (normal oder extended) eingetragen werden muss.

            1 Antwort Letzte Antwort
            0
            • RK62R Offline
              RK62R Offline
              RK62
              schrieb am zuletzt editiert von RK62
              #91

              Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
              . Es nutzt und benötigt keine Bridge.
              . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
              . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
              Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

              M frankthegreatF H ? 4 Antworten Letzte Antwort
              0
              • RK62R RK62

                Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                . Es nutzt und benötigt keine Bridge.
                . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                M Offline
                M Offline
                martin
                schrieb am zuletzt editiert von
                #92

                @rk62 Hallo! Ich stehe gerade vor der Anschaffung und überlege was ich alles kaufen soll / muss. Heißt also, dass mit deinem Skript nur das 3.0 Pro ohne Bridge benötigt wird und es in iobroker eingebunden werden kann? Wie wird die Nuki WebApi eingerichtet?

                RK62R 1 Antwort Letzte Antwort
                0
                • M martin

                  @rk62 Hallo! Ich stehe gerade vor der Anschaffung und überlege was ich alles kaufen soll / muss. Heißt also, dass mit deinem Skript nur das 3.0 Pro ohne Bridge benötigt wird und es in iobroker eingebunden werden kann? Wie wird die Nuki WebApi eingerichtet?

                  RK62R Offline
                  RK62R Offline
                  RK62
                  schrieb am zuletzt editiert von
                  #93

                  @martin Genau. Entweder 3.0 pro und via WebAPI / Script steuern oder mit Bridge und ioBroker-Adapter. Bei dem Script muss man das Lock via App mit dem NUKI-Web verbinden und kann dann dort die API freischalten und ein API-Login-Key generieren. Ist schon etwas fummelig und Du musst JavaScript können. Sonst lieber die Sorglos-Lösung Bridge und Adapter verwenden.

                  1 Antwort Letzte Antwort
                  1
                  • M Offline
                    M Offline
                    mopedradler
                    schrieb am zuletzt editiert von
                    #94

                    @martin
                    Ich habe mein 3.0 pro mit diesem Projekt eingebunden.
                    link text
                    Man kann den ESP32 als Hub benutzen und über MQTT einbinden.
                    Funktioniert einwandfrei.

                    1 Antwort Letzte Antwort
                    4
                    • RK62R RK62

                      Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                      . Es nutzt und benötigt keine Bridge.
                      . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                      . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                      Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                      frankthegreatF Offline
                      frankthegreatF Offline
                      frankthegreat
                      schrieb am zuletzt editiert von
                      #95

                      @rk62 sagte in Nuki Smart Lock 3.0 pro in ioBroker einbinden:

                      Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                      . Es nutzt und benötigt keine Bridge.
                      . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                      . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                      Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                      Hi, ich möchte mir auch das Nuki 3.0 pro zulegen.
                      Magst du dein Script hier mal reinstellen? Würde es gerne testen.

                      Danke :sunglasses:

                      1 Antwort Letzte Antwort
                      1
                      • RK62R RK62

                        Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                        . Es nutzt und benötigt keine Bridge.
                        . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                        . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                        Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                        H Offline
                        H Offline
                        homecineplexx
                        schrieb am zuletzt editiert von
                        #96

                        @rk62 said in Nuki Smart Lock 3.0 pro in ioBroker einbinden:

                        Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                        . Es nutzt und benötigt keine Bridge.
                        . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                        . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                        Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                        Wäre für alle sicher sehr hilfreich...DANKE

                        1 Antwort Letzte Antwort
                        0
                        • RK62R RK62

                          Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                          . Es nutzt und benötigt keine Bridge.
                          . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                          . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                          Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                          ? Offline
                          ? Offline
                          Ein ehemaliger Benutzer
                          schrieb am zuletzt editiert von
                          #97

                          @rk62 sagte in Nuki Smart Lock 3.0 pro in ioBroker einbinden:

                          Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                          . Es nutzt und benötigt keine Bridge.
                          . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                          . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                          Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                          Ich wäre ebenfalls sehr am Script interessiert, da ich ein 3.0 Pro besitze und diesen gerne im ioBroker integrieren möchte. Habe ein 2.0 mit Bridge ebenfalls im Betrieb, da läuft es tadellos. Habe zwar auch noch eine vorige Bridge zur Verfügung und könnte allenfalls mit dieser und dem 3.0 Pro arbeiten aber es sollte doch irgendwie möglich sein, auch den 3.0 Pro zu integrieren.

                          ste_gleiS 1 Antwort Letzte Antwort
                          1
                          • ? Ein ehemaliger Benutzer

                            @rk62 sagte in Nuki Smart Lock 3.0 pro in ioBroker einbinden:

                            Ich habe für das Nuki SmartLock 3.0 Pro ein Javascript erstellt um es via WebAPI auslesen & steuern zu können.
                            . Es nutzt und benötigt keine Bridge.
                            . Es ist daher allerdings abhängig von der Cloud und benötigt Zugriff auf die freigeschaltete NUKI WebApi.
                            . Es ist keine Realtimeabfrage, die ausgelesenen Daten werden zyklisch alle 10 Minuten aktualisiert. Steuern (Öffnen / Schließen) wird sofort ausgeführt.
                            Wenn es jemanden interessiert, kann ich das Script hier oder einem separaten Threat zur Verfügung stellen.

                            Ich wäre ebenfalls sehr am Script interessiert, da ich ein 3.0 Pro besitze und diesen gerne im ioBroker integrieren möchte. Habe ein 2.0 mit Bridge ebenfalls im Betrieb, da läuft es tadellos. Habe zwar auch noch eine vorige Bridge zur Verfügung und könnte allenfalls mit dieser und dem 3.0 Pro arbeiten aber es sollte doch irgendwie möglich sein, auch den 3.0 Pro zu integrieren.

                            ste_gleiS Offline
                            ste_gleiS Offline
                            ste_glei
                            schrieb am zuletzt editiert von
                            #98

                            Hallo
                            Mit der neuen Beta-App von Nuki ist jetzt möglich das Nuki Pro via MQTT mit iobroker zu verbinden.

                            6c7dbe4a-76d0-4d44-af14-998d03610b6f-image.png

                            Hier die gelieferten Datenpunke

                            c07d2a3e-4e7c-46cc-af66-c9951664115e-image.png

                            H M 2 Antworten Letzte Antwort
                            1
                            • ste_gleiS ste_glei

                              Hallo
                              Mit der neuen Beta-App von Nuki ist jetzt möglich das Nuki Pro via MQTT mit iobroker zu verbinden.

                              6c7dbe4a-76d0-4d44-af14-998d03610b6f-image.png

                              Hier die gelieferten Datenpunke

                              c07d2a3e-4e7c-46cc-af66-c9951664115e-image.png

                              H Offline
                              H Offline
                              homecineplexx
                              schrieb am zuletzt editiert von
                              #99

                              @ste_glei said in Nuki Smart Lock 3.0 pro in ioBroker einbinden:

                              Hallo
                              Mit der neuen Beta-App von Nuki ist jetzt möglich das Nuki Pro via MQTT mit iobroker zu verbinden.

                              6c7dbe4a-76d0-4d44-af14-998d03610b6f-image.png

                              Hier die gelieferten Datenpunke

                              c07d2a3e-4e7c-46cc-af66-c9951664115e-image.png

                              wie kommt man zu dieser BETA App???

                              ste_gleiS 1 Antwort Letzte Antwort
                              0
                              • H homecineplexx

                                @ste_glei said in Nuki Smart Lock 3.0 pro in ioBroker einbinden:

                                Hallo
                                Mit der neuen Beta-App von Nuki ist jetzt möglich das Nuki Pro via MQTT mit iobroker zu verbinden.

                                6c7dbe4a-76d0-4d44-af14-998d03610b6f-image.png

                                Hier die gelieferten Datenpunke

                                c07d2a3e-4e7c-46cc-af66-c9951664115e-image.png

                                wie kommt man zu dieser BETA App???

                                ste_gleiS Offline
                                ste_gleiS Offline
                                ste_glei
                                schrieb am zuletzt editiert von
                                #100

                                @homecineplexx
                                im Play Store als Beta-Tester beitreten

                                H 1 Antwort Letzte Antwort
                                0
                                • ste_gleiS ste_glei

                                  @homecineplexx
                                  im Play Store als Beta-Tester beitreten

                                  H Offline
                                  H Offline
                                  homecineplexx
                                  schrieb am zuletzt editiert von
                                  #101

                                  @ste_glei super danke...habs schon funktioniert auch gleich
                                  aber hast du eine ahnung was die ganze modi sind und wie man da nun zusperren kann?

                                  1 Antwort Letzte Antwort
                                  0
                                  • RK62R Offline
                                    RK62R Offline
                                    RK62
                                    schrieb am zuletzt editiert von
                                    #102

                                    Hier gibt es die Beta für iOS:
                                    https://testflight.apple.com/join/yuoh6a6B

                                    Und hier ist die Schnittstelle in einer pdf beschrieben:
                                    https://developer.nuki.io/t/mqtt-api-specification-v1-4/19223

                                    Werde ich am Wochenende mal testen und sonst mein Script aufräumen & posten

                                    H 1 Antwort Letzte Antwort
                                    1
                                    • RK62R RK62

                                      Hier gibt es die Beta für iOS:
                                      https://testflight.apple.com/join/yuoh6a6B

                                      Und hier ist die Schnittstelle in einer pdf beschrieben:
                                      https://developer.nuki.io/t/mqtt-api-specification-v1-4/19223

                                      Werde ich am Wochenende mal testen und sonst mein Script aufräumen & posten

                                      H Offline
                                      H Offline
                                      homecineplexx
                                      schrieb am zuletzt editiert von
                                      #103

                                      @rk62 könntest du uns dein script mal vorstellen?

                                      RK62R 1 Antwort Letzte Antwort
                                      0
                                      • H homecineplexx

                                        @rk62 könntest du uns dein script mal vorstellen?

                                        RK62R Offline
                                        RK62R Offline
                                        RK62
                                        schrieb am zuletzt editiert von
                                        #104

                                        @homecineplexx @Vazi @frankthegreat
                                        Hier das gewünschte Script. Ich hoffe, es erklärt sich alles von selbst ;-)
                                        Ich habe eben auch mal MQTT aktiviert und werde darauf umsteigen. States werden automatisch aktualisiert, die Steuerung ist direkter und nicht abhängig vom NUKI-Web.

                                        /*  =====================================================================
                                            Steuerung für NUKI Smart Lock
                                            https://developer.nuki.io/page/nuki-web-api-1-4/3/#heading--curl-call-swagger
                                        
                                            19.12.2022 R.Krüger --- Erstellung
                                            ===================================================================== */
                                        
                                        const cAB           = '<Hier APIKEY Bearer ..... eintragen>';   // API-Key in NUKI WEB-vergeben
                                        
                                        const axios         = require('axios');
                                        var   t01;
                                        
                                        /*  =====================================================================
                                            VERARBEITUNG
                                            ===================================================================== */
                                        
                                        // Bei Start initialisieren
                                        Main('INIT'); 
                                        
                                        // Auslöser alle 10 Minuten
                                        schedule('*/10 * * * *', async function () { Main('UPDATE'); });
                                        
                                        // HAUPT-Programm
                                        async function Main(pOption) {
                                        //  -------------------------------------------------------------------------------            
                                            // States für jedes Nuki-Objekt anlegen
                                            let rd = await ReadNukiAPI('https://api.nuki.io/smartlock');
                                            rd.forEach(async function (item) { 
                                            //  -------------------------------------------------------------------------------     
                                                let jsh = '0_userdata.0.nuki1.' + item.smartlockId;
                                        
                                                // INIT: Benötigte States anlegen
                                                if (pOption.includes('INIT')) {
                                                    await createStateAsync(jsh + '.Command',                    { name: 'Steuerung SmartLock',      role: 'state', type: 'string',  color: '#dcf901' });
                                                    await createStateAsync(jsh + '.Name',                       { name: 'SmartLock-Name',           role: 'state', type: 'string',  write: false});
                                                    await createStateAsync(jsh + '.BatteryCharge',              { name: 'Batterieladung',           role: 'state', type: 'number',  write: false, unit: '%'});
                                                    await createStateAsync(jsh + '.BatteryCharging',            { name: 'Batterie wird geladen',    role: 'state', type: 'boolean', write: false});
                                                    await createStateAsync(jsh + '.BatteryCritical',            { name: 'Batteriestatus SmartLock', role: 'state', type: 'boolean', write: false});
                                                    await createStateAsync(jsh + '.BatteryCriticalDoorSensor',  { name: 'Batteriestatus Türsensor', role: 'state', type: 'boolean', write: false});
                                                    await createStateAsync(jsh + '.Firmware',                   { name: 'Firmware',                 role: 'state', type: 'string',  write: false});
                                                    await createStateAsync(jsh + '.StateLock',                  { name: 'Status Türschloss',        role: 'state', type: 'number',  write: false, 
                                                                                                                states: {   0: "uncalibrated",
                                                                                                                            1: "locked",
                                                                                                                            2: "unlocking",
                                                                                                                            3: "unlocked",
                                                                                                                            4: "locking",
                                                                                                                            5: "unlatched",
                                                                                                                            6: "unlocked (lock'n'go)",
                                                                                                                            7: "unlatching",
                                                                                                                            253: "boot run",
                                                                                                                            254: "motor blocked",
                                                                                                                            255: "undefined"  } });
                                                    await createStateAsync(jsh + '.StateDoor',                  { name: 'Status Tür',               role: 'state', type: 'number',  write: false, 
                                                                                                                states: {   0: "unavailable", 
                                                                                                                            1: "deactivated", 
                                                                                                                            2: "door closed", 
                                                                                                                            3: "door opened", 
                                                                                                                            4: "door state unknown",
                                                                                                                            5: "calibrating"    } });
                                                    await createStateAsync(jsh + '.StateSummary',               { name: 'Status Gesamt',            role: 'state', type: 'number',  write: false,                                                                                     
                                                                                                                states: {   0: "Unklar!", 
                                                                                                                            1: "Tür offen", 
                                                                                                                            2: "Tür unverschlossen", 
                                                                                                                            3: "Tür abgeschlossen"  } });
                                                    await createStateAsync(jsh + '.StateVIS',                   { name: 'State für VIS-Lock',       role: 'state', type: 'string', color: '#dcf901'});
                                                    await createStateAsync(jsh + '.UpdateDate',                 { name: 'Last Update Web-API',      role: 'state', type: 'string', write: false});
                                                };
                                        
                                                // States aktualisieren 
                                                setState(jsh + '.Name',                       item.config.name, true);
                                                setState(jsh + '.BatteryCharge',              item.state.batteryCharge, true);
                                                setState(jsh + '.BatteryCharging',            item.state.batteryCharging, true);
                                                setState(jsh + '.BatteryCritical',            item.state.batteryCritical, true);
                                                setState(jsh + '.BatteryCriticalDoorSensor',  item.state.doorsensorBatteryCritical, true);
                                                setState(jsh + '.Firmware',                   String(item.firmwareVersion), true);
                                                setState(jsh + '.StateLock',                  item.state.state, true);
                                                setState(jsh + '.StateDoor',                  item.state.doorState, true);
                                                setState(jsh + '.UpdateDate',                 item.updateDate, true);
                                               
                                                // State für Grafik in VIS  
                                                if      ( item.state.doorState == 3 )                           vStateSummary = 3   // open
                                                else if ( item.state.doorState == 2 && item.state.state == 3)   vStateSummary = 2   // unverschlossen
                                                else if ( item.state.doorState == 2 && item.state.state == 1)   vStateSummary = 1   // verschlossen
                                                else                                                        var vStateSummary = 0;  // unklar
                                                setState(jsh + '.StateSummary', vStateSummary, true);
                                                
                                                let vStateVIS = (item.state.state == 1) ? 'ZUSPERREN' : 'AUFSPERREN';
                                                setState(jsh + '.StateVIS', vStateVIS, true);
                                        
                                                // Name des Folders auf Schlossname anpassen 
                                                let  vObj = getObject(jsh);
                                                vObj.common.name = item.config.name;
                                                setObject(jsh, vObj, function (err) {
                                                    if (err) log('Cannot write Object: ' + err, 'error');
                                                })       
                                            //  -------------------------------------------------------------------------------         
                                            })   
                                        //  -------------------------------------------------------------------------------         
                                        }
                                        
                                        
                                        /*  =====================================================================
                                            FUNCTIONEN
                                            ===================================================================== */
                                        
                                        // LESEN NUKI-API
                                        async function ReadNukiAPI(pURL) {
                                        //  -------------------------------------------------------------------------------         
                                            let response = await axios.get(pURL, 
                                                { headers: { 'Accept': 'application/json', 'Authorization': cAB }
                                                });
                                            return response.data;
                                        //  -------------------------------------------------------------------------------         
                                        }
                                        
                                        
                                        // SCHREIBEN NUKI-API
                                        async function PostNukiAPI(pAction, pOption, pLockID) {
                                        //  -------------------------------------------------------------------------------         
                                            let  response = await axios.post(`https://api.nuki.io/smartlock/${pLockID}/action`,
                                                    { 'action': pAction, 'option': pOption },
                                                    { headers: {'Accept': 'application/json', 'Authorization': cAB, 'Content-Type': 'application/json' }
                                                    });
                                            t01 = setTimeout(function () { Main('UPDATE'); }, 20000);       // 20 Sek Nach Schliessvorgang neu auslesen
                                            return response.status;
                                        //  -------------------------------------------------------------------------------         
                                        }  
                                        
                                        
                                        /*  =====================================================================
                                            TRIGGER
                                            ===================================================================== */
                                        
                                        // REAKTION auf ein Command an das Device via State .Command
                                        on({id: /^0_userdata\.0\.nuki1\..*\.Command$/, change: "any"}, function (obj) {
                                        // ------------------------------------------------------------------------------------------ 
                                            let vCmdU   = obj.state.val.toUpperCase();      // Befehl in Grosschrift umsetzen
                                            let vLockID = obj.id.split('.')[3];             // LockID aus auslösendem State ermitteln
                                            
                                            if      (vCmdU == 'AUFSPERREN') PostNukiAPI(1, 0, vLockID)
                                            else if (vCmdU == 'ZUSPERREN')  PostNukiAPI(2, 0, vLockID)
                                            else if (vCmdU == 'ÖFFNEN')     PostNukiAPI(3, 0, vLockID)
                                            else if (vCmdU == 'LOCK-N-GO')  PostNukiAPI(4, 0, vLockID);
                                        // ------------------------------------------------------------------------------------------ 
                                        })
                                        
                                        ? 1 Antwort Letzte Antwort
                                        1
                                        • RK62R RK62

                                          @homecineplexx @Vazi @frankthegreat
                                          Hier das gewünschte Script. Ich hoffe, es erklärt sich alles von selbst ;-)
                                          Ich habe eben auch mal MQTT aktiviert und werde darauf umsteigen. States werden automatisch aktualisiert, die Steuerung ist direkter und nicht abhängig vom NUKI-Web.

                                          /*  =====================================================================
                                              Steuerung für NUKI Smart Lock
                                              https://developer.nuki.io/page/nuki-web-api-1-4/3/#heading--curl-call-swagger
                                          
                                              19.12.2022 R.Krüger --- Erstellung
                                              ===================================================================== */
                                          
                                          const cAB           = '<Hier APIKEY Bearer ..... eintragen>';   // API-Key in NUKI WEB-vergeben
                                          
                                          const axios         = require('axios');
                                          var   t01;
                                          
                                          /*  =====================================================================
                                              VERARBEITUNG
                                              ===================================================================== */
                                          
                                          // Bei Start initialisieren
                                          Main('INIT'); 
                                          
                                          // Auslöser alle 10 Minuten
                                          schedule('*/10 * * * *', async function () { Main('UPDATE'); });
                                          
                                          // HAUPT-Programm
                                          async function Main(pOption) {
                                          //  -------------------------------------------------------------------------------            
                                              // States für jedes Nuki-Objekt anlegen
                                              let rd = await ReadNukiAPI('https://api.nuki.io/smartlock');
                                              rd.forEach(async function (item) { 
                                              //  -------------------------------------------------------------------------------     
                                                  let jsh = '0_userdata.0.nuki1.' + item.smartlockId;
                                          
                                                  // INIT: Benötigte States anlegen
                                                  if (pOption.includes('INIT')) {
                                                      await createStateAsync(jsh + '.Command',                    { name: 'Steuerung SmartLock',      role: 'state', type: 'string',  color: '#dcf901' });
                                                      await createStateAsync(jsh + '.Name',                       { name: 'SmartLock-Name',           role: 'state', type: 'string',  write: false});
                                                      await createStateAsync(jsh + '.BatteryCharge',              { name: 'Batterieladung',           role: 'state', type: 'number',  write: false, unit: '%'});
                                                      await createStateAsync(jsh + '.BatteryCharging',            { name: 'Batterie wird geladen',    role: 'state', type: 'boolean', write: false});
                                                      await createStateAsync(jsh + '.BatteryCritical',            { name: 'Batteriestatus SmartLock', role: 'state', type: 'boolean', write: false});
                                                      await createStateAsync(jsh + '.BatteryCriticalDoorSensor',  { name: 'Batteriestatus Türsensor', role: 'state', type: 'boolean', write: false});
                                                      await createStateAsync(jsh + '.Firmware',                   { name: 'Firmware',                 role: 'state', type: 'string',  write: false});
                                                      await createStateAsync(jsh + '.StateLock',                  { name: 'Status Türschloss',        role: 'state', type: 'number',  write: false, 
                                                                                                                  states: {   0: "uncalibrated",
                                                                                                                              1: "locked",
                                                                                                                              2: "unlocking",
                                                                                                                              3: "unlocked",
                                                                                                                              4: "locking",
                                                                                                                              5: "unlatched",
                                                                                                                              6: "unlocked (lock'n'go)",
                                                                                                                              7: "unlatching",
                                                                                                                              253: "boot run",
                                                                                                                              254: "motor blocked",
                                                                                                                              255: "undefined"  } });
                                                      await createStateAsync(jsh + '.StateDoor',                  { name: 'Status Tür',               role: 'state', type: 'number',  write: false, 
                                                                                                                  states: {   0: "unavailable", 
                                                                                                                              1: "deactivated", 
                                                                                                                              2: "door closed", 
                                                                                                                              3: "door opened", 
                                                                                                                              4: "door state unknown",
                                                                                                                              5: "calibrating"    } });
                                                      await createStateAsync(jsh + '.StateSummary',               { name: 'Status Gesamt',            role: 'state', type: 'number',  write: false,                                                                                     
                                                                                                                  states: {   0: "Unklar!", 
                                                                                                                              1: "Tür offen", 
                                                                                                                              2: "Tür unverschlossen", 
                                                                                                                              3: "Tür abgeschlossen"  } });
                                                      await createStateAsync(jsh + '.StateVIS',                   { name: 'State für VIS-Lock',       role: 'state', type: 'string', color: '#dcf901'});
                                                      await createStateAsync(jsh + '.UpdateDate',                 { name: 'Last Update Web-API',      role: 'state', type: 'string', write: false});
                                                  };
                                          
                                                  // States aktualisieren 
                                                  setState(jsh + '.Name',                       item.config.name, true);
                                                  setState(jsh + '.BatteryCharge',              item.state.batteryCharge, true);
                                                  setState(jsh + '.BatteryCharging',            item.state.batteryCharging, true);
                                                  setState(jsh + '.BatteryCritical',            item.state.batteryCritical, true);
                                                  setState(jsh + '.BatteryCriticalDoorSensor',  item.state.doorsensorBatteryCritical, true);
                                                  setState(jsh + '.Firmware',                   String(item.firmwareVersion), true);
                                                  setState(jsh + '.StateLock',                  item.state.state, true);
                                                  setState(jsh + '.StateDoor',                  item.state.doorState, true);
                                                  setState(jsh + '.UpdateDate',                 item.updateDate, true);
                                                 
                                                  // State für Grafik in VIS  
                                                  if      ( item.state.doorState == 3 )                           vStateSummary = 3   // open
                                                  else if ( item.state.doorState == 2 && item.state.state == 3)   vStateSummary = 2   // unverschlossen
                                                  else if ( item.state.doorState == 2 && item.state.state == 1)   vStateSummary = 1   // verschlossen
                                                  else                                                        var vStateSummary = 0;  // unklar
                                                  setState(jsh + '.StateSummary', vStateSummary, true);
                                                  
                                                  let vStateVIS = (item.state.state == 1) ? 'ZUSPERREN' : 'AUFSPERREN';
                                                  setState(jsh + '.StateVIS', vStateVIS, true);
                                          
                                                  // Name des Folders auf Schlossname anpassen 
                                                  let  vObj = getObject(jsh);
                                                  vObj.common.name = item.config.name;
                                                  setObject(jsh, vObj, function (err) {
                                                      if (err) log('Cannot write Object: ' + err, 'error');
                                                  })       
                                              //  -------------------------------------------------------------------------------         
                                              })   
                                          //  -------------------------------------------------------------------------------         
                                          }
                                          
                                          
                                          /*  =====================================================================
                                              FUNCTIONEN
                                              ===================================================================== */
                                          
                                          // LESEN NUKI-API
                                          async function ReadNukiAPI(pURL) {
                                          //  -------------------------------------------------------------------------------         
                                              let response = await axios.get(pURL, 
                                                  { headers: { 'Accept': 'application/json', 'Authorization': cAB }
                                                  });
                                              return response.data;
                                          //  -------------------------------------------------------------------------------         
                                          }
                                          
                                          
                                          // SCHREIBEN NUKI-API
                                          async function PostNukiAPI(pAction, pOption, pLockID) {
                                          //  -------------------------------------------------------------------------------         
                                              let  response = await axios.post(`https://api.nuki.io/smartlock/${pLockID}/action`,
                                                      { 'action': pAction, 'option': pOption },
                                                      { headers: {'Accept': 'application/json', 'Authorization': cAB, 'Content-Type': 'application/json' }
                                                      });
                                              t01 = setTimeout(function () { Main('UPDATE'); }, 20000);       // 20 Sek Nach Schliessvorgang neu auslesen
                                              return response.status;
                                          //  -------------------------------------------------------------------------------         
                                          }  
                                          
                                          
                                          /*  =====================================================================
                                              TRIGGER
                                              ===================================================================== */
                                          
                                          // REAKTION auf ein Command an das Device via State .Command
                                          on({id: /^0_userdata\.0\.nuki1\..*\.Command$/, change: "any"}, function (obj) {
                                          // ------------------------------------------------------------------------------------------ 
                                              let vCmdU   = obj.state.val.toUpperCase();      // Befehl in Grosschrift umsetzen
                                              let vLockID = obj.id.split('.')[3];             // LockID aus auslösendem State ermitteln
                                              
                                              if      (vCmdU == 'AUFSPERREN') PostNukiAPI(1, 0, vLockID)
                                              else if (vCmdU == 'ZUSPERREN')  PostNukiAPI(2, 0, vLockID)
                                              else if (vCmdU == 'ÖFFNEN')     PostNukiAPI(3, 0, vLockID)
                                              else if (vCmdU == 'LOCK-N-GO')  PostNukiAPI(4, 0, vLockID);
                                          // ------------------------------------------------------------------------------------------ 
                                          })
                                          
                                          ? Offline
                                          ? Offline
                                          Ein ehemaliger Benutzer
                                          schrieb am zuletzt editiert von
                                          #105

                                          @rk62 Vielen Dank für den Script.

                                          Hilf mir bitte schnell auf die Sprünge:

                                          Im NUKI-Web habe ich mehrere Auswahlen zur Verfügung um ein API zu erstellen. Welches musss ich nun nehmen und - wie genau sieht dann die Zeile
                                          const cAB aus?

                                          RK62R 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          653

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe