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

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

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

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

    Zumindest laufen bei mir die FPM10A ohne Probs.
    Nur Rote Anschlußkabel.
    Lolin NodeMCU die nächste Frage.
    Mal ne andere NodeMCU nehmen ohne VU Anschluß.
    Haben meine nicht.
    FP immer schön an 5 Volt betreiben um so besser der Scan und die Auswertung.
    Der Helligkeit wegen.
    Zu Communication Error, meist ein Problem auf der Tx Rx Leitung.
    Hier Pegel sauber ?

    Jetzt noch nach IO Broker schaufeln per Mqtt wäre Cool.

    :-)

    T 1 Antwort Letzte Antwort
    0
    • Ralla66R Ralla66

      Zumindest laufen bei mir die FPM10A ohne Probs.
      Nur Rote Anschlußkabel.
      Lolin NodeMCU die nächste Frage.
      Mal ne andere NodeMCU nehmen ohne VU Anschluß.
      Haben meine nicht.
      FP immer schön an 5 Volt betreiben um so besser der Scan und die Auswertung.
      Der Helligkeit wegen.
      Zu Communication Error, meist ein Problem auf der Tx Rx Leitung.
      Hier Pegel sauber ?

      Jetzt noch nach IO Broker schaufeln per Mqtt wäre Cool.

      :-)

      T Offline
      T Offline
      tööö
      schrieb am zuletzt editiert von
      #77

      @Ralla66
      Ich habe an der Verkabelung ja nichts geändert. Anderen NodeMCU habe ich auch probiert. Ich kapiers selber nicht. Aber nun habe ich die Schnauze voll von diesem Fingerprint. 😉

      Was meinst du mit „Pegel sauber“?

      Per MQTT nach ioBroker ist die leichteste Übung, da übertrage ich schon Werte von anderen Sensoren. 😉

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

        @tööö sagte in Fingerprint an einem ESP8266:

        SoftwareSerial mySerial(5, 4);

        Geh mal von 4 weg.
        Hier nach :
        http://stefanfrings.de/esp8266/
        Zitat bei NodeMCU : D4 GPIO2 muss beim Start high sein, hat 12 kΩ Pull-Up Widerstand, flackert beim Start

        Da könnte der Fehler liegen. Geh lieber auf 5, 6.

        FP nach Mqtt würdest du wie machen ?

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tööö
          schrieb am zuletzt editiert von
          #79

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

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

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

          Meine #includes:

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

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

          WLAN-Verbindung aufbauen:

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

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

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

          Und hier die setup-Funktion:

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

            @tööö

            Habe noch ein wenig gebastelt.
            Der Fingerprintsensor sendet nun über den Wemos nach IO Broker mqtt.0 als Broker.
            Der Sketch sendet nur die reine ID. Also 1 bis xxx.
            Im Blockly werde ich später Rechte und Namen vergeben.
            ID 1 bis 9 haben praktisch Admin Rechte dürfen alles.
            ID 10 bis 19 werden begrenzte Rechte haben.
            ID 20 bis, keine Rechte, nur lesen.
            Wenn keine ID erkannt keine Schaltung in der Vis möglich, praktisch Partyschutz oder so.
            Läuft soweit.
            :-)

            Ein Problem bleibt aber noch, nach kurzer Zeit bekomme ich ein Timeout im Log :
            mqtt.0 2019-07-24 17:40:56.280 info Client [ESP8266Client] connection closed: timeout
            Hier raus würde ich schließen -> info Client [ESP8266Client] connection closed -<
            das der Client die Verbindung schließt ???
            Liegt dies am Adapter mqtt.0 oder kann das aus dem Sketch kommen.
            Kann mal bitte wer drüber schauen.
            Sonst ist der Sonoff Adapter mein Broker,
            das läuft noch nicht hier scheint der Topic falsch zu sein.
            Kann was an den Einstellungen im Mqtt.0 Adapter falsch sein ?
            Bin da nicht so fit mit.

            Sketch:


            /***************************************************
            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);

            // Daten des eigenen Systems anpassen, Wifi und Mqtt Broker

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

            // Hier nichts ändern

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

            WiFiClient espClient;
            PubSubClient client(espClient);

            void setup()
            {
            Serial.begin(9600);
            while (!Serial); // For Yun/Leo/Micro/Zero/...
            delay(100);
            Serial.println("\n\nAdafruit finger detect test");

            // 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(9600); // 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_1");
            client.publish("Fingerprint_1", "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("Fingerprint_1"); 
               client.publish("Fingerprint_1",mqttio);
            return finger.fingerID; 
            
            client.loop();
            

            }

            timeout.jpg

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

              Fehlersuche,
              mit dem Sketch bleibt Mqtt.0 Grün.
              Dann kann der Fehler timeout nur im Sketch liegen.

              Sketch:


              #include <ESP8266WiFi.h>
              #include <PubSubClient.h>

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

              WiFiClient espClient;
              PubSubClient client(espClient);

              void setup() {

              Serial.begin(115200);

              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.publish("esp/test", "Hello from ESP8266");
              client.subscribe("esp/test");

              }

              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() {
              client.loop();
              }

              Test_Mqtt_Wifi_Mqtt0.jpg

              Schwierig da ich nicht proggen kann.
              Erkennt wer den Fehler ?

              Wäre ja cool einen Fingerprint in IO zu haben.
              Teste jetzt mal mit Serial.begin(115200);
              Was noch so auffällt.
              bei geht nicht:
              client.subscribe("Fingerprint_1");
              client.publish("Fingerprint_1",mqttio);
              mqttio ist ja char, fehlt hier "" also "mqttio" ?
              geht:
              client.publish("esp/test", "Hello from ESP8266");
              client.subscribe("esp/test");

              Wobei die Hauptfrage bleibt wo kommt der timeout her ?

              Ideen ?

              Danach kommt wohl trockene Lektüre wie Normen lesen über Topic dran. :nerd_face:

              Bin Weg lesen :-)

              Der Ralla

              1 Antwort Letzte Antwort
              0
              • SBorgS Offline
                SBorgS Offline
                SBorg
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #82

                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 ^^

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

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          618

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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