diff --git a/Cmd.ino b/Cmd.ino
index 90ec9fd9..c157e56e 100644
--- a/Cmd.ino
+++ b/Cmd.ino
@@ -4,6 +4,8 @@ void CMD_init() {
sCmd.addCommand("buttonSet", buttonSet);
sCmd.addCommand("buttonChange", buttonChange);
+ //sCmd.addCommand("button_touch", button_touch);
+
sCmd.addCommand("pinSet", pinSet);
sCmd.addCommand("pinChange", pinChange);
@@ -22,6 +24,9 @@ void CMD_init() {
sCmd.addCommand("dhtComfort", dhtComfort);
sCmd.addCommand("dhtDewpoint", dhtDewpoint);
+ sCmd.addCommand("stepper", stepper);
+ sCmd.addCommand("stepperSet", stepperSet);
+
sCmd.addCommand("logging", logging);
sCmd.addCommand("inputDigit", inputDigit);
@@ -322,6 +327,44 @@ void textSet() {
sendSTATUS("textSet" + number, text);
}
+//=====================================================================================================================================
+//=========================================Модуль шагового мотора======================================================================
+
+//stepper 1 12 13
+void stepper() {
+ String stepper_number = sCmd.next();
+ String pin_step = sCmd.next();
+ String pin_dir = sCmd.next();
+
+ jsonWrite(optionJson, "stepper" + stepper_number, pin_step + " " + pin_dir);
+ pinMode(pin_step.toInt(), OUTPUT);
+ pinMode(pin_dir.toInt(), OUTPUT);
+}
+
+//stepperSet 1 100 5
+void stepperSet() {
+ String stepper_number = sCmd.next();
+ String steps = sCmd.next();
+ String stepper_speed = sCmd.next();
+
+ String pin_step = selectToMarker (jsonRead(optionJson, "stepper" + stepper_number), " ");
+ String pin_dir = deleteBeforeDelimiter (jsonRead(optionJson, "stepper" + stepper_number), " ");
+
+ Serial.println(pin_step);
+ Serial.println(pin_dir);
+
+ if (steps.toInt() > 0) digitalWrite(pin_dir.toInt(), HIGH);
+ if (steps.toInt() < 0) digitalWrite(pin_dir.toInt(), LOW);
+
+ for (int x = 0; x < abs(steps.toInt()); x++)
+ {
+ digitalWrite(pin_step.toInt(), HIGH);
+ delay(stepper_speed.toInt());
+ digitalWrite(pin_step.toInt(), LOW);
+ delay(stepper_speed.toInt());
+ }
+}
+
//====================================================================================================================================================
/*
diff --git a/Init.ino b/Init.ino
index af386335..9549c6cd 100644
--- a/Init.ino
+++ b/Init.ino
@@ -187,6 +187,13 @@ void prsets_init() {
request->redirect("/page.htm?configuration");
});
+ server.on("/stepper", HTTP_GET, [](AsyncWebServerRequest * request) {
+ writeFile("firmware.config.txt", readFile("configs/stepper.config.txt", 2048));
+ writeFile("firmware.scenario.txt", readFile("configs/stepper.scenario.txt", 2048));
+ Device_init();
+ Scenario_init();
+ request->redirect("/page.htm?configuration");
+ });
//default===============================================================================
diff --git a/Sensors.ino b/Sensors.ino
index b67fd036..bdcb37da 100644
--- a/Sensors.ino
+++ b/Sensors.ino
@@ -19,7 +19,7 @@ void analog() {
static int analog_old;
#ifdef ESP32
//int pin_int = pin.toInt();
- int analog_in;// = analogRead(pin_int);
+ int analog_in = analogRead(34);
#endif
#ifdef ESP8266
int analog_in = analogRead(A0);
@@ -36,6 +36,7 @@ void analog() {
sendSTATUS("analog", String(analog));
if (client.connected()) {
Serial.println("[i] sensor 'analog' send date " + String(analog));
+ //web_print("sensor 'analog' send date " + String(analog));
}
// }
analog_old = analog;
@@ -83,6 +84,7 @@ void level() {
sendSTATUS("level", String(level));
if (client.connected()) {
Serial.println("[i] sensor tank 'level' send date " + String(level));
+ //web_print("sensor tank 'level' send date " + String(level));
}
//}
level_old = level;
@@ -114,6 +116,7 @@ void dallas() {
sendSTATUS("dallas", String(temp));
if (client.connected()) {
Serial.println("[i] sensor 'dallas' send date " + String(temp));
+ //web_print("sensor 'dallas' send date " + String(temp));
}
//}
temp_old = temp;
@@ -153,6 +156,7 @@ void dhtT() {
sendSTATUS("dhtT", String(value));
if (client.connected()) {
Serial.println("[i] sensor 'dhtT' send date " + String(value));
+ //web_print("sensor 'dhtT' send date " + String(value));
}
//}
value_old = value;
@@ -191,6 +195,7 @@ void dhtH() {
sendSTATUS("dhtH", String(value));
if (client.connected()) {
Serial.println("[i] sensor 'dhtH' send date " + String(value));
+ //web_print("sensor 'dhtH' send date " + String(value));
}
//}
value_old = value;
diff --git a/Upgrade.ino b/Upgrade.ino
index af38ae4d..e195f044 100644
--- a/Upgrade.ino
+++ b/Upgrade.ino
@@ -41,6 +41,8 @@ void upgrade_firmware() {
configSetup_for_update = configSetup;
Serial.println("Start upgrade SPIFFS, please wait...");
+ web_print("Start upgrade SPIFFS, please wait...");
+
WiFiClient client_for_upgrade;
#ifdef ESP32
@@ -61,21 +63,25 @@ void upgrade_firmware() {
Serial.println("SPIFFS upgrade done!");
Serial.println("Start upgrade BUILD, please wait...");
+ web_print("SPIFFS upgrade done!");
+ web_print("Start upgrade BUILD, please wait...");
#ifdef ESP32
- httpUpdate.rebootOnUpdate(true);
+ //httpUpdate.rebootOnUpdate(true);
t_httpUpdate_return ret = httpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.ino.bin");
#endif
#ifdef ESP8266
- ESPhttpUpdate.rebootOnUpdate(true);
+ //ESPhttpUpdate.rebootOnUpdate(true);
t_httpUpdate_return ret = ESPhttpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.ino.bin");
#endif
- Serial.println("BUILD upgrade done!");
- Serial.println("Restart ESP....");
-
- } else {
- //upgrade_status(t_httpUpdate_return ret);
+ if (ret == HTTP_UPDATE_OK) {
+ web_print("BUILD upgrade done!");
+ web_print("Restart ESP....");
+ Serial.println("BUILD upgrade done!");
+ Serial.println("Restart ESP....");
+ ESP.restart();
+ }
}
}
diff --git a/Web_server.ino b/Web_server.ino
index 1093e013..d537103a 100644
--- a/Web_server.ino
+++ b/Web_server.ino
@@ -41,7 +41,7 @@ void Web_server_init() {
server.addHandler(&ws);
events.onConnect([](AsyncEventSourceClient * client) {
- client->send("hello!", NULL, millis(), 1000);
+ //!!!client->send("hello!", NULL, millis(), 1000);
});
server.addHandler(&events);
@@ -144,14 +144,22 @@ void Web_server_init() {
server.on("/config.setup.json", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(200, "application/json", configSetup);
});
+
+ // ------------------Выполнение команды из запроса
+ server.on("/cmd", HTTP_GET, [](AsyncWebServerRequest * request) { //http://192.168.88.45/cmd?command=rel 1 1
+ String com = request->getParam("command")->value();
+ Serial.println(com);
+ order_loop += com + ",";
+ request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
+ });
}
//========================================WS=========================================================================================
#ifdef WS_enable
void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len) {
if (type == WS_EVT_CONNECT) {
Serial.printf("ws[%s][%u] connect\n", server->url(), client->id());
- client->printf(configJson.c_str(), client->id());
- client->ping();
+ client->printf(json.c_str(), client->id());
+ //client->ping();
} else if (type == WS_EVT_DISCONNECT) {
Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id());
} else if (type == WS_EVT_ERROR) {
diff --git a/WiFi.ino b/WiFi.ino
index 3f5ad044..22013113 100644
--- a/WiFi.ino
+++ b/WiFi.ino
@@ -147,14 +147,14 @@ boolean RouterFind(String ssid) {
} else {
Serial.print(i);
Serial.print(")");
- Serial.print(ssid);
- Serial.print("<=>");
+ //Serial.print(ssid);
+ //Serial.print("<=>");
if (i == n) {
Serial.print(WiFi.SSID(i));
Serial.println("; ");
} else {
Serial.print(WiFi.SSID(i));
- Serial.print("; ");
+ Serial.println("; ");
}
}
}
diff --git a/data/config.json b/data/config.json
index 0479064d..52ac45a5 100644
--- a/data/config.json
+++ b/data/config.json
@@ -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"}
\ No newline at end of file
+{"SSDP":"MODULES","chipID":"905542-1458415","ssidAP":"WiFi","passwordAP":"","ssid":"MW40V_782C","password":"05978600","timezone":3,"mqttServer":"m12.cloudmqtt.com","mqttPort":14053,"mqttUser":"lbscvzuj","mqttPass":"bLxlveOgaF8F","scenario":"1","timers":"0","pushingbox_id":"","web_login":"admin","web_pass":"admin"}
\ No newline at end of file
diff --git a/data/configs/stepper.config.txt b/data/configs/stepper.config.txt
new file mode 100644
index 00000000..c9064aea
--- /dev/null
+++ b/data/configs/stepper.config.txt
@@ -0,0 +1,10 @@
+stepper 1 12 13
+button 1 na Открыть#штору Шторы 0 1
+
+
+//добавляем шаговый двигатель с параметрами:
+//1 - номер шагового двигателя, 12 - номер пина количества шагов, 13 - номер пина напрвления
+
+//stepperSet 1 100 5 - прокрутить шаговик номер 1 на 100 шагов по часовой стрелке
+//с задержкой между шагами 5 милисекунд (чем меньше задержка тем больше скорость)
+//если поставить -100 то будет вращаться против часовой стрелки
\ No newline at end of file
diff --git a/data/configs/stepper.scenario.txt b/data/configs/stepper.scenario.txt
new file mode 100644
index 00000000..cb4cd521
--- /dev/null
+++ b/data/configs/stepper.scenario.txt
@@ -0,0 +1,6 @@
+button1 = 1
+stepperSet 1 100 5
+end
+button1 = 0
+stepperSet 1 -100 5
+end
\ No newline at end of file
diff --git a/data/configuration.json b/data/configuration.json
index 843e77e1..24079b45 100644
--- a/data/configuration.json
+++ b/data/configuration.json
@@ -36,22 +36,23 @@
"style":"display:inline",
"title": {
"#":"Выбирите то, во что Вы хотите превратить ESP ",
- "/relay":"Вкл. выкл. локального реле",
- "/relay_timer":"Вкл. выкл. локального реле в определенное время",
- "/relay_countdown":"Вкл. выкл. локального реле на определенный период времени",
- "/relay_several":"Вкл. выкл. нескольких локальных реле кнопкой в приложении",
- "/relay_switch":"Вкл. выкл. локального реле физической кнопкой (кнопка так же дублируется в приложении)",
- "/relay_button_remote":"Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)",
- "/relay_switch_remote":"Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)",
- "/pwm":"Широтно импульсная модуляция",
- "/dht11":"Сенсор DHT11",
- "/dht22":"Сенсор DHT22, DHT33, DHT44, AM2302, RHT03",
- "/analog":"Аналоговый сенсор",
- "/dallas":"Сенсор DS18B20",
- "/termostat":"Термостат на DS18B20 с переключением в ручной режим",
- "/level":"Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 (управление насосом)",
- "/moution_relay":"Датчик движения включающий свет",
- "/moution_security":"Охранный датчик движения",
+ "/relay":"1.Вкл. выкл. локального реле",
+ "/relay_timer":"2.Вкл. выкл. локального реле в определенное время",
+ "/relay_countdown":"3.Вкл. выкл. локального реле на определенный период времени",
+ "/relay_several":"4.Вкл. выкл. нескольких локальных реле кнопкой в приложении",
+ "/relay_switch":"5.Вкл. выкл. локального реле физической кнопкой (кнопка так же дублируется в приложении)",
+ "/relay_button_remote":"6.Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)",
+ "/relay_switch_remote":"7.Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)",
+ "/pwm":"8.Широтно импульсная модуляция",
+ "/dht11":"9.Сенсор DHT11",
+ "/dht22":"10.Сенсор DHT22, DHT33, DHT44, AM2302, RHT03",
+ "/analog":"11.Аналоговый сенсор",
+ "/dallas":"12.Сенсор DS18B20",
+ "/termostat":"13.Термостат на DS18B20 с переключением в ручной режим",
+ "/level":"14.Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 (управление насосом)",
+ "/moution_relay":"15.Датчик движения включающий свет",
+ "/moution_security":"16.Охранный датчик движения",
+ "/stepper":"17.Система управления шаговым двигателем (открытие закрытие штор)",
"/default":"Настройки по умолчанию"
}
},
diff --git a/data/css/build.css.gz b/data/css/build.css.gz
index 4bf6e060..a37a1ac1 100644
Binary files a/data/css/build.css.gz and b/data/css/build.css.gz differ
diff --git a/data/edit.htm.gz b/data/edit.htm.gz
index f1e48f7e..bdfe12d3 100644
Binary files a/data/edit.htm.gz and b/data/edit.htm.gz differ
diff --git a/data/index.htm.gz b/data/index.htm.gz
index 139f0040..618ee19a 100644
Binary files a/data/index.htm.gz and b/data/index.htm.gz differ
diff --git a/data/index.json b/data/index.json
index ee3f5021..e168b134 100644
--- a/data/index.json
+++ b/data/index.json
@@ -3,6 +3,11 @@
"/config.live.json",
"/config.setup.json"
],
+
+ "socket": [
+ "ws://{{ip}}/ws"
+ ],
+
"title": "Главная",
"class": "col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6",
"content": [
@@ -31,6 +36,36 @@
"type": "h4",
"title": "SPIFFS version: 2.3"
},
+ {
+ "type": "hr"
+ },
+ {
+ "type": "h6",
+ "title": "{{test1}}"
+ },
+ {
+ "type": "h6",
+ "title": "{{test2}}"
+ },
+ {
+ "type": "h6",
+ "title": "{{test3}}"
+ },
+ {
+ "type": "h6",
+ "title": "{{test4}}"
+ },
+ {
+ "type": "h6",
+ "title": "{{test5}}"
+ },
+ {
+ "type": "h6",
+ "title": "{{test6}}"
+ },
+ {
+ "type": "hr"
+ },
{
"type": "link",
"title": "Конфигурация устройства",
@@ -64,7 +99,7 @@
{
"type":"h3",
"name":"my-block",
- "style":"position:fixed;top:30%;left:50%;width:400px;margin-left:-200px;text-align:center;",
+ "style":"position:fixed;top:50%;left:50%;width:400px;margin-left:-200px;text-align:center;",
"class":"hidden"
},
{
diff --git a/data/index.json.gz b/data/index.json.gz
new file mode 100644
index 00000000..5f590a7f
Binary files /dev/null and b/data/index.json.gz differ
diff --git a/data/js/build.chart.js.gz b/data/js/build.chart.js.gz
index ac021668..8e92fd30 100644
Binary files a/data/js/build.chart.js.gz and b/data/js/build.chart.js.gz differ
diff --git a/data/js/function.js.gz b/data/js/function.js.gz
index 443fbca2..3ab843f3 100644
Binary files a/data/js/function.js.gz and b/data/js/function.js.gz differ
diff --git a/data/setup.json b/data/setup.json
index d9295724..2b998ff4 100644
--- a/data/setup.json
+++ b/data/setup.json
@@ -53,8 +53,7 @@
"type": "password",
"title": "Введите пароль",
"name":"ssidPass",
- "state": "{{password}}",
- "pattern": ".{8,20}"
+ "state": "{{password}}"
},
{
"type": "button",
diff --git a/esp32-esp8266_iot-manager_modules_firmware.ino b/esp32-esp8266_iot-manager_modules_firmware.ino
index e618efe4..2cc12527 100644
--- a/esp32-esp8266_iot-manager_modules_firmware.ino
+++ b/esp32-esp8266_iot-manager_modules_firmware.ino
@@ -59,7 +59,7 @@ void setup() {
//--------------------------------------------------------------
Serial.print("[i] Date compiling: ");
Serial.println(DATE_COMPILING);
-
+
getMemoryLoad("[i] After loading");
#ifdef ESP8266
@@ -72,11 +72,12 @@ void setup() {
Serial.print("[i] Last firmware version: ");
Serial.println(new_version);
- ts.add(TEST, statistics_update, [&](void*) {
+ //ts.add(TEST, statistics_update, [&](void*) {
- statistics();
+ // statistics();
+
+ //}, nullptr, false);
- }, nullptr, false);
}
void loop() {
diff --git a/main.ino b/main.ino
index c6a2662f..7e0f51a7 100644
--- a/main.ino
+++ b/main.ino
@@ -156,7 +156,7 @@ String safeDataToFile(String data, String Folder)
fileName.replace("..", ".");
fileName = Folder + "/" + fileName + ".txt";
- // addFile(fileName, GetTime() + "/" + data);
+ // addFile(fileName, GetTime() + "/" + data);
Serial.println(fileName);
jsonWrite(configJson, "test", fileName);
@@ -259,12 +259,12 @@ void led_blink(int pin, int fq, String blink_satus) {
#endif
void getMemoryLoad(String text) {
- #ifdef ESP8266
+#ifdef ESP8266
int all_memory = 53312;
- #endif
- #ifdef ESP32
+#endif
+#ifdef ESP32
int all_memory = 362868;
- #endif
+#endif
int memory_remain = ESP.getFreeHeap();
int memory_used = all_memory - memory_remain;
int memory_load = (memory_used * 100) / all_memory;
@@ -273,8 +273,21 @@ void getMemoryLoad(String text) {
Serial.print(String(memory_load) + "%; ");
Serial.print("memory remain:");
Serial.println(String(memory_remain) + " k bytes");
-
+
}
//esp32 full memory = 362868 k bytes
//esp8266 full memory = 53312 k bytes
+
+void web_print (String text) {
+
+ jsonWrite(json, "test1", jsonRead(json, "test2"));
+ jsonWrite(json, "test2", jsonRead(json, "test3"));
+ jsonWrite(json, "test3", jsonRead(json, "test4"));
+ jsonWrite(json, "test4", jsonRead(json, "test5"));
+ jsonWrite(json, "test5", jsonRead(json, "test6"));
+
+ jsonWrite(json, "test6", GetTime() + " " + text);
+
+ ws.textAll(json);
+}
diff --git a/mqtt.ino b/mqtt.ino
index 963caec0..aaee2113 100644
--- a/mqtt.ino
+++ b/mqtt.ino
@@ -51,6 +51,7 @@ void MQTT_init() {
Serial.println("[V] WiFi-ok");
if (client.connected()) {
Serial.println("[V] MQTT-ok");
+ web_print("MQTT-ok");
} else {
MQTT_Connecting();
mqtt_lost_error++;
@@ -79,6 +80,7 @@ boolean MQTT_Connecting() {
if ((mqtt_server != "")) {
static boolean first = true;
if (!first) Serial.println("[E] Lost MQTT connection, start reconnecting");
+ web_print("Lost MQTT connection, start reconnecting");
first = false;
//ssl//espClient.setCACert(local_root_ca1);
client.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort"));
@@ -87,6 +89,7 @@ boolean MQTT_Connecting() {
Serial.println("[V] Connecting to MQTT server commenced");
if (client.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) {
Serial.println("[V] MQTT connected");
+ web_print("MQTT connected");
client.setCallback(callback);
client.subscribe(prefix.c_str()); // Для приема получения HELLOW и подтверждения связи
client.subscribe((prefix + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control
@@ -95,6 +98,7 @@ boolean MQTT_Connecting() {
client.subscribe((prefix + "/ids").c_str()); // Подписываемся на топики ids
sendMQTT("test", "work");
Serial.println("[V] Callback set, subscribe done");
+ web_print("Callback set, subscribe done");
//if (out_date_send) outcoming_date(); //отправляем данные в виджеты
return true;
} else {
@@ -105,6 +109,7 @@ boolean MQTT_Connecting() {
}
} else {
Serial.println("[E] No date for MQTT connection");
+ web_print("No date for MQTT connection");
return false;
}
}
diff --git a/set.h b/set.h
index a1370d4c..604aa719 100644
--- a/set.h
+++ b/set.h
@@ -4,7 +4,7 @@ String new_version;
//#define OTA_enable
//#define MDNS_enable
-//#define WS_enable
+#define WS_enable
#define TIME_COMPILING String(__TIME__)
#define DATE_COMPILING String(__DATE__)
@@ -58,6 +58,7 @@ ESP8266HTTPUpdateServer httpUpdater;
#endif
//==общие библиотеки и объекты==//
+#include
#include "time.h"
#ifdef OTA_enable
#include
@@ -105,12 +106,16 @@ DHTesp dht;
Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
//-----------------------------------------------------------------
+
+
const char* hostName = "IoT Manager";
String configSetup = "{}";
String configJson = "{}";
String optionJson = "{}";
+String json = "{}";
+
String chipID = "";
String prefix = "/IoTmanager";
String prex;