mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +03:00
add time timer
This commit is contained in:
104
Cmd.ino
104
Cmd.ino
@@ -1,5 +1,5 @@
|
||||
void CMD_init() {
|
||||
|
||||
|
||||
sCmd.addCommand("button", button);
|
||||
sCmd.addCommand("buttonSet", buttonSet);
|
||||
sCmd.addCommand("pinSet", pinSet);
|
||||
@@ -12,7 +12,7 @@ void CMD_init() {
|
||||
sCmd.addCommand("analog", analog);
|
||||
sCmd.addCommand("level", level);
|
||||
sCmd.addCommand("dallas", dallas);
|
||||
|
||||
|
||||
sCmd.addCommand("dhtT", dhtT);
|
||||
sCmd.addCommand("dhtH", dhtH);
|
||||
|
||||
@@ -21,32 +21,38 @@ void CMD_init() {
|
||||
sCmd.addCommand("inputDigit", inputDigit);
|
||||
sCmd.addCommand("digitSet", digitSet);
|
||||
|
||||
sCmd.addCommand("text", text);
|
||||
sCmd.addCommand("textSet", textSet);
|
||||
sCmd.addCommand("inputTime", inputTime);
|
||||
sCmd.addCommand("timeSet", timeSet);
|
||||
|
||||
sCmd.addCommand("timerStart", timerStart);
|
||||
sCmd.addCommand("timerStop", timerStop);
|
||||
|
||||
sCmd.addCommand("text", text);
|
||||
sCmd.addCommand("textSet", textSet);
|
||||
|
||||
|
||||
sCmd.addCommand("mqtt", mqttOrderSend);
|
||||
sCmd.addCommand("http", httpOrderSend);
|
||||
sCmd.addCommand("push", pushControl);
|
||||
|
||||
// sCmd.addCommand("time", time);
|
||||
// sCmd.addCommand("timeSet", timeSet);
|
||||
|
||||
handle_time_init();
|
||||
|
||||
//======новые виджеты ver2.0=======//
|
||||
sCmd.addCommand("inputText", inputText);
|
||||
sCmd.addCommand("inputTextSet", inputTextSet);
|
||||
/*
|
||||
sCmd.addCommand("inputText", inputText);
|
||||
sCmd.addCommand("inputTextSet", inputTextSet);
|
||||
|
||||
sCmd.addCommand("inputTime", inputTime);
|
||||
sCmd.addCommand("inputTimeSet", inputTimeSet);
|
||||
sCmd.addCommand("inputTime", inputTime);
|
||||
sCmd.addCommand("inputTimeSet", inputTimeSet);
|
||||
|
||||
sCmd.addCommand("inputDate", inputDate);
|
||||
sCmd.addCommand("inputDateSet", inputDateSet);
|
||||
sCmd.addCommand("inputDate", inputDate);
|
||||
sCmd.addCommand("inputDateSet", inputDateSet);
|
||||
|
||||
sCmd.addCommand("inputDate", inputDate);
|
||||
sCmd.addCommand("inputDate", inputDate);
|
||||
|
||||
//sCmd.addCommand("inputDropdown", inputDropdown);
|
||||
//sCmd.addCommand("inputDropdown", inputDropdown);
|
||||
*/
|
||||
//=================================//
|
||||
}
|
||||
|
||||
@@ -211,7 +217,7 @@ void handleButton() {
|
||||
}
|
||||
|
||||
//=====================================================================================================================================
|
||||
//=========================================Добавление окна ввода переменной============================================================
|
||||
//=========================================Добавление окна ввода цифры=================================================================
|
||||
void inputDigit() {
|
||||
String value_name = sCmd.next();
|
||||
String number = value_name.substring(5);
|
||||
@@ -230,6 +236,31 @@ void digitSet() {
|
||||
jsonWrite(configJson, "digitSet" + number, value);
|
||||
sendSTATUS("digitSet" + number, value);
|
||||
}
|
||||
//=====================================================================================================================================
|
||||
//=========================================Добавление окна ввода времени===============================================================
|
||||
void inputTime() {
|
||||
String value_name = sCmd.next();
|
||||
String number = value_name.substring(4);
|
||||
String viget_name = sCmd.next();
|
||||
viget_name.replace("#", " ");
|
||||
String page_name = sCmd.next();
|
||||
page_name.replace("#", " ");
|
||||
String start_state = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
start_state.replace(":", ".");
|
||||
jsonWrite(configJson, "timeSet" + number, start_state);
|
||||
start_state.replace(".", ":");
|
||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "timeSet" + number);
|
||||
}
|
||||
void timeSet() {
|
||||
String number = sCmd.next();
|
||||
String value = sCmd.next();
|
||||
value.replace(":", ".");
|
||||
jsonWrite(configJson, "timeSet" + number, value);
|
||||
value.replace(".", ":");
|
||||
sendSTATUS("timeSet" + number, value);
|
||||
}
|
||||
|
||||
//=====================================================================================================================================
|
||||
//=========================================Добавление текстового виджета============================================================
|
||||
void text() {
|
||||
@@ -260,9 +291,19 @@ void textSet() {
|
||||
sendSTATUS("textSet" + number, text);
|
||||
}
|
||||
|
||||
void handle_time_init() {
|
||||
ts.add(TIME, 1000, [&](void*) {
|
||||
|
||||
String tmp = GetTimeWOsec();
|
||||
tmp.replace(":", ".");
|
||||
jsonWrite(configJson, "timenowSet", tmp);
|
||||
eventGen ("timenowSet", "");
|
||||
|
||||
}, nullptr, true);
|
||||
}
|
||||
//====================================================================================================================================================
|
||||
void inputText() {
|
||||
/*
|
||||
void inputText() {
|
||||
String number = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
viget_name.replace("#", " ");
|
||||
@@ -272,15 +313,15 @@ void inputText() {
|
||||
String page_number = sCmd.next();
|
||||
jsonWrite(configJson, "inputTextSet" + number, start_state);
|
||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputText.json", "inputTextSet" + number);
|
||||
}
|
||||
void inputTextSet() {
|
||||
}
|
||||
void inputTextSet() {
|
||||
String number = sCmd.next();
|
||||
String value = sCmd.next();
|
||||
jsonWrite(configJson, "inputTextSet" + number, value);
|
||||
sendSTATUS("inputTextSet" + number, value);
|
||||
}
|
||||
}
|
||||
|
||||
void inputTime() {
|
||||
void inputTime() {
|
||||
String number = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
viget_name.replace("#", " ");
|
||||
@@ -290,18 +331,18 @@ void inputTime() {
|
||||
String page_number = sCmd.next();
|
||||
jsonWrite(configJson, "inputTimeSet" + number, start_state);
|
||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "inputTimeSet" + number);
|
||||
}
|
||||
void inputTimeSet() {
|
||||
}
|
||||
void inputTimeSet() {
|
||||
String number = sCmd.next();
|
||||
String value = sCmd.next();
|
||||
value.replace(":", ".");
|
||||
jsonWrite(configJson, "inputTimeSet" + number, value);
|
||||
value.replace(".", ":");
|
||||
sendSTATUS("inputTimeSet" + number, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void inputDate() {
|
||||
void inputDate() {
|
||||
String number = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
viget_name.replace("#", " ");
|
||||
@@ -311,13 +352,14 @@ void inputDate() {
|
||||
String page_number = sCmd.next();
|
||||
jsonWrite(configJson, "inputDateSet" + number, start_state);
|
||||
createViget (viget_name, page_name, page_number, "vigets/viget.inputDate.json", "inputDateSet" + number);
|
||||
}
|
||||
void inputDateSet() {
|
||||
}
|
||||
void inputDateSet() {
|
||||
String number = sCmd.next();
|
||||
String value = sCmd.next();
|
||||
jsonWrite(configJson, "inputDateSet" + number, value);
|
||||
sendSTATUS("inputDateSet" + number, value);
|
||||
}
|
||||
}
|
||||
*/
|
||||
//=================================================Глобальные команды удаленного управления===========================================================
|
||||
|
||||
void mqttOrderSend() {
|
||||
@@ -430,7 +472,7 @@ void createViget (String viget_name, String page_name, String page_number, Stri
|
||||
}
|
||||
|
||||
/*
|
||||
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) {
|
||||
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) {
|
||||
|
||||
String viget;
|
||||
viget = readFile(file, 1024);
|
||||
@@ -452,9 +494,9 @@ void createViget (String viget_name, String page_name, String page_number, Stri
|
||||
|
||||
all_vigets += viget + "\r\n";
|
||||
viget = "";
|
||||
}
|
||||
}
|
||||
|
||||
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) {
|
||||
void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) {
|
||||
|
||||
String viget;
|
||||
viget = readFile(file, 1024);
|
||||
@@ -477,7 +519,7 @@ void createViget (String viget_name, String page_name, String page_number, Stri
|
||||
|
||||
all_vigets += viget + "\r\n";
|
||||
viget = "";
|
||||
}
|
||||
}
|
||||
*/
|
||||
String vidgetConfigWrite(String viget, String key, String value) {
|
||||
|
||||
|
||||
16
Scenario.ino
16
Scenario.ino
@@ -16,17 +16,23 @@ void handleScenario() {
|
||||
if (scenario_line_status[i] == 1) {
|
||||
//Serial.println(i);
|
||||
String condition = selectToMarker (tmp, "\n"); //выделяем первую строку самого сценария button1 = 1 (условие)
|
||||
String param_name = selectFromMarkerToMarker(condition, " " , 0);
|
||||
|
||||
String param_name = selectFromMarkerToMarker(condition, " " , 0);
|
||||
param_name = add_set(param_name); //из первой страки берем имя параметра button1 и вставляем в него Set и получаем buttonSet1
|
||||
|
||||
if (param_name.indexOf("timenow") != -1){
|
||||
param_name = param_name + "Set";
|
||||
}
|
||||
String order = jsonRead(optionJson, "scenario_status"); //читаем весь файл событий
|
||||
String param = selectToMarker (order, ","); //читаем первое событие из файла событий
|
||||
if (param_name == param) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку
|
||||
|
||||
String sign = selectFromMarkerToMarker(condition, " " , 1); //читаем знак (=)
|
||||
String value = selectFromMarkerToMarker(condition, " " , 2); //читаем значение (1)
|
||||
if (value.indexOf("digit") != -1) {
|
||||
value = add_set(value);
|
||||
value = add_set(value);
|
||||
value = jsonRead(configJson, value);
|
||||
}
|
||||
if (value.indexOf("time") != -1) {
|
||||
value = add_set(value);
|
||||
value = jsonRead(configJson, value);
|
||||
}
|
||||
boolean flag = false; //если одно из значений совпало то только тогда начинаем выполнять комнады
|
||||
@@ -85,7 +91,7 @@ String add_set(String param_name) {
|
||||
param_name = param_name.substring(0, param_name.length() - 2) + "Set" + num2 + num1;
|
||||
} else {
|
||||
if (isDigitStr(num1)) {
|
||||
param_name = param_name.substring(0, param_name.length() - 1) + "Set" + num1;
|
||||
param_name = param_name.substring(0, param_name.length() - 1) + "Set" + num1;
|
||||
}
|
||||
}
|
||||
return param_name;
|
||||
|
||||
@@ -18,7 +18,8 @@ void analog() {
|
||||
ts.add(ANALOG_, analog_update_int, [&](void*) {
|
||||
static int analog_old;
|
||||
#ifdef ESP32
|
||||
int analog_in = analogRead(pin.toInt());
|
||||
//int pin_int = pin.toInt();
|
||||
int analog_in;// = analogRead(pin_int);
|
||||
#endif
|
||||
#ifdef ESP8266
|
||||
int analog_in = analogRead(A0);
|
||||
|
||||
@@ -1,54 +1,50 @@
|
||||
#ifdef ESP8266
|
||||
|
||||
#include <time.h>
|
||||
void Time_Init() {
|
||||
server.on("/Time", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||
//handle_Time();
|
||||
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||
});
|
||||
server.on("/timeZone", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||
//handle_time_zone();
|
||||
if (request->hasArg("timezone")) {
|
||||
jsonWrite(configSetup, "timezone", request->getParam("timezone")->value());
|
||||
}
|
||||
saveConfig();
|
||||
reconfigTime();
|
||||
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||
});
|
||||
|
||||
timeSynch(jsonReadtoInt(configSetup, "timezone"));
|
||||
reconfigTime();
|
||||
}
|
||||
|
||||
|
||||
void timeSynch(int zone) {
|
||||
void reconfigTime() {
|
||||
if (WiFi.status() == WL_CONNECTED) {
|
||||
// Настройка соединения с NTP сервером
|
||||
configTime(zone * 3600, 0, "pool.ntp.org", "ru.pool.ntp.org");
|
||||
// int i = 0;
|
||||
// Serial.println("\nWaiting for time");
|
||||
// while (!time(nullptr) && i < 10) {
|
||||
// Serial.print(".");
|
||||
// i++;
|
||||
// delay(1000);
|
||||
// }
|
||||
Serial.println("");
|
||||
Serial.println("ITime Ready!");
|
||||
delay(1000);
|
||||
Serial.println(GetTime());
|
||||
Serial.println(GetDate());
|
||||
}
|
||||
}
|
||||
/*// Установка параметров времянной зоны по запросу вида http://192.168.0.101/timeZone?timeZone=3
|
||||
void handle_time_zone() {
|
||||
if (request->hasArg("timeZone")) {
|
||||
jsonWrite(configSetup, "timeZone", request->getParam("timeZone")->value());
|
||||
}
|
||||
saveConfig();
|
||||
//request->send(200, "text/text", "OK");
|
||||
}
|
||||
|
||||
void handle_Time() {
|
||||
timeSynch(jsonReadtoInt(configSetup, "timezone"));
|
||||
//request->send(200, "text/text", "OK");
|
||||
}
|
||||
*/
|
||||
configTime(jsonRead(configSetup, "timezone").toInt() * 3600, 0, ntpServer);
|
||||
|
||||
int i = 0;
|
||||
Serial.println("[i]Awaiting for time ");
|
||||
|
||||
#ifdef ESP32
|
||||
struct tm timeinfo;
|
||||
while (!getLocalTime(&timeinfo) && i <= 4) {
|
||||
Serial.print(".");
|
||||
i++;
|
||||
delay(1000);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ESP8266
|
||||
// while (!time(nullptr) && i < 4) {
|
||||
// Serial.print(".");
|
||||
// i++;
|
||||
delay(2000);
|
||||
// }
|
||||
#endif
|
||||
|
||||
Serial.print("Time = ");
|
||||
Serial.print(GetDataDigital());
|
||||
Serial.print(" ");
|
||||
Serial.println(GetTime());
|
||||
|
||||
} else {
|
||||
Serial.println("[E] Get time impossible, no wifi connection");
|
||||
}
|
||||
}
|
||||
|
||||
// Получение текущего времени
|
||||
String GetTime() {
|
||||
time_t now = time(nullptr); // получаем время с помощью библиотеки time.h
|
||||
@@ -1,20 +0,0 @@
|
||||
#ifdef ESP32
|
||||
|
||||
void Time_Init() {
|
||||
|
||||
//init and get the time
|
||||
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
|
||||
printLocalTime();
|
||||
|
||||
}
|
||||
|
||||
void printLocalTime() {
|
||||
struct tm timeinfo;
|
||||
if (!getLocalTime(&timeinfo)) {
|
||||
Serial.println("[E] Failed to obtain time");
|
||||
return;
|
||||
}
|
||||
Serial.println(&timeinfo, "[V] %A, %B %d %Y %H:%M:%S");
|
||||
}
|
||||
|
||||
#endif
|
||||
5
WiFi.ino
5
WiFi.ino
@@ -85,8 +85,9 @@ void WIFI_init() {
|
||||
// о подключении и выводим адрес IP
|
||||
Serial.println("");
|
||||
Serial.println("[V] WiFi connected");
|
||||
Serial.println("[V] IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
Serial.print("[V] IP address: ");
|
||||
Serial.print(WiFi.localIP());
|
||||
Serial.println("");
|
||||
jsonWrite(configJson, "ip", WiFi.localIP().toString());
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v7C133E426B0C69E","web_login":"admin","web_pass":"admin"}
|
||||
1
data/config-users.json
Normal file
1
data/config-users.json
Normal file
@@ -0,0 +1 @@
|
||||
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"your_ssid","password":"your_pass","timezone":3,"mqttServer":"","mqttPort":0,"mqttUser":"","mqttPass":"","scenario":"1","timers":"0","pushingbox_id":"","web_login":"admin","web_pass":"admin"}
|
||||
@@ -1 +1 @@
|
||||
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"your_ssid","password":"your_pass","timezone":3,"mqttServer":"","mqttPort":0,"mqttUser":"","mqttPass":"","scenario":"1","timers":"0","pushingbox_id":"","web_login":"admin","web_pass":"admin"}
|
||||
{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"rise","password":"hostel3333","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"v7C133E426B0C69E","web_login":"admin","web_pass":"admin"}
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"widget" : "input",
|
||||
"size" : "small",
|
||||
"color" : "orange",
|
||||
"color" : "blue",
|
||||
"type" : "time"
|
||||
}
|
||||
3
mqtt.ino
3
mqtt.ino
@@ -251,6 +251,9 @@ void sendAllData() { //берет строку json и ключи превра
|
||||
|
||||
String tmp = selectToMarker (current_config, ",");
|
||||
String topic = selectToMarker (tmp, ":");
|
||||
if (topic.indexOf("time") < 0) {
|
||||
state.replace(".", ":");
|
||||
}
|
||||
topic.replace("\"", "");
|
||||
String state = selectToMarkerLast (tmp, ":");
|
||||
state.replace("\"", "");
|
||||
|
||||
3
set.h
3
set.h
@@ -20,6 +20,7 @@ HTTPClient http;
|
||||
#endif
|
||||
|
||||
//==общие библиотеки и объекты==//
|
||||
#include "time.h"
|
||||
#ifdef OTA_enable
|
||||
#include <ArduinoOTA.h>
|
||||
#endif
|
||||
@@ -35,7 +36,7 @@ AsyncEventSource events("/events");
|
||||
#include "time.h"
|
||||
#include <TickerScheduler.h>
|
||||
TickerScheduler ts(30);
|
||||
enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TEST};
|
||||
enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TIME, TEST};
|
||||
|
||||
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
|
||||
#include <PubSubClient.h>
|
||||
|
||||
Reference in New Issue
Block a user