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. Off Topic
  4. Fingerprint an einem ESP8266

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

Fingerprint an einem ESP8266

Geplant Angeheftet Gesperrt Verschoben Off Topic
126 Beiträge 19 Kommentatoren 22.2k Aufrufe 20 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.
  • Ralla66R Offline
    Ralla66R Offline
    Ralla66
    Most Active
    schrieb am zuletzt editiert von Ralla66
    #113

    @Hansi1234
    Wofür denn Uart für welche Anwendung ?
    Hatte ja oben geschrieben :
    Das ist bei den meisten NodeMCU / Wemos mit an Board über Mini Usb.
    TTL <-> RS232
    Du kannst ja in der Arduino IDE per Mini USB über einen Com Port auf dem Wemos zugreifen.
    Das ist ja Uart. Möglich auch an RX TX.
    Wlan brauchste nicht unbedingt,
    Lan kannste ja mit einem Arduino Uno verwirklichen.
    Da du nicht proggen kannst bleibt ja das Problem mit dem Sensor und deren Auswertung.
    Fertige Routinen kenne ich nicht mit FP,Schließer und PIR.
    Es gibt aber im Netz fertige Routinen für Fingerprint Door opener, ohne PIR.

    Na ja, ich persönlich würde mit 2 Wemos und Wlan arbeiten.
    So ist auch meine Statusanzeige mit FP geplant.
    Brauchst keine Routine umschreiben und Tasmota bietet dir ja an viele Sensoren einzubinden.
    Na klar kannste mit Tasmota auch Relais schalten oder Reedkontakte verwalten.
    Dein Projekt wird ja wachsen und irgend wann willste Led Stripes einbinden.
    Das bietet Tasmota ja auch.
    Warum einen schweren Weg gehen wenn es einfacher geht.
    Und denk an eine manuelle Entriegelung falls der FP mal ausfällt.

    Wenn du unbedingt RPI und FP nutzen möchtest ist das ein ganz eigenes Projekt.
    Hier ging es um Wemos ( ESP8266 ) mit FP.
    Dann mach bitte einen eigenen Fred auf RPI trifft FP.
    Eine ganz andere Welt.
    Denke das verwirrt viele wenn wir jetzt hier ESP und RPI mischen.
    Danke :-)

    Link:
    https://tutorials-raspberrypi.de/raspberry-pi-fingerprint-sensor-authentifizierung-nutzen/

    L 1 Antwort Letzte Antwort
    0
    • Ralla66R Ralla66

      @coyote
      ja IoBroker Log.
      Das hatte ich ja auch mit dem Verbindungsabbruch bis zum Versionswechsel.
      Dann kann das ja nur Npm oder js.controller oder so was sein.
      Da hab ich aber überhaupt keine Ahnung von.
      Da müssen die Profis helfen.

      W Offline
      W Offline
      WS
      schrieb am zuletzt editiert von
      #114

      @Ralla66 Vielen Dank für Deine Mühe!!

      Ich habe mir erlaubt, Deinen Sketch ein wenig zu überarbeiten. Er läuft jetzt bei mir mit allen mqtt-Versionen ohne Verbindungsabbrüche. (Habe ihn 'mal angehängt)
      Grüße
      Wolfgang


      /***************************************************
      Fingerprint am Wemos D1 mini per MQTT nach IO Broker
      /
      #include <Adafruit_Fingerprint.h>
      //#include <WiFiClient.h>
      #include <ESP8266WiFi.h> // Aus Wifi Mqtt
      #include <PubSubClient.h> // Aus Wifi Mqtt
      #include <SoftwareSerial.h>
      #include <NTPClient.h>
      /

      Pinbelegung Fingerprint Sensor ist GND,Rx,TX,Vcc
      Am Wemos Rx ist D6 also GPIO 12
      Am Wemos Tx ist D5 also GPIO 14
      *****************************************************/

      SoftwareSerial mySerial(14, 12, false, 128);

      Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

      // Eigene Daten eintragen

      const char* ssid = ""; // Netzwerknahme
      const char* password = ""; // PW Netzwerk
      const char* mqttServer = ""; // Broker PI
      const int mqttPort = 1883; // Broker PI Port
      const char* mqttUser = ""; // Broker PI Name
      const char* mqttPassword = ""; // Broker PI Password

      // Ab hier nix mehr machen

      char* mqttio = "12345"; // Broker PI Wert
      char* confidence = "67890"; // Broker PI Wert

      WiFiClient espClientfp;
      PubSubClient client(espClientfp);

      int cnt=300;

      void setup()
      {

      // set the data rate for the sensor serial port
      finger.begin(57600);

      if (finger.verifyPassword()) {
      Serial.println("Found fingerprint sensor!");
      } else {
      Serial.println("Did not find fingerprint sensor :(");
      while (1) { delay(1); }
      }

      finger.getTemplateCount();
      Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
      Serial.println("Waiting for valid finger...");

      Serial.begin(115200); // Baud Wemos nach IDE Serieller Monitor

      WiFi.begin(ssid, password);

      while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.println("Connecting to WiFi..");
      }
      Serial.println("Connected to the WiFi network");
      Serial.print("=> ESP8266 IP Adresse: ");
      Serial.println(WiFi.localIP());

      client.setServer(mqttServer, mqttPort);
      client.setCallback(callback);

      }
      void reconnect(){

      while (!client.connected()) {
      Serial.println("Connecting to MQTT...");

      if (client.connect("ESP8266Clientfp", mqttUser, mqttPassword)) {

      Serial.println("connected");

      } else {

      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(5000);
      }

      }
      client.subscribe("print/Confidence");
      client.subscribe("print/FingerprintNr1");
      client.publish("print/FingerprintNr1","Print verbunden");
      client.publish("print/Confidence","Genauigkeit verbunden");
      }

      void callback(char* topic, byte* payload, unsigned int length) {

      Serial.print("Message arrived in topic: ");
      Serial.println(topic);

      Serial.print("Message:");
      for (int i = 0; i < length; i++) {
      Serial.print((char)payload[i]);
      }

      Serial.println();
      Serial.println("-----------------------");

      }

      void loop() { // run over and over again

      if (!client.connected()) {
      reconnect();
      }

      if(cnt==0){
      Serial.println("Reset...");
      ESP.restart();
      }
      cnt--;
      delay(1000);
      Serial.println(cnt);

      client.loop();

      getFingerprintIDez();
      delay(50); //don't ned to run this at full speed.
      }

      uint8_t getFingerprintID() {
      uint8_t p = finger.getImage();
      switch (p) {
      case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
      case FINGERPRINT_NOFINGER:
      Serial.println("No finger detected");
      return p;
      case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
      case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      return p;
      default:
      Serial.println("Unknown error");
      return p;
      }

      // OK success!

      p = finger.image2Tz();
      switch (p) {
      case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
      case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
      case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
      case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
      case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
      default:
      Serial.println("Unknown error");
      return p;
      }

      // OK converted!
      p = finger.fingerFastSearch();
      if (p == FINGERPRINT_OK) {
      Serial.println("Found a print match!");
      } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
      Serial.println("Communication error");
      return p;
      } else if (p == FINGERPRINT_NOTFOUND) {
      Serial.println("Did not find a match");
      return p;
      } else {
      Serial.println("Unknown error");
      return p;
      }
      }

      int getFingerprintIDez() {
      uint8_t p = finger.getImage();
      if (p != FINGERPRINT_OK) return -1;

      p = finger.image2Tz();
      if (p != FINGERPRINT_OK) return -1;

      p = finger.fingerFastSearch();
      if (p != FINGERPRINT_OK) return -1;

      sprintf(mqttio,"%d",finger.fingerID);
      sprintf(confidence,"%d",finger.confidence);

      client.subscribe("print/Confidence");
      client.publish("print/Confidence", confidence);

      client.subscribe("print/FingerprintNr1");
      client.publish("print/FingerprintNr1", mqttio);

      Serial.print("Erkannter Fingerabdruck Nr. "); Serial.print(mqttio);
      Serial.print(" mit einer Genauigkeit von "); Serial.println(confidence);

      return finger.fingerID;

      client.loop();
      }

      F 1 Antwort Letzte Antwort
      0
      • BenkiB Offline
        BenkiB Offline
        Benki
        schrieb am zuletzt editiert von
        #115

        Servus,

        dank eurer Hilfe habe ich den Fingerprint-Reader jetzt halbwegs am Laufen, allerdings habe ich ein reproduzierbares, seltsames Problem:

        Nach fünf Scans, oder einer Wartezeit von ca. 20 Sek. passiert einfach nichts mehr. Keine Scanns werden mehr angenommen. Das passiert sowohl mit meinem umfangreichen Sketch, als auch mit dem sehr einfachen Adafruit Beispiel - Sketch. Nach Reset oder Stromlosschalten des Boards funktioniert es wieder für fünf Scans oder ca. 20 Sek. Auch ein Abklemmen der VCC-Leitung des FP-Readers für fünf Sek. reicht (meistens), um ihn wieder zum Leben zu erwecken - aber nur wieder für kurze Zeit. Hat jemand ne Idee, woran das liegen kann?

        Meine Konfiguration:

        • LoLin Wemos Mini D1 ESP8266
        • FP-Reader "Wald und Wiese" DY50-2V1 17-12-22 Chip: AS608 QCCF TR9S1B (3,3 - 6V)
        • Levelshifter baugleich wie oben angegeben
        • Relais (zum Öffnen eines E-Öffners einer Tür)
        • Display 20x4
        • Taster mit Pulldown-Widerstand(100K) zum Initiieren des Anlernens der Finger

        Verkabelung:

        • VCC, GND über Levelshifter, wie oben angegeben
        • RX, TX über D5(GPIO14) und D6(GPIO14)
        • Signalleitung D3, VCC 5V und GND an Relais
        • D1, D2 für Display + VCC 5V, GND
        • D7 PD-Widerstand und Taster an GND

        Was ich versucht habe:

        • nackte Verkabelung ohne Display, Taster, PD, Relais
        • neues Lolin Board
        • Lolin nodeMCU V3 12E (damit habe ich gar keinen Kontakt zum FP bekommen)
        • alternativen Levelshifter
        • verschiedene USB-Netzteile und direkt am PC

        Danke vorab

        Grüße! Benki

        1 Antwort Letzte Antwort
        0
        • H Nicht stören
          H Nicht stören
          Hansi1234
          schrieb am zuletzt editiert von
          #116

          Habe gesehen, dass jemand ein request dazu gestartet hat. Wäre hier ein Adapter aufwendig?
          Würde auch gerne sehen wie man ihn erstellt. Hätte nämlich noch andere Projekte, die es schon auf Github gibt ;)

          Hier der link
          link text

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            Dragon
            schrieb am zuletzt editiert von Dragon
            #117

            Hallo alle miteinander

            Habe mich hier durch den Fred gelesen und muss mittlerweile sagen viel Informatives, aber leider auch viel verwirrendes....

            Etwas weiter oben gab es einen Post in dem Stand hier noch einmal der ganze Sketch... leider ist ein Post vorher etwas geschrieben, was in diesem leider nicht eingebaut ist. Gibt es einen Sketch den ich so übertragen kann und der out of the Box funktioniert?

            Wie lerne ich Fingerabdrücke an und wie lösche ich sie wieder?

            Habe das Problem, dass Hardwarebasteleien und auch Blockly mir viel Spaß machen aber mit der programmiererei habe ich so meine Probleme.
            Bestellt sind ein Wemos D1 mini und AS608 Sensor... Hoffe es gibt da etwas Hilfe für mich Mausklicker....

            LG
            David

            1 Antwort Letzte Antwort
            0
            • H Nicht stören
              H Nicht stören
              Hansi1234
              schrieb am zuletzt editiert von
              #118

              Hier wurde ein Request zu d Thema gestartet

              D 1 Antwort Letzte Antwort
              0
              • H Hansi1234

                Hier wurde ein Request zu d Thema gestartet

                D Offline
                D Offline
                Dragon
                schrieb am zuletzt editiert von
                #119

                @Hansi1234 gleich mal ein Daumen hoch verteilt! Da müssen aber noch einige kommen... Sind erst zwei....

                1 Antwort Letzte Antwort
                1
                • W WS

                  @Ralla66 Vielen Dank für Deine Mühe!!

                  Ich habe mir erlaubt, Deinen Sketch ein wenig zu überarbeiten. Er läuft jetzt bei mir mit allen mqtt-Versionen ohne Verbindungsabbrüche. (Habe ihn 'mal angehängt)
                  Grüße
                  Wolfgang


                  /***************************************************
                  Fingerprint am Wemos D1 mini per MQTT nach IO Broker
                  /
                  #include <Adafruit_Fingerprint.h>
                  //#include <WiFiClient.h>
                  #include <ESP8266WiFi.h> // Aus Wifi Mqtt
                  #include <PubSubClient.h> // Aus Wifi Mqtt
                  #include <SoftwareSerial.h>
                  #include <NTPClient.h>
                  /

                  Pinbelegung Fingerprint Sensor ist GND,Rx,TX,Vcc
                  Am Wemos Rx ist D6 also GPIO 12
                  Am Wemos Tx ist D5 also GPIO 14
                  *****************************************************/

                  SoftwareSerial mySerial(14, 12, false, 128);

                  Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

                  // Eigene Daten eintragen

                  const char* ssid = ""; // Netzwerknahme
                  const char* password = ""; // PW Netzwerk
                  const char* mqttServer = ""; // Broker PI
                  const int mqttPort = 1883; // Broker PI Port
                  const char* mqttUser = ""; // Broker PI Name
                  const char* mqttPassword = ""; // Broker PI Password

                  // Ab hier nix mehr machen

                  char* mqttio = "12345"; // Broker PI Wert
                  char* confidence = "67890"; // Broker PI Wert

                  WiFiClient espClientfp;
                  PubSubClient client(espClientfp);

                  int cnt=300;

                  void setup()
                  {

                  // set the data rate for the sensor serial port
                  finger.begin(57600);

                  if (finger.verifyPassword()) {
                  Serial.println("Found fingerprint sensor!");
                  } else {
                  Serial.println("Did not find fingerprint sensor :(");
                  while (1) { delay(1); }
                  }

                  finger.getTemplateCount();
                  Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
                  Serial.println("Waiting for valid finger...");

                  Serial.begin(115200); // Baud Wemos nach IDE Serieller Monitor

                  WiFi.begin(ssid, password);

                  while (WiFi.status() != WL_CONNECTED) {
                  delay(500);
                  Serial.println("Connecting to WiFi..");
                  }
                  Serial.println("Connected to the WiFi network");
                  Serial.print("=> ESP8266 IP Adresse: ");
                  Serial.println(WiFi.localIP());

                  client.setServer(mqttServer, mqttPort);
                  client.setCallback(callback);

                  }
                  void reconnect(){

                  while (!client.connected()) {
                  Serial.println("Connecting to MQTT...");

                  if (client.connect("ESP8266Clientfp", mqttUser, mqttPassword)) {

                  Serial.println("connected");

                  } else {

                  Serial.print("failed with state ");
                  Serial.print(client.state());
                  delay(5000);
                  }

                  }
                  client.subscribe("print/Confidence");
                  client.subscribe("print/FingerprintNr1");
                  client.publish("print/FingerprintNr1","Print verbunden");
                  client.publish("print/Confidence","Genauigkeit verbunden");
                  }

                  void callback(char* topic, byte* payload, unsigned int length) {

                  Serial.print("Message arrived in topic: ");
                  Serial.println(topic);

                  Serial.print("Message:");
                  for (int i = 0; i < length; i++) {
                  Serial.print((char)payload[i]);
                  }

                  Serial.println();
                  Serial.println("-----------------------");

                  }

                  void loop() { // run over and over again

                  if (!client.connected()) {
                  reconnect();
                  }

                  if(cnt==0){
                  Serial.println("Reset...");
                  ESP.restart();
                  }
                  cnt--;
                  delay(1000);
                  Serial.println(cnt);

                  client.loop();

                  getFingerprintIDez();
                  delay(50); //don't ned to run this at full speed.
                  }

                  uint8_t getFingerprintID() {
                  uint8_t p = finger.getImage();
                  switch (p) {
                  case FINGERPRINT_OK:
                  Serial.println("Image taken");
                  break;
                  case FINGERPRINT_NOFINGER:
                  Serial.println("No finger detected");
                  return p;
                  case FINGERPRINT_PACKETRECIEVEERR:
                  Serial.println("Communication error");
                  return p;
                  case FINGERPRINT_IMAGEFAIL:
                  Serial.println("Imaging error");
                  return p;
                  default:
                  Serial.println("Unknown error");
                  return p;
                  }

                  // OK success!

                  p = finger.image2Tz();
                  switch (p) {
                  case FINGERPRINT_OK:
                  Serial.println("Image converted");
                  break;
                  case FINGERPRINT_IMAGEMESS:
                  Serial.println("Image too messy");
                  return p;
                  case FINGERPRINT_PACKETRECIEVEERR:
                  Serial.println("Communication error");
                  return p;
                  case FINGERPRINT_FEATUREFAIL:
                  Serial.println("Could not find fingerprint features");
                  return p;
                  case FINGERPRINT_INVALIDIMAGE:
                  Serial.println("Could not find fingerprint features");
                  return p;
                  default:
                  Serial.println("Unknown error");
                  return p;
                  }

                  // OK converted!
                  p = finger.fingerFastSearch();
                  if (p == FINGERPRINT_OK) {
                  Serial.println("Found a print match!");
                  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
                  Serial.println("Communication error");
                  return p;
                  } else if (p == FINGERPRINT_NOTFOUND) {
                  Serial.println("Did not find a match");
                  return p;
                  } else {
                  Serial.println("Unknown error");
                  return p;
                  }
                  }

                  int getFingerprintIDez() {
                  uint8_t p = finger.getImage();
                  if (p != FINGERPRINT_OK) return -1;

                  p = finger.image2Tz();
                  if (p != FINGERPRINT_OK) return -1;

                  p = finger.fingerFastSearch();
                  if (p != FINGERPRINT_OK) return -1;

                  sprintf(mqttio,"%d",finger.fingerID);
                  sprintf(confidence,"%d",finger.confidence);

                  client.subscribe("print/Confidence");
                  client.publish("print/Confidence", confidence);

                  client.subscribe("print/FingerprintNr1");
                  client.publish("print/FingerprintNr1", mqttio);

                  Serial.print("Erkannter Fingerabdruck Nr. "); Serial.print(mqttio);
                  Serial.print(" mit einer Genauigkeit von "); Serial.println(confidence);

                  return finger.fingerID;

                  client.loop();
                  }

                  F Offline
                  F Offline
                  Frank_y
                  schrieb am zuletzt editiert von Frank_y
                  #120

                  @WS sagte in Fingerprint an einem ESP8266:

                  @Ralla66 Vielen Dank für Deine Mühe!!

                  Ich habe mir erlaubt, Deinen Sketch ein wenig zu überarbeiten. Er läuft jetzt bei mir mit allen mqtt-Versionen ohne Verbindungsabbrüche. (Habe ihn 'mal angehängt)
                  Grüße
                  Wolfgang


                  /***************************************************
                  Fingerprint am Wemos D1 mini per MQTT nach IO Broker
                  /
                  #include <Adafruit_Fingerprint.h>
                  //#include <WiFiClient.h>
                  #include <ESP8266WiFi.h> // Aus Wifi Mqtt
                  #include <PubSubClient.h> // Aus Wifi Mqtt
                  #include <SoftwareSerial.h>
                  #include <NTPClient.h>
                  /

                  Pinbelegung Fingerprint Sensor ist GND,Rx,TX,Vcc
                  Am Wemos Rx ist D6 also GPIO 12
                  Am Wemos Tx ist D5 also GPIO 14
                  *****************************************************/

                  SoftwareSerial mySerial(14, 12, false, 128);

                  Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

                  // Eigene Daten eintragen

                  const char* ssid = ""; // Netzwerknahme
                  const char* password = ""; // PW Netzwerk
                  const char* mqttServer = ""; // Broker PI
                  const int mqttPort = 1883; // Broker PI Port
                  const char* mqttUser = ""; // Broker PI Name
                  const char* mqttPassword = ""; // Broker PI Password

                  // Ab hier nix mehr machen

                  char* mqttio = "12345"; // Broker PI Wert
                  char* confidence = "67890"; // Broker PI Wert

                  WiFiClient espClientfp;
                  PubSubClient client(espClientfp);

                  int cnt=300;

                  void setup()
                  {

                  // set the data rate for the sensor serial port
                  finger.begin(57600);

                  if (finger.verifyPassword()) {
                  Serial.println("Found fingerprint sensor!");
                  } else {
                  Serial.println("Did not find fingerprint sensor :(");
                  while (1) { delay(1); }
                  }

                  finger.getTemplateCount();
                  Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
                  Serial.println("Waiting for valid finger...");

                  Serial.begin(115200); // Baud Wemos nach IDE Serieller Monitor

                  WiFi.begin(ssid, password);

                  while (WiFi.status() != WL_CONNECTED) {
                  delay(500);
                  Serial.println("Connecting to WiFi..");
                  }
                  Serial.println("Connected to the WiFi network");
                  Serial.print("=> ESP8266 IP Adresse: ");
                  Serial.println(WiFi.localIP());

                  client.setServer(mqttServer, mqttPort);
                  client.setCallback(callback);

                  }
                  void reconnect(){

                  while (!client.connected()) {
                  Serial.println("Connecting to MQTT...");

                  if (client.connect("ESP8266Clientfp", mqttUser, mqttPassword)) {

                  Serial.println("connected");

                  } else {

                  Serial.print("failed with state ");
                  Serial.print(client.state());
                  delay(5000);
                  }

                  }
                  client.subscribe("print/Confidence");
                  client.subscribe("print/FingerprintNr1");
                  client.publish("print/FingerprintNr1","Print verbunden");
                  client.publish("print/Confidence","Genauigkeit verbunden");
                  }

                  void callback(char* topic, byte* payload, unsigned int length) {

                  Serial.print("Message arrived in topic: ");
                  Serial.println(topic);

                  Serial.print("Message:");
                  for (int i = 0; i < length; i++) {
                  Serial.print((char)payload[i]);
                  }

                  Serial.println();
                  Serial.println("-----------------------");

                  }

                  void loop() { // run over and over again

                  if (!client.connected()) {
                  reconnect();
                  }

                  if(cnt==0){
                  Serial.println("Reset...");
                  ESP.restart();
                  }
                  cnt--;
                  delay(1000);
                  Serial.println(cnt);

                  client.loop();

                  getFingerprintIDez();
                  delay(50); //don't ned to run this at full speed.
                  }

                  uint8_t getFingerprintID() {
                  uint8_t p = finger.getImage();
                  switch (p) {
                  case FINGERPRINT_OK:
                  Serial.println("Image taken");
                  break;
                  case FINGERPRINT_NOFINGER:
                  Serial.println("No finger detected");
                  return p;
                  case FINGERPRINT_PACKETRECIEVEERR:
                  Serial.println("Communication error");
                  return p;
                  case FINGERPRINT_IMAGEFAIL:
                  Serial.println("Imaging error");
                  return p;
                  default:
                  Serial.println("Unknown error");
                  return p;
                  }

                  // OK success!

                  p = finger.image2Tz();
                  switch (p) {
                  case FINGERPRINT_OK:
                  Serial.println("Image converted");
                  break;
                  case FINGERPRINT_IMAGEMESS:
                  Serial.println("Image too messy");
                  return p;
                  case FINGERPRINT_PACKETRECIEVEERR:
                  Serial.println("Communication error");
                  return p;
                  case FINGERPRINT_FEATUREFAIL:
                  Serial.println("Could not find fingerprint features");
                  return p;
                  case FINGERPRINT_INVALIDIMAGE:
                  Serial.println("Could not find fingerprint features");
                  return p;
                  default:
                  Serial.println("Unknown error");
                  return p;
                  }

                  // OK converted!
                  p = finger.fingerFastSearch();
                  if (p == FINGERPRINT_OK) {
                  Serial.println("Found a print match!");
                  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
                  Serial.println("Communication error");
                  return p;
                  } else if (p == FINGERPRINT_NOTFOUND) {
                  Serial.println("Did not find a match");
                  return p;
                  } else {
                  Serial.println("Unknown error");
                  return p;
                  }
                  }

                  int getFingerprintIDez() {
                  uint8_t p = finger.getImage();
                  if (p != FINGERPRINT_OK) return -1;

                  p = finger.image2Tz();
                  if (p != FINGERPRINT_OK) return -1;

                  p = finger.fingerFastSearch();
                  if (p != FINGERPRINT_OK) return -1;

                  sprintf(mqttio,"%d",finger.fingerID);
                  sprintf(confidence,"%d",finger.confidence);

                  client.subscribe("print/Confidence");
                  client.publish("print/Confidence", confidence);

                  client.subscribe("print/FingerprintNr1");
                  client.publish("print/FingerprintNr1", mqttio);

                  Serial.print("Erkannter Fingerabdruck Nr. "); Serial.print(mqttio);
                  Serial.print(" mit einer Genauigkeit von "); Serial.println(confidence);

                  return finger.fingerID;

                  client.loop();
                  }

                  @WS ich bekomme immer Fehler beim kompilieren.
                  meine SoftwareSerial.h läßt nur 3 Argumente zu. Im Sketch werden aber vier Argumente angegeben.

                  SoftwareSerial mySerial(14, 12, false, 128);
                  

                  (ich verwende Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\SoftwareSerial)
                  benötige ich eine andere library?

                  NACHTRAG: Hat sich erledig, einfach ohne das dritte Argument: SoftwareSerial mySerial(14, 12, false);

                  1 Antwort Letzte Antwort
                  0
                  • T tööö

                    Ich habe eine Instanz vom Adapter MQTT installiert. Im Sketch dann folgenden Codeauszug:

                    Die relevanten Variablen (der Rest ergibt sich aus dem Code):

                    const char* ssid = "[DEIN SSID]";
                    const char* password = "[Dein WLAN-Passwort]";
                    const char* mqtt_server = "[IP vom ioBroker-Server";
                    const char* feuchtigkeitMQTT = "[Name, unter der der Wert im ioBroker im MQTT gespeichert werden soll]";
                    const char* zeitMQTT = "FeuchtigkeitPalmeObenZeit";
                    WiFiClient espClient;
                    PubSubClient client(espClient);
                    char charBuf[50];
                    WiFiUDP ntpUDP;
                    NTPClient timeClient(ntpUDP);
                    

                    Meine #includes:

                    #include <Smartdebug.h>
                    #include <ESP8266WiFi.h>
                    #include <PubSubClient.h>
                    #include <WiFiClient.h>
                    #include <WiFiUdp.h>
                    #include <NTPClient.h>
                    

                    wobei "Smartdebug.h" meine eigene Klasse ist, um schöner debuggen zu können und im fertigen Zustand die Debugausgaben eleganter ausschalten zu können, um Speicher zu sparen.

                    WLAN-Verbindung aufbauen:

                    void setup_wifi() {
                      delay(10);
                      DEBUG_PRINTLN();
                      DEBUG_PRINT("Connecting to ");
                      DEBUG_PRINTLN(ssid);
                    
                      WiFi.begin(ssid, password);
                    
                      while (WiFi.status() != WL_CONNECTED) {
                        delay(500);
                        DEBUG_PRINT(".");
                      }
                    
                      randomSeed(micros());
                    
                      DEBUG_PRINTLN("");
                      DEBUG_PRINTLN("WiFi connected");
                      DEBUG_PRINTLN("IP address: ");
                      DEBUG_PRINTLN(WiFi.localIP());
                    }
                    

                    Falls die Verbindung zum MQTT-Server mal abbricht, wird sie hier wiederhergestellt:

                    void reconnect() {
                      while (!client.connected()) {
                        DEBUG_PRINT("Attempting MQTT connection...");
                        String clientIdFeuchtigkeit = feuchtigkeitMQTT;
                        if (client.connect(clientIdFeuchtigkeit.c_str())) {
                          DEBUG_PRINTLN("connected");
                        } else {
                          DEBUG_PRINT("failed, rc=");
                          DEBUG_PRINT(client.state());
                          DEBUG_PRINTLN(" try again in 5 seconds");
                          delay(5000);
                        }
                        
                        String clientIdZeit = zeitMQTT;
                        if (client.connect(clientIdZeit.c_str())) {
                          DEBUG_PRINTLN("connected");
                        } else {
                          DEBUG_PRINT("failed, rc=");
                          DEBUG_PRINT(client.state());
                          DEBUG_PRINTLN(" try again in 5 seconds");
                          delay(5000);
                        }
                      }
                    }
                    

                    Und hier die setup-Funktion:

                    void setup() {
                      timeClient.begin();
                      // Offset für die Zeitzone einstellen
                      // GMT +1 = 3600
                      // GMT +8 = 28800
                      // GMT -1 = -3600
                      // GMT 0 = 0
                      timeClient.setTimeOffset(7200);
                      
                      DEBUG_INIT(115200);
                      setup_wifi();
                      client.setServer(mqtt_server, 1883);
                      client.setCallback(callback);
                      feuchtigkeit = analogRead(FEUCHTIGKEIT);
                    
                      if (!client.connected()) {
                        reconnect();
                      }
                      client.loop();
                      DEBUG_PRINTLN(feuchtigkeit);
                      String(feuchtigkeit).toCharArray(charBuf, 50);
                      client.publish(feuchtigkeitMQTT, charBuf);
                    
                      while(!timeClient.update()) {
                        timeClient.forceUpdate();
                      }
                      // Zeit kommt im folgendem Format
                      // 2018-05-28T16:00:13Z
                      formattedDate = timeClient.getFormattedDate();
                      DEBUG_PRINTLN(formattedDate);
                    
                      int splitT = formattedDate.indexOf("T");
                      dayStamp = formattedDate.substring(0, splitT);
                      timeStamp = formattedDate.substring(splitT+1, formattedDate.length()-1);
                    
                      String zeitAusgabe = dayStamp + " - " + timeStamp;
                      zeitAusgabe.toCharArray(charBuf, 50);
                      client.publish(zeitMQTT, charBuf);  
                    
                      delay (2000);
                      DEBUG_PRINTLN("Ich gehe nun in Schlafmodus für 60 Minuten (3600 Sekunden)");
                      ESP.deepSleep(3600 * 1000000);
                    }
                    
                    Julian RaabJ Offline
                    Julian RaabJ Offline
                    Julian Raab
                    schrieb am zuletzt editiert von Julian Raab
                    #121

                    @tööö Hallo, ich bin absoluter neuling habe mir den Fingerprint Sketch auch zugelegt was auch funktioniert .. jedoch mit dem MQTT auszügen komm ich nicht klar.
                    Könntest du mir evtl. den Sketch komplett zur verfügung stellen damit ich den Fingerprint in IObroker intigrieren kann,

                    Hab es nun hinbekommen, spielt ihr eure Finger immer mit dem Sketch auf oder gibt es die Möglichkeit auf eine grafischen Oberfläche ähnlich die von Home Assistant?

                    Grüße Julian

                    E 1 Antwort Letzte Antwort
                    0
                    • Julian RaabJ Julian Raab

                      @tööö Hallo, ich bin absoluter neuling habe mir den Fingerprint Sketch auch zugelegt was auch funktioniert .. jedoch mit dem MQTT auszügen komm ich nicht klar.
                      Könntest du mir evtl. den Sketch komplett zur verfügung stellen damit ich den Fingerprint in IObroker intigrieren kann,

                      Hab es nun hinbekommen, spielt ihr eure Finger immer mit dem Sketch auf oder gibt es die Möglichkeit auf eine grafischen Oberfläche ähnlich die von Home Assistant?

                      Grüße Julian

                      E Offline
                      E Offline
                      exitus
                      schrieb am zuletzt editiert von
                      #122

                      @julian-raab das würde mich auch intressieren hat jemand es schon am laufen???

                      Julian RaabJ 1 Antwort Letzte Antwort
                      0
                      • E exitus

                        @julian-raab das würde mich auch intressieren hat jemand es schon am laufen???

                        Julian RaabJ Offline
                        Julian RaabJ Offline
                        Julian Raab
                        schrieb am zuletzt editiert von
                        #123

                        @exitus bei mir funktioniert es .. aber zum anlernen immer skech aufspielen

                        1 Antwort Letzte Antwort
                        0
                        • Ralla66R Ralla66

                          @Hansi1234
                          Wofür denn Uart für welche Anwendung ?
                          Hatte ja oben geschrieben :
                          Das ist bei den meisten NodeMCU / Wemos mit an Board über Mini Usb.
                          TTL <-> RS232
                          Du kannst ja in der Arduino IDE per Mini USB über einen Com Port auf dem Wemos zugreifen.
                          Das ist ja Uart. Möglich auch an RX TX.
                          Wlan brauchste nicht unbedingt,
                          Lan kannste ja mit einem Arduino Uno verwirklichen.
                          Da du nicht proggen kannst bleibt ja das Problem mit dem Sensor und deren Auswertung.
                          Fertige Routinen kenne ich nicht mit FP,Schließer und PIR.
                          Es gibt aber im Netz fertige Routinen für Fingerprint Door opener, ohne PIR.

                          Na ja, ich persönlich würde mit 2 Wemos und Wlan arbeiten.
                          So ist auch meine Statusanzeige mit FP geplant.
                          Brauchst keine Routine umschreiben und Tasmota bietet dir ja an viele Sensoren einzubinden.
                          Na klar kannste mit Tasmota auch Relais schalten oder Reedkontakte verwalten.
                          Dein Projekt wird ja wachsen und irgend wann willste Led Stripes einbinden.
                          Das bietet Tasmota ja auch.
                          Warum einen schweren Weg gehen wenn es einfacher geht.
                          Und denk an eine manuelle Entriegelung falls der FP mal ausfällt.

                          Wenn du unbedingt RPI und FP nutzen möchtest ist das ein ganz eigenes Projekt.
                          Hier ging es um Wemos ( ESP8266 ) mit FP.
                          Dann mach bitte einen eigenen Fred auf RPI trifft FP.
                          Eine ganz andere Welt.
                          Denke das verwirrt viele wenn wir jetzt hier ESP und RPI mischen.
                          Danke :-)

                          Link:
                          https://tutorials-raspberrypi.de/raspberry-pi-fingerprint-sensor-authentifizierung-nutzen/

                          L Offline
                          L Offline
                          locito09
                          schrieb am zuletzt editiert von
                          #124

                          @ralla66
                          bei mir kommt immer diese fehler meldung beim versuch den Scetch hochzuladen auf einen Wemos D1 Mini

                          'SoftwareSerial' does not name a type; did you mean 'HardwareSerial'?
                          ketch_feb14a:191:10: error: 'FINGERPRINT_OK' was not declared in this scope
                          if (p != FINGERPRINT_OK) return -1;
                          ^~~~~~~~~~~~~~
                          sketch_feb14a:194:10: error: 'FINGERPRINT_OK' was not declared in this scope
                          if (p != FINGERPRINT_OK) return -1;
                          ^~~~~~~~~~~~~~
                          sketch_feb14a:197:10: error: 'FINGERPRINT_OK' was not declared in this scope
                          if (p != FINGERPRINT_OK) return -1;
                          ^~~~~~~~~~~~~~
                          sketch_feb14a:202:1: error: 'client' was not declared in this scope
                          client.subscribe("print/Confidence");
                          ^~~~~~
                          C:\Users\migue\Documents\Arduino\sketch_feb14a\sketch_feb14a.ino:202:1: note: suggested alternative: 'cnt'
                          client.subscribe("print/Confidence");
                          ^~~~~~

                          Ralla66R 1 Antwort Letzte Antwort
                          0
                          • L locito09

                            @ralla66
                            bei mir kommt immer diese fehler meldung beim versuch den Scetch hochzuladen auf einen Wemos D1 Mini

                            'SoftwareSerial' does not name a type; did you mean 'HardwareSerial'?
                            ketch_feb14a:191:10: error: 'FINGERPRINT_OK' was not declared in this scope
                            if (p != FINGERPRINT_OK) return -1;
                            ^~~~~~~~~~~~~~
                            sketch_feb14a:194:10: error: 'FINGERPRINT_OK' was not declared in this scope
                            if (p != FINGERPRINT_OK) return -1;
                            ^~~~~~~~~~~~~~
                            sketch_feb14a:197:10: error: 'FINGERPRINT_OK' was not declared in this scope
                            if (p != FINGERPRINT_OK) return -1;
                            ^~~~~~~~~~~~~~
                            sketch_feb14a:202:1: error: 'client' was not declared in this scope
                            client.subscribe("print/Confidence");
                            ^~~~~~
                            C:\Users\migue\Documents\Arduino\sketch_feb14a\sketch_feb14a.ino:202:1: note: suggested alternative: 'cnt'
                            client.subscribe("print/Confidence");
                            ^~~~~~

                            Ralla66R Offline
                            Ralla66R Offline
                            Ralla66
                            Most Active
                            schrieb am zuletzt editiert von Ralla66
                            #125

                            @locito09

                            Läuft bei mir durch mit dem Sketch vom 24 Aug 2019 ohne die 128.
                            Unter Bibliothek ist die ESP Softwareserial eingebunden ?

                            fp.jpg

                            L 1 Antwort Letzte Antwort
                            0
                            • Ralla66R Ralla66

                              @locito09

                              Läuft bei mir durch mit dem Sketch vom 24 Aug 2019 ohne die 128.
                              Unter Bibliothek ist die ESP Softwareserial eingebunden ?

                              fp.jpg

                              L Offline
                              L Offline
                              locito09
                              schrieb am zuletzt editiert von
                              #126

                              @ralla66 sagte in Fingerprint an einem ESP8266:

                              ESP Softwareserial

                              Neuen Tag neues Glück, hat heute geklappt

                              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

                              720

                              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