iot manager 2.0 support

This commit is contained in:
Dmitry Borisenko
2020-02-08 02:45:35 +03:00
parent 4e211ecca5
commit 8c3111cfa8
26 changed files with 92 additions and 350 deletions

89
Cmd.ino
View File

@@ -18,9 +18,8 @@ void CMD_init() {
sCmd.addCommand("logging", logging);
sCmd.addCommand("input", input);
sCmd.addCommand("valueUpSet", valueUpSet);
sCmd.addCommand("valueDownSet", valueDownSet);
sCmd.addCommand("inputDigit", inputDigit);
sCmd.addCommand("digitSet", digitSet);
@@ -42,8 +41,7 @@ void CMD_init() {
//======новые виджеты ver2.0=======//
sCmd.addCommand("inputNumber", inputNumber);
sCmd.addCommand("inputNumberSet", inputNumberSet);
sCmd.addCommand("inputText", inputText);
sCmd.addCommand("inputTextSet", inputTextSet);
@@ -62,23 +60,7 @@ void CMD_init() {
//=================================//
}
void inputNumber() {
String number = sCmd.next();
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();
jsonWrite(configJson, "inputNumberSet" + number, start_state);
createViget (viget_name, page_name, page_number, "vigets/viget.inputNumber.json", "inputNumberSet" + number);
}
void inputNumberSet() {
String number = sCmd.next();
String value = sCmd.next();
jsonWrite(configJson, "inputNumberSet" + number, value);
sendSTATUS("inputNumberSet" + number, value);
}
void inputText() {
String number = sCmd.next();
@@ -301,63 +283,24 @@ void handleButton() {
//=====================================================================================================================================
//=========================================Добавление окна ввода переменной============================================================
void input() {
String name_ = sCmd.next();
String number = name_.substring(5);
String start_value = sCmd.next();
String step_ = sCmd.next();
void inputDigit() {
String value_name = sCmd.next();
String number = value_name.substring(5);
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();
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);
jsonWrite(configJson, "digitSet" + number, start_state);
createViget (viget_name, page_name, page_number, "vigets/viget.inputNum.json", "digitSet" + number);
}
void valueUpSet() {
void digitSet() {
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);
String value = sCmd.next();
jsonWrite(configJson, "digitSet" + number, value);
sendSTATUS("digitSet" + number, value);
}
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() {

View File

@@ -13,26 +13,20 @@ void handleScenario() {
if (tmp == "") return;
i++;
if (scenario_line_status[i] == 1) {
if (scenario_line_status[i] == 1) {
//Serial.println(i);
String condition = selectToMarker (tmp, "\n"); //выделяем первую строку самого сценария button1 = 1 (условие)
String param_name = selectFromMarkerToMarker(condition, " " , 0); //из первой страки берем имя параметра button1 и вставляем в него Set и получаем buttonSet1
String num1 = param_name.substring(param_name.length() - 1);
String num2 = param_name.substring(param_name.length() - 2, param_name.length() - 1);
if (isDigitStr(num1) && isDigitStr(num2)) {
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;
}
} //преобразуем из button1 в вид buttonSet1 ,param_name = buttonSet1
String param_name = selectFromMarkerToMarker(condition, " " , 0);
param_name = add_set(param_name); //из первой страки берем имя параметра button1 и вставляем в него Set и получаем buttonSet1
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("value") != -1) {
if (value.indexOf("digit") != -1) {
value = add_set(value);
value = jsonRead(configJson, value);
}
boolean flag = false; //если одно из значений совпало то только тогда начинаем выполнять комнады
@@ -43,16 +37,16 @@ void handleScenario() {
if (jsonRead(configJson, param_name) != value) flag = true;
}
if (sign == "<") {
if (jsonRead(configJson, param_name).toFloat() < value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() < value.toInt()) flag = true;
}
if (sign == ">") {
if (jsonRead(configJson, param_name).toFloat() > value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() > value.toInt()) flag = true;
}
if (sign == ">=") {
if (jsonRead(configJson, param_name).toFloat() >= value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() >= value.toInt()) flag = true;
}
if (sign == "<=") {
if (jsonRead(configJson, param_name).toFloat() <= value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() <= value.toInt()) flag = true;
}
if (flag) {
@@ -83,3 +77,16 @@ void eventGen (String event_name, String number) { //событие выгля
jsonWrite(optionJson, "scenario_status", tmp + event_name + number + ",");
}
}
String add_set(String param_name) {
String num1 = param_name.substring(param_name.length() - 1);
String num2 = param_name.substring(param_name.length() - 2, param_name.length() - 1);
if (isDigitStr(num1) && isDigitStr(num2)) {
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;
}
}
return param_name;
}

View File

@@ -2,6 +2,7 @@
//=========================================Модуль аналогового сенсора============================================================
void analog() {
static boolean flag = true;
String pin = sCmd.next();
String viget_name = sCmd.next();
String page_name = sCmd.next();
String type = sCmd.next();
@@ -22,7 +23,7 @@ void analog() {
static int analog_old;
int analog_in = analogRead(A0);
int analog_in = analogRead(pin.toInt());
jsonWrite(configJson, "analog_in", analog_in);
int analog = map(analog_in,

View File

@@ -48,7 +48,8 @@ void timerStart() {
String period_of_time = sCmd.next();
String type = sCmd.next();
if (period_of_time.indexOf("value") != -1) {
if (period_of_time.indexOf("digit") != -1) {
period_of_time = add_set(period_of_time);
period_of_time = jsonRead(configJson, period_of_time);
}

View File

@@ -219,4 +219,3 @@ void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventT
}
}
#endif
//===================================================================================================================================

View File

@@ -73,19 +73,6 @@ void WIFI_init() {
}
bool StartAPMode() {
/*
Serial.println("WiFi up AP");
IPAddress apIP(192, 168, 4, 1);
IPAddress staticGateway(192, 168, 4, 1);
IPAddress staticSubnet(255, 255, 255, 0);
WiFi.disconnect();
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, staticGateway, staticSubnet);
String _ssidAP = jsonRead(configSetup, "ssidAP");
String _passwordAP = jsonRead(configSetup, "passwordAP");
WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str());
jsonWrite(configJson, "ip", apIP.toString());
*/
Serial.println("WiFi up AP");
WiFi.disconnect();
@@ -114,11 +101,19 @@ bool StartAPMode() {
boolean RouterFind(String ssid) {
int n = WiFi.scanComplete ();
Serial.println("n = " + String(n));
if (n == -2) { //Сканирование не было запущено, запускаем
Serial.println("[WIFI][i] scanning has not been triggered, starting scanning");
WiFi.scanNetworks (true, false); //async, show_hidden
return false;
}
if (n == -1) { //Сканирование все еще выполняется
Serial.println("[WIFI][i] scanning still in progress");
return false;
}
if (n == 0) { //Сканирование все еще выполняется
Serial.println("[WIFI][i] no any wifi sations, starting scanning");
WiFi.scanNetworks (true, false);
return false;
}
if (n > 0) {
@@ -131,58 +126,16 @@ boolean RouterFind(String ssid) {
Serial.print(")");
Serial.print(ssid);
Serial.print("<=>");
Serial.println(WiFi.SSID(i));
if (i == n) {
Serial.print(WiFi.SSID(i));
Serial.println("; ");
} else {
Serial.print(WiFi.SSID(i));
Serial.print("; ");
}
}
}
WiFi.scanDelete();
return false;
}
}
/*
boolean RouterFind(String ssid) {
int n = WiFi.scanComplete();
Serial.print("status=");
Serial.println(n);
if (n == -2) { //Сканирование не было запущено, запускаем
Serial.println("->enter to scanning function");
WiFi.mode(WIFI_AP);
WiFi.scanNetworks (true, false, false, 5000); //async, show_hidden
Serial.println("->out of scanning function");
return false;
}
if (n == -1) { //Сканирование все еще выполняется
Serial.println("->scanning in progress");
return false;
}
if (n > 0) { //Найдено несколько сетей
for (int i = 0; i <= n; i++) {
if (WiFi.SSID(i) == ssid) {
Serial.println("router found");
WiFi.scanDelete();
return true;
} else {
Serial.print(i);
Serial.print(")");
Serial.print(ssid);
Serial.print("<=>");
Serial.println(WiFi.SSID(i));
}
}
WiFi.scanDelete();
Serial.println("->scanning deleted");
return false;
}
}
void wifi_reset() {
WiFi.mode(WIFI_STA);
WiFi.disconnect(true, true);
}
*/

View File

@@ -1,7 +1,8 @@
inputNumber 1 Температура#максимальная moscow 60 1
inputNumber 2 Температура#минимальная moscow 30 2
inputText 1 Введите#текст moscow привет 3
inputTime 1 Введите#время moscow 12.00 4
inputDate 1 Введите#дату novorossiysk 10-01-2020 5
button 1 na Включить#все Освещение 0 6
analog Аналоговый#вход,#% Датчики progress-line 1 1024 1 1024 6
button 1 na Включить#все Освещение 0 1
button 2 13 Прихожая Освещение 0 2
button 3 14 Кухня Освещение 0 3
pwm 1 3 Яркость#коредор: Освещение 1023 4
pwm 2 4 Яркость#ванная: Освещение 510 5
analog 0 Аналоговый#вход,#% Датчики progress-round 1 1024 1 1024 6
button 4 na вкл:#>10,##выкл:#<10 Датчики 0 7
inputDigit digit1 введите#число Датчики 10 8

View File

@@ -1,7 +1,16 @@
inputNumber 1 Температура#максимальная moscow 60 1
inputNumber 2 Температура#минимальная moscow 30 2
inputText 1 Введите#текст moscow привет 3
inputTime 1 Введите#время moscow 12.00 4
inputDate 1 Введите#дату novorossiysk 10-01-2020 5
button 1 na Включить#все Освещение 0 6
analog Аналоговый#вход,#% Датчики progress-line 1 1024 1 1024 7
button1 = 1
buttonSet 2 1
buttonSet 3 1
pwmSet 2 1024
end
button1 = 0
buttonSet 2 0
buttonSet 3 0
pwmSet 2 0
end
analog > digit1
buttonSet 4 1
end
analog < digit1
buttonSet 4 0
end

View File

@@ -1,12 +0,0 @@
{
"id" : "",
"page" : "",
"widget" : "anydata",
"class1": "col-xs-4 text-center",
"class2": "stable",
"style2": "font-size:12px;float:center;",
"class3":"stable",
"style3": "font-size:25px;float:center;font-weight:bold;",
"descr" : "",
"topic" : ""
}

View File

@@ -1,12 +0,0 @@
{
"id" : "",
"page" : "",
"widget" : "anydata",
"class1" : "item col-xs-12 text-center",
"class2": "ballanced",
"style2": "font-size:20px;float:left;font-weight:bold;",
"class3":"ballanced",
"style3": "font-size:17px;float:right;",
"descr" : "",
"topic" : ""
}

View File

@@ -1,18 +0,0 @@
{
"id": "",
"pageId":"",
"page": "",
"widget": "simple-btn",
"class1": "col-xs-4 text-center",
"class2": "ballanced",
"style2": "font-size:15px;float:left;font-weight:bold;",
"topic": "",
"class3": "button button-block",
"style3": "float:right;",
"widgetConfig": {
"fill": "#F5F5F5",
"fillPressed": "#4169E1",
"title": "-",
"delay":500
}
}

View File

@@ -1,13 +0,0 @@
{
"id" : "",
"pageId": "",
"widget" : "chart",
"topic" : "",
"widgetConfig": {
"maxCount": 200,
"type": "line",
"height": 200
}
}

View File

@@ -1,23 +0,0 @@
{
"id": "",
"page": "",
"pageId": "",
"widget": "fillgauge",
"descr": "",
"class2": "text-center ballanced",
"style2": "font-size:25px;font-weight:bold;padding-top:10px;padding-bottom:10px;",
"class3" : "text-center",
"style3": "padding-top:10px;padding-bottom:10px;",
"topic": "",
"width": "250px",
"height": "250px",
"widgetConfig": {
"circleColor": "#228B22",
"textColor": "#FFFFFF",
"waveTextColor": "#050000",
"waveColor": "#40E0D0",
"circleThickness": 0.05,
"textVertPosition": 0.5,
"waveAnimateTime": 500
}
}

View File

@@ -1,18 +0,0 @@
{
"id" : "",
"pageId": "",
"widget" : "gauge",
"topic" : "",
"class1" : "item no-border no-padding text-center",
"descr" : "",
"widgetConfig" : {
"type" : "full",
"cap" : "round",
"append" : "",
"size" : 300,
"thick" : 20,
"maximum": 1024,
"color" : "#11c1f3",
"backgroundColor": "rgba(0,0,0, 0.2)"
}
}

View File

@@ -1,10 +0,0 @@
{
"id" : "5",
"widget" : "input",
"topic" : "",
descr : "",
size : "small",
color : "orange",
type : "number",
status : 321
}

View File

@@ -1,16 +0,0 @@
{
"id": "",
"pageId": "",
"descr": "",
"class1": "col-xs-3 text-center",
"page": "",
"widget": "steel",
"topic": "",
"widgetConfig": {
"width": 60,
"height": 60,
"type": "Led",
"blink": false,
"LedColor": "RED_LED"
}
}

View File

@@ -1,13 +0,0 @@
{
"id": "",
"page": "",
"descr": "",
"widget": "range",
"class3": "ballanced",
"style3": "font-size:25px;float:left;font-weight:bold;",
"topic": "",
"widgetConfig": {
"maxValue": 1023,
"minValue": 0
}
}

View File

@@ -1,13 +0,0 @@
{
"id" : "1",
"page" : "",
"pageId":"",
"widget" : "anydata",
"class1" : "item rounded text-center no-padding",
"class2": "ballanced",
"style2": "",
"class3":"ballanced",
"style3": "font-size:10px;float:right;",
"descr" : "",
"topic" : ""
}

View File

@@ -1,15 +0,0 @@
{
"id": "",
"page": "",
"pageId": "",
"widget": "steel",
"topic": "/DS",
"widgetConfig": {
"width": "auto",
"height": 150,
"type": "Linear",
"titleString": "Спальня",
"unitString": "°C",
"threshold": 30
}
}

View File

@@ -1,11 +0,0 @@
{
"id": "",
"page": "",
"pageId": "",
"widget": "toggle",
"descrStyle": "font-size:20px;float:left;font-weight:bold;",
"descrStyleOff": "font-size:20px;float:left;",
"color": "#8997ff",
"descr": "",
"topic": ""
}

View File

@@ -7,5 +7,6 @@
"color" : "#45ccce",
"background": "#777",
"before" : "",
"semicircle" : "1",
"after" : ""
}

View File

@@ -3,7 +3,7 @@
"descrColor": "red",
"after" : "%",
"k" : 0.0977,
"min" : 10,
"max" : 90,
"min" : 0,
"max" : 100,
"debounce": 500
}

View File

@@ -1,6 +1,5 @@
{
"widget" : "toggle",
"icon" : "sunny",
"iconOff" : "moon",
"iconOff" : "moon"
}

View File

@@ -23,6 +23,7 @@ void setup() {
#ifdef ESP8266
chipID = String( ESP.getChipId() ) + "-" + String( ESP.getFlashChipId());
jsonWrite(configSetup, "chipID", chipID);
Serial.setDebugOutput(0);
#endif
prex = prefix + "/" + chipID;

View File

@@ -222,11 +222,12 @@ void sendAllWigets() {
psn_2 = all_vigets.indexOf("\r\n", psn_1);
line = all_vigets.substring(psn_1, psn_2);
line.replace("\n", "");
line.replace("\r\n", "");
//jsonWrite(line, "id", String(counter));
//jsonWrite(line, "pageId", String(counter));
counter++;
sendMQTT("config", line);
sendMQTT("config",line);
Serial.println("[V] " + line);
psn_1 = psn_2 + 1;