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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

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

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

Fingerprint an einem ESP8266

Geplant Angeheftet Gesperrt Verschoben Off Topic
126 Beiträge 19 Kommentatoren 22.2k Aufrufe 20 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Ralla66R Offline
    Ralla66R Offline
    Ralla66
    Most Active
    schrieb am zuletzt editiert von Ralla66
    #83

    @SBorg
    Danke, das mit dem neu connecten im mqtt.0 ist ein Ansatz.
    Bei mir wird nur publishst (ESP --> MQTT) benötigt.
    String teste ich noch, client.xxx ist doch der ESP oder ?
    Daten kommen ja in IO mqtt.0 als Zahl an, nur halt immer nach 2 - 3 Sekunden Pause
    wird die Verbindung getrennt.
    Diese zicken hat der mqtt.0 schon von Anfang an gemacht.
    Bin dann für meine Sonoff umstiegen auf Sonoff Adapter als Broker.
    Dieser erstellt mir aber keinen Datenpunkt Fingerprint.
    Sonst hätte ich den Sonoff Adapter als Broker genommen.

    Mqtt_0_geht_mit_FP.jpg

    Sonoff_0_geht_nicht_FP.jpg

    SBorgS 1 Antwort Letzte Antwort
    0
    • Ralla66R Ralla66

      @SBorg
      Danke, das mit dem neu connecten im mqtt.0 ist ein Ansatz.
      Bei mir wird nur publishst (ESP --> MQTT) benötigt.
      String teste ich noch, client.xxx ist doch der ESP oder ?
      Daten kommen ja in IO mqtt.0 als Zahl an, nur halt immer nach 2 - 3 Sekunden Pause
      wird die Verbindung getrennt.
      Diese zicken hat der mqtt.0 schon von Anfang an gemacht.
      Bin dann für meine Sonoff umstiegen auf Sonoff Adapter als Broker.
      Dieser erstellt mir aber keinen Datenpunkt Fingerprint.
      Sonst hätte ich den Sonoff Adapter als Broker genommen.

      Mqtt_0_geht_mit_FP.jpg

      Sonoff_0_geht_nicht_FP.jpg

      SBorgS Offline
      SBorgS Offline
      SBorg
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #84

      @Ralla66 sagte in Fingerprint an einem ESP8266:

      client.xxx ist doch der ESP oder ?

      Ja, ich meinte damit die beiden client.subscribe(...)/....publish(...) Befehle.

      @Ralla66 sagte in Fingerprint an einem ESP8266:

      Daten kommen ja in IO mqtt.0 als Zahl an, nur halt immer nach 2 - 3 Sekunden Pause
      wird die Verbindung getrennt.
      Diese zicken hat der mqtt.0 schon von Anfang an gemacht.
      Bin dann für meine Sonoff umstiegen auf Sonoff Adapter als Broker.
      Dieser erstellt mir aber keinen Datenpunkt Fingerprint.
      Sonst hätte ich den Sonoff Adapter als Broker genommen.

      Witziger weise bei mir genau umgekehrt. Der Sonoff bricht bei mir immer ab und der MQTT läuft. Der Sonoff ist ein stark gestutzter MQTT-Server, kann einfach sein, dass du hier nicht einfach publishen kannst und einen "spezielleren" Aufruf benötigst. Meine Versuche damit sind aber lange hin, hat eh nie richtig funktioniert, deswegen kenne ich mich beim Sonoff auch eher schlecht aus.

      Dass der MQTT abricht könnte auch an deiner "Loop" hängen. Die fragt einzig den MQTT ab, macht das also ständig im Millisekundentakt (da sonst nichts in der Loop gemacht wird). "delay" sollte man zwar meiden, aber zu Testzwecken würde ich einfach mal 2 Sekunden Pause per delay einfügen und dann mal schauen.

      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
        #85

        @SBorg
        werde das mal später mit Mqtt.0 testen, String , Delay usw.
        Sehe eher bei mir den Sonoff Adapter am start.
        Das geht ja im IO bis auf den Datenpunkt erstellen.
        Vermute mal liegt am Full Topic oder Topic und Perfix.
        Scheint nicht die richtige Syntax zu sein.
        Dann können nur diese Zeilen falsch sein.

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

        Das hatte ich auch mit Tasmota Mqtt, wenn der Fulltopic nicht passt läuft nichts.
        Ja auch logisch.
        Der gestutzte Sonoff Mqtt Server braucht wohl die genaue Syntax.
        Hatte das heute kurz angelesen bei Tasmota Theo Arends Mqtt auf Github.
        Werde da mal ansetzen.

        Teste das mal jetzt alles aus.
        Viel kann das nicht mehr sein.

        Danke noch mal :-)

        1 Antwort Letzte Antwort
        0
        • Ralla66R Offline
          Ralla66R Offline
          Ralla66
          Most Active
          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
          0
          • Ralla66R Offline
            Ralla66R Offline
            Ralla66
            Most Active
            schrieb am zuletzt editiert von
            #87

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

            User erkannt.jpg

            Kleines Blockly dazu, Bild

            User erkannt Blockly.jpg

            :-)

            ? R 2 Antworten Letzte Antwort
            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
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #88

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

              1 Antwort Letzte Antwort
              0
              • Ralla66R Offline
                Ralla66R Offline
                Ralla66
                Most Active
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #90

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

                  1 Antwort Letzte Antwort
                  0
                  • Ralla66R Offline
                    Ralla66R Offline
                    Ralla66
                    Most Active
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    -1
                    • Ralla66R Offline
                      Ralla66R Offline
                      Ralla66
                      Most Active
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • Ralla66R Offline
                          Ralla66R Offline
                          Ralla66
                          Most Active
                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                          0
                          • Ralla66R Offline
                            Ralla66R Offline
                            Ralla66
                            Most Active
                            schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                            0
                            • Ralla66R Offline
                              Ralla66R Offline
                              Ralla66
                              Most Active
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • Ralla66R Offline
                                Ralla66R Offline
                                Ralla66
                                Most Active
                                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                0
                                • Ralla66R Offline
                                  Ralla66R Offline
                                  Ralla66
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • C Offline
                                    C Offline
                                    ChrisXY
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • Ralla66R Offline
                                      Ralla66R Offline
                                      Ralla66
                                      Most Active
                                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                      0
                                      • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          841

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe