Nuki Smartlock & Opener

Steuern und überwachen des Nuki Smartlocks und des Nuki Openers mit ioBroker

Aktueller Release
2.8.2
Entwickler
Zefau, iobroker-community-adapters
Lizenz
MIT

Dieser ioBroker-Adapter (ehemals ioBroker.Nuki2) ermöglicht die Steuerung und Überwachung des Nuki Smart Lock und/oder des Nuki Opener sowohl über die Nuki Bridge API (v1.9.0, 06.05.2019) als auch über die Nuki Web API (v1.2.0, 31.05.2019) .

Dieser Adapter nutzt die Sentry-Bibliotheken, um Ausnahmen und Codefehler automatisch an die Entwickler zu melden. Weitere Details und Informationen zum Deaktivieren der Fehlerberichterstattung finden Sie in der Sentry-Plugin-Dokumentation ! Die Sentry-Berichterstattung wird ab js-controller 3.0 verwendet.

Inhaltsverzeichnis

  1. Installation
    1. Nuki Bridge API
    2. Nuki Web-API
  2. Änderungsprotokoll
  3. Lizenz

Merkmale

  • Unterstützung für Nuki Smartlock und Nuki Opener
  • Unterstützung sowohl für die Nuki Bridge API als auch für die Nuki Web API
  • Unterstützung für gehashte Token auf Hardware-Bridges (siehe https://developer.nuki.io/page/nuki-bridge-http-api-190/4#heading--token )
  • Falls Aktionen, die auf der Nuki Bridge API angewendet werden, fehlschlagen, z. B. aufgrund eines Bridge-Fehlers 503 (siehe https://developer.nuki.io/t/random-http-503-unavailable/909/85?u=zefau )
  • Wiederholungsversuche, falls die auf die Nuki Bridge API angewendeten Aktionen fehlschlagen (wenn die Nuki Web API nicht verwendet wird).
  • Option zur regelmäßigen Synchronisierung anstelle der Verwendung des Bridge-API-Callbacks (der sich aufgrund der Hardware-Bridge verzögern kann)
  • Aktualisierung aller Zustände der Nuki Web API beim Empfang eines Callbacks über die Nuki Bridge API
  • Autorisierte Benutzer für Nuki Smartlock und Nuki Opener abrufen (siehe unten Kanäle & Status )
  • Rufen Sie die Konfiguration für Nuki Smartlock und Nuki Opener ab (siehe unten Kanäle & Zustände ).
  • Nuki-Benachrichtigungen einrichten (siehe unten Kanäle & Status )
  • Web-Oberfläche, die die letzten Ereignisse Ihres Nuki Smartlock und Nuki Openers anzeigt:Erweiterte Webschnittstelle von Nuki

Installation

Nuki Bridge API

So erhalten Sie Ihr Hardware-Bridge-Token (funktioniert nicht für Software-Bridges):

  1. Anrufhttp://<bridge_ip>:<bridge_port>/auth Von jedem Browser in Ihrem Netzwerk aus. Die LED der Bridge schaltet sich ein.
  2. Drücken Sie den Knopf der Brücke innerhalb von 30 Sekunden.
  3. Das Ergebnis des Browseraufrufs sollte etwa so aussehen:
    {
       "token":"token123",
       "success":true
    }
    
  4. Verwenden Sie das generierte Token im nuki-extended Adapter.

Nuki Web-API

Gehen Sie wie folgt vor, um die Nuki Web API zu verwenden:

  1. Ein Token kann unter https://web.nuki.io/de/#/admin/web-api abgerufen werden.
  2. Verwenden Sie dieses Token im nuki-extended Adapter
  3. Stellen Sie sicher, dass Ihre Nuki-Geräte in der Nuki Web API veröffentlicht sind (verwenden Sie dazu die Smartphone-App über die Einstellungen).Activate Nuki Web )

Kanäle und Staaten

Wenn Sie ioBroker.nuki-extended erfolgreich eingerichtet haben, werden die folgenden Kanäle und Zustände erstellt:

Brücken (mit Nuki Bridge API)

Es wird eine Brücke als Gerät mit dem Namensmuster erstellt.bridge__<name of bridge> In jeder Bridge werden die folgenden Kanäle/Zustände erstellt:

KanalZustandBeschreibung
-_verbundenFlagge, die angibt, ob die Bridge mit dem Nuki-Server verbunden ist oder nicht.
-NameName der Brücke / des Servers
-bridgeIdID der Brücke / des Servers
-bridgeIPIP-Adresse der Brücke
-bridgePortHafen der Brücke
-BrückentypBrückentyp
-Hardware-IDID der Hardwarebrücke (nur Hardwarebrücke)
-erfrischtZeitstempel der letzten Aktualisierung
-BetriebszeitVerfügbarkeit der Brücke in Sekunden
-versFirmwareVersion der Bridge-Firmware (nur Hardware-Bridge)
-versWifiVersion der Firmware der WLAN-Module (nur Hardware-Bridge)
-versAppVersion der Brücken-App (nur Softwarebrücke)
Rückrufe-Rückblenden auf die Brücke
RückrufeListeListe der Rückrufe
Rückruffunktionen. Rückruf-ID_löschenLösche die Callback-Funktion.
Rückruffunktionen. Rückruf-IDURLURL des Rückrufs

Allgemeine Informationen

KanalZustandBeschreibung
-VerbindungAdapterverbindungsstatus
-bridgeApiSyncZeigt an, ob die Synchronisierung über die Bridge-API aktiviert ist.
-bridgeApiLastZeitstempel der letzten Bridge-API-Synchronisierung
-webApiSyncZeigt an, ob die Synchronisierung über die Web-API aktiviert ist.
-webApiLastZeitstempel der letzten Web-API-Synchronisierung
Benachrichtigungen-Benachrichtigungen
Benachrichtigungen. Benachrichtigungsindex--
Benachrichtigungen. Benachrichtigungsindex.Einstellungen-Benachrichtigungseinstellungen
Benachrichtigungen. Benachrichtigungsindex.Einstellungen . Einstellungsindex--
Benachrichtigungen. Benachrichtigungsindex.Einstellungen . EinstellungsindexAuth-IDsEine Reihe von Authentifizierungs-IDs, um Push-Benachrichtigungen an bestimmte Benutzer oder Tastaturen zu filtern. Wenn keine Einträge vorhanden sind, werden Push-Benachrichtigungen für alle Benutzer und Tastaturen ausgelöst.
Benachrichtigungen. Benachrichtigungsindex.Einstellungen . EinstellungsindexsmartlockIdWenn die Smartlock-ID nicht festgelegt ist, werden alle Smart Locks des Kontos für Push-Benachrichtigungen aktiviert.
Benachrichtigungen. Benachrichtigungsindex.Einstellungen . EinstellungsindextriggerEventsEine Gruppe, bei der Push-Benachrichtigungen ausgelöst werden sollen: Verriegeln, Entriegeln, Entriegeln, Lockngo, Öffnen, Klingeln, Türsensor, Warnungen, Smartlock
Benachrichtigungen. BenachrichtigungsindexSpracheDie Sprache der Push-Nachrichten
Benachrichtigungen. Benachrichtigungsindexletztes AktivierungsdatumLetztes aktives Datum
Benachrichtigungen. BenachrichtigungsindexBenachrichtigungs-IDDie eindeutige notificationId für die Benachrichtigung
Benachrichtigungen. BenachrichtigungsindexosDas Betriebssystem
{"0": 'Android', "1": 'iOS', "2": 'Webhook'}
Benachrichtigungen. BenachrichtigungsindexPush-IDDie Push-ID oder die POST-URL für einen Webhook
Benachrichtigungen. BenachrichtigungsindexReferenz-IDDie Referenz-ID, eine ID zur Identifizierung eines fremden Systems
Benachrichtigungen. BenachrichtigungsindexGeheimnisDie 40 Byte lange Hexadezimalzeichenkette zum Signieren der Prüfsumme der POST-Nutzdaten, wenn es sich bei der Benachrichtigung um einen Webhook handelt (os=2).
Benachrichtigungen. BenachrichtigungsindexStatusAktueller Aktivierungszustand
{"0": 'INIT', "1": 'ACTIVE', "2": 'FAILED'}

Smartlocks und Öffner (mit Nuki Bridge API)

Es wird ein Schloss als Gerät mit dem Namensmuster erstellt.door__<name of door> Die folgenden Kanäle/Zustände werden in jedem Lock erstellt (bei Verwendung der Nuki Bridge API):

KanalZustandBeschreibung
-_AKTIONLöse eine Aktion am Schloss aus
-AusweisID des Nuki
-NameName des Nuki
-TypGerätetyp
-bridgeIdBrücken-ID der Nuki
Status-Aktueller Status des Schlosses
StatusBatteriekritisch**Status: Kritischer Batteriestand
StatusSperrstatus**Aktueller Sperrzustand des Nuki
Statusgesperrt**Anzeige, ob die Tür verriegelt ist.
Statusaktualisiert**Zeitstempel der letzten Aktualisierung

** Markierte Zustände werden bei einer Nuki-Aktion aktualisiert, wenn ein Callback festgelegt ist.

Smartlocks und Öffner (mit Nuki Web API)

Es wird ein Schloss als Gerät mit dem Namensmuster erstellt.door__<name of door> Die folgenden Kanäle/Zustände werden in jedem Lock erstellt (bei Verwendung der Nuki Web API):

KanalZustandBeschreibung (mögliche Werte)
-_AKTIONLöse eine Aktion am Schloss aus
-AusweisID des Nuki
-NameName des Nuki
-TypGerätetyp
-ProtokolleProtokolle / Geschichte von Nuki
-bridgeIdBrücken-ID der Nuki

Information

KanalZustandBeschreibung (mögliche Werte)
Info-Weitere Informationen
InfoKonto-IDDie Konto-ID
InfoAuth-IDDie Autorisierungs-ID
InfoFavoritDie Lieblingsflagge
InfoFirmware-VersionDie Firmware-Version
InfoHardwareversionDie Hardwareversion
InfooperationIdDie Operations-ID – falls festgelegt, ist das Gerät für eine andere Operation gesperrt.
InfoServerstatusDer Serverzustand
{"0": 'OK', "1": 'UNREGISTERED', "2": 'AUTH UUID INVALID', "3": 'AUTH INVALID', "4": 'OFFLINE'}
InfoadminPinStateDer Admin-PIN-Status
{"0": 'OK', "1": 'MISSING', "2": 'INVALID'}
Infovirtuelles GerätDie Flagge, die ein virtuelles Smart Lock anzeigt
InfoErstellungsdatumDas Erstellungsdatum
InfoDatum der AktualisierungDas Aktualisierungsdatum

Zustand

KanalZustandBeschreibung (mögliche Werte)
Zustand-Aktueller Status des Schlosses
ZustandBatteriekritischStatus kritischer Batteriestand
ZustandgeschlossenAnzeige, ob die Tür geschlossen ist (boolescher Wert von doorState)
ZustanddoorStateAktueller Türzustand des Nuki
Zustandletzte AktionLetzte ausgelöste Aktion
ZustandSperrstatusAktueller Sperrzustand des Nuki
ZustandgesperrtAnzeige, ob die Tür verriegelt ist.
ZustandModusDer Smartlock-Modus
{"0": 'UNINITIALIZED', "1": 'PAIRING', "2": 'NORMAL', "3": 'UNKNOWN', "4": 'MAINTENANCE'}
ZustandringToOpenTimerVerbleibende Zeit bis zum Öffnen des Rings
ZustanderfrischtZeitstempel der letzten Aktualisierung
ZustandauslösenDer Zustandsauslöser
{"0": 'SYSTEM', "1": 'MANUAL', "2": 'BUTTON', "3": 'AUTOMATIC', "4": 'WEB', "5": 'APP'}

Allgemeine Konfiguration

KanalZustandBeschreibung (mögliche Werte)
Konfiguration-Konfiguration
KonfigurationWerbemodusDer Werbemodus (Batteriesparmodus)
{"0": 'AUTOMATIC', "1": 'NORMAL', "2": 'SLOW', "3": 'SLOWEST'}
Konfigurationautomatisches EntriegelnTrifft zu, wenn die Tür beim Entriegeln (Knauf) entriegelt werden soll.
KonfigurationSchaltfläche aktiviertTrifft zu, wenn die Taste am Smartlock aktiviert ist.
KonfigurationFähigkeitenDie Funktionen geben an, ob die Türöffnung per App, RTO oder beidem möglich ist.
KonfigurationSommerzeitmodusDer Sommerzeitmodus
KonfigurationfobAction1Die Fernbedienungsaktion, wenn die Taste einmal gedrückt wird
{"0": 'NONE', "1": 'UNLOCK', "2": 'LOCK', "3": 'LOCK_N_GO', "4": 'INTELLIGENT'}
KonfigurationfobAction2Die Fernbedienungsfunktion wird ausgelöst, wenn die Taste zweimal gedrückt wird.
{"0": 'NONE', "1": 'UNLOCK', "2": 'LOCK', "3": 'LOCK_N_GO', "4": 'INTELLIGENT'}
KonfigurationfobAction3Die Fernbedienungsfunktion wird aktiviert, wenn die Taste dreimal gedrückt wird.
{"0": 'NONE', "1": 'UNLOCK', "2": 'LOCK', "3": 'LOCK_N_GO', "4": 'INTELLIGENT'}
KonfigurationfobPairedTrifft zu, wenn ein Schlüsselanhänger mit dem Smartlock gekoppelt ist.
KonfigurationGPS-BreitengradBreite
KonfigurationGPS-LängengradLänge
KonfigurationhomekitStateDer Heimkit-Zustand
{"0": 'UNAVAILABLE', "1": 'DISABLED', "2": 'ENABLED', "3": 'ENABLED & PAIRED'}
KonfigurationTastaturpaarTrifft zu, wenn ein Tastenfeld mit dem Smartlock gekoppelt ist.
KonfigurationLED-HelligkeitDie Helligkeit der LED: 0 (aus) bis 5 (maximal)
KonfigurationLED-AktiviertTrifft zu, wenn die LED am Smartlock aktiviert ist.
KonfigurationNameDer Name des Smartlocks für neue Benutzer
KonfigurationBetriebsmodusBetriebsart des Öffners
KonfigurationKopplung aktiviertWahr, wenn die Kopplung über die Smartlock-Taste zugelassen wird.
KonfigurationsingleLockTrifft zu, wenn das Smartlock nur einmal (statt zweimal) verriegeln soll.
KonfigurationZeitzonen-IDDie Zeitzonen-ID
KonfigurationZeitzonenverschiebungDie Zeitzonenabweichung (in Minuten)

Erweiterte Konfiguration

KanalZustandBeschreibung (mögliche Werte)
erweiterte Konfiguration-Erweiterte Konfiguration
erweiterte Konfigurationautomatische SperrzeitüberschreitungSekunden, bis sich das intelligente Schloss nach dem Entsperren wieder automatisch verriegelt. Keine automatische Wiederverriegelung, wenn der Wert 0 ist.
erweiterte Konfigurationautomatische BatterietyperkennungKennzeichen, das angibt, ob die automatische Erkennung des Batterietyps aktiviert ist.
erweiterte KonfigurationAkku-TypDie Art der im intelligenten Schloss vorhandenen Batterien
{"0": 'ALKALI', "1": 'ACCUMULATOR', "2": 'LITHIUM'}
erweiterte Konfigurationabgetrennter ZylinderFlagge, die anzeigt, dass die Innenseite des gebrauchten Zylinders von der Außenseite getrennt ist
erweiterte KonfigurationDoppeltastendruckaktionDie gewünschte Aktion, wenn die Taste zweimal gedrückt wird
{"0": "NO_ACTION", "1": "INTELLIGENT", "2": "UNLOCK", "3": "LOCK", "4": "UNLATCH", "5": "LOCK_N_GO", "6": "SHOW_STATUS"}
erweiterte KonfigurationlngTimeoutZeitlimit in Sekunden für Lock 'n' Go
erweiterte KonfigurationgesperrtePositionOffsetGradeVersatz, der die gesperrte Position verändert
erweiterte KonfigurationAktion für das Drücken einer einzelnen SchaltflächeDie gewünschte Aktion, wenn die Taste einmal gedrückt wird
{"0": "NO_ACTION", "1": "INTELLIGENT", "2": "UNLOCK", "3": "LOCK", "4": "UNLATCH", "5": "LOCK_N_GO", "6": "SHOW_STATUS"}
erweiterte KonfigurationsingleLockedPositionOffsetDegreesOffset, der die einzelne gesperrte Position verändert
erweiterte KonfigurationGesamtgradeDie absolute Gesamtposition in Grad, die während der Kalibrierung erreicht wurde.
erweiterte KonfigurationEntriegelungsdauerDauer in Sekunden, in der der Riegel in der entriegelten Position gehalten wird
erweiterte KonfigurationungesperrtePositionOffsetGradeOffset, der die entriegelte Position verändert
erweiterte KonfigurationUnlockedToLockedTransitionOffsetGradeOffset, der die Position verändert, an der der Übergang von entriegelt zu verriegelt stattfindet

Opener Erweiterte Konfiguration

KanalZustandBeschreibung (mögliche Werte)
openerAdvancedConfig-Öffnerkonfiguration
openerAdvancedConfigIntercom-IDDie Datenbank-ID der angeschlossenen Gegensprechanlage
openerAdvancedConfigbusModeSwitchMethode zum Umschalten zwischen Daten- und Analogmodus
{"0": 'DATA MODE', "1": 'ANALOGUE MODE'}
openerAdvancedConfigKurzschlussdauerDauer des Kurzschlusses beim Umschalten in den BUS-Modus in ms
openerAdvancedConfigelektrische ZündverzögerungVerzögerung der elektrischen Türöffnerauslösung in ms (nach Verriegelungsvorgang 3 - elektrische Türöffnerauslösung-)
openerAdvancedConfigzufällige elektrische SchlagverzögerungZufällige elektrische Zündverzögerung (Bereich 3000–7000 ms) zur Simulation einer Person im Inneren, die den elektrischen Zünder auslöst.
openerAdvancedConfigelektrische SchlagdauerDauer der elektrischen Türöffnerauslösung in ms (Schlossbetätigung 3 - elektrische Türöffnerauslösung-)
openerAdvancedConfigdisableRtoAfterRingFlag zum Deaktivieren von RTO nach dem Klingeln
openerAdvancedConfigrtoTimeoutNach Ablauf dieser Zeitspanne in Minuten wird RTO automatisch deaktiviert.
openerAdvancedConfigTürklingelunterdrückungDer Türklingelunterdrückungsmodus
{"0": 'NEVER', "1": 'ALWAYS', "2": 'RTO', "3": 'CONTINUOUS', "4": 'CONTINUOUS + RTO'}
openerAdvancedConfigDauer der TürklingelunterdrückungDauer der Türklingelunterdrückung in ms (nur im Betriebsmodus 2 -digitale Gegensprechanlage-)
openerAdvancedConfigKlingelnDer Ton für Klingeln
openerAdvancedConfigSound öffnenDer Klang für offen
openerAdvancedConfigsoundRtoDer Ton für RTO
openerAdvancedConfigsoundCmDer Sound für CM
openerAdvancedConfigKlangbestätigungDie Tonbestätigung
openerAdvancedConfigSchallpegelDer Schallpegel
openerAdvancedConfigAktion für einen TastendruckDie gewünschte Aktion, wenn die Taste einmal gedrückt wird
openerAdvancedConfigDoppeltastendruckaktionDie gewünschte Aktion, wenn die Taste zweimal gedrückt wird
openerAdvancedConfigAkku-TypDie Art der im intelligenten Schloss vorhandenen Batterien
{"0": 'ALKALI', "1": 'ACCUMULATOR', "2": 'LITHIUM'}
openerAdvancedConfigautomatische BatterietyperkennungKennzeichen, das angibt, ob die automatische Erkennung des Batterietyps aktiviert ist.
openerAdvancedConfigoperationIdDie Operations-ID – falls festgelegt, ist das Gerät für eine andere Operation gesperrt.

Benutzer

KanalZustandBeschreibung (mögliche Werte)
Nutzer-Benutzer des Schlosses
Benutzer. Benutzername-Benutzername
Benutzer. BenutzernameerlaubtAbDatumDas zulässige Startdatum
Benutzer. Benutzernameerlaubt bis DatumDie zulässige Dauer bis zum Datum
Benutzer. BenutzernameerlaubteWochentageDie zulässigen Wochentage
{64: 'Monday', 32: 'Tuesday', 16: 'Wednesday', 8: 'Thursday', 4: 'Friday', 2: 'Saturday', 1: 'Sunday'}
Benutzer. BenutzernameerlaubtAbZeitDie zulässige Startzeit (in Minuten ab Mitternacht)
Benutzer. Benutzernameerlaubt bis ZeitDie zulässige Frist (in Minuten ab Mitternacht)
Benutzer. BenutzernameAuth-IDDie Smartlock-Autorisierungs-ID
Benutzer. BenutzernameErstellungsdatumDas Erstellungsdatum
Benutzer. BenutzernameDatum der AktualisierungDas Aktualisierungsdatum
Benutzer. BenutzernameDatum der letzten AktivitätLetztes aktives Datum
Benutzer. BenutzernameermöglichtWahr, wenn der Benutzer aktiviert ist
Benutzer. BenutzernameAusweisDie eindeutige ID des Benutzers
Benutzer. BenutzernameSperrenanzahlDie Anzahl der Schlösser
Benutzer. BenutzernameNameName des Benutzers
Benutzer. BenutzernameFernzugriff erlaubtWahr, wenn die Authentifizierung über Fernzugriff verfügt
Benutzer. BenutzernamesmartlockIdDie Nuki-ID
Benutzer. BenutzernameTypDie Art der Genehmigung
{"0": 'APP', "1": 'BRIDGE', "2": 'FOB', "3": 'KEYPAD', "13": 'KEYPAD CODE', "14": 'Z-KEY', "15": 'VIRTUAL'}

Smart-Home-/Alexa-Integration mit ioBroker.javascript

Einige Beispiele für eine mögliche Integration in Ihr Smart Home.

Schließe die Tür um 22 Uhr ab.

var states = {
    "0": "uncalibrated",
    "1": "locked",
    "2": "unlocking",
    "3": "unlocked",
    "4": "locking",
    "5": "unlatched",
    "6": "unlocked (lock n go)",
    "7": "unlatching",
    "254": "motor blocked",
    "255": "undefined"
};

schedule('0 22 * * *', function()
{
    var status = (getState('nuki-extended.0.smartlocks.home_door.state.lockState').val);
    var msg = 'Main Door door is ' + (states[status]) + '. ';

    if (status == '3')
    {
        setState('nuki-extended.0.smartlocks.home_door._ACTION', 2);
        msg += 'Locking door..'
    }
    else
        msg += 'No action taken.'

    log(msg, {m: 'Nuki', o: ['msg']});
});

Ersetzennuki-extended.0.door__home_door.status.lockState mit dem Sperrstatus Ihres Schlosses! Sie können die Nachricht auch anpassen übermsg Die

Lassen Sie sich von Alexa über Schlossänderungen informieren.

Hierfür wird der ioBroker-Adapter ioBroker.alexa2 ( https://github.com/Apollon77/ioBroker.alexa2 ) benötigt.

Um die Sprachausgabe von Alexa zu nutzen, definieren wir eine Funktionsay Fügen Sie die folgende Funktion in ein Skript im Ordner „global“ von ioBroker.javascript ein. WICHTIG: Ersetzen Sie #IHRE ALEXA-ID# (und auch #) durch Ihre Alexa-ID. Sie finden die Alexa-ID in der Objektstruktur von ioBroker.alexa2.0.Echo-Devices Die

/**
 * Say something with Alexa.
 * 
 * @param       {string}        message         Message to say
 * @param       {string|array}  alexas          Alexa Device to say the voice message
 * @return      void
 * 
 */
function say(message, alexas = '#YOUR ALEXA ID#') // use alexas = ['#YOUR ALEXA ID 1#', '#YOUR ALEXA ID 2#'] for default voice output from multiple devices (also replace #)
{
    alexas = typeof alexas === 'string' ? [alexas] : alexas;
    alexas.forEach(function(alexa)
    {
        setState('alexa2.0.Echo-Devices.' + alexa + '.Commands.speak', message);
    });
}

Sie können diese Funktion in ioBroker.javascript verwenden, um mit Alexa einen Satz zu sagen.say('Hello World') odersay('Hello World', ['#YOUR ALEXA ID 1#', '#YOUR ALEXA ID 2#']) zur Sprachausgabe von mehreren Geräten.

Erstellen Sie im Ordner „common“ der Datei ioBroker.javascript ein Skript und fügen Sie den folgenden Listener hinzu. WICHTIG: Ersetzen Sie #LOCK STATE ID# (und auch #) durch den Status, der den Sperrstatus enthält (z. B.nuki-extended.0.door__home_door.status.lockState ):

const DOOR_STATES = {
    "0": "uncalibrated",
    "1": "locked",
    "2": "unlocking",
    "3": "unlocked",
    "4": "locking",
    "5": "unlatched",
    "6": "unlocked (lock n go)",
    "7": "unlatching",
    "254": "motor blocked",
    "255": "undefined"
};

/*
 * LISTEN TO CHANGES TO LOCK STATE
 * 
 */
on({id: 'nuki-extended.0.smartlocks.home_door.state.lockState', change: 'any'}, function(obj)
{
    if (obj !== undefined && obj.state !== undefined)
      say('Door is ' + DOOR_STATES[obj.state.val] + '!')
});

Lassen Sie sich von Telegram über Sperränderungen informieren.

Hierfür wird der ioBroker-Adapter ioBroker.telegram ( https://github.com/iobroker-community-adapters/ioBroker.telegram ) benötigt.

Um die Nachrichtenausgabe von Telegram zu nutzen, definieren wir eine Funktionmsg Undmessenger Fügen Sie die folgende Funktion in ein Skript im Ordner „global“ von ioBroker.javascript ein:

/**
 * Send something via telegram.
 * 
 * @param       {string}        message         Message to print
 * @param       {string|array}  receiver        Users to send the message to
 * @return      void
 * 
 */
function msg(message, receiver = 'ALL')
{
    if (receiver == 'ALL')
        messenger(message);
    
    else
    {
        receiver = typeof receiver == 'string' ? [receiver] : receiver;
        receiver.forEach(function(user)
        {
            messenger(message, user);
        });
    }
}
/**
 * Sends a message / text.
 * 
 * @param   {string}            content         Message to send
 * @param   {string}            user            (optional) Specific user to send the message to (defaults to all registered users)
 * @return  void
 * 
 */
function messenger(content, user = '')
{
    var config = {
        text: content,
        parse_mode: 'HTML',
        reply_markup: {
            resize_keyboard: true,
            one_time_keyboard: false
        }
    };
    
    sendTo('telegram', user ? Object.assign({user: user}, config) : config);
}

Sie können diese Funktion in ioBroker.javascript verwenden, um beliebige Inhalte über Telegram zu senden.msg('Hello World') (an alle Benutzer) odermsg('Hello World', 'Zefau') (an bestimmte Nutzer).

Erstellen Sie im Ordner „common“ der Datei ioBroker.javascript ein Skript und fügen Sie den folgenden Listener hinzu. WICHTIG: Ersetzen Sie #LOCK STATE ID# (und auch #) durch den Status, der den Sperrstatus enthält (z. B.nuki-extended.0.door__home_door.status.lockState ):

const DOOR_STATES = {
    "0": "uncalibrated",
    "1": "locked",
    "2": "unlocking",
    "3": "unlocked",
    "4": "locking",
    "5": "unlatched",
    "6": "unlocked (lock n go)",
    "7": "unlatching",
    "254": "motor blocked",
    "255": "undefined"
};

/*
 * LISTEN TO CHANGES TO LOCK STATE
 * 
 */
on({id: 'nuki-extended.0.smartlocks.home_door.state.lockState', change: 'any'}, function(obj)
{
    if (obj !== undefined && obj.state !== undefined)
      msg('Door is ' + DOOR_STATES[obj.state.val] + '!')
});

HINWEIS: Wenn Sie sowohl das Alexa- als auch das Telegram-Skript verwenden, dürfen Sie nur einen Listener für beide Aktionen definieren:

const DOOR_STATES = {
    "0": "uncalibrated",
    "1": "locked",
    "2": "unlocking",
    "3": "unlocked",
    "4": "locking",
    "5": "unlatched",
    "6": "unlocked (lock n go)",
    "7": "unlatching",
    "254": "motor blocked",
    "255": "undefined"
};

/*
 * LISTEN TO CHANGES TO LOCK STATE
 * 
 */
on({id: 'nuki-extended.0.smartlocks.home_door.state.lockState', change: 'any'}, function(obj)
{
    if (obj !== undefined && obj.state !== undefined)
    {
      say('Door is ' + DOOR_STATES[obj.state.val] + '!')
      msg('Door is ' + DOOR_STATES[obj.state.val] + '!')
    }
});

Lassen Sie sich von Telegram und Alexa über Anrufe per Opener benachrichtigen.

Hierfür werden der ioBroker-Adapter ioBroker.telegram ( https://github.com/iobroker-community-adapters/ioBroker.telegram ) und der ioBroker-Adapter ioBroker.alexa2 ( https://github.com/Apollon77/ioBroker.alexa2 ) benötigt.

/*
 * Alexa and Telegram to notify on Opener Ringing state
 *
 */
let phrase = 'Somebody is ringing the doorbell.'; // Es hat an der Tür geklingelt
on({id: 'nuki-extended.0.openers.opener.state.ringStateUpdate', change: "any", ack: true}, function (s) {
  let state= s && s.state;

  if (state.val === true) {
    setState("alexa2.0.Echo-Devices.#YOUR ALEXA ID#.Commands.speak"/*speak*/, phrase);
    sendTo("telegram", "send", { text: phrase });
  }
});

Changelog

Please see release page for changelog and detailed information.

2.8.2 (2026-05-14)

  • (mcm1957) Missing translations have been added.
  • (mcm1957) Dependencies have been updated

2.8.1 (2026-05-13)

  • (copilot) Migrated linting setup to ESLint 9 with the shared @iobroker/eslint-config.
  • (copilot) Resolved ESLint error findings in adapter core files and aligned linting ignores for legacy frontend scripts.

2.8.0 (2026-05-13)

  • (copilot) Adapter requires node.js >= 22 now
  • (copilot) Adapter requires admin >= 7.7.22 now
  • (copilot) Adapter requires js-controller >= 6.0.11 now
  • (VierlingMt) Adding Nuki Smartlock 4.X and Pro Support, "toLowerCase" error fixed
  • (sbormann) Added deviceType 5 and fixed empty type variable
  • (mcm1957) Dependencies have been updated

2.7.0 (2024-04-21)

  • (mcm1957) Adapter requires node.js 18 and js-controller >= 5 now
  • (mcm1957) Dependencies have been updated

2.6.5 (2022-06-17)

  • (Apollon77) Fix some crash cases reported by Sentry

License

The MIT License (MIT)

Copyright (c) 2024-2026 iobroker-community-adapters iobroker-community-adapters@gmx.de
Copyright (c) 2019-2022 Zefau zefau@mailbox.org

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.