Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Fingerprint an einem ESP8266

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Fingerprint an einem ESP8266

Scheduled Pinned Locked Moved Off Topic
126 Posts 19 Posters 23.4k Views 20 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Ralla66R Offline
    Ralla66R Offline
    Ralla66
    Most Active
    wrote on last edited by Ralla66
    #86

    @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 1 Reply Last reply
    0
    • Ralla66R Offline
      Ralla66R Offline
      Ralla66
      Most Active
      wrote on last edited by
      #87

      Kleiner Nachtrag noch,
      Datenpunkt hinzu gefügt User erkannt, Bild

      User erkannt.jpg

      Kleines Blockly dazu, Bild

      User erkannt Blockly.jpg

      :-)

      ? R 2 Replies Last reply
      0
      • Ralla66R Ralla66

        Kleiner Nachtrag noch,
        Datenpunkt hinzu gefügt User erkannt, Bild

        User erkannt.jpg

        Kleines Blockly dazu, Bild

        User erkannt Blockly.jpg

        :-)

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

        @Ralla66
        Wenn du jetzt noch ein Tutorial dazu machst :+1:

        1 Reply Last reply
        0
        • Ralla66R Offline
          Ralla66R Offline
          Ralla66
          Most Active
          wrote on last edited by Ralla66
          #89

          Einfach mal zeigen will,
          jetzt auch in der Visu :-)

          FP_VIS.jpg

          nach einer Minute werden die Bedienelemente gesperrt.

          FP_VIS_Gesperrt.jpg

          1 Reply Last reply
          0
          • Ralla66R Ralla66

            Kleiner Nachtrag noch,
            Datenpunkt hinzu gefügt User erkannt, Bild

            User erkannt.jpg

            Kleines Blockly dazu, Bild

            User erkannt Blockly.jpg

            :-)

            R Offline
            R Offline
            ReverZ
            wrote on last edited by
            #90

            @Ralla66
            Sehr schön!
            Ich würde das mit dem Sonoff-Adapter auch begrüssen.

            1 Reply Last reply
            0
            • Ralla66R Offline
              Ralla66R Offline
              Ralla66
              Most Active
              wrote on last edited by Ralla66
              #91

              Fertig ist man ja nie,
              Sonoff Adapter schwierig, habe keine Idee mehr woran es liegt !
              Warum der Datenpunkt nicht erstellt wird ist die Frage.
              Da muß ein Kenner ran, meine Möglichkeiten als Beginner sind sehr begrenzt.
              Müsste mal jemand ein Issue beim Adapter Ersteller platzieren.
              Mit meinem 40 Jahre alten Schulenglisch bringt das nichts.

              1 Reply Last reply
              -1
              • Ralla66R Offline
                Ralla66R Offline
                Ralla66
                Most Active
                wrote on last edited by
                #92

                Bräuchte mal einen Tipp und Anregungen für die Visu.
                Thema ist eigentlich Zugriffsberechtigung zur Visu.

                Bild:

                Party Modus.jpg

                Würde gerne 3 Modi haben.
                Die Modi Umschaltung kann nur der Admin per Fingerprint oder am Lappy mit Passwort.

                • Freier Modus, Visu kann bedient werden ohne Fingerprint
                • User Modus per Fingerprint ( Familie ), Admins ( Eltern ) dürfen alles, Kiddis dürfen nur bestimmte Views aufrufen.
                • Party Modus, nur die Admins haben per Fingerprint Berechtigung

                Entsteht die Frage wie kann ich einzelne View sperren.
                Für Ideen und Anregungen wäre ich dankbar.

                Ralla

                GlasfaserG 1 Reply Last reply
                0
                • Ralla66R Ralla66

                  Bräuchte mal einen Tipp und Anregungen für die Visu.
                  Thema ist eigentlich Zugriffsberechtigung zur Visu.

                  Bild:

                  Party Modus.jpg

                  Würde gerne 3 Modi haben.
                  Die Modi Umschaltung kann nur der Admin per Fingerprint oder am Lappy mit Passwort.

                  • Freier Modus, Visu kann bedient werden ohne Fingerprint
                  • User Modus per Fingerprint ( Familie ), Admins ( Eltern ) dürfen alles, Kiddis dürfen nur bestimmte Views aufrufen.
                  • Party Modus, nur die Admins haben per Fingerprint Berechtigung

                  Entsteht die Frage wie kann ich einzelne View sperren.
                  Für Ideen und Anregungen wäre ich dankbar.

                  Ralla

                  GlasfaserG Offline
                  GlasfaserG Offline
                  Glasfaser
                  wrote on last edited by
                  #93

                  @Ralla66

                  Nur eine Idee.

                  Nimm das Script von Mic und anstatt der Tastatur füllst du den Datenpunkt vom eingelesen Fingerprint.

                  Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                  1 Reply Last reply
                  0
                  • Ralla66R Offline
                    Ralla66R Offline
                    Ralla66
                    Most Active
                    wrote on last edited by Ralla66
                    #94

                    Gute Idee, Danke.
                    Sperrbildschirm war die Anregung.
                    Flux was eingefügt.
                    Party Modus geht jetzt :-) Bild ->

                    FP_Sperre.jpg

                    Blockly dazu :

                    FP Sperrbildschirm.jpg

                    Zugangsberechtigung für andere User geht bei mir schlecht da die View Bar 12 Knöpfe hat.
                    Hatte hier an ausblenden oder Gruppen gedacht.
                    Umbauen der Vis würde sehr aufwendig werden.

                    Dann bleibt nur ein Weg der gangbar seien dürfte.

                    User ist ja per Fingerprint bekannt und zugewiesen.
                    Wenn User x keine Berechtigung haben soll frage ich Data for controll vis ab.

                    User umschalten.jpg

                    Ist User x in einem nicht Berechtigten Bereich schalte ich die Visu per Blockly auf eine andere View um.

                    Das sollte gehen. Soweit die Theorie. :-)

                    1 Reply Last reply
                    0
                    • Ralla66R Offline
                      Ralla66R Offline
                      Ralla66
                      Most Active
                      wrote on last edited by Ralla66
                      #95

                      Alles noch ziemlich unausgewogen, suche erst den Weg.
                      Dann werden Blocklys und Visu angepasst.
                      Erste Ansätze zum User Modus.
                      Blockly -->

                      Berechtigung Vis.jpg

                      Rallas Theorie ;-)

                      1 Reply Last reply
                      0
                      • Ralla66R Offline
                        Ralla66R Offline
                        Ralla66
                        Most Active
                        wrote on last edited by
                        #96

                        Habe noch ein wenig gespielt.
                        Läuft jetzt super. Zwar kann ich keine View sperren aber wenn ein bestimmtes View aufgerufen
                        wird sofort umschalten auf den Sperrbildschirm.
                        Da die Umschaltung im Millisekunden Bereich liegt ist der Weg gangbar.
                        Damit habe ich nun ein Zugangskontrollsystem zur Vis in dem ich User Berechtigungen erteilen kann.
                        Cool. :-)
                        Viel Spass beim nachbauen,
                        Danke euch allen die mit geholfen haben.
                        War ein cooles Projekt das Spass gemacht hat.

                        Anbei noch das Blockly zur Sperrung des Kamera View:

                        Sperrbildschirm_Ein.jpg

                        1 Reply Last reply
                        0
                        • Ralla66R Offline
                          Ralla66R Offline
                          Ralla66
                          Most Active
                          wrote on last edited by Ralla66
                          #97

                          Kleine Verbesserung eingebaut.
                          User bleibt für 5 Minuten angemeldet.
                          Dann kommt der Sperrbildschirm.
                          Wenn der User keine Berichtigung für ein View hat wird der View Access Denied aufgerufen.
                          User bleibt weiterhin in der Bedienoberfläche angemeldet.
                          Offen ist noch Abmeldebutton zum Userwechsel.
                          Nachtrag, ist nicht nötig da bei erneuter Fingerprinterkennung User erkannt wechselt.
                          Läuft.

                          Der Ralla :-)

                          Access Denied Visu.jpg

                          Samsung Tab Sperrbildschirm Bild

                          Samsung_Tab_V1.jpg

                          1 Reply Last reply
                          0
                          • Ralla66R Offline
                            Ralla66R Offline
                            Ralla66
                            Most Active
                            wrote on last edited by
                            #98

                            Sodele, 24 Stunden Test ist durch,
                            alles läuft sauber.
                            Visu ist soweit angepasst.
                            Modies laufen, Sperren auch.

                            FP_Visu_Fertig_3107.jpg

                            Hier das Blockly zum Partymodus :

                            FP_fertig_Blockly_3007.jpg

                            Im Access Denied View haben ich noch einen unnsichtbaren Schalter hinzugefügt.
                            Könnte ja mal der Fingerprintsensor defekt sein.

                            Sodele das wars, habt viel Spass damit.
                            Für mich erledigt, rennt.

                            Der Ralla :-)

                            1 Reply Last reply
                            0
                            • C Offline
                              C Offline
                              ChrisXY
                              wrote on last edited by
                              #99

                              cool. Also ich hab ein Wiegand fingerprint den hab ich direkt mit 5v an der 5v Seite dran. Ohne auf 3V runtzerzuregeln. Klappt bisher auch ohne Probleme. Hab ein wemos pro d1 mini.
                              Schönes VIS :) Bin bei mir auch dran aber ich bin noch bei meinem User und Zugriffs/Zeiten Plan.

                              1 Reply Last reply
                              0
                              • Ralla66R Offline
                                Ralla66R Offline
                                Ralla66
                                Most Active
                                wrote on last edited by Ralla66
                                #100

                                @ChrisXY sagte in Fingerprint an einem ESP8266:

                                Bin bei mir auch dran aber ich bin noch bei meinem User und Zugriffs/Zeiten Plan

                                Das ist ja das schöne an IO, jeder kann alles Gestalten wie er will.
                                Wollte nur einen Weg aufzeigen das es geht.
                                Der ein oder andere bekommt vielleicht eine Anregung für sein Fingerprint Projekt.
                                Wobei hier bestimmte User für bestimmte View sperren nicht einfach war.

                                Viel Spass euch allen. :-)
                                Mir hat das richtig viel Spass gemacht.
                                Cool das es läuft. :upside_down_face:

                                Access_Denied_3107.jpg

                                1 Reply Last reply
                                0
                                • H Do not disturb
                                  H Do not disturb
                                  Hansi1234
                                  wrote on last edited by
                                  #101

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

                                  1 Reply Last reply
                                  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
                                    wrote on last edited by 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 Reply Last reply
                                    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
                                      wrote on last edited by
                                      #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 Reply Last reply
                                      0
                                      • SBorgS Offline
                                        SBorgS Offline
                                        SBorg
                                        Forum Testing Most Active
                                        wrote on last edited by 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 Reply Last reply
                                        0
                                        • Ralla66R Offline
                                          Ralla66R Offline
                                          Ralla66
                                          Most Active
                                          wrote on last edited by 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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          757

                                          Online

                                          32.6k

                                          Users

                                          82.2k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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