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

ioBroker Community Forum

  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.2k

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

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

Fingerprint an einem ESP8266

Geplant Angeheftet Gesperrt Verschoben Off Topic
126 Beiträge 19 Kommentatoren 22.1k 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.
  • H Nicht stören
    H Nicht stören
    Hansi1234
    schrieb am zuletzt editiert von
    #101

    Hi Leute,
    wollt ihr dazu vielleicht noch ein Tutorial machen?

    1 Antwort Letzte Antwort
    0
    • Ralla66R Ralla66

      @SBorg
      Sodele läuft jetzt mit Mqtt.0 .
      Bin zurück auf die Version 2.01.
      Alles Stabil.
      Schaue noch ob das auch mit dem Sonoff Adapter läuft.

      Anbei der Sketch, viel Spass damit 🙂

      Ziel erreicht, Läuft.


      /***************************************************
      Fingerprint am Wemos D1 mini per MQTT nach IO Broker
      ****************************************************/

      #include <Adafruit_Fingerprint.h>
      #include <ESP8266WiFi.h> // Aus Wifi Mqtt
      #include <PubSubClient.h> // Aus Wifi Mqtt

      /****************************************************
      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 = "Dein Netzwerk"; // Netzwerknahme
      const char* password = "Netzwerkpasswort"; // PW Netzwerk
      const char* mqttServer = "Broker IP"; // Broker PI
      const int mqttPort = 1884; // Broker PI Port
      const char* mqttUser = "Broker User"; // Broker PI Name
      const char* mqttPassword = "Broker Passwort"; // Broker PI Password

      // Ab hier nix mehr machen

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

      WiFiClient espClient;
      PubSubClient client(espClient);

      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");

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

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

      if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {
      
        Serial.println("connected");  
      
      } else {
      
        Serial.print("failed with state ");
        Serial.print(client.state());
        delay(2000);
      
      }
      

      }

      client.subscribe("Fingerprint");
      client.publish("Fingerprint", "Test_1");

      }

      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
      {
      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;
      }

      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);

      return finger.fingerID;
      }

      // returns -1 if failed, otherwise returns ID #
      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;

      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);

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

       client.subscribe("FingerprintNr1"); 
         client.publish("FingerprintNr1", mqttio);
      
         
      return finger.fingerID; 
      
      
      
      
      client.loop(); 
      

      }

      Ralla66

      Nachtrag, Confidence noch eingefügt.

      // Ab hier nix mehr machen

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

      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);

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

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

      client.subscribe("FingerprintNr");
      client.publish("FingerprintNr", mqttio);

      Confidence.jpg

      coyoteC Offline
      coyoteC Offline
      coyote
      Most Active
      schrieb am zuletzt editiert von coyote
      #102

      @Ralla66 vielen Dank für das Script, läuft (nachdem ich den ersten Fingerprint gegrillt hab) bei mir jetzt auch. Nur der Confidence Datenpunkt kommt bei mir nicht rein. Hier mal das Script, dass aktuelle drauf ist, kannst vllt ja mal drüber schauen, warum der Datenpunkt nicht zu MQTT gepusht wird.

      /***************************************************
      Fingerprint am Wemos D1 mini per MQTT nach IO Broker
      ****************************************************/
      #include <Adafruit_Fingerprint.h>
      #include <ESP8266WiFi.h> // Aus Wifi Mqtt
      #include <PubSubClient.h> // Aus Wifi Mqtt
      
      /****************************************************
      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 = "SSID"; // Netzwerknahme
      const char* password = "Password"; // PW Netzwerk
      const char* mqttServer = "192.168.XX.XX"; // Broker PI
      const int mqttPort = 1885; // Broker PI Port
      const char* mqttUser = "test"; // Broker PI Name
      const char* mqttPassword = "test"; // Broker PI Password
      
      
      // Ab hier nix mehr machen
      
      WiFiClient espClient;
      PubSubClient client(espClient);
      
      // Ab hier nix mehr machen
      
      char* mqttio = "12345"; // Broker PI Wert
      char* confidence = "67890"; // Broker PI Wert
      
      
      
      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");
      
      client.setServer(mqttServer, mqttPort);
      client.setCallback(callback);
      
      while (!client.connected()) {
      Serial.println("Connecting to MQTT...");
      
      if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {
      
        Serial.println("connected");  
      
      } else {
      
        Serial.print("failed with state ");
        Serial.print(client.state());
        delay(2000);
      
      }
      }
      
      client.subscribe("Fingerprint");
      client.publish("Fingerprint", "Test_1");
      
      }
      
      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
      {
      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;
      }
      
      // found a match!
      
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
      
      sprintf(mqttio,"%d",finger.fingerID);
      sprintf(confidence,"%d",finger.confidence);
      
      client.subscribe("Confidence");
      client.publish("Confidence", confidence);
      
      client.subscribe("FingerprintNr");
      client.publish("FingerprintNr", mqttio);
      
      return finger.fingerID;
      }
      
      // returns -1 if failed, otherwise returns ID #
      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;
      
      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
      
      sprintf(mqttio,"%d",finger.fingerID);
      
       client.subscribe("FingerprintNr1"); 
         client.publish("FingerprintNr1", mqttio);
      
         
      return finger.fingerID; 
      
      
      
      
      client.loop(); 
      }
      

      EDIT: Hat sich erledigt.

      Dieser neue Teil, muss ganz zum Schluss eingefügt werden, dann geht es auch.

      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
      
      sprintf(mqttio,"%d",finger.fingerID);
      sprintf(confidence,"%d",finger.confidence);
      
      client.subscribe("Confidence");
      client.publish("Confidence", confidence);
      
      client.subscribe("FingerprintNr");
      client.publish("FingerprintNr", mqttio);
      
      1 Antwort Letzte Antwort
      0
      • SBorgS SBorg

        Also....
        Du hast den MQTT-Connect (und Test) nur im Setup. Folglich wird nur einmal beim PowerUp des ESP eine Verbindung hergestellt. Bricht sie, aus welchen Gründen auch immer, mal ab, war es das mit MQTT. Du musst zyklisch abfragen ob noch eine Verbindung besteht und ggf. neu connecten. Wenn du subscriben möchtest (also MQTT --> ESP) wäre dafür die Loop geeignet. Wenn du nur publishst (ESP --> MQTT), brauchst du ja nur tatsächlich eine Verbindung wenn du was sendest. Da wäre eine kleine Subroutine zu bevorzugen die den Connect prüft, ggf. neu verbindet und dann sendet.
        Ich habe beim Sonoff-Adapter über die Zeit festgestellt, dass dieser öfters die Verbindung abbricht wenn längere Zeit Funkstille herrscht. Der Mosquitto macht das bspw. nicht. Deswegen sende ich einfach alle 5 Minuten die Uptime des ESP in einen "Alive-Topic". Abgesehen von ping- oder radar2-Adapter sehe ich so ob der ESP noch lebt und ich habe keine (oder kaum) Abbrüche mehr. Wichtig wenn man subscribed und den ESP per ioB/MQTT steuern möchte.

        client.xxx erwartet Topic und Message als "String". Da du mqttio mittels char* als ein Character-Array definierst, kann das nicht funktionieren. Entweder du definierst es gleich als "String" oder musst das Array vor Verwendung in einen String konvertieren. Nur Anführungszeichen genügen da nicht ^^

        coyoteC Offline
        coyoteC Offline
        coyote
        Most Active
        schrieb am zuletzt editiert von
        #103

        @SBorg sagte in Fingerprint an einem ESP8266:

        Deswegen sende ich einfach alle 5 Minuten die Uptime des ESP in einen "Alive-Topic".

        Hast du da mal ein BeispielCode? Das könnte ich in einem anderen Programm auch gut gebrauchen. Und auch hier bricht mir nach paar Sekunden die Verbindung zum MQTT ab,

        1 Antwort Letzte Antwort
        0
        • SBorgS Offline
          SBorgS Offline
          SBorg
          Forum Testing Most Active
          schrieb am zuletzt editiert von SBorg
          #104
             #include <NTPClient.h>
             #include <WiFiUdp.h>
             WiFiUDP ntpUDP;
             NTPClient timeClient(ntpUDP,"europe.pool.ntp.org", 0, 300000); //Offset, Abfrageintervall
          
           timeClient.begin(); 
          
           timeClient.update();
          

          So in etwa. Ich nutze einfach NTPClient. ".begin" steht in der Setup-loop, ".update" holt dann bei mir im 5-Minuten-Zyklus (ist in der Main-loop, da ich alle 5 min. Werte vom Sensor lese) die aktuelle Uptime. Dann noch ein MQTT-Publish auf einen Topic (ich habe da einfach /x/y/z/alive ).

          LG SBorg ( SBorg auf GitHub)
          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

          1 Antwort Letzte Antwort
          0
          • Ralla66R Offline
            Ralla66R Offline
            Ralla66
            Most Active
            schrieb am zuletzt editiert von Ralla66
            #105

            Hier noch mal der gesamte Sketch mit Confidence :


            /***************************************************
            Fingerprint am Wemos D1 mini per MQTT nach IO Broker
            ****************************************************/

            #include <Adafruit_Fingerprint.h>
            #include <ESP8266WiFi.h> // Aus Wifi Mqtt
            #include <PubSubClient.h> // Aus Wifi Mqtt

            /****************************************************
            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 = "abc"; // Netzwerknahme
            const char* password = "abc"; // PW Netzwerk
            const char* mqttServer = "abc"; // Broker PI
            const int mqttPort = 1883; // Broker PI Port
            const char* mqttUser = "abc"; // Broker PI Name
            const char* mqttPassword = "abc"; // Broker PI Password

            // Ab hier nix mehr machen

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

            WiFiClient espClient;
            PubSubClient client(espClient);

            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");

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

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

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

              Serial.println("connected");  
            
            } else {
            
              Serial.print("failed with state ");
              Serial.print(client.state());
              delay(2000);
            
            }
            

            }

            }

            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
            {
            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;
            }

            // found a match!
            Serial.print("Found ID #"); Serial.print(finger.fingerID);
            Serial.print(" with confidence of "); Serial.println(finger.confidence);

            return finger.fingerID;
            }

            // returns -1 if failed, otherwise returns ID #
            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;

            // found a match!
            Serial.print("Found ID #"); Serial.print(finger.fingerID);
            Serial.print(" with confidence of "); Serial.println(finger.confidence);

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

              client.subscribe("Confidence"); 
               client.publish("Confidence", confidence);
               
             client.subscribe("FingerprintNr"); 
               client.publish("FingerprintNr", mqttio);
                
            return finger.fingerID; 
            
            client.loop(); 
            

            }

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

              Hallo zusammen,
              ich finde das Projekt hier sehr spannend und hätte dafür auch ein sinnvolles Einsatzgebiet. Ich würde gerne einen Fingerabdrucksensor an meine Gartenlaube hängen. Dann muss ich nicht immer meinen Schlüssel dabei haben.
              Könnte man das auch mit einem Auslöser, zB. einer Lichtschranke oder Bewegungsmelder koppeln? Dass das Licht nicht ständig leuchtet?

              1 Antwort Letzte Antwort
              0
              • Ralla66R Offline
                Ralla66R Offline
                Ralla66
                Most Active
                schrieb am zuletzt editiert von Ralla66
                #107

                @Hansi1234
                Was soll denn passieren wenn ein Fingerprint erkannt wurde ?
                Was soll denn passieren wenn eine Bewegung erkannt wurde ?
                Wann soll welches Licht ausgeschaltet werden das vom FP ?
                Wenn ja geht das Licht nur aus wenn der FP kein Strom bekommt.
                Könntest den Strom des FP mit Relais schalten.
                Wenn Bewegung erkannt -> Relais ein.
                Danach ein Timeout 2 min -> Relais aus.
                Mit oder ohne IoBroker ?
                Mit IOBroker relativ einfach umzusetzen.
                Ohne mußt du die Routine / Sketch selbst umschreiben.
                Liegt mehr oder weniger daran welche Fähigkeiten du hast.
                Bewegungsmelder kannst du ein PIR HC-SR501 nehmen.

                Solltest du nicht proggen können und du mit IO arbeitest, könntest du
                2 Wemos nehmen.
                An Wemos 2 könntest du noch Temp, Luftdruck , Wasserstand der Regentonne usw anschließen.

                siehe Bild 🙂

                Wemos_2_mal..jpg

                H 1 Antwort Letzte Antwort
                0
                • coyoteC Offline
                  coyoteC Offline
                  coyote
                  Most Active
                  schrieb am zuletzt editiert von
                  #108

                  @Ralla66 Verbindungsabbrüche hast du keine mehr? Habe auch jetzt die 2.0.1 ausprobiert, ist da aber genau so

                  1 Antwort Letzte Antwort
                  0
                  • Ralla66R Offline
                    Ralla66R Offline
                    Ralla66
                    Most Active
                    schrieb am zuletzt editiert von Ralla66
                    #109

                    @coyote
                    Alles ruhig bei mir, keine Verbindungsabbrüche.
                    Was steht denn im Log bei dir bezüglich Verbindung ?
                    Da sollte ja was zu sehen sein.
                    Port ist bei mir 1883 kein SSL.
                    Auf die schnelle fällt mir nur ein auf dem Wemos mal Tasmota flashen
                    und dort Mqtt einrichten.
                    Dann schauen ob diese Verbindung stabil bleibt.
                    In der Tasmota Console siehst du dann was kommuniziert wird.
                    Eben schauen ob mqtt.0 oder Routine zicken macht.
                    Wenn Tasmota auch abbricht kann das nur richtung Adapter sein.

                    coyoteC 1 Antwort Letzte Antwort
                    0
                    • Ralla66R Ralla66

                      @coyote
                      Alles ruhig bei mir, keine Verbindungsabbrüche.
                      Was steht denn im Log bei dir bezüglich Verbindung ?
                      Da sollte ja was zu sehen sein.
                      Port ist bei mir 1883 kein SSL.
                      Auf die schnelle fällt mir nur ein auf dem Wemos mal Tasmota flashen
                      und dort Mqtt einrichten.
                      Dann schauen ob diese Verbindung stabil bleibt.
                      In der Tasmota Console siehst du dann was kommuniziert wird.
                      Eben schauen ob mqtt.0 oder Routine zicken macht.
                      Wenn Tasmota auch abbricht kann das nur richtung Adapter sein.

                      coyoteC Offline
                      coyoteC Offline
                      coyote
                      Most Active
                      schrieb am zuletzt editiert von
                      #110

                      @Ralla66 meinst du iobroker Log?

                      Ich habe noch 3 ESP im Netzwerk hängen, die laufen aber stabil.
                      Werde mir das morgen vllt mal anschauen, ob ich da was finde. Es ist immer ca. 6-10 Sekunden nach dem der letzte Fingerprint erkannt wurde. Löse ich alle 5 Sekunden den Fingerprint aus, bleibt die Verbindung stehen

                      1 Antwort Letzte Antwort
                      0
                      • Ralla66R Offline
                        Ralla66R Offline
                        Ralla66
                        Most Active
                        schrieb am zuletzt editiert von
                        #111

                        @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 1 Antwort Letzte Antwort
                        0
                        • Ralla66R Ralla66

                          @Hansi1234
                          Was soll denn passieren wenn ein Fingerprint erkannt wurde ?
                          Was soll denn passieren wenn eine Bewegung erkannt wurde ?
                          Wann soll welches Licht ausgeschaltet werden das vom FP ?
                          Wenn ja geht das Licht nur aus wenn der FP kein Strom bekommt.
                          Könntest den Strom des FP mit Relais schalten.
                          Wenn Bewegung erkannt -> Relais ein.
                          Danach ein Timeout 2 min -> Relais aus.
                          Mit oder ohne IoBroker ?
                          Mit IOBroker relativ einfach umzusetzen.
                          Ohne mußt du die Routine / Sketch selbst umschreiben.
                          Liegt mehr oder weniger daran welche Fähigkeiten du hast.
                          Bewegungsmelder kannst du ein PIR HC-SR501 nehmen.

                          Solltest du nicht proggen können und du mit IO arbeitest, könntest du
                          2 Wemos nehmen.
                          An Wemos 2 könntest du noch Temp, Luftdruck , Wasserstand der Regentonne usw anschließen.

                          siehe Bild 🙂

                          Wemos_2_mal..jpg

                          H Nicht stören
                          H Nicht stören
                          Hansi1234
                          schrieb am zuletzt editiert von
                          #112

                          Guten Morgen Ralla66,
                          danke für deine Auflistung. Ich habe unten deine Fragen beantwortet.

                          @Ralla66 said in Fingerprint an einem ESP8266:

                          @Hansi1234

                          • Hi 🙂

                          Was soll denn passieren wenn ein Fingerprint erkannt wurde ?

                          • In Meinem Fall den 12V Schnapper vom Schloss öffnen. Kabel liegt bereits an.

                          Was soll denn passieren wenn eine Bewegung erkannt wurde ?

                          • Dann sollte der Fingerprint selber erstmal aktiviert werden (Licht vom Fingerprint geht an). Wäre aber auch nicht zwingend. Dann leuchtet der FP eben immer. Hier muss aber der retriggerbaren Monoflop beachtet werden (evtl. mit einem zusätzlichen Arduino Nano? FP -> Arduino Nano -> RPI?)

                          Wann soll welches Licht ausgeschaltet werden das vom FP ?

                          • Nach z.B. 2 Minuten

                          Wenn ja geht das Licht nur aus wenn der FP kein Strom bekommt.

                          • Das habe ich mir gedacht. Aber wie gesagt, ist nicht schlimm wenn er dauernd leuchtet.

                          Könntest den Strom des FP mit Relais schalten.
                          Wenn Bewegung erkannt -> Relais ein.
                          Danach ein Timeout 2 min -> Relais aus.
                          Mit oder ohne IoBroker ?

                          • Mit natürlich 🙂 Habe auch schon einen Reedkontakt angebracht, welchen ich auch in io integriere.

                          Mit IOBroker relativ einfach umzusetzen.
                          Ohne mußt du die Routine / Sketch selbst umschreiben.
                          Liegt mehr oder weniger daran welche Fähigkeiten du hast.

                          • Daran wird es scheitern. Alles was ich bis jetzt umgesetzt habe, stand iwo hier im Forum oder habe ich bei Google gefunden. Außer die VIS, diese habe ich selber erstellt und passe ich selber an meine Bedürfnisse an.

                          Bewegungsmelder kannst du ein PIR HC-SR501 nehmen.

                          • Liegen bereits einige hier 😉

                          Solltest du nicht proggen können und du mit IO arbeitest, könntest du
                          2 Wemos nehmen.

                          • Von diesen Wemos habe ich zum ersten Mal in diesem Forum gelesen. Ich würde es gerne aber alles per Kabel machen. Wireless nur wenn absolut nötig. Ein RPI mit LAN und Strom kann ich in der Laube sehr leicht unterbringen

                          An Wemos 2 könntest du noch Temp, Luftdruck , Wasserstand der Regentonne usw anschließen.

                          • An einem RPI aber ebenso 😉

                          siehe Bild 🙂

                          Wemos_2_mal..jpg

                          • Oben habe ich bereits erfragt, warum kein UART benutzt wird. Die Antwort habe ich nicht so richtig verstanden. Aber ist auch nicht weiter wild, wenn ich den FP direkt an zB. den RPI anstecke.

                          • Sorry für die vielen Fragen. Aber ist ja erstmal alles nur Theorie. Danke für die Hilfe

                          1 Antwort Letzte Antwort
                          0
                          • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          441

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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