2019-12-24 11:53:26 +03:00
|
|
|
void CMD_init() {
|
2020-01-10 15:31:51 +03:00
|
|
|
|
|
|
|
|
//======новые виджеты ver2.0=======//
|
|
|
|
|
sCmd.addCommand("inputNumber", inputNumber);
|
|
|
|
|
sCmd.addCommand("inputText", inputText);
|
|
|
|
|
sCmd.addCommand("inputTime", inputTime);
|
|
|
|
|
sCmd.addCommand("inputDate", inputDate);
|
|
|
|
|
sCmd.addCommand("inputDropdown", inputDropdown);
|
|
|
|
|
|
|
|
|
|
//======новые виджеты ver2.0=======//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("input_new", input_new);
|
2019-12-24 11:53:26 +03:00
|
|
|
|
|
|
|
|
sCmd.addCommand("button", button);
|
|
|
|
|
sCmd.addCommand("buttonSet", buttonSet);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("pinSet", pinSet);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("pwm", pwm);
|
|
|
|
|
sCmd.addCommand("pwmSet", pwmSet);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("switch", switch_);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("analog", analog);
|
|
|
|
|
sCmd.addCommand("ph", ph);
|
|
|
|
|
sCmd.addCommand("level", level);
|
|
|
|
|
sCmd.addCommand("dallas", dallas);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("logging", logging);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("input", input);
|
|
|
|
|
sCmd.addCommand("valueUpSet", valueUpSet);
|
|
|
|
|
sCmd.addCommand("valueDownSet", valueDownSet);
|
|
|
|
|
|
2020-01-10 15:31:51 +03:00
|
|
|
|
2020-01-06 15:19:12 +03:00
|
|
|
|
2019-12-24 11:53:26 +03:00
|
|
|
sCmd.addCommand("text", text);
|
|
|
|
|
sCmd.addCommand("textSet", textSet);
|
|
|
|
|
|
|
|
|
|
// sCmd.addCommand("time", time);
|
|
|
|
|
// sCmd.addCommand("timeSet", timeSet);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("timerStart", timerStart);
|
|
|
|
|
sCmd.addCommand("timerStop", timerStop);
|
|
|
|
|
|
|
|
|
|
sCmd.addCommand("mqtt", mqttOrderSend);
|
|
|
|
|
sCmd.addCommand("http", httpOrderSend);
|
|
|
|
|
//!sCmd.addCommand("push", pushControl);
|
|
|
|
|
|
|
|
|
|
//handleCMD_ticker();
|
|
|
|
|
}
|
|
|
|
|
|
2020-01-06 15:19:12 +03:00
|
|
|
void input_new() {
|
|
|
|
|
|
|
|
|
|
String input_number = sCmd.next();
|
|
|
|
|
String viget_name = sCmd.next();
|
|
|
|
|
String page_name = sCmd.next();
|
|
|
|
|
String page_number = sCmd.next();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
createViget (viget_name, page_name, page_number, "vigets/viget.input_new.json", "inputSet" + input_number);
|
|
|
|
|
}
|
|
|
|
|
|
2019-12-24 11:53:26 +03:00
|
|
|
|
|
|
|
|
//==========================================================================================================
|
|
|
|
|
//==========================================Модуль кнопок===================================================
|
|
|
|
|
void button() {
|
|
|
|
|
|
|
|
|
|
String button_number = sCmd.next();
|
|
|
|
|
String button_param = sCmd.next();
|
|
|
|
|
String viget_name = sCmd.next();
|
|
|
|
|
String page_name = sCmd.next();
|
|
|
|
|
String start_state = sCmd.next();
|
|
|
|
|
String page_number = sCmd.next();
|
|
|
|
|
|
|
|
|
|
jsonWrite(optionJson, "button_param" + button_number, button_param);
|
|
|
|
|
jsonWrite(configJson, "buttonSet" + button_number, start_state);
|
|
|
|
|
|
|
|
|
|
if (isDigitStr (button_param)) {
|
|
|
|
|
pinMode(button_param.toInt(), OUTPUT);
|
|
|
|
|
digitalWrite(button_param.toInt(), start_state.toInt());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (button_param == "scenario") {
|
|
|
|
|
jsonWrite(configSetup, "scenario", start_state);
|
|
|
|
|
Scenario_init();
|
|
|
|
|
saveConfig();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (button_param.indexOf("line") != -1) {
|
|
|
|
|
String str = button_param;
|
|
|
|
|
while (str.length() != 0) {
|
|
|
|
|
if (str == "") return;
|
|
|
|
|
String tmp = selectToMarker (str, ","); //line1,
|
|
|
|
|
String number = deleteBeforeDelimiter(tmp, "e"); //1,
|
|
|
|
|
number.replace(",", "");
|
|
|
|
|
Serial.println(number);
|
|
|
|
|
int number_int = number.toInt();
|
|
|
|
|
scenario_line_status[number_int] = start_state.toInt();
|
|
|
|
|
str = deleteBeforeDelimiter(str, ",");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
createViget (viget_name, page_name, page_number, "vigets/viget.toggle.json", "buttonSet" + button_number);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void buttonSet() {
|
|
|
|
|
|
|
|
|
|
String button_number = sCmd.next();
|
|
|
|
|
String button_state = sCmd.next();
|
|
|
|
|
String button_param = jsonRead(optionJson, "button_param" + button_number);
|
|
|
|
|
|
|
|
|
|
if (button_param != "na" || button_param != "scenario" || button_param.indexOf("line") != -1) {
|
|
|
|
|
digitalWrite(button_param.toInt(), button_state.toInt());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (button_param == "scenario") {
|
|
|
|
|
jsonWrite(configSetup, "scenario", button_state);
|
|
|
|
|
Scenario_init();
|
|
|
|
|
saveConfig();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (button_param.indexOf("line") != -1) {
|
|
|
|
|
String str = button_param;
|
|
|
|
|
while (str.length() != 0) {
|
|
|
|
|
if (str == "") return;
|
|
|
|
|
String tmp = selectToMarker (str, ","); //line1,
|
|
|
|
|
String number = deleteBeforeDelimiter(tmp, "e"); //1,
|
|
|
|
|
number.replace(",", "");
|
|
|
|
|
Serial.println(number);
|
|
|
|
|
int number_int = number.toInt();
|
|
|
|
|
scenario_line_status[number_int] = button_state.toInt();
|
|
|
|
|
str = deleteBeforeDelimiter(str, ",");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
eventGen ("buttonSet", button_number);
|
|
|
|
|
|
|
|
|
|
jsonWrite(configJson, "buttonSet" + button_number, button_state);
|
|
|
|
|
sendSTATUS("buttonSet" + button_number, button_state);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void pinSet() {
|
|
|
|
|
|
|
|
|
|
String pin_number = sCmd.next();
|
|
|
|
|
String pin_state = sCmd.next();
|
|
|
|
|
pinMode(pin_number.toInt(), OUTPUT);
|
|
|
|
|
digitalWrite(pin_number.toInt(), pin_state.toInt());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//==================================================================================================================
|
|
|
|
|
//==========================================Модуль управления ШИМ===================================================
|
|
|
|
|
void pwm() {
|
|
|
|
|
|
|
|
|
|
static boolean flag = true;
|
|
|
|
|
String pwm_number = sCmd.next();
|
|
|
|
|
String pwm_pin = sCmd.next();
|
|
|
|
|
String viget_name = sCmd.next();
|
|
|
|
|
viget_name.replace("#", " ");
|
|
|
|
|
String page_name = sCmd.next();
|
|
|
|
|
String start_state = sCmd.next();
|
|
|
|
|
String page_number = sCmd.next();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t pwm_pin_int = pwm_pin.toInt();
|
|
|
|
|
jsonWrite(optionJson, "pwm_pin" + pwm_number, pwm_pin);
|
|
|
|
|
pinMode(pwm_pin_int, INPUT);
|
|
|
|
|
analogWrite(pwm_pin_int, start_state.toInt());
|
|
|
|
|
jsonWrite(configJson, "pwmSet" + pwm_number, start_state);
|
|
|
|
|
|
|
|
|
|
createViget (viget_name, page_name, page_number, "vigets/viget.range.json", "pwmSet" + pwm_number);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void pwmSet() {
|
|
|
|
|
|
|
|
|
|
String pwm_number = sCmd.next();
|
|
|
|
|
String pwm_state = sCmd.next();
|
|
|
|
|
int pwm_state_int = pwm_state.toInt();
|
|
|
|
|
|
|
|
|
|
int pin = jsonReadtoInt(optionJson, "pwm_pin" + pwm_number);
|
|
|
|
|
analogWrite(pin, pwm_state_int);
|
|
|
|
|
|
|
|
|
|
eventGen ("pwmSet", pwm_number);
|
|
|
|
|
|
|
|
|
|
jsonWrite(configJson, "pwmSet" + pwm_number, pwm_state);
|
|
|
|
|
sendSTATUS("pwmSet" + pwm_number, pwm_state);
|
|
|
|
|
}
|
|
|
|
|
//==================================================================================================================
|
|
|
|
|
//==========================================Модуль физической кнопки================================================
|
|
|
|
|
void switch_ () {
|
|
|
|
|
|
|
|
|
|
String switch_number = sCmd.next();
|
|
|
|
|
String switch_pin = sCmd.next();
|
|
|
|
|
String switch_delay = sCmd.next();
|
|
|
|
|
|
|
|
|
|
buttons[switch_number.toInt()].attach(switch_pin.toInt());
|
|
|
|
|
buttons[switch_number.toInt()].interval(switch_delay.toInt());
|
|
|
|
|
but[switch_number.toInt()] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void handleButton() {
|
|
|
|
|
|
|
|
|
|
static uint8_t switch_number = 1;
|
|
|
|
|
|
|
|
|
|
if (but[switch_number]) {
|
|
|
|
|
buttons[switch_number].update();
|
|
|
|
|
if (buttons[switch_number].fell()) {
|
|
|
|
|
|
|
|
|
|
eventGen ("switchSet", String(switch_number));
|
|
|
|
|
|
|
|
|
|
jsonWrite(configJson, "switchSet" + String(switch_number), "1");
|
|
|
|
|
}
|
|
|
|
|
if (buttons[switch_number].rose()) {
|
|
|
|
|
|
|
|
|
|
eventGen ("switchSet", String(switch_number));
|
|
|
|
|
|
|
|
|
|
jsonWrite(configJson, "switchSet" + String(switch_number), "0");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
switch_number++;
|
|
|
|
|
if (switch_number == NUM_BUTTONS) switch_number = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//=====================================================================================================================================
|
|
|
|
|
//=========================================Добавление окна ввода переменной============================================================
|
|
|
|
|
void input() {
|
|
|
|
|
|
|
|
|
|
String name_ = sCmd.next();
|
|
|
|
|
String number = name_.substring(5);
|
|
|
|
|
String start_value = sCmd.next();
|
|
|
|
|
String step_ = sCmd.next();
|
|
|
|
|
String value_name = sCmd.next();
|
|
|
|
|
String page_name = sCmd.next();
|
|
|
|
|
String page_number = sCmd.next();
|
|
|
|
|
|
|
|
|
|
int psn1 = start_value.indexOf("."); //ищем позицию запятой
|
|
|
|
|
int digits = 0;
|
|
|
|
|
if (psn1 != -1) { //если она есть
|
|
|
|
|
String last_part = deleteBeforeDelimiter(start_value, ".");
|
|
|
|
|
digits = last_part.length() + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
createViget ("", page_name, page_number, "vigets/viget.button.json", "valueDownSet" + number, "title", "-");
|
|
|
|
|
createViget (value_name, page_name, String(page_number.toInt() + 1), "vigets/viget.alertbg.json", name_);
|
|
|
|
|
createViget ("", page_name, String(page_number.toInt() + 2), "vigets/viget.button.json", "valueUpSet" + number , "title", "+");
|
|
|
|
|
|
|
|
|
|
//jsonWrite(valuesJson, name_, start_value);
|
|
|
|
|
//saveValues ();
|
|
|
|
|
sendSTATUS(name_, start_value);
|
|
|
|
|
|
|
|
|
|
jsonWrite(configJson, name_ + "step", step_);
|
|
|
|
|
jsonWrite(configJson, name_ + "digits", digits);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void valueUpSet() {
|
|
|
|
|
String number = sCmd.next();
|
|
|
|
|
float val = jsonRead(configJson, "value" + number).toFloat();
|
|
|
|
|
float step_ = jsonRead(configJson, "value" + number + "step").toFloat();
|
|
|
|
|
int digits = jsonRead(configJson, "value" + number + "digits").toInt();
|
|
|
|
|
val = val + step_;
|
|
|
|
|
String val_str = String(val);
|
|
|
|
|
val_str = selectToMarkerPlus (val_str, ".", digits);
|
|
|
|
|
jsonWrite(configJson, "value" + number, val_str);
|
|
|
|
|
//jsonWrite(valuesJson, "value" + number, val_str);
|
|
|
|
|
//saveValues ();
|
|
|
|
|
sendSTATUS("value" + number, val_str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void valueDownSet() {
|
|
|
|
|
String number = sCmd.next();
|
|
|
|
|
float val = jsonRead(configJson, "value" + number).toFloat();
|
|
|
|
|
float step_ = jsonRead(configJson, "value" + number + "step").toFloat();
|
|
|
|
|
int digits = jsonRead(configJson, "value" + number + "digits").toInt();
|
|
|
|
|
val = val - step_;
|
|
|
|
|
String val_str = String(val);
|
|
|
|
|
val_str = selectToMarkerPlus (val_str, ".", digits);
|
|
|
|
|
jsonWrite(configJson, "value" + number, val_str);
|
|
|
|
|
//jsonWrite(valuesJson, "value" + number, val_str);
|
|
|
|
|
//saveValues ();
|
|
|
|
|
sendSTATUS("value" + number, val_str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//=====================================================================================================================================
|
|
|
|
|
//=========================================Добавление текстового виджета============================================================
|
|
|
|
|
void text() {
|
|
|
|
|
|
|
|
|
|
String number = sCmd.next();
|
|
|
|
|
String viget_name = sCmd.next();
|
|
|
|
|
String page_name = sCmd.next();
|
|
|
|
|
String page_number = sCmd.next();
|
|
|
|
|
|
|
|
|
|
createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "textSet" + number);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void textSet() {
|
|
|
|
|
|
|
|
|
|
String number = sCmd.next();
|
|
|
|
|
String text = sCmd.next();
|
|
|
|
|
text.replace("_", " ");
|
|
|
|
|
|
|
|
|
|
if (text.indexOf("-time") >= 0) {
|
|
|
|
|
text.replace("-time", "");
|
|
|
|
|
String time = GetTime();
|
|
|
|
|
time.replace(":", ".");
|
|
|
|
|
text = GetDataDigital() + " " + time + " " + text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
jsonWrite(configJson, "textSet" + number, text);
|
|
|
|
|
sendSTATUS("textSet" + number, text);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//=================================================Глобальные команды удаленного управления===========================================================
|
|
|
|
|
|
|
|
|
|
void mqttOrderSend() {
|
|
|
|
|
|
|
|
|
|
String id = sCmd.next();
|
|
|
|
|
String order = sCmd.next();
|
|
|
|
|
|
|
|
|
|
String all_line = prefix + "/" + id + "/order";
|
|
|
|
|
//Serial.print(all_line);
|
|
|
|
|
//Serial.print("->");
|
|
|
|
|
//Serial.println(order);
|
|
|
|
|
int send_status = client.publish (all_line.c_str(), order.c_str(), false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void httpOrderSend() {
|
|
|
|
|
|
|
|
|
|
String ip = sCmd.next();
|
|
|
|
|
String order = sCmd.next();
|
|
|
|
|
order.replace("_", "%20");
|
|
|
|
|
String url = "http://" + ip + "/cmd?command=" + order;
|
|
|
|
|
getURL(url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//==============================================================================================================================
|
|
|
|
|
//============================выполнение команд (в лупе) по очереди из строки order=============================================
|
|
|
|
|
void handleCMD_loop() {
|
|
|
|
|
|
|
|
|
|
if (order_loop != "") {
|
|
|
|
|
|
|
|
|
|
String tmp = selectToMarker(order_loop, ","); //выделяем из страки order первую команду rel 5 1,
|
|
|
|
|
sCmd.readStr(tmp); //выполняем первую команду
|
|
|
|
|
Serial.println("[ORDER] => " + order_loop);
|
|
|
|
|
order_loop = deleteBeforeDelimiter(order_loop, ","); //осекаем выполненную команду
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//=============================выполнение команд (через период) по очереди из строки order=======================================
|
|
|
|
|
/*void handleCMD_ticker() {
|
|
|
|
|
|
|
|
|
|
ts.add(CMD, CMD_update_int, [&](void*) {
|
|
|
|
|
if (!busy) {
|
|
|
|
|
if (order_ticker != "") {
|
|
|
|
|
|
|
|
|
|
String tmp = selectToMarker(order_ticker, ","); //выделяем из страки order первую команду pus title body
|
|
|
|
|
if (tmp != "no_command") sCmd.readStr(tmp); //выполняем первую команду
|
|
|
|
|
Serial.println("order_ticker => " + order_ticker);
|
|
|
|
|
order_ticker = deleteBeforeDelimiter(order_ticker, ","); //осекаем выполненную команду
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}, nullptr, true);
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//=======================================================================================================================================
|
|
|
|
|
//=======================================================================================================================================
|
|
|
|
|
void txtExecution(String file) {
|
|
|
|
|
|
|
|
|
|
String command_all = readFile(file, 2048) + "\r\n"; //2048
|
|
|
|
|
|
|
|
|
|
command_all.replace("\r\n", "\n");
|
|
|
|
|
command_all.replace("\r", "\n");
|
|
|
|
|
|
|
|
|
|
while (command_all.length() != 0) {
|
|
|
|
|
|
|
|
|
|
String tmp = selectToMarker (command_all, "\n");
|
|
|
|
|
//if (tmp.indexOf("//") < 0)
|
|
|
|
|
sCmd.readStr(tmp);
|
|
|
|
|
command_all = deleteBeforeDelimiter(command_all, "\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void stringExecution(String str) {
|
|
|
|
|
|
|
|
|
|
String command_all = str + "\r\n"; //"\r\n"
|
|
|
|
|
|
|
|
|
|
command_all.replace("\r\n", "\n");
|
|
|
|
|
command_all.replace("\r", "\n");
|
|
|
|
|
|
|
|
|
|
while (command_all.length() != 0) {
|
|
|
|
|
|
|
|
|
|
String tmp = selectToMarker (command_all, "\n");
|
|
|
|
|
//if (tmp.indexOf("//") < 0)
|
|
|
|
|
sCmd.readStr(tmp);
|
|
|
|
|
command_all = deleteBeforeDelimiter(command_all, "\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//======================================================================================================================
|
|
|
|
|
//===============================================Создание виджетов=======================================================
|
|
|
|
|
|
|
|
|
|
void createViget (String viget_name, String page_name, String page_number, String file, String topic) {
|
|
|
|
|
|
|
|
|
|
String viget;
|
|
|
|
|
viget = readFile(file, 1024);
|
|
|
|
|
|
|
|
|
|
if (viget == "Failed") return;
|
|
|
|
|
if (viget == "Large") return;
|
|
|
|
|
|
|
|
|
|
viget_name.replace("#", " ");
|
|
|
|
|
page_name.replace("#", " ");
|
|
|
|
|
|
|
|
|
|
jsonWrite(viget, "page", page_name);
|
|
|
|
|
jsonWrite(viget, "pageId", page_number);
|
|
|
|
|
jsonWrite(viget, "descr", viget_name);
|
|
|
|
|
jsonWrite(viget, "topic", prex + "/" + topic);
|
|
|
|
|
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 viget;
|
|
|
|
|
viget = readFile(file, 1024);
|
|
|
|
|
|
|
|
|
|
if (viget == "Failed") return;
|
|
|
|
|
if (viget == "Large") return;
|
|
|
|
|
|
|
|
|
|
viget_name.replace("#", " ");
|
|
|
|
|
page_name.replace("#", " ");
|
|
|
|
|
|
|
|
|
|
value.replace("#", " ");
|
|
|
|
|
|
|
|
|
|
viget = vidgetConfigWrite(viget, key, value);
|
|
|
|
|
|
|
|
|
|
jsonWrite(viget, "page", page_name);
|
|
|
|
|
jsonWrite(viget, "pageId", page_number);
|
|
|
|
|
jsonWrite(viget, "descr", viget_name);
|
|
|
|
|
jsonWrite(viget, "topic", prex + "/" + topic);
|
|
|
|
|
|
|
|
|
|
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) {
|
|
|
|
|
|
|
|
|
|
String viget;
|
|
|
|
|
viget = readFile(file, 1024);
|
|
|
|
|
|
|
|
|
|
if (viget == "Failed") return;
|
|
|
|
|
if (viget == "Large") return;
|
|
|
|
|
|
|
|
|
|
viget_name.replace("#", " ");
|
|
|
|
|
page_name.replace("#", " ");
|
|
|
|
|
|
|
|
|
|
value.replace("#", " ");
|
|
|
|
|
|
|
|
|
|
viget = vidgetConfigWrite(viget, key, value);
|
|
|
|
|
viget = vidgetConfigWrite(viget, key2, value2);
|
|
|
|
|
|
|
|
|
|
jsonWrite(viget, "page", page_name);
|
|
|
|
|
jsonWrite(viget, "pageId", page_number);
|
|
|
|
|
jsonWrite(viget, "descr", viget_name);
|
|
|
|
|
jsonWrite(viget, "topic", prex + "/" + topic);
|
|
|
|
|
|
|
|
|
|
all_vigets += viget + "\r\n";
|
|
|
|
|
viget = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String vidgetConfigWrite(String viget, String key, String value) {
|
|
|
|
|
|
|
|
|
|
if (viget == "") return "";
|
|
|
|
|
if (viget == "{}") return "";
|
|
|
|
|
int psn1 = viget.indexOf("{");
|
|
|
|
|
if (psn1 != -1) {
|
|
|
|
|
psn1 = viget.indexOf("{", psn1 + 1);
|
|
|
|
|
if (psn1 != -1) {
|
|
|
|
|
int psn2 = viget.indexOf("}", psn1);
|
|
|
|
|
String WigetConfig = viget.substring(psn1, psn2) + "}";
|
|
|
|
|
jsonWrite(WigetConfig, key, value);
|
|
|
|
|
String part1 = viget.substring(0, psn1);
|
|
|
|
|
viget = part1 + WigetConfig + "}";
|
|
|
|
|
return viget;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//============разное
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
void delAlert() {
|
|
|
|
|
|
|
|
|
|
String alert_id = sCmd.next();
|
|
|
|
|
delViget(alert_id);
|
|
|
|
|
sendAllWigets();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void delViget(String text_in_viget) {
|
|
|
|
|
String viget = all_vigets;
|
|
|
|
|
while (viget.length() != 0) {
|
|
|
|
|
String tmp = selectToMarkerPlus (viget, "\r\n", 2);
|
|
|
|
|
if (tmp.indexOf(text_in_viget) > 0) {
|
|
|
|
|
|
|
|
|
|
all_vigets.replace(tmp, "");
|
|
|
|
|
//Serial.println(all_vigets);
|
|
|
|
|
|
|
|
|
|
viget = deleteBeforeDelimiter(viget, "\r\n");
|
|
|
|
|
} else {
|
|
|
|
|
viget = deleteBeforeDelimiter(viget, "\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|