NEWS
Fingerprint an einem ESP8266
-
@Ralla66
Sehr schön!
Ich würde das mit dem Sonoff-Adapter auch begrüssen. -
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. -
Bräuchte mal einen Tipp und Anregungen für die Visu.
Thema ist eigentlich Zugriffsberechtigung zur Visu.Bild:
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
-
Nur eine Idee.
Nimm das Script von Mic und anstatt der Tastatur füllst du den Datenpunkt vom eingelesen Fingerprint.
-
Gute Idee, Danke.
Sperrbildschirm war die Anregung.
Flux was eingefügt.
Party Modus geht jetzt Bild ->Blockly dazu :
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.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.
-
Alles noch ziemlich unausgewogen, suche erst den Weg.
Dann werden Blocklys und Visu angepasst.
Erste Ansätze zum User Modus.
Blockly -->Rallas Theorie
-
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:
-
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
Samsung Tab Sperrbildschirm Bild
-
Sodele, 24 Stunden Test ist durch,
alles läuft sauber.
Visu ist soweit angepasst.
Modies laufen, Sperren auch.Hier das Blockly zum Partymodus :
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
-
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. -
@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. -
Hi Leute,
wollt ihr dazu vielleicht noch ein Tutorial machen? -
@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);
-
@SBorg sagte in Fingerprint an einem ESP8266:
Deswegen sende ich einfach alle 5 Minuten die Uptime des ESP in einen "Alive-Topic".
Hast du da mal ein BeispielCode? Das könnte ich in einem anderen Programm auch gut gebrauchen. Und auch hier bricht mir nach paar Sekunden die Verbindung zum MQTT ab,
-
#include <NTPClient.h> #include <WiFiUdp.h> WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP,"europe.pool.ntp.org", 0, 300000); //Offset, Abfrageintervall timeClient.begin(); timeClient.update();
So in etwa. Ich nutze einfach NTPClient. ".begin" steht in der Setup-loop, ".update" holt dann bei mir im 5-Minuten-Zyklus (ist in der Main-loop, da ich alle 5 min. Werte vom Sensor lese) die aktuelle Uptime. Dann noch ein MQTT-Publish auf einen Topic (ich habe da einfach /x/y/z/alive ).
-
Hier noch mal der gesamte Sketch mit Confidence :
-
Hallo zusammen,
ich finde das Projekt hier sehr spannend und hätte dafür auch ein sinnvolles Einsatzgebiet. Ich würde gerne einen Fingerabdrucksensor an meine Gartenlaube hängen. Dann muss ich nicht immer meinen Schlüssel dabei haben.
Könnte man das auch mit einem Auslöser, zB. einer Lichtschranke oder Bewegungsmelder koppeln? Dass das Licht nicht ständig leuchtet? -
@Hansi1234
Was soll denn passieren wenn ein Fingerprint erkannt wurde ?
Was soll denn passieren wenn eine Bewegung erkannt wurde ?
Wann soll welches Licht ausgeschaltet werden das vom FP ?
Wenn ja geht das Licht nur aus wenn der FP kein Strom bekommt.
Könntest den Strom des FP mit Relais schalten.
Wenn Bewegung erkannt -> Relais ein.
Danach ein Timeout 2 min -> Relais aus.
Mit oder ohne IoBroker ?
Mit IOBroker relativ einfach umzusetzen.
Ohne mußt du die Routine / Sketch selbst umschreiben.
Liegt mehr oder weniger daran welche Fähigkeiten du hast.
Bewegungsmelder kannst du ein PIR HC-SR501 nehmen.Solltest du nicht proggen können und du mit IO arbeitest, könntest du
2 Wemos nehmen.
An Wemos 2 könntest du noch Temp, Luftdruck , Wasserstand der Regentonne usw anschließen.siehe Bild
-
@Ralla66 Verbindungsabbrüche hast du keine mehr? Habe auch jetzt die 2.0.1 ausprobiert, ist da aber genau so
-
@coyote
Alles ruhig bei mir, keine Verbindungsabbrüche.
Was steht denn im Log bei dir bezüglich Verbindung ?
Da sollte ja was zu sehen sein.
Port ist bei mir 1883 kein SSL.
Auf die schnelle fällt mir nur ein auf dem Wemos mal Tasmota flashen
und dort Mqtt einrichten.
Dann schauen ob diese Verbindung stabil bleibt.
In der Tasmota Console siehst du dann was kommuniziert wird.
Eben schauen ob mqtt.0 oder Routine zicken macht.
Wenn Tasmota auch abbricht kann das nur richtung Adapter sein.