Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <PubSubClient.h>
- #include <SPI.h>
- #include <MFRC522.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- const int SS_PIN = 4;
- const int RST_PIN = 5;
- const int LOCK = 16;
- // WIFI
- const char* ssid = "Edelweiss";
- const char* password = "homesweethome";
- const char* mqtt_server = "192.168.0.212";
- bool lockState = false;
- MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
- WiFiClient espClient;
- PubSubClient client(espClient);
- String getString(byte* payload, unsigned int length) {
- String tmp = "";
- for (int i = 0; i < length; i++) tmp += (char)payload[i];
- return tmp;
- }
- void setup_lock() {
- pinMode(LOCK, OUTPUT);
- }
- void setup_wifi() {
- Serial.println("Connecting");
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- randomSeed(micros());
- }
- void setup_rfid() {
- SPI.begin(); // Initiate SPI bus
- mfrc522.PCD_Init(); // Initiate MFRC522
- }
- void findNewCards() {
- if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) return;
- delay(2000);
- }
- String getRFIDUID() {
- findNewCards();
- Serial.print("UID tag :");
- String content = "";
- char message_buff[100] = "";
- for (byte i = 0; i < mfrc522.uid.size; i++){
- content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""));
- content.concat(String(mfrc522.uid.uidByte[i], HEX));
- }
- content.toUpperCase();
- content.toCharArray(message_buff, content.length() + 1);
- client.publish("cardUID", message_buff);
- return message_buff;
- }
- void callback(char* topic, byte * payload, unsigned int length) {
- Serial.println("Dit is de payload van de callback");
- Serial.println(getString(payload, length));
- if (getString(payload, length) == "true") {
- digitalWrite(LOCK, HIGH);
- Serial.println("Slot open");
- }
- if (getString(payload, length) == "false") {
- digitalWrite(LOCK, LOW);
- Serial.println("Slot dicht");
- }
- }
- void reconnect() {
- // Loop until we're reconnected
- while (!client.connected()) {
- Serial.println("Attempting MQTT connection...");
- // Create a random client ID
- String clientId = "ESP8266Client-";
- clientId += String(random(0xffff), HEX);
- // Attempt to connect
- if (client.connect(clientId.c_str())) {
- client.subscribe("acces");
- }
- else {
- Serial.print("failed, rc=");
- Serial.print(client.state());
- Serial.println(" try again in 5 seconds");
- // Wait 5 seconds before retrying
- delay(5000);
- }
- }
- }
- void setup() {
- Serial.begin(115200);
- setup_wifi();
- setup_rfid();
- setup_lock();
- client.setServer(mqtt_server, 1883);
- client.setCallback(callback);
- }
- void loop() {
- if (!client.connected()) reconnect();
- client.loop();
- delay(500);
- getRFIDUID();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement