-
Notifications
You must be signed in to change notification settings - Fork 5
/
jaluzi.ino
146 lines (122 loc) · 5.49 KB
/
jaluzi.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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <ESP8266WiFi.h> //Содержится в пакете
#include <ESP8266WebServer.h> //Содержится в пакете
#include <ESP8266SSDP.h> //Содержится в пакете
#include <FS.h> //Содержится в пакете
#include <time.h> //Содержится в пакете
//#include <Ticker.h> //Содержится в пакете
#include <WiFiUdp.h> //Содержится в пакете
#include <ESP8266HTTPUpdateServer.h> //Содержится в пакете
#include <ESP8266httpUpdate.h> //Содержится в пакете
#include <ESP8266HTTPClient.h> //Содержится в пакете
#include <DNSServer.h> //Содержится в пакете
#include <ArduinoJson.h> //Ставим через менеджер библиотек
#include <PubSubClient.h> //https://github.com/Imroy/pubsubclient
//#include <ESP8266LLMNR.h>
//#include <ESP8266NetBIOS.h>
#include <TickerScheduler.h> //https://github.com/Toshik/TickerScheduler
#include <StringCommand.h> //https://github.com/tretyakovsa/ESP8266-StringCommand
// Библиотеки устройств
#include <DHT.h> //https://github.com/markruys/arduino-DHT
#include <OneWire.h> //Ставим через менеджер библиотек
#include <DallasTemperature.h> //Ставим через менеджер библиотек
#include <Adafruit_NeoPixel.h> //https://github.com/adafruit/Adafruit_NeoPixel
#include <WS2812FX.h> //https://github.com/MTJoker/WS2812FX
#include <RCSwitch.h> //https://github.com/sui77/rc-switch/
#define d18b20PIN 14
DHT dht;
RCSwitch mySwitch = RCSwitch();
// DNSServer для режима AP
DNSServer dnsServer;
// Web интерфейсы для устройства
ESP8266WebServer HTTP(80);
// Обнавление прошивки
ESP8266HTTPUpdateServer httpUpdater;
ESP8266WebServer HTTPWAN;
// Для файловой системы
File fsUploadFile;
// Для тикера
Ticker motion;
// Для поиска других устройств по протоколу SSDP
WiFiUDP udp;
WiFiClient wclient;
PubSubClient client(wclient);
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(d18b20PIN);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature d18b20(&oneWire);
WS2812FX ws2812fx = WS2812FX();
TickerScheduler ts(5);
boolean secTest = true;
StringCommand sCmd; // The demo StringCommand object
String command = "";
String Lang = ""; // файлы языка web интерфейса
String chipID = "";
String configJson = "{}"; // Здесь все статусы
String configOptions = "{}"; // Здесь опции для всех страниц
String configSetup = "{}"; // Здесь данные для setup
String configLive = "{}"; // Здесь внутренние данные обмен пинами и тд
String ssdpList = "{}";
String regCommands = "{}";
String jsonTimer = "{}";
String previousSetup;
String Scenary;
String Timerset = "";
String modules = "{\"ip\":\"\",\"SSDP\":\"\",\"space\":\"\",\"module\":[]}";
String addressList = "{\"ssdpList\":[]}";
String sensorsList = "{}";
String prefix = "/IoTmanager";
boolean flag = false;
boolean thenOk;
void setup() {
//Serial.begin(115200);
//delay(100);
TickerScheduler(1);
initCMD();
chipID = String( ESP.getChipId() ) + "-" + String( ESP.getFlashChipId() );
FS_init(); // Включаем работу с файловой системой
// ----------------- начинаем загрузку
configSetup = readFile("config.save.json", 4096);
//previousSetup = configSetup;
//configSetup ="{}";
//Serial.println(configSetup);
//savePrevious();
configSetup = jsonWrite(configSetup, "time", "00:00:00");
//configJson = jsonWrite(configJson, "setIndex", jsonRead(configSetup, "setIndex"));
configOptions = jsonWrite(configOptions, "lang", jsonRead(configSetup, "lang"));
configOptions = jsonWrite(configOptions, "SSDP", jsonRead(configSetup, "SSDP"));
configOptions = jsonWrite(configOptions, "space", jsonRead(configSetup, "space"));
configOptions = jsonWrite(configOptions, "spiffsData", jsonRead(configSetup, "spiffsData"));
configOptions = jsonWrite(configOptions, "buildData", jsonRead(configSetup, "buildData"));
String configs = jsonRead(configSetup, "configs");
configs.toLowerCase();
// ----------- Грузим конфигурацию устройства
String test = readFile("configs/"+configs+".txt", 4096);
test.replace("\r\n", "\n");
test +="\n";
// ----------- запускаем необходимые всегда модули
sCmd.readStr("wifi 12");
sCmd.readStr("Upgrade");
sCmd.readStr("SSDP");
sCmd.readStr("HTTP");
// ----------- Выполняем запуск кофигурации
goCommands(test);
test = "";
configSetup = jsonWrite(configSetup, "mac", WiFi.macAddress().c_str());
configSetup = jsonWrite(configSetup, "ip", WiFi.localIP().toString());
initScenary();
}
void loop() {
ts.update();
sCmd.readStr(command);
command = "";
dnsServer.processNextRequest();
HTTPWAN.handleClient();
yield();
HTTP.handleClient();
yield();
handleUDP();
handleMQTT();
ws2812fx.service();
handleScenary();
//RCRCreceiv();
}