Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

SmartHome allgemein Nuki Schloss per RFID Tag öffnen mit ESP32

maeomat

Newbie
Registriert
21. März 2010
Beiträge
8
Reaktionspunkte
3
Punkte
230
Hallo Zusammen,
ich würde gerne mein Nuki Schloss mit einem Simplen RFID Tag öffnen. Die Idee ist, dies über einen ESP32 zu realisieren, der einen HTTP GET an die NUKI API sendet, sobald er über einen Leser den richtigen Tag erkannt hat. Hat das schon mal jemand realisiert? Falls ja, wie habt ihr die TAG-Verwaltung gelöst?

Für Home Assistant gibt es bereits etwas vergleichbares, ich verwende zu Hause aber den IOBroker. Vielleicht hat jemand ja dafür auch etwas realisiert...

Andi
 
Hab es jetzt selber (mit Hilfe von Gemini) gelöst.
Hardware: Wemos D1 R2 Klon, ein PN532 im IC2 Modus und ein Piezo-Lautsprecher.

PN532 / KomponenteESP8266 PinBeschreibung / GPIO
VCC5V / VINStromversorgung des RFID-Moduls
GNDGNDGemeinsame Masse für alle Bauteile
SDAD2I2C-Datenleitung (GPIO 4)
SCLD1I2C-Taktleitung (GPIO 5)
Buzzer (+)D3Signal zum aktiven Pieper (GPIO 0) (über einen 100Ohm Widerstand)
Buzzer (-)GNDMasseleitung des Piepers

Ardurino-IDE:
Dieser Code liest die RFID-UUID, sendet sie per MQTT an ioBroker und wartet auf dem Topic rfid/control auf das Signal für den Buzzer (1 für Erfolg, 0 für Fehler).
Da der Pin D3 (GPIO 0) beim ESP8266 ein Boot-Pin ist (wird für den Flash-Modus genutzt), ist hier zwingend ein passender Vorwiderstand (ca. 100 Ohm) vor dem Buzzer zu nutzen. Der Code stellt sicher, dass der Buzzer direkt nach dem Booten sauber auf LOW gesetzt wird.
Benötigte Bibliotheken (über den Bibliotheksverwalter installieren):
PubSubClient (von Nick O'Leary)
Adafruit PN532

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_PN532.h>
// --- KONFIGURATION ---
const char* ssid = "Dein Wifi";
const char* password = "Dein Wifi-Passwort";
const char* mqtt_server = "IP des IOBrokers";
const int mqtt_port = Port des MQTT Servers;
const char* mqtt_user = "MQTT User";
const char* mqtt_pass = "MQTT Passwort";
// Pins:
#define BUZZER_PIN 0 // GPIO0 entspricht D3 auf dem ESP8266
#define PN532_IRQ 2 // GPIO2 entspricht D4 auf dem ESP8266
#define PN532_RESET 3 // GPIO3 entspricht RX (falls nötig), oder ungenutzt lassen
// Hinweis: I2C nutzt automatisch D2 (SDA) und D1 (SCL) beim ESP8266
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
Serial.begin(115200); // Startet die serielle Ausgabe
Serial.println();
Serial.print("Verbinde mit ");
Serial.println(ssid);
WiFi.mode(WIFI_STA); // Setzt den ESP fest als Client (Station)
WiFi.begin(ssid, password);
int counter = 0;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
counter++;
// Nach 30 Sekunden abbrechen und Fehler ausgeben
if(counter > 60) {
Serial.println("\nVerbindung fehlgeschlagen! Bitte Einstellungen prüfen.");
Serial.print("WLAN-Status-Code: ");
Serial.println(WiFi.status());
return;
}
}
Serial.println("");
Serial.println("WLAN erfolgreich verbunden!");
Serial.print("IP-Adresse des ESP: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
if (String(topic) == "rfid/control") {
char command = (char)payload[0];
if (command == '1') {
// 1 x lang piepen (Erfolg)
digitalWrite(BUZZER_PIN, HIGH);
delay(1000);
digitalWrite(BUZZER_PIN, LOW);
}
else if (command == '0') {
// 5 x kurz piepen (Fehler)
for (int i = 0; i < 5; i++) {
digitalWrite(BUZZER_PIN, HIGH);
delay(150);
digitalWrite(BUZZER_PIN, LOW);
delay(150);
}
}
}
}
void reconnect() {
while (!client.connected()) {
Serial.print("Versuche MQTT-Verbindung... ");
// HIER WURDEN DIE VARIABLEN FÜR USER UND PASSWORT HINZUGEFÜGT:
if (client.connect("ESP8266_RFID", mqtt_user, mqtt_pass)) {
Serial.println("erfolgreich verbunden!");
client.subscribe("rfid/control");
} else {
Serial.print("Fehlgeschlagen, RC-Code=");
Serial.print(client.state());
Serial.println(" -> Nächster Versuch in 5 Sekunden");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200); // Aktiviert die serielle Ausgabe
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (!versiondata) {
Serial.println("Fehler: Kein PN532-Board gefunden!");
while (1);
}
nfc.SAMConfig();
}
void loop() {
if (!client.connected()) { reconnect(); }
client.loop();
uint8_t success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t uidLength;
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 50);
if (success) {
String strUID = "";
for (uint8_t i = 0; i < uidLength; i++) {
if (uid < 0x10) strUID += "0";
strUID += String(uid, HEX);
}
strUID.toUpperCase();
// UUID per MQTT senden
client.publish("rfid/uuid", strUID.c_str());
delay(2000); // Pause gegen Mehrfachlesung
}
}

IOBroker:
Adapter:
MQTT Broker/Client im Server/Broker Modus
Nuki Smartlock & Opener


Sie müssen registriert sein, um angehängte Bilder zu sehen

Muss natürlich alles noch auf Deine Konfig angepasst werden, bei mir funktioniert es soweit. Tür öffnet und es wir eine Nachricht mit der Tag-UUID über Telegram und Whatsapp geschickt.
Der Pieper ist etwas Leise, den muss ich noch mit einem BC547 auf 5V ziehen.

Viel Spass 😉
 

Anhänge

Sie müssen registriert sein, um die Liste der Anhänge zu sehen
Zuletzt bearbeitet:
Zurück
Oben
📱
Forum App auf dein Handy
Schneller. Push-Benachrichtigungen. Offline-fähig.
Öffnen