Ciao, avrei bisogno di una mano per capire la problematica che riscontro nel non visualizzare le tags RFID su pagina WEB, sto utilizzando, una NodeMCU esp8266, un RFID_RC522 e XAMPP come server.
il Codice Arduino funziona e riesco sul monitor seriale a leggere le Tags e la risposta http =200.
Sto usando safari e Chrome come browser.
Quando richiamo la pagina dal web (con URL del server locale) non vengono visualizzate le Tags. Ho creato un check in php dove controllo se la variabile è vuota oppure no ma la risposta con un echo mi dice che la stringa è vuota. Il server funziona perché ho verificato con Postman.
Riporto di seguito lo Sketch e il codice php. Sto usando safari e Chrome come browser.
grazie
----------------------------------------------------------------------------------------------------------------------------------------
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <SPI.h>
#include <MFRC522.h>
String StrUID = "mirko";
#define SS_PIN 4 //--> SDA / SS is connected to pinout D2
#define RST_PIN 5 //--> RST is connected to pinout D1
MFRC522 mfrc522(SS_PIN, RST_PIN); //--> Create MFRC522 instance.
#define ON_Board_LED 2 //--> Defining an On Board LED, used for indicators when the process of connecting to a wifi router
const char* ssid = "FASTWEB";
const char* password = "XXXXXXXXXX";
WiFiClient client;
ESP8266WebServer server(80); //--> Server on port 80
int readsuccess;
byte readcard[4];
char str[32] = "";
//String StrUID;
//-----------------------------------------------------------------------------------------------SETUP--------------------------------------------------------------------------------------//
void setup() {
Serial.begin(115200); //--> Initialize serial communications with the PC
SPI.begin(); //--> Init SPI bus
mfrc522.PCD_Init(); //--> Init MFRC522 card
delay(500);
WiFi.begin(ssid, password); //--> Connect to your WiFi router
Serial.println("");
pinMode(ON_Board_LED, OUTPUT);
digitalWrite(ON_Board_LED, HIGH); //--> Turn off Led On Board
//----------------------------------------Wait for connection
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
//----------------------------------------Make the On Board Flashing LED on the process of connecting to the wifi router.
digitalWrite(ON_Board_LED, LOW);
delay(250);
digitalWrite(ON_Board_LED, HIGH);
delay(250);
}
digitalWrite(ON_Board_LED, HIGH); //--> Turn off the On Board LED when it is connected to the wifi router.
//----------------------------------------If successfully connected to the wifi router, the IP Address that will be visited is displayed in the serial monitor
Serial.println("");
Serial.print("Successfully connected to : ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Please tag a card or keychain to see the UID !");
Serial.println("");
}
void loop() {
// put your main code here, to run repeatedly
readsuccess = getid();
if (readsuccess) {
digitalWrite(ON_Board_LED, LOW);
HTTPClient http; //Declare object of class HTTPClient
String UIDresult;
UIDresult = StrUID;
//Post Data
String postData = "UIDresult" + UIDresult;
http.begin(client, "http://192.168.1.241/NodeMCU_RC522_Mysql/getUID.php"); //Specify request ////destination
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header
int httpCode = http.POST(postData); //Send the request
String payload = http.getString(); //Get the response payload
Serial.println(UIDresult);
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload);
//Serial.println(postData); //Print request response payload
http.end(); //Close connection
delay(1000);
digitalWrite(ON_Board_LED, HIGH);
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
//----------------------------------------Procedure for reading and obtaining a UID from a card or keychain---------------------------------------------------------------------------------//
int getid() {
if (!mfrc522.PICC_IsNewCardPresent()) {
return 0;
}
if (!mfrc522.PICC_ReadCardSerial()) {
return 0;
}
Serial.print("THE UID OF THE SCANNED CARD IS : ");
for (int i = 0; i < 4; i++) {
readcard[i] = mfrc522.uid.uidByte[i]; //storing the UID of the tag in readcard
array_to_string(readcard, 4, str);
StrUID = str;
}
mfrc522.PICC_HaltA();
return 1;
}
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';
}
-------------------------------------------php--------------------------------------------------------------------------------
<?php
$UIDresult=$_POST["UIDresult"];
if (empty($UIDresult)) {
echo "Name is empty";
} else {
echo $UIDresult;
}
?>