mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
add time timer
This commit is contained in:
52
Cmd.ino
52
Cmd.ino
@@ -21,20 +21,25 @@ void CMD_init() {
|
|||||||
sCmd.addCommand("inputDigit", inputDigit);
|
sCmd.addCommand("inputDigit", inputDigit);
|
||||||
sCmd.addCommand("digitSet", digitSet);
|
sCmd.addCommand("digitSet", digitSet);
|
||||||
|
|
||||||
sCmd.addCommand("text", text);
|
sCmd.addCommand("inputTime", inputTime);
|
||||||
sCmd.addCommand("textSet", textSet);
|
sCmd.addCommand("timeSet", timeSet);
|
||||||
|
|
||||||
sCmd.addCommand("timerStart", timerStart);
|
sCmd.addCommand("timerStart", timerStart);
|
||||||
sCmd.addCommand("timerStop", timerStop);
|
sCmd.addCommand("timerStop", timerStop);
|
||||||
|
|
||||||
|
sCmd.addCommand("text", text);
|
||||||
|
sCmd.addCommand("textSet", textSet);
|
||||||
|
|
||||||
|
|
||||||
sCmd.addCommand("mqtt", mqttOrderSend);
|
sCmd.addCommand("mqtt", mqttOrderSend);
|
||||||
sCmd.addCommand("http", httpOrderSend);
|
sCmd.addCommand("http", httpOrderSend);
|
||||||
sCmd.addCommand("push", pushControl);
|
sCmd.addCommand("push", pushControl);
|
||||||
|
|
||||||
// sCmd.addCommand("time", time);
|
|
||||||
// sCmd.addCommand("timeSet", timeSet);
|
handle_time_init();
|
||||||
|
|
||||||
//======новые виджеты ver2.0=======//
|
//======новые виджеты ver2.0=======//
|
||||||
|
/*
|
||||||
sCmd.addCommand("inputText", inputText);
|
sCmd.addCommand("inputText", inputText);
|
||||||
sCmd.addCommand("inputTextSet", inputTextSet);
|
sCmd.addCommand("inputTextSet", inputTextSet);
|
||||||
|
|
||||||
@@ -47,6 +52,7 @@ void CMD_init() {
|
|||||||
sCmd.addCommand("inputDate", inputDate);
|
sCmd.addCommand("inputDate", inputDate);
|
||||||
|
|
||||||
//sCmd.addCommand("inputDropdown", inputDropdown);
|
//sCmd.addCommand("inputDropdown", inputDropdown);
|
||||||
|
*/
|
||||||
//=================================//
|
//=================================//
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +217,7 @@ void handleButton() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//=====================================================================================================================================
|
//=====================================================================================================================================
|
||||||
//=========================================Добавление окна ввода переменной============================================================
|
//=========================================Добавление окна ввода цифры=================================================================
|
||||||
void inputDigit() {
|
void inputDigit() {
|
||||||
String value_name = sCmd.next();
|
String value_name = sCmd.next();
|
||||||
String number = value_name.substring(5);
|
String number = value_name.substring(5);
|
||||||
@@ -230,6 +236,31 @@ void digitSet() {
|
|||||||
jsonWrite(configJson, "digitSet" + number, value);
|
jsonWrite(configJson, "digitSet" + number, value);
|
||||||
sendSTATUS("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() {
|
void text() {
|
||||||
@@ -260,8 +291,18 @@ void textSet() {
|
|||||||
sendSTATUS("textSet" + number, text);
|
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 number = sCmd.next();
|
||||||
String viget_name = sCmd.next();
|
String viget_name = sCmd.next();
|
||||||
@@ -318,6 +359,7 @@ void inputDateSet() {
|
|||||||
jsonWrite(configJson, "inputDateSet" + number, value);
|
jsonWrite(configJson, "inputDateSet" + number, value);
|
||||||
sendSTATUS("inputDateSet" + number, value);
|
sendSTATUS("inputDateSet" + number, value);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
//=================================================Глобальные команды удаленного управления===========================================================
|
//=================================================Глобальные команды удаленного управления===========================================================
|
||||||
|
|
||||||
void mqttOrderSend() {
|
void mqttOrderSend() {
|
||||||
|
|||||||
10
Scenario.ino
10
Scenario.ino
@@ -17,18 +17,24 @@ void handleScenario() {
|
|||||||
//Serial.println(i);
|
//Serial.println(i);
|
||||||
String condition = selectToMarker (tmp, "\n"); //выделяем первую строку самого сценария button1 = 1 (условие)
|
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
|
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 order = jsonRead(optionJson, "scenario_status"); //читаем весь файл событий
|
||||||
String param = selectToMarker (order, ","); //читаем первое событие из файла событий
|
String param = selectToMarker (order, ","); //читаем первое событие из файла событий
|
||||||
if (param_name == param) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку
|
if (param_name == param) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку
|
||||||
|
|
||||||
String sign = selectFromMarkerToMarker(condition, " " , 1); //читаем знак (=)
|
String sign = selectFromMarkerToMarker(condition, " " , 1); //читаем знак (=)
|
||||||
String value = selectFromMarkerToMarker(condition, " " , 2); //читаем значение (1)
|
String value = selectFromMarkerToMarker(condition, " " , 2); //читаем значение (1)
|
||||||
if (value.indexOf("digit") != -1) {
|
if (value.indexOf("digit") != -1) {
|
||||||
value = add_set(value);
|
value = add_set(value);
|
||||||
value = jsonRead(configJson, value);
|
value = jsonRead(configJson, value);
|
||||||
}
|
}
|
||||||
|
if (value.indexOf("time") != -1) {
|
||||||
|
value = add_set(value);
|
||||||
|
value = jsonRead(configJson, value);
|
||||||
|
}
|
||||||
boolean flag = false; //если одно из значений совпало то только тогда начинаем выполнять комнады
|
boolean flag = false; //если одно из значений совпало то только тогда начинаем выполнять комнады
|
||||||
if (sign == "=") {
|
if (sign == "=") {
|
||||||
if (jsonRead(configJson, param_name) == value) flag = true;
|
if (jsonRead(configJson, param_name) == value) flag = true;
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ void analog() {
|
|||||||
ts.add(ANALOG_, analog_update_int, [&](void*) {
|
ts.add(ANALOG_, analog_update_int, [&](void*) {
|
||||||
static int analog_old;
|
static int analog_old;
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
int analog_in = analogRead(pin.toInt());
|
//int pin_int = pin.toInt();
|
||||||
|
int analog_in;// = analogRead(pin_int);
|
||||||
#endif
|
#endif
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
int analog_in = analogRead(A0);
|
int analog_in = analogRead(A0);
|
||||||
|
|||||||
@@ -1,54 +1,50 @@
|
|||||||
#ifdef ESP8266
|
|
||||||
|
|
||||||
#include <time.h>
|
|
||||||
void Time_Init() {
|
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) {
|
server.on("/timeZone", HTTP_GET, [](AsyncWebServerRequest * request) {
|
||||||
//handle_time_zone();
|
if (request->hasArg("timezone")) {
|
||||||
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
jsonWrite(configSetup, "timezone", request->getParam("timezone")->value());
|
||||||
});
|
|
||||||
|
|
||||||
timeSynch(jsonReadtoInt(configSetup, "timezone"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void timeSynch(int zone) {
|
|
||||||
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();
|
saveConfig();
|
||||||
//request->send(200, "text/text", "OK");
|
reconfigTime();
|
||||||
|
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
|
||||||
|
});
|
||||||
|
reconfigTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_Time() {
|
void reconfigTime() {
|
||||||
timeSynch(jsonReadtoInt(configSetup, "timezone"));
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
//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
|
#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() {
|
String GetTime() {
|
||||||
time_t now = time(nullptr); // получаем время с помощью библиотеки time.h
|
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
|
// о подключении и выводим адрес IP
|
||||||
Serial.println("");
|
Serial.println("");
|
||||||
Serial.println("[V] WiFi connected");
|
Serial.println("[V] WiFi connected");
|
||||||
Serial.println("[V] IP address: ");
|
Serial.print("[V] IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.print(WiFi.localIP());
|
||||||
|
Serial.println("");
|
||||||
jsonWrite(configJson, "ip", WiFi.localIP().toString());
|
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",
|
"widget" : "input",
|
||||||
"size" : "small",
|
"color" : "blue",
|
||||||
"color" : "orange",
|
|
||||||
"type" : "time"
|
"type" : "time"
|
||||||
}
|
}
|
||||||
3
mqtt.ino
3
mqtt.ino
@@ -251,6 +251,9 @@ void sendAllData() { //берет строку json и ключи превра
|
|||||||
|
|
||||||
String tmp = selectToMarker (current_config, ",");
|
String tmp = selectToMarker (current_config, ",");
|
||||||
String topic = selectToMarker (tmp, ":");
|
String topic = selectToMarker (tmp, ":");
|
||||||
|
if (topic.indexOf("time") < 0) {
|
||||||
|
state.replace(".", ":");
|
||||||
|
}
|
||||||
topic.replace("\"", "");
|
topic.replace("\"", "");
|
||||||
String state = selectToMarkerLast (tmp, ":");
|
String state = selectToMarkerLast (tmp, ":");
|
||||||
state.replace("\"", "");
|
state.replace("\"", "");
|
||||||
|
|||||||
3
set.h
3
set.h
@@ -20,6 +20,7 @@ HTTPClient http;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//==общие библиотеки и объекты==//
|
//==общие библиотеки и объекты==//
|
||||||
|
#include "time.h"
|
||||||
#ifdef OTA_enable
|
#ifdef OTA_enable
|
||||||
#include <ArduinoOTA.h>
|
#include <ArduinoOTA.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -35,7 +36,7 @@ AsyncEventSource events("/events");
|
|||||||
#include "time.h"
|
#include "time.h"
|
||||||
#include <TickerScheduler.h>
|
#include <TickerScheduler.h>
|
||||||
TickerScheduler ts(30);
|
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
|
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user