NEWS
Fingerprint an einem ESP8266
-
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); }@tööö Hallo, ich bin absoluter neuling habe mir den Fingerprint Sketch auch zugelegt was auch funktioniert .. jedoch mit dem MQTT auszügen komm ich nicht klar.
Könntest du mir evtl. den Sketch komplett zur verfügung stellen damit ich den Fingerprint in IObroker intigrieren kann,Hab es nun hinbekommen, spielt ihr eure Finger immer mit dem Sketch auf oder gibt es die Möglichkeit auf eine grafischen Oberfläche ähnlich die von Home Assistant?
Grüße Julian
-
@tööö Hallo, ich bin absoluter neuling habe mir den Fingerprint Sketch auch zugelegt was auch funktioniert .. jedoch mit dem MQTT auszügen komm ich nicht klar.
Könntest du mir evtl. den Sketch komplett zur verfügung stellen damit ich den Fingerprint in IObroker intigrieren kann,Hab es nun hinbekommen, spielt ihr eure Finger immer mit dem Sketch auf oder gibt es die Möglichkeit auf eine grafischen Oberfläche ähnlich die von Home Assistant?
Grüße Julian
@julian-raab das würde mich auch intressieren hat jemand es schon am laufen???
-
@julian-raab das würde mich auch intressieren hat jemand es schon am laufen???
@exitus bei mir funktioniert es .. aber zum anlernen immer skech aufspielen
-
@Hansi1234
Wofür denn Uart für welche Anwendung ?
Hatte ja oben geschrieben :
Das ist bei den meisten NodeMCU / Wemos mit an Board über Mini Usb.
TTL <-> RS232
Du kannst ja in der Arduino IDE per Mini USB über einen Com Port auf dem Wemos zugreifen.
Das ist ja Uart. Möglich auch an RX TX.
Wlan brauchste nicht unbedingt,
Lan kannste ja mit einem Arduino Uno verwirklichen.
Da du nicht proggen kannst bleibt ja das Problem mit dem Sensor und deren Auswertung.
Fertige Routinen kenne ich nicht mit FP,Schließer und PIR.
Es gibt aber im Netz fertige Routinen für Fingerprint Door opener, ohne PIR.Na ja, ich persönlich würde mit 2 Wemos und Wlan arbeiten.
So ist auch meine Statusanzeige mit FP geplant.
Brauchst keine Routine umschreiben und Tasmota bietet dir ja an viele Sensoren einzubinden.
Na klar kannste mit Tasmota auch Relais schalten oder Reedkontakte verwalten.
Dein Projekt wird ja wachsen und irgend wann willste Led Stripes einbinden.
Das bietet Tasmota ja auch.
Warum einen schweren Weg gehen wenn es einfacher geht.
Und denk an eine manuelle Entriegelung falls der FP mal ausfällt.Wenn du unbedingt RPI und FP nutzen möchtest ist das ein ganz eigenes Projekt.
Hier ging es um Wemos ( ESP8266 ) mit FP.
Dann mach bitte einen eigenen Fred auf RPI trifft FP.
Eine ganz andere Welt.
Denke das verwirrt viele wenn wir jetzt hier ESP und RPI mischen.
Danke
Link:
https://tutorials-raspberrypi.de/raspberry-pi-fingerprint-sensor-authentifizierung-nutzen/@ralla66
bei mir kommt immer diese fehler meldung beim versuch den Scetch hochzuladen auf einen Wemos D1 Mini'SoftwareSerial' does not name a type; did you mean 'HardwareSerial'?
ketch_feb14a:191:10: error: 'FINGERPRINT_OK' was not declared in this scope
if (p != FINGERPRINT_OK) return -1;
^~~~~~~~~~~~~~
sketch_feb14a:194:10: error: 'FINGERPRINT_OK' was not declared in this scope
if (p != FINGERPRINT_OK) return -1;
^~~~~~~~~~~~~~
sketch_feb14a:197:10: error: 'FINGERPRINT_OK' was not declared in this scope
if (p != FINGERPRINT_OK) return -1;
^~~~~~~~~~~~~~
sketch_feb14a:202:1: error: 'client' was not declared in this scope
client.subscribe("print/Confidence");
^~~~~~
C:\Users\migue\Documents\Arduino\sketch_feb14a\sketch_feb14a.ino:202:1: note: suggested alternative: 'cnt'
client.subscribe("print/Confidence");
^~~~~~ -
@ralla66
bei mir kommt immer diese fehler meldung beim versuch den Scetch hochzuladen auf einen Wemos D1 Mini'SoftwareSerial' does not name a type; did you mean 'HardwareSerial'?
ketch_feb14a:191:10: error: 'FINGERPRINT_OK' was not declared in this scope
if (p != FINGERPRINT_OK) return -1;
^~~~~~~~~~~~~~
sketch_feb14a:194:10: error: 'FINGERPRINT_OK' was not declared in this scope
if (p != FINGERPRINT_OK) return -1;
^~~~~~~~~~~~~~
sketch_feb14a:197:10: error: 'FINGERPRINT_OK' was not declared in this scope
if (p != FINGERPRINT_OK) return -1;
^~~~~~~~~~~~~~
sketch_feb14a:202:1: error: 'client' was not declared in this scope
client.subscribe("print/Confidence");
^~~~~~
C:\Users\migue\Documents\Arduino\sketch_feb14a\sketch_feb14a.ino:202:1: note: suggested alternative: 'cnt'
client.subscribe("print/Confidence");
^~~~~~ -
Läuft bei mir durch mit dem Sketch vom 24 Aug 2019 ohne die 128.
Unter Bibliothek ist die ESP Softwareserial eingebunden ?