Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    220

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Nuki Smart Lock 3.0 pro in ioBroker einbinden

Scheduled Pinned Locked Moved ioBroker Allgemein
246 Posts 58 Posters 65.3k Views 51 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 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
    wrote on last edited by
    #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 Reply Last reply
    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
      A Former User
      wrote on last edited by
      #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 Reply Last reply
      1
      • ? A Former User

        @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
        wrote on last edited by
        #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 Replies Last reply
        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
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #100

            @homecineplexx
            im Play Store als Beta-Tester beitreten

            H 1 Reply Last reply
            0
            • ste_gleiS ste_glei

              @homecineplexx
              im Play Store als Beta-Tester beitreten

              H Offline
              H Offline
              homecineplexx
              wrote on last edited by
              #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 Reply Last reply
              0
              • RK62R Offline
                RK62R Offline
                RK62
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #103

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

                  RK62R 1 Reply Last reply
                  0
                  • H homecineplexx

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

                    RK62R Offline
                    RK62R Offline
                    RK62
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      A Former User
                      wrote on last edited by
                      #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 Reply Last reply
                      0
                      • ? A Former User

                        @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 Offline
                        RK62R Offline
                        RK62
                        wrote on last edited by
                        #106

                        @vazi Das hier:
                        843A6954-87FB-43B3-A130-3855A792FF3D.jpeg
                        Und dann den generierten Schlüssel zwischen die beiden einfachen Anführungszeichen setzen.

                        ? 1 Reply Last reply
                        0
                        • RK62R RK62

                          @vazi Das hier:
                          843A6954-87FB-43B3-A130-3855A792FF3D.jpeg
                          Und dann den generierten Schlüssel zwischen die beiden einfachen Anführungszeichen setzen.

                          ? Offline
                          ? Offline
                          A Former User
                          wrote on last edited by
                          #107

                          @rk62 Danke.

                          Leider funktioniert es "noch" nicht.... Habe im Protokoll diese Fehlermeldungen:

                          Fehlermeldung.png

                          RK62R 1 Reply Last reply
                          0
                          • ? A Former User

                            @rk62 Danke.

                            Leider funktioniert es "noch" nicht.... Habe im Protokoll diese Fehlermeldungen:

                            Fehlermeldung.png

                            RK62R Offline
                            RK62R Offline
                            RK62
                            wrote on last edited by
                            #108

                            @vazi Google sagt: Der HTTP-Code „401 Unauthorized Access“ ist ein clientseitiger Fehler. Es zeigt an, dass der Server der Website eine „WWW-Authenticate“-Header-Antwort mit einer Aufforderung an den Besucher zurücksendet. Da der Besucher keine gültigen Anmeldedaten angegeben hat, wurde der Zugriff verweigert und die Fehlerseite geladen.

                            Versuche mal die API auf einem PC mit curl anzusprechen:
                            Alles in einer Zeile angeben und "xxxx..." durch Deinen API-Schlüssel ersetzen.

                            curl -X GET --header "Accept: application/json" --header "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://api.nuki.io/smartlock
                            
                            ? 1 Reply Last reply
                            0
                            • RK62R RK62

                              @vazi Google sagt: Der HTTP-Code „401 Unauthorized Access“ ist ein clientseitiger Fehler. Es zeigt an, dass der Server der Website eine „WWW-Authenticate“-Header-Antwort mit einer Aufforderung an den Besucher zurücksendet. Da der Besucher keine gültigen Anmeldedaten angegeben hat, wurde der Zugriff verweigert und die Fehlerseite geladen.

                              Versuche mal die API auf einem PC mit curl anzusprechen:
                              Alles in einer Zeile angeben und "xxxx..." durch Deinen API-Schlüssel ersetzen.

                              curl -X GET --header "Accept: application/json" --header "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://api.nuki.io/smartlock
                              
                              ? Offline
                              ? Offline
                              A Former User
                              wrote on last edited by A Former User
                              #109

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

                              curl -X GET --header "Accept: application/json" --header "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://api.nuki.io/smartlock

                              Diese Befehlszeile muss ja in der "Eingabeaufforderung" eingetragen werden.... Sorry.. nicht im Browser...

                              Da bekomme ich schon etliche Angaben zurück gemeldet...

                              RK62R 1 Reply Last reply
                              0
                              • ? A Former User

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

                                curl -X GET --header "Accept: application/json" --header "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://api.nuki.io/smartlock

                                Diese Befehlszeile muss ja in der "Eingabeaufforderung" eingetragen werden.... Sorry.. nicht im Browser...

                                Da bekomme ich schon etliche Angaben zurück gemeldet...

                                RK62R Offline
                                RK62R Offline
                                RK62
                                wrote on last edited by
                                #110

                                @vazi Dann sollte es im JavaScript mit dem gleichen Authorisation-String auch funktionieren. Der muss auch hier mit „Bearer<Leerstelle>“ starten.

                                ? 1 Reply Last reply
                                0
                                • RK62R RK62

                                  @vazi Dann sollte es im JavaScript mit dem gleichen Authorisation-String auch funktionieren. Der muss auch hier mit „Bearer<Leerstelle>“ starten.

                                  ? Offline
                                  ? Offline
                                  A Former User
                                  wrote on last edited by
                                  #111

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

                                  @vazi Dann sollte es im JavaScript mit dem gleichen Authorisation-String auch funktionieren. Der muss auch hier mit „Bearer<Leerstelle>“ starten.

                                  Du bist spiiiitze:+1: herzlichen Dank @RK62

                                  In meiner Zeite im Script fehlte das Wort Bearer...... nun hat es geklappt und ich sehe die Daten unter 0_userdata und kann somit mein NUKI 3.0 Plus wieder voll im ioBroker verwenden. Toll.

                                  Für Deine / Eure Hilfe vielen vielen herzlichen Dank an dieser Stelle. Ich muss wirklich sagen, dieses Forum hier ist absolut spitze.

                                  Wünsche Euch allen bereits jetzt Frohe Ostern. :egg:

                                  Gruss
                                  vazi

                                  1 Reply Last reply
                                  0
                                  • 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

                                    M Offline
                                    M Offline
                                    martin
                                    wrote on last edited by
                                    #112

                                    @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

                                    Ich habe jetzt mal die IP von meinem Iobroker sowie Nutzername und Passwort eingetragen. Die App meldet, dass keine MQTT Verbindung verfügbar ist. Woran liegt das?

                                    ste_gleiS 1 Reply Last reply
                                    0
                                    • M martin

                                      @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

                                      Ich habe jetzt mal die IP von meinem Iobroker sowie Nutzername und Passwort eingetragen. Die App meldet, dass keine MQTT Verbindung verfügbar ist. Woran liegt das?

                                      ste_gleiS Offline
                                      ste_gleiS Offline
                                      ste_glei
                                      wrote on last edited by ste_glei
                                      #113

                                      @martin
                                      check mal die mqtt Instanz ob da was falsch konfiguriert ist.

                                      Screenshot 2023-04-05 163857.jpg

                                      M 1 Reply Last reply
                                      0
                                      • ste_gleiS ste_glei

                                        @martin
                                        check mal die mqtt Instanz ob da was falsch konfiguriert ist.

                                        Screenshot 2023-04-05 163857.jpg

                                        M Offline
                                        M Offline
                                        martin
                                        wrote on last edited by
                                        #114

                                        @ste_glei

                                        Screenshot_2023-04-08-16-40-45-11_d265739bb35439798dba5d446a7ebeb5.jpg

                                        Opera Momentaufnahme_2023-04-08_164252_192.168.177.44.png

                                        So siehts aus, aber läuft nicht.

                                        ste_gleiS 1 Reply Last reply
                                        0
                                        • M martin

                                          @ste_glei

                                          Screenshot_2023-04-08-16-40-45-11_d265739bb35439798dba5d446a7ebeb5.jpg

                                          Opera Momentaufnahme_2023-04-08_164252_192.168.177.44.png

                                          So siehts aus, aber läuft nicht.

                                          ste_gleiS Offline
                                          ste_gleiS Offline
                                          ste_glei
                                          wrote on last edited by ste_glei
                                          #115

                                          @martin

                                          Nuki App: IP ohne Port
                                          Mqtt Instanz Port 1883

                                          H M 2 Replies Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          601

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe