INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
SQL-RFID - Sketche zusammenführen
09.10.2019, 12:37
Beitrag #25
RE: SQL-RFID - Sketche zusammenführen
Code:
void loop()
{

  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }

  long code = 0; //Variable Code als LONG und auf 0 gesetzt

  for (byte i = 0; i < mfrc522.uid.size; i++) //inerhalb eine schleife i als BYTE wert 0 dann vergleich i kleiner als mfrc522.uid.size wenn kleiner dann i hochzählen
  {
    code = ((code + mfrc522.uid.uidByte[i]) * 10); //code hat deb wert aus code + mfrc522.uid.uidByte der in i feststeht wieviel nyte es sind und das ganze dann multiplizieren mit 10 ergibt dan die  Variable LONG code = Kartennummer
  }

  Serial.print("Die Kartennummer lautet:");
  Serial.println(code);

Ich habe jetz meine Sketch ein wenig abgeändert um eine einmalige ID zu gewinnen in den kommentaren steht was ich darunter Verstehe sollte estwas anders sein bitte sagt es mir.

Nun zu dem was ich nicht auf die Kette bekomme dies "Kartennummer" die mit Serial.println(code) am Seriellen Monitor ausgegeben wird in mein INSERT INTO einzubinden.

VG
TeKiLLa1985
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2019, 13:03
Beitrag #26
RE: SQL-RFID - Sketche zusammenführen
(09.10.2019 12:37)TeKiLLa1985 schrieb:  code = ((code + mfrc522.uid.uidByte[i]) * 10); //code hat deb wert aus code + mfrc522.uid.uidByte der in i feststeht wieviel nyte es sind und das ganze dann
Bist Du Dir sicher, dass in den Bytes nur Werte von 0 bis 9 stehen? Ansonsten nacht die Multiplikation mit 10 mathematisch keinen Sinn.
Bei einem voll besetzbaren Byte müsste der Faktor 256 sein.
Dann den Code als unsigned long deklarieren.
Code:
unsigned long code = 0;
for (byte i=0; i<4;i++) {
  code <<= 8;  // *256
  code |= mfrc522.uid.uidByte[i]; // Byte hinzufügen
}

Wenn Du in dem von mir verlinkten Beispiel nicht gelernt hast, wie man einen Parameter mit einem SQL-Statement verknüpft, dann kann ich Dir auch nicht mehr helfen. Das wird dort lang und breit durchgekaut.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2019, 09:32
Beitrag #27
RE: SQL-RFID - Sketche zusammenführen
Code:
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <MySQL_Encrypt_Sha1.h>
#include <MySQL_Packet.h>
#include <SPI.h>
#include <MFRC522.h>
#include <ETH.h>

const int RST_PIN = 5; // Reset pin
const int SS_PIN = 13; // Slave select pin

static bool eth_connected = false;

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

IPAddress server_addr(X, X, X, X); // IP of the MySQL *server* here
char user[] = "TEST01";              // MySQL user login username
char password[] = "XXXX";        // MySQL user login password

char INSERT_SQL[] = "INSERT INTO test.hello_arduino (message) VALUES (%d)";
char query[128];


void setup() {
  Serial.begin(9600);
  ETH.begin();
  Serial.println("Connecting...");
  while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
  SPI.begin(); // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522
  mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
  Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop()
{

  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }

  long code = 0; //Variable Code als LONG und auf 0 gesetzt

  for (byte i = 0; i < mfrc522.uid.size; i++) //inerhalb eine schleife i als BYTE wert 0 dann vergleich i kleiner als mfrc522.uid.size wenn kleiner dann i hochzählen
  {
    code = ((code + mfrc522.uid.uidByte[i]) * 10); //code hat deb wert aus code + mfrc522.uid.uidByte der in i feststeht wieviel nyte es sind und das ganze dann multiplizieren mit 10 ergibt dan die  Variable LONG code = Kartennummer
  }

  Serial.print("Die Kartennummer lautet:");
  Serial.println(code);
  WiFiClient client;
  MySQL_Connection conn((Client *)&client);
  if (conn.connect(server_addr, 3306, user, password)) {
    Serial.println("Database connected.");
  }
  else
    Serial.println("Connection failed.");
  Serial.println("Recording data.");
  // Initiate the query class instance
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  // Execute the query
  sprintf(query, INSERT_SQL, code);
  cur_mem->execute(query);
  // Note: since there are no results, we do not need to read any data
  // Deleting the cursor also frees up memory used
  delete cur_mem;
  Serial.println("closing connection\n");
  Serial.println(); // Mit dieser Zeile wird auf dem Serial Monitor nur ein Zeilenumbruch gemacht.
}

So alles hat geklappt bin in meinem Projekt weitergekommen ich bedanke mich für die kleinen hilfestellungen

VG

TeKiLLa1985
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2019, 09:58
Beitrag #28
RE: SQL-RFID - Sketche zusammenführen
Ich bin immer noch der Meinung, dass Du wohl nur zufällig verschiedene ID bei der Multiplikation mit 10 erhälst, weil Du nur wenige Karten hast. Aber es ist Dein Projekt.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2019, 10:08
Beitrag #29
RE: SQL-RFID - Sketche zusammenführen
Das würde dann bedeuten wenn ich das system auf mehrere Karten erweitern würde könnte es passieren das 2 RFID-Tags die gleiche ID haben das meinst du oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2019, 10:28
Beitrag #30
RE: SQL-RFID - Sketche zusammenführen
(10.10.2019 10:08)TeKiLLa1985 schrieb:  Das würde dann bedeuten wenn ich das system auf mehrere Karten erweitern würde könnte es passieren das 2 RFID-Tags die gleiche ID haben das meinst du oder?
Ja, weil ein Byte der UUID 256 verschiedene Zustände haben kann und nicht nur 10.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Heute, 07:56
Beitrag #31
RE: SQL-RFID - Sketche zusammenführen
So habe alles hinbekommen und die alles Verändert.

Funktioniert wunderbar falls es jemand nachmachen will hier der Code

Code:
#include <SPI.h>
#include <MFRC522.h>
#include <ETH.h>
#include <HTTPClient.h>

int ledgreen = 32; //definiere Variable für Gruene LED
int ledred = 33; //definiere Variable für Rote LED
int relais = 4; //definierte Variable für Relais Schaltung

const int RST_PIN = 5; // Reset pin
const int SS_PIN = 13; // Slave select pin


static bool eth_connected = false;

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

void array_to_string(byte array[], unsigned int len, char buffer[])
{
    for (unsigned int i = 0; i < len; i++)
    {
        byte nib1 = (array[i] >> 4) & 0x0F;
        byte nib2 = (array[i] >> 0) & 0x0F;
        buffer[i*2+0] = nib1  < 0xA ? '0' + nib1  : 'A' + nib1  - 0xA;
        buffer[i*2+1] = nib2  < 0xA ? '0' + nib2  : 'A' + nib2  - 0xA;
    }
    buffer[len*2] = '\0';
}

void WiFiEvent(WiFiEvent_t event)
{
  switch (event) {
    case SYSTEM_EVENT_ETH_START:
      Serial.println("ETH Started"); //ausgabe am Seriellen Monitor
      //set eth hostname here
      ETH.setHostname("esp32-ethernet");
      break;
    case SYSTEM_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected"); //ausgabe am Seriellen Monitor
      break;
    case SYSTEM_EVENT_ETH_GOT_IP:
      Serial.print("ETH MAC: "); //ausgabe am Seriellen Monitor
      Serial.print(ETH.macAddress()); //ausgabe der Mac-Adresse am Seriellen Monitor
      Serial.print(", IPv4: "); //ausgabe am Seriellen Monitor
      Serial.print(ETH.localIP()); //ausgabe der IP Adresse am Seriellen Monitor
      if (ETH.fullDuplex()) {
        Serial.print(", FULL_DUPLEX"); //ausgabe am Seriellen Monitor
      }
      Serial.print(", ");
      Serial.print(ETH.linkSpeed()); //ausgabe der Geschwindigkeit am Seriellen Monitor
      Serial.println("Mbps"); //ausgabe am Seriellen Monitor
      eth_connected = true;
      break;
    case SYSTEM_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected"); //ausgabe am Seriellen Monitor
      eth_connected = false;
      break;
    case SYSTEM_EVENT_ETH_STOP:
      Serial.println("ETH Stopped"); //ausgabe am Seriellen Monitor
      eth_connected = false;
      break;
    default:
      break;
  }
}

void setup() {
  pinMode(ledgreen, OUTPUT); // Definetion des verhalten des Pins für die ledgreen
  pinMode(ledred, OUTPUT); // Definetion des verhalten des Pins für die ledred
  pinMode(relais, OUTPUT); // Definetion des verhalten des Pins für die relais
  Serial.begin(9600); // Taktung für den Seriellen Monitor
  WiFi.onEvent(WiFiEvent);
  ETH.begin();
  Serial.println("Connecting..."); //ausgabe am Seriellen Monitor
  while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
  SPI.begin(); // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522
  mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
  Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); //Ausgabe am Seriellen Monitor
}
void loop()
{

  if ( ! mfrc522.PICC_IsNewCardPresent()) // Suche nach neuem RFID
  {

    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) // Wenn eine Neuer RFID erkannt wurde
  {
    return;
  }
  else {



    Serial.print("Die Kartennummer lautet: "); // ausgabe am Seriellen Monitor

char rftok_hex[32] = ""; //erstellung einer Variablen mit dem datentyp Char die 32 zeichen umfasst
array_to_string(mfrc522.uid.uidByte, mfrc522.uid.size, rftok_hex); //hier vereinen wir die Arrays zu einem String mit dem Namen rftok_hex
String rftok_str=String(rftok_hex); // hier weisen wir dem String rftok_str den selben wert zu wie dem rftok_hex
Serial.println(rftok_str); // ausgabe am Seriellen monitor

    Serial.print("Die Mac-Adresse lautet: "); // ausgabe am Seriellen Monitor
    String macstr = ETH.macAddress(); //erstellung des Strings macstr_len anhand der werte aus der ETH.macAddress
    int macstr_len = macstr.length() + 1; //definieren der Variablen macstr_len als INT mit dem wert der Macstr.length
    char char_mac[macstr_len]; //definieren der variablen char_mac mit der zeichenanzahl von macstr_len als Datentyp Char
    macstr.toCharArray(char_mac, macstr_len); //hier wird aus der macstr ein char array erstellt
    Serial.print(char_mac); //ausgabe am Seriellen Monitor
    String rfmac=String(char_mac); //definieren einer neuen Variablen rfmac datentyp string wert des Strings char_mac
    Serial.println();

    WiFiClient client;
    const char* host = ""; //edit the host adress, ip address etc.
    String url = "";
    HTTPClient http;  //Declare an object of class HTTPClient

    http.begin("http://URL?rfmac="+rfmac+"&rftok="+rftok_str);  //Specify request destination
    int httpCode = http.GET();                                                                  //Send the request

    if (httpCode > 0) { //Check the returning code

      String payload = http.getString();   //Get the request response payload

      String payloadstr = (payload); //erstellen einer neuen Variablen mit dem Namen payloadstr als String mit dem wert der payload
      int payloadstr_len = payloadstr.length() + 1; //erstellen der Variablen Payloadstr_len als datentyp Integer mit dem wert der payloadstr.length +1
      char char_payload[payloadstr_len]; //erstellen der Variablen char_payload als datentyp char mit einer länge der payloadstr_len
      payloadstr.toCharArray(char_payload, payloadstr_len); // payloadstr wird zu einem array verändert mit den werteb der Char_payload und der payloadstr_len
      Serial.print("Payload lautet: "); // ausgabe am Seriellen Monitor
      Serial.println(); // Zeilenumbruch am Seriellen Monitor

      int  n; // erstellen der Variablen n als datentyp Integer
      n = atoi(char_payload); // die Variable n mit dem wert der char_payload mit der funktion atoi diese funktion gibt einen Integer wert zurück
      //Serial.print("INTEGER");
      Serial.print(n); // ausgabe der Variablen n am Seriellen Monitor
      Serial.print(" "); // ausgabe eines Leerzeichen am Seriellen Monitor


      if (n > 0) { // vergleich von der Variablen n n grösser als 0
        Serial.print("Zugang"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        digitalWrite(ledgreen, HIGH); // wenn 1 gruene Led geht an
        Serial.print("Gruene LED an"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        digitalWrite(relais, HIGH); // wenn 1 Relais Schaltet
        Serial.print("Relais Schaltet"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        delay(1000);// gruene Led an für 1 sek
        digitalWrite(ledgreen, LOW); //Gruene Led schaltet ab
        Serial.print("Gruene LED aus nach 1 sek"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        delay(1000); // Relais schaltete eine Sekunde nach Led ab
        Serial.print("Relais Schaltet ab nach 2 sek"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        digitalWrite(relais, LOW); //Relais schaltet nach 2 sek ab
      } else {
        Serial.print("Verweigert"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        digitalWrite(ledred, HIGH);// wenn NICHT 1:
        Serial.print("Rote LED an nach 1 sek"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        delay(1000);// led rot an für 1 Sek
        digitalWrite(ledred, LOW); // rote led schaltet nach 1 sekunde ab
        Serial.print("Rote LED aus nach 1 sek"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
        delay(5000);// warten für 5 sek
        Serial.print("5 Sek delay"); //ausgabe am Seriellen Monitor
        Serial.println(); // Zeilenumbruch am Seriellen Monitor
      }
    }

    http.end();   //Close connection
  }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste