So lieber Tommy und lieber Fips,
habs soweit geschafft hier mal die Codes
Nodemcu+RFID+Display
Code:
#include <ESP8266WiFi.h> //Include Esp library
#include "WiFi.h" //Settings für WiFi
#include "RFIDSQL.h"; //Settings für SQL
#include <SPI.h>
#include <MFRC522.h> //include RFID library
#include <LiquidCrystal_I2C.h>
#include <WiFiUdp.h>
//#define DEBUG_ON
#define SS_PIN D8 //RX slave select
#define RST_PIN D3
IPAddress remoteIP(192, 168, 9, 101);
unsigned int remotePort = 4210; // remote port to listen on
int var;
WiFiUDP Udp;
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
LiquidCrystal_I2C lcd(0x27, 20, 4);
boolean state = false;
String Uname = "1";
int UHET = 0;
int UDGT = 0;
int UEGT = 0;
int check = 0;
void setup() {
delay(500);
Serial.begin(115200);
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
lcd.init();
Connect();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Connecting to: ");
lcd.setCursor(0, 1);
lcd.print(ssid);
Serial.println("");
Serial.println("Connected");
lcd.setCursor(0, 2);
lcd.print("Connected to:");
lcd.setCursor(0, 3);
lcd.print("IP: ");
lcd.print(WiFi.localIP());
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
dbconnect();
}
void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
bool try_key(MFRC522::MIFARE_Key *key)
{
bool result = false;
byte buffer[18];
byte block = 0;
MFRC522::StatusCode status;
// Serial.println(F("Authenticating using key A..."));
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK)
{
return false;
}
byte byteCount = sizeof(buffer);
status = mfrc522.MIFARE_Read(block, buffer, &byteCount);
if (status != MFRC522::STATUS_OK) {
}
else
{
// Successful read
result = true;
Serial.print(F("Success with key:"));
dump_byte_array((*key).keyByte, MFRC522::MF_KEY_SIZE);
Serial.println();
// Dump block data
Serial.print(F("Block ")); Serial.print(block); Serial.print(F(":"));
dump_byte_array(buffer, 16);
Serial.println();
}
Serial.println();
mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD
return result;
}
void loop() {
row_values *row = NULL;
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Reconnecting to ");
Serial.println(ssid);
Connect();
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" WELCOME/HALLO ");
lcd.setCursor(0, 1);
lcd.setCursor(0, 2);
lcd.print(" EG-Wohnung");
delay(1000);
//look for new card
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;//got to start of loop if there is no card present
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;//if read card serial(0) returns 1, the uid struct contians the ID of the read card.
}
long code = 0;
long code1 = 0;
long code2 = 0;
long code3 = 0;
long code4 = 0;
long code5 = 0;
long code6 = 0;
code = ((code + (mfrc522.uid.uidByte[0] * 10000)));
code1 = ((code1 + (mfrc522.uid.uidByte[1]) * 10));
code2 = ((code + code1) * 1000);
code3 = ((code3 + (mfrc522.uid.uidByte[2])));
code4 = ((code2 + code3));
code5 = ((code5 + (mfrc522.uid.uidByte[3])));
code6 = ((code4 + code5));
lcd.clear();
Serial.print("Karte: ");
Serial.println(code6);
lcd.setCursor(0, 0);
lcd.print("Karte: ");
lcd.print(code6);
lcd.setCursor(0, 1);
lcd.print("Bitte warten");
lcd.setCursor(0, 2);
lcd.print("Datenpruefung!!!");
delay(2000);
int soil_hum = 1024;
sprintf(query1, INSERT_SQL, code6);
sprintf(query, SELECT, code6);
Serial.println(query1);
Serial.println(query);
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
cur_mem->execute(query1);
cur_mem->execute(query);
column_names *columns = cur_mem->get_columns();
do
{
row = cur_mem->get_next_row();
if (row != NULL)
{
Serial.print("lfd_nr: ");
Serial.println(row->values[0]); // <--- der Name als Zeichenkette
Serial.print("UID: ");
Serial.println(row->values[1]); // <--- der Name als Zeichenkette
Serial.print("Name: ");
Serial.println(row->values[2]); // <--- der Name als Zeichenkette
Uname = (row->values[2]);
UHET = atof((row->values[6])); // Zutritt Haus
UEGT = atof((row->values[8])); // Zutritt Erdgeschoss
UDGT = atof((row->values[7])); // Zutritt Dachgeschoss
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hallo: ");
lcd.print(Uname);
lcd.setCursor(0, 1);
lcd.print("Haustuere: ");
if (UHET == 0)
lcd.print("NEIN");
else
lcd.print("JA");
lcd.setCursor(0, 2);
lcd.print("Erdgeschoss: ");
if (UEGT == 0)
lcd.print("NEIN");
else
lcd.print("JA");
lcd.setCursor(0, 3);
lcd.print("Dachgeschoss: ");
if (UDGT == 0)
lcd.print("NEIN");
else
lcd.print("JA");
delay(2500);
if (UEGT == 1)
{
var = 2;
Udp.beginPacket(remoteIP, remotePort);
Serial.println(var);
Udp.print(var);
Udp.endPacket();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hallo ");
lcd.print(Uname);
lcd.setCursor(0, 2);
lcd.print("Tuere wird geoeffnet");
lcd.print("");
delay(2000);
}
check = 1;
} //if ende
} // do ende
while (row != NULL );
{
if (check == 0)
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Karte nicht gefunden");
lcd.setCursor(0, 3);
lcd.print("Zutritt verweigert!");
delay(3000);
}
}
check = 0;
} //loop ende
und dann noch der code für den d1 mit 3 Relays
Code:
// NodeMCU mit Relay an D1
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <SPI.h>
#define relay1 D1 //Haustüre
#define relay2 D5 //Wohnung1
#define relay3 D6 //Wohnung2
unsigned int localUdpPort = 4210; // local port to listen on
int befehl; // buffer for incoming packets
const int NTP_PACKET_SIZE = 48;
char packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming packet,
char *ssid = "SSID";
char *password = "PWD";
unsigned int localPort = 4210;
WiFiUDP Udp;
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
Serial.println();
Serial.println();
Serial.println("Start");
pinMode(relay1, OUTPUT);
digitalWrite(relay1, LOW);
pinMode(relay2, OUTPUT);
digitalWrite(relay2, LOW);
pinMode(relay3, OUTPUT);
digitalWrite(relay3, LOW);
Serial.print("Connecting to "); Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Udp.begin(localUdpPort);
Serial.print("\n connected UDP-Server bereit an IP: ");
Serial.print(WiFi.localIP());
Serial.print("UDP-Server bereit.");
Serial.println("\nStarting connection to server...");
Udp.begin(localPort);
}
void loop() {
int packetSize, len;
packetSize = Udp.parsePacket();
if (packetSize) {
Serial.println("Packete: ");
Serial.print(packetSize);
Serial.print("Packet-Size: "); Serial.println(packetSize);
Serial.print("Empfangen "); Serial.print(packetSize);
Serial.print(" von IP "); Serial.print(Udp.remoteIP());
Serial.print(" Port "); Serial.println(Udp.remotePort());
len = Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
Serial.print("LEN: "); Serial.println(len);
befehl = atof(packetBuffer);
Serial.print("Befehl-Status: "); Serial.println(befehl);
if (befehl == 1) {
digitalWrite(relay1, HIGH);
Serial.println("Relay (Haustüre) wird geschaltet");
delay(2500);
digitalWrite(relay1, LOW);
}
if (befehl == 2) {
digitalWrite(relay2, HIGH);
Serial.println("Relay (Wohnungstüre) wird geschaltet");
delay(2500);
digitalWrite(relay2, LOW);
}
if (befehl == 3) {
digitalWrite(relay3, HIGH);
Serial.println("Relay (Ferienwohnung) wird geschaltet");
delay(2500);
digitalWrite(relay3, LOW);
}
}
}
Danke vorab Euch beiden und Eure Geduld mit mir!