add web socket and stepper control

This commit is contained in:
Dmitry Borisenko
2020-03-16 00:00:59 +01:00
parent e2f8aaf505
commit e1ef489706
22 changed files with 189 additions and 45 deletions

43
Cmd.ino
View File

@@ -4,6 +4,8 @@ void CMD_init() {
sCmd.addCommand("buttonSet", buttonSet); sCmd.addCommand("buttonSet", buttonSet);
sCmd.addCommand("buttonChange", buttonChange); sCmd.addCommand("buttonChange", buttonChange);
//sCmd.addCommand("button_touch", button_touch);
sCmd.addCommand("pinSet", pinSet); sCmd.addCommand("pinSet", pinSet);
sCmd.addCommand("pinChange", pinChange); sCmd.addCommand("pinChange", pinChange);
@@ -22,6 +24,9 @@ void CMD_init() {
sCmd.addCommand("dhtComfort", dhtComfort); sCmd.addCommand("dhtComfort", dhtComfort);
sCmd.addCommand("dhtDewpoint", dhtDewpoint); sCmd.addCommand("dhtDewpoint", dhtDewpoint);
sCmd.addCommand("stepper", stepper);
sCmd.addCommand("stepperSet", stepperSet);
sCmd.addCommand("logging", logging); sCmd.addCommand("logging", logging);
sCmd.addCommand("inputDigit", inputDigit); sCmd.addCommand("inputDigit", inputDigit);
@@ -322,6 +327,44 @@ void textSet() {
sendSTATUS("textSet" + number, text); 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());
}
}
//==================================================================================================================================================== //====================================================================================================================================================
/* /*

View File

@@ -187,6 +187,13 @@ void prsets_init() {
request->redirect("/page.htm?configuration"); 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=============================================================================== //default===============================================================================

View File

@@ -19,7 +19,7 @@ void analog() {
static int analog_old; static int analog_old;
#ifdef ESP32 #ifdef ESP32
//int pin_int = pin.toInt(); //int pin_int = pin.toInt();
int analog_in;// = analogRead(pin_int); int analog_in = analogRead(34);
#endif #endif
#ifdef ESP8266 #ifdef ESP8266
int analog_in = analogRead(A0); int analog_in = analogRead(A0);
@@ -36,6 +36,7 @@ void analog() {
sendSTATUS("analog", String(analog)); sendSTATUS("analog", String(analog));
if (client.connected()) { if (client.connected()) {
Serial.println("[i] sensor 'analog' send date " + String(analog)); Serial.println("[i] sensor 'analog' send date " + String(analog));
//web_print("sensor 'analog' send date " + String(analog));
} }
// } // }
analog_old = analog; analog_old = analog;
@@ -83,6 +84,7 @@ void level() {
sendSTATUS("level", String(level)); sendSTATUS("level", String(level));
if (client.connected()) { if (client.connected()) {
Serial.println("[i] sensor tank 'level' send date " + String(level)); Serial.println("[i] sensor tank 'level' send date " + String(level));
//web_print("sensor tank 'level' send date " + String(level));
} }
//} //}
level_old = level; level_old = level;
@@ -114,6 +116,7 @@ void dallas() {
sendSTATUS("dallas", String(temp)); sendSTATUS("dallas", String(temp));
if (client.connected()) { if (client.connected()) {
Serial.println("[i] sensor 'dallas' send date " + String(temp)); Serial.println("[i] sensor 'dallas' send date " + String(temp));
//web_print("sensor 'dallas' send date " + String(temp));
} }
//} //}
temp_old = temp; temp_old = temp;
@@ -153,6 +156,7 @@ void dhtT() {
sendSTATUS("dhtT", String(value)); sendSTATUS("dhtT", String(value));
if (client.connected()) { if (client.connected()) {
Serial.println("[i] sensor 'dhtT' send date " + String(value)); Serial.println("[i] sensor 'dhtT' send date " + String(value));
//web_print("sensor 'dhtT' send date " + String(value));
} }
//} //}
value_old = value; value_old = value;
@@ -191,6 +195,7 @@ void dhtH() {
sendSTATUS("dhtH", String(value)); sendSTATUS("dhtH", String(value));
if (client.connected()) { if (client.connected()) {
Serial.println("[i] sensor 'dhtH' send date " + String(value)); Serial.println("[i] sensor 'dhtH' send date " + String(value));
//web_print("sensor 'dhtH' send date " + String(value));
} }
//} //}
value_old = value; value_old = value;

View File

@@ -41,6 +41,8 @@ void upgrade_firmware() {
configSetup_for_update = configSetup; configSetup_for_update = configSetup;
Serial.println("Start upgrade SPIFFS, please wait..."); Serial.println("Start upgrade SPIFFS, please wait...");
web_print("Start upgrade SPIFFS, please wait...");
WiFiClient client_for_upgrade; WiFiClient client_for_upgrade;
#ifdef ESP32 #ifdef ESP32
@@ -61,21 +63,25 @@ void upgrade_firmware() {
Serial.println("SPIFFS upgrade done!"); Serial.println("SPIFFS upgrade done!");
Serial.println("Start upgrade BUILD, please wait..."); Serial.println("Start upgrade BUILD, please wait...");
web_print("SPIFFS upgrade done!");
web_print("Start upgrade BUILD, please wait...");
#ifdef ESP32 #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"); 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 #endif
#ifdef ESP8266 #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"); 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 #endif
Serial.println("BUILD upgrade done!"); if (ret == HTTP_UPDATE_OK) {
Serial.println("Restart ESP...."); web_print("BUILD upgrade done!");
web_print("Restart ESP....");
} else { Serial.println("BUILD upgrade done!");
//upgrade_status(t_httpUpdate_return ret); Serial.println("Restart ESP....");
ESP.restart();
}
} }
} }

View File

@@ -41,7 +41,7 @@ void Web_server_init() {
server.addHandler(&ws); server.addHandler(&ws);
events.onConnect([](AsyncEventSourceClient * client) { events.onConnect([](AsyncEventSourceClient * client) {
client->send("hello!", NULL, millis(), 1000); //!!!client->send("hello!", NULL, millis(), 1000);
}); });
server.addHandler(&events); server.addHandler(&events);
@@ -144,14 +144,22 @@ void Web_server_init() {
server.on("/config.setup.json", HTTP_GET, [](AsyncWebServerRequest * request) { server.on("/config.setup.json", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(200, "application/json", configSetup); 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========================================================================================= //========================================WS=========================================================================================
#ifdef WS_enable #ifdef WS_enable
void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len) { void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len) {
if (type == WS_EVT_CONNECT) { if (type == WS_EVT_CONNECT) {
Serial.printf("ws[%s][%u] connect\n", server->url(), client->id()); Serial.printf("ws[%s][%u] connect\n", server->url(), client->id());
client->printf(configJson.c_str(), client->id()); client->printf(json.c_str(), client->id());
client->ping(); //client->ping();
} else if (type == WS_EVT_DISCONNECT) { } else if (type == WS_EVT_DISCONNECT) {
Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id()); Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id());
} else if (type == WS_EVT_ERROR) { } else if (type == WS_EVT_ERROR) {

View File

@@ -147,14 +147,14 @@ boolean RouterFind(String ssid) {
} else { } else {
Serial.print(i); Serial.print(i);
Serial.print(")"); Serial.print(")");
Serial.print(ssid); //Serial.print(ssid);
Serial.print("<=>"); //Serial.print("<=>");
if (i == n) { if (i == n) {
Serial.print(WiFi.SSID(i)); Serial.print(WiFi.SSID(i));
Serial.println("; "); Serial.println("; ");
} else { } else {
Serial.print(WiFi.SSID(i)); Serial.print(WiFi.SSID(i));
Serial.print("; "); Serial.println("; ");
} }
} }
} }

View File

@@ -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":"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"}

View File

@@ -0,0 +1,10 @@
stepper 1 12 13
button 1 na Открыть#штору Шторы 0 1
//добавляем шаговый двигатель с параметрами:
//1 - номер шагового двигателя, 12 - номер пина количества шагов, 13 - номер пина напрвления
//stepperSet 1 100 5 - прокрутить шаговик номер 1 на 100 шагов по часовой стрелке
//с задержкой между шагами 5 милисекунд (чем меньше задержка тем больше скорость)
//если поставить -100 то будет вращаться против часовой стрелки

View File

@@ -0,0 +1,6 @@
button1 = 1
stepperSet 1 100 5
end
button1 = 0
stepperSet 1 -100 5
end

View File

@@ -36,22 +36,23 @@
"style":"display:inline", "style":"display:inline",
"title": { "title": {
"#":"Выбирите то, во что Вы хотите превратить ESP <span class=\"caret\"></span>", "#":"Выбирите то, во что Вы хотите превратить ESP <span class=\"caret\"></span>",
"/relay":"Вкл. выкл. локального реле", "/relay":"1.Вкл. выкл. локального реле",
"/relay_timer":"Вкл. выкл. локального реле в определенное время", "/relay_timer":"2.Вкл. выкл. локального реле в определенное время",
"/relay_countdown":"Вкл. выкл. локального реле на определенный период времени", "/relay_countdown":"3.Вкл. выкл. локального реле на определенный период времени",
"/relay_several":"Вкл. выкл. нескольких локальных реле кнопкой в приложении", "/relay_several":"4.Вкл. выкл. нескольких локальных реле кнопкой в приложении",
"/relay_switch":"Вкл. выкл. локального реле физической кнопкой (кнопка так же дублируется в приложении)", "/relay_switch":"5.Вкл. выкл. локального реле физической кнопкой (кнопка так же дублируется в приложении)",
"/relay_button_remote":"Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)", "/relay_button_remote":"6.Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)",
"/relay_switch_remote":"Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)", "/relay_switch_remote":"7.Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)",
"/pwm":"Широтно импульсная модуляция", "/pwm":"8.Широтно импульсная модуляция",
"/dht11":"Сенсор DHT11", "/dht11":"9.Сенсор DHT11",
"/dht22":"Сенсор DHT22, DHT33, DHT44, AM2302, RHT03", "/dht22":"10.Сенсор DHT22, DHT33, DHT44, AM2302, RHT03",
"/analog":"Аналоговый сенсор", "/analog":"11.Аналоговый сенсор",
"/dallas":"Сенсор DS18B20", "/dallas":"12.Сенсор DS18B20",
"/termostat":"Термостат на DS18B20 с переключением в ручной режим", "/termostat":"13.Термостат на DS18B20 с переключением в ручной режим",
"/level":"Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 (управление насосом)", "/level":"14.Контроль уровня в баке на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 (управление насосом)",
"/moution_relay":"Датчик движения включающий свет", "/moution_relay":"15.Датчик движения включающий свет",
"/moution_security":"Охранный датчик движения", "/moution_security":"16.Охранный датчик движения",
"/stepper":"17.Система управления шаговым двигателем (открытие закрытие штор)",
"/default":"Настройки по умолчанию" "/default":"Настройки по умолчанию"
} }
}, },

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,6 +3,11 @@
"/config.live.json", "/config.live.json",
"/config.setup.json" "/config.setup.json"
], ],
"socket": [
"ws://{{ip}}/ws"
],
"title": "Главная", "title": "Главная",
"class": "col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", "class": "col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6",
"content": [ "content": [
@@ -31,6 +36,36 @@
"type": "h4", "type": "h4",
"title": "SPIFFS version: 2.3" "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", "type": "link",
"title": "Конфигурация устройства", "title": "Конфигурация устройства",
@@ -64,7 +99,7 @@
{ {
"type":"h3", "type":"h3",
"name":"my-block", "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" "class":"hidden"
}, },
{ {

BIN
data/index.json.gz Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -53,8 +53,7 @@
"type": "password", "type": "password",
"title": "Введите пароль", "title": "Введите пароль",
"name":"ssidPass", "name":"ssidPass",
"state": "{{password}}", "state": "{{password}}"
"pattern": ".{8,20}"
}, },
{ {
"type": "button", "type": "button",

View File

@@ -59,7 +59,7 @@ void setup() {
//-------------------------------------------------------------- //--------------------------------------------------------------
Serial.print("[i] Date compiling: "); Serial.print("[i] Date compiling: ");
Serial.println(DATE_COMPILING); Serial.println(DATE_COMPILING);
getMemoryLoad("[i] After loading"); getMemoryLoad("[i] After loading");
#ifdef ESP8266 #ifdef ESP8266
@@ -72,11 +72,12 @@ void setup() {
Serial.print("[i] Last firmware version: "); Serial.print("[i] Last firmware version: ");
Serial.println(new_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() { void loop() {

View File

@@ -156,7 +156,7 @@ String safeDataToFile(String data, String Folder)
fileName.replace("..", "."); fileName.replace("..", ".");
fileName = Folder + "/" + fileName + ".txt"; fileName = Folder + "/" + fileName + ".txt";
// addFile(fileName, GetTime() + "/" + data); // addFile(fileName, GetTime() + "/" + data);
Serial.println(fileName); Serial.println(fileName);
jsonWrite(configJson, "test", fileName); jsonWrite(configJson, "test", fileName);
@@ -259,12 +259,12 @@ void led_blink(int pin, int fq, String blink_satus) {
#endif #endif
void getMemoryLoad(String text) { void getMemoryLoad(String text) {
#ifdef ESP8266 #ifdef ESP8266
int all_memory = 53312; int all_memory = 53312;
#endif #endif
#ifdef ESP32 #ifdef ESP32
int all_memory = 362868; int all_memory = 362868;
#endif #endif
int memory_remain = ESP.getFreeHeap(); int memory_remain = ESP.getFreeHeap();
int memory_used = all_memory - memory_remain; int memory_used = all_memory - memory_remain;
int memory_load = (memory_used * 100) / all_memory; int memory_load = (memory_used * 100) / all_memory;
@@ -273,8 +273,21 @@ void getMemoryLoad(String text) {
Serial.print(String(memory_load) + "%; "); Serial.print(String(memory_load) + "%; ");
Serial.print("memory remain:"); Serial.print("memory remain:");
Serial.println(String(memory_remain) + " k bytes"); Serial.println(String(memory_remain) + " k bytes");
} }
//esp32 full memory = 362868 k bytes //esp32 full memory = 362868 k bytes
//esp8266 full memory = 53312 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);
}

View File

@@ -51,6 +51,7 @@ void MQTT_init() {
Serial.println("[V] WiFi-ok"); Serial.println("[V] WiFi-ok");
if (client.connected()) { if (client.connected()) {
Serial.println("[V] MQTT-ok"); Serial.println("[V] MQTT-ok");
web_print("MQTT-ok");
} else { } else {
MQTT_Connecting(); MQTT_Connecting();
mqtt_lost_error++; mqtt_lost_error++;
@@ -79,6 +80,7 @@ boolean MQTT_Connecting() {
if ((mqtt_server != "")) { if ((mqtt_server != "")) {
static boolean first = true; static boolean first = true;
if (!first) Serial.println("[E] Lost MQTT connection, start reconnecting"); if (!first) Serial.println("[E] Lost MQTT connection, start reconnecting");
web_print("Lost MQTT connection, start reconnecting");
first = false; first = false;
//ssl//espClient.setCACert(local_root_ca1); //ssl//espClient.setCACert(local_root_ca1);
client.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort")); client.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort"));
@@ -87,6 +89,7 @@ boolean MQTT_Connecting() {
Serial.println("[V] Connecting to MQTT server commenced"); Serial.println("[V] Connecting to MQTT server commenced");
if (client.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) { if (client.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) {
Serial.println("[V] MQTT connected"); Serial.println("[V] MQTT connected");
web_print("MQTT connected");
client.setCallback(callback); client.setCallback(callback);
client.subscribe(prefix.c_str()); // Для приема получения HELLOW и подтверждения связи client.subscribe(prefix.c_str()); // Для приема получения HELLOW и подтверждения связи
client.subscribe((prefix + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control client.subscribe((prefix + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control
@@ -95,6 +98,7 @@ boolean MQTT_Connecting() {
client.subscribe((prefix + "/ids").c_str()); // Подписываемся на топики ids client.subscribe((prefix + "/ids").c_str()); // Подписываемся на топики ids
sendMQTT("test", "work"); sendMQTT("test", "work");
Serial.println("[V] Callback set, subscribe done"); Serial.println("[V] Callback set, subscribe done");
web_print("Callback set, subscribe done");
//if (out_date_send) outcoming_date(); //отправляем данные в виджеты //if (out_date_send) outcoming_date(); //отправляем данные в виджеты
return true; return true;
} else { } else {
@@ -105,6 +109,7 @@ boolean MQTT_Connecting() {
} }
} else { } else {
Serial.println("[E] No date for MQTT connection"); Serial.println("[E] No date for MQTT connection");
web_print("No date for MQTT connection");
return false; return false;
} }
} }

7
set.h
View File

@@ -4,7 +4,7 @@ String new_version;
//#define OTA_enable //#define OTA_enable
//#define MDNS_enable //#define MDNS_enable
//#define WS_enable #define WS_enable
#define TIME_COMPILING String(__TIME__) #define TIME_COMPILING String(__TIME__)
#define DATE_COMPILING String(__DATE__) #define DATE_COMPILING String(__DATE__)
@@ -58,6 +58,7 @@ ESP8266HTTPUpdateServer httpUpdater;
#endif #endif
//==общие библиотеки и объекты==// //==общие библиотеки и объекты==//
#include <Arduino.h>
#include "time.h" #include "time.h"
#ifdef OTA_enable #ifdef OTA_enable
#include <ArduinoOTA.h> #include <ArduinoOTA.h>
@@ -105,12 +106,16 @@ DHTesp dht;
Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021(); Adafruit_Si7021 sensor_Si7021 = Adafruit_Si7021();
//----------------------------------------------------------------- //-----------------------------------------------------------------
const char* hostName = "IoT Manager"; const char* hostName = "IoT Manager";
String configSetup = "{}"; String configSetup = "{}";
String configJson = "{}"; String configJson = "{}";
String optionJson = "{}"; String optionJson = "{}";
String json = "{}";
String chipID = ""; String chipID = "";
String prefix = "/IoTmanager"; String prefix = "/IoTmanager";
String prex; String prex;