-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdomofon.ino
119 lines (105 loc) · 2.47 KB
/
domofon.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <GyverPortal.h>
#include <ESP8266WiFi.h>
#include <SD.h>
#include <SPI.h>
#include <ArduinoJson.h>
#include <Gwiot7941e.h>
#include <Wire.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <UnixTime.h>
#define SD_pin_num 15
#define GWIOT_7941E_RX_PIN 4
#define SOUND_pin_num 2
#define BUTTON_pin 10
Gwiot7941e rfid;
UnixTime stamp(10);
/*
const char *ssid = "Pandorum";
const char *password = "TeRRaRiUm2013";
*/
const long utcOffsetInSeconds = 0;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
File root;
File myFile;
File keysFile;
String cardID[10], cardOwner[10], cardPermission[10], cardDate[10];
GyverPortal portal;
File config_file;
bool WiFimode = false; // false = AP, true = STA
String APssid;
String APpassword;
String STAssid;
String STApassword;
char login[21];
char password[21];
String logText = ""; // Лог
String keys[200][4] = {
{"1", "2", "1", "4"},
{"5", "6", "0", "8"}
};
bool newKeyButton = false;
String newKey[4] = {"", "", "", ""};
bool doorOpen = false; // Дверь открыта
void setup() {
// Инициализация Serial
Serial.begin(9600);
while (!Serial);
Serial.println("Serial began");
// работа с rfid
rfid.begin(GWIOT_7941E_RX_PIN);
int i = 0;
Serial.println("Ждём проверки карты в течении 10 сек.");
while (!rfid.update())
{
i++;
delay(10);
// Мигнуть светодиодом
if (i > 1000)
{
Serial.println("RFID сдох");
break;
// Ошибку
}
}
// a
Serial.print("Initializing SD card...");
if (!SD.begin(SD_pin_num)) {
delay(100);
Serial.println("initialization failed!");
while (1) {delay(10000);}
}
root = SD.open("/");
printDirectory(root, 0);
Serial.println("initialization done.");
if (!(SD.exists("config.txt"))) {
configure_file();
}
// Настройка пинов
digitalWrite(SOUND_pin_num, HIGH);
pinMode(SOUND_pin_num, OUTPUT);
pinMode(BUTTON_pin, INPUT);
read_keys_file();
read_config_file();
Serial.println("Starting Wi-Fi");
startWiFi();
Serial.println("Wi-fFi started");
configurePortal();
portal.start();
}
void loop() {
portal.tick();
if (rfid.update()) {
if (isCardGranted(String(rfid.getLastTagId()))){
makeLog("Access");
}
else{
makeLog("Deny");
}
digitalWrite(SOUND_pin_num, LOW);
delay(100);
digitalWrite(SOUND_pin_num, HIGH);
//printDirectory(root, 0);
}
}