some changes

This commit is contained in:
Dmitry Borisenko
2020-05-20 02:16:23 +02:00
parent 3ea2509b6d
commit bf75e9f4b7
11 changed files with 162 additions and 98 deletions

114
Cmd.ino
View File

@@ -12,34 +12,53 @@ void CMD_init() {
sCmd.addCommand("switch", switch_);
#ifdef analog_enable
sCmd.addCommand("analog", analog);
#endif
#ifdef level_enable
sCmd.addCommand("level", level);
#endif
#ifdef dallas_enable
sCmd.addCommand("dallas", dallas);
#endif
#ifdef dht_enable
sCmd.addCommand("dhtT", dhtT);
sCmd.addCommand("dhtH", dhtH);
sCmd.addCommand("dhtPerception", dhtP);
sCmd.addCommand("dhtComfort", dhtC);
sCmd.addCommand("dhtDewpoint", dhtD);
#endif
#ifdef bmp_enable
sCmd.addCommand("bmp280T", bmp280T);
sCmd.addCommand("bmp280P", bmp280P);
#endif
#ifdef bme_enable
sCmd.addCommand("bme280T", bme280T);
sCmd.addCommand("bme280P", bme280P);
sCmd.addCommand("bme280H", bme280H);
sCmd.addCommand("bme280A", bme280A);
#endif
#ifdef stepper_enable
sCmd.addCommand("stepper", stepper);
sCmd.addCommand("stepperSet", stepperSet);
#endif
#ifdef servo_enable
sCmd.addCommand("servo", servo_);
sCmd.addCommand("servoSet", servoSet);
#endif
#ifdef serial_enable
sCmd.addCommand("serialBegin", serialBegin);
sCmd.addCommand("serialWrite", serialWrite);
#endif
#ifdef logging_enable
sCmd.addCommand("logging", logging);
#endif
sCmd.addCommand("inputDigit", inputDigit);
sCmd.addCommand("digitSet", digitSet);
@@ -53,10 +72,15 @@ void CMD_init() {
sCmd.addCommand("text", text);
sCmd.addCommand("textSet", textSet);
sCmd.addCommand("mqtt", mqttOrderSend);
sCmd.addCommand("http", httpOrderSend);
#ifdef push_enable
sCmd.addCommand("push", pushControl);
#endif
sCmd.addCommand("update", update_firmware);
sCmd.addCommand("firmware", firmware);
handle_time_init();
@@ -323,10 +347,9 @@ void textSet() {
jsonWriteStr(configJson, "text" + number, text);
sendSTATUS("text" + number, text);
}
//=====================================================================================================================================
//=========================================Модуль шагового мотора======================================================================
#ifdef stepper_enable
//stepper 1 12 13
void stepper() {
String stepper_number = sCmd.next();
@@ -381,7 +404,10 @@ void stepperSet() {
}, nullptr, true);
}
}
#endif
//====================================================================================================================================================
//=================================================================Сервоприводы=======================================================================
#ifdef servo_enable
//servo 1 13 50 Мой#сервопривод Сервоприводы 0 100 0 180 2
void servo_() {
String servo_number = sCmd.next();
@@ -472,7 +498,10 @@ void servoSet() {
jsonWriteStr(configJson, "servo" + servo_number, servo_state);
sendSTATUS("servo" + servo_number, servo_state);
}
#endif
//====================================================================================================================================================
//===================================================================================serial===========================================================
#ifdef serial_enable
void serialBegin() {
//String s_speed = sCmd.next();
//String rxPin = sCmd.next();
@@ -482,68 +511,11 @@ void serialBegin() {
}
void serialWrite() {
//String text = sCmd.next();
//mySerial.println(text);
//String text = sCmd.next();
//mySerial.println(text);
}
#endif
//====================================================================================================================================================
/*
void inputText() {
String number = sCmd.next();
String widget_name = sCmd.next();
widget_name.replace("#", " ");
String page_name = sCmd.next();
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
jsonWriteStr(configJson, "inputText" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputText.json", "inputText" + number);
}
void inputTextSet() {
String number = sCmd.next();
String value = sCmd.next();
jsonWriteStr(configJson, "inputText" + number, value);
sendSTATUS("inputText" + number, value);
}
void inputTime() {
String number = sCmd.next();
String widget_name = sCmd.next();
widget_name.replace("#", " ");
String page_name = sCmd.next();
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
jsonWriteStr(configJson, "inputTime" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputTime.json", "inputTime" + number);
}
void inputTimeSet() {
String number = sCmd.next();
String value = sCmd.next();
value.replace(":", ".");
jsonWriteStr(configJson, "inputTime" + number, value);
value.replace(".", ":");
sendSTATUS("inputTime" + number, value);
}
void inputDate() {
String number = sCmd.next();
String widget_name = sCmd.next();
widget_name.replace("#", " ");
String page_name = sCmd.next();
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
jsonWriteStr(configJson, "inputDate" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputDate.json", "inputDate" + number);
}
void inputDateSet() {
String number = sCmd.next();
String value = sCmd.next();
jsonWriteStr(configJson, "inputDate" + number, value);
sendSTATUS("inputDate" + number, value);
}
*/
//=================================================Глобальные команды удаленного управления===========================================================
void mqttOrderSend() {
@@ -567,7 +539,17 @@ void httpOrderSend() {
getURL(url);
}
void update_firmware() {
upgrade = true;
}
void firmware() {
String widget_name = sCmd.next();
String page_name = sCmd.next();
String page_number = sCmd.next();
jsonWriteStr(configJson, "firm1", firmware_version);
choose_widget_and_create(widget_name, page_name, page_number, "any-data", "firm1");
}
//==============================================================================================================================
//============================выполнение команд (в лупе) по очереди из строки order=============================================

View File

@@ -22,7 +22,9 @@ void All_init() {
request->send(200, "text/text", "OK");
}
if (value == "3") {
#ifdef logging_enable
clean_log_date();
#endif
request->send(200, "text/text", "OK");
}
if (value == "4") {
@@ -47,7 +49,7 @@ void Device_init() {
enter_to_logging_counter = LOG1 - 1;
analog_value_names_list = "";
enter_to_analog_counter = 0;
enter_to_analog_counter = 0;
level_value_name = "";

View File

@@ -1,3 +1,4 @@
#ifdef logging_enable
//===============================================Логирование============================================================
//logging temp1 1 10 Температура Датчики 2
void logging() {
@@ -149,3 +150,4 @@ void clean_log_date() {
}
all_line = "";
}
#endif

View File

@@ -3,36 +3,48 @@ void sensors_init() {
static int counter;
counter++;
#ifdef level_enable
if (sensors_reading_map[0] == 1) level_reading();
#endif
if (counter > 10) {
counter = 0;
#ifdef analog_enable
if (sensors_reading_map[1] == 1) analog_reading1();
if (sensors_reading_map[2] == 1) analog_reading2();
#endif
#ifdef dallas_enable
if (sensors_reading_map[3] == 1) dallas_reading();
#endif
#ifdef dht_enable
if (sensors_reading_map[4] == 1) dhtT_reading();
if (sensors_reading_map[5] == 1) dhtH_reading();
if (sensors_reading_map[6] == 1) dhtP_reading();
if (sensors_reading_map[7] == 1) dhtC_reading();
if (sensors_reading_map[8] == 1) dhtD_reading();
#endif
#ifdef bmp_enable
if (sensors_reading_map[9] == 1) bmp280T_rading();
if (sensors_reading_map[10] == 1) bmp280P_reading();
#endif
#ifdef bme_enable
if (sensors_reading_map[11] == 1) bme280T_reading();
if (sensors_reading_map[12] == 1) bme280P_reading();
if (sensors_reading_map[13] == 1) bme280H_reading();
if (sensors_reading_map[14] == 1) bme280A_reading();
#endif
}
}, nullptr, true);
}
//=========================================================================================================================================
//=========================================Модуль измерения уровня в баке==================================================================
#ifdef level_enable
//level L 14 12 Вода#в#баке,#% Датчики fill-gauge 125 20 1
void level() {
String value_name = sCmd.next();
@@ -82,9 +94,10 @@ void level_reading() {
Serial.println("[i] sensor '" + level_value_name + "' data: " + String(level));
}
}
#endif
//=========================================================================================================================================
//=========================================Модуль аналогового сенсора======================================================================
#ifdef analog_enable
//analog adc 0 Аналоговый#вход,#% Датчики any-data 1 1023 1 100 1
void analog() {
String value_name = sCmd.next();
@@ -149,9 +162,10 @@ void analog_reading2() {
sendSTATUS(value_name, String(analog));
Serial.println("[i] sensor '" + value_name + "' data: " + String(analog));
}
#endif
//=========================================================================================================================================
//=========================================Модуль температурного сенсора ds18b20===========================================================
#ifdef dallas_enable
void dallas() {
String value_name = sCmd.next();
String pin = sCmd.next();
@@ -177,9 +191,10 @@ void dallas_reading() {
sendSTATUS("dallas", String(temp));
Serial.println("[i] sensor 'dallas' send date " + String(temp));
}
#endif
//=========================================================================================================================================
//=========================================Модуль сенсоров DHT=============================================================================
#ifdef dht_enable
//dhtT t 2 dht11 Температура#DHT,#t°C Датчики any-data 1
void dhtT() {
String value_name = sCmd.next();
@@ -375,9 +390,11 @@ void dhtD_reading() {
Serial.println("[i] sensor 'dhtDewpoint' data: " + String(value));
}
}
#endif
//=========================================i2c bus esp8266 scl-4 sda-5 ====================================================================
//=========================================================================================================================================
//=========================================Модуль сенсоров bmp280==========================================================================
#ifdef bmp_enable
//bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1
void bmp280T() {
String value_name = sCmd.next();
@@ -440,9 +457,10 @@ void bmp280P_reading() {
sendSTATUS(bmp280P_value_name, String(value));
Serial.println("[i] sensor '" + bmp280P_value_name + "' data: " + String(value));
}
#endif
//=========================================================================================================================================
//=============================================Модуль сенсоров bme280======================================================================
#ifdef bme_enable
//bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1
void bme280T() {
String value_name = sCmd.next();
@@ -534,3 +552,4 @@ void bme280A_reading() {
sendSTATUS(bme280A_value_name, String(value));
Serial.println("[i] sensor '" + bme280A_value_name + "' data: " + String(value));
}
#endif

View File

@@ -47,6 +47,8 @@ void WIFI_init() {
void ROUTER_Connecting() {
led_blink("slow");
WiFi.mode(WIFI_STA);
byte tries = 20;
@@ -92,6 +94,8 @@ void ROUTER_Connecting() {
Serial.print(WiFi.localIP());
Serial.println("");
jsonWriteStr(configJson, "ip", WiFi.localIP().toString());
led_blink("off");
//add_dev_in_list("dev.txt", chipID, WiFi.localIP().toString());
@@ -108,6 +112,7 @@ bool StartAPMode() {
String _passwordAP = jsonRead(configSetup, "passwordAP");
WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str());
IPAddress myIP = WiFi.softAPIP();
led_blink("on");
Serial.print("AP IP address: ");
Serial.println(myIP);
jsonWriteStr(configJson, "ip", myIP.toString());

View File

@@ -32,11 +32,15 @@ void setup() {
Time_Init();
Serial.println("[V] Time_Init");
//--------------------------------------------------------------
#ifdef push_enable
Push_init();
Serial.println("[V] Push_init");
#endif
//--------------------------------------------------------------
#ifdef UDP_enable
UDP_init();
Serial.println("[V] UDP_init");
#endif
//--------------------------------------------------------------
@@ -69,8 +73,9 @@ void loop() {
handleCMD_loop();
handleButton();
handleScenario();
#ifdef UDP_enable
handleUdp();
#endif
ts.update();
}
@@ -78,7 +83,9 @@ void not_async_actions() {
do_mqtt_connection();
do_upgrade_url();
do_upgrade();
#ifdef UDP_enable
do_udp_data_parse();
do_mqtt_send_settings_to_udp();
#endif
do_i2c_scanning();
}

View File

@@ -340,20 +340,23 @@ uint16_t hexStringToUint16(String hex) {
}
}
//=============================================================================================================
#ifdef led_status
void led_blink(int pin, int fq, String blink_satus) {
pinMode(pin, OUTPUT);
if (blink_satus == "on") tone(pin, fq);
if (blink_satus == "off") {
noTone(pin);
digitalWrite(pin, HIGH);
void led_blink(String satus) {
#ifdef blink_pin
pinMode(blink_pin, OUTPUT);
if (satus == "off") {
noTone(blink_pin);
digitalWrite(blink_pin, HIGH);
}
if (satus == "on") {
noTone(blink_pin);
digitalWrite(blink_pin, LOW);
}
if (satus == "slow") tone(blink_pin, 1);
if (satus == "fast") tone(blink_pin, 20);
#endif
}
#endif
void getMemoryLoad(String text) {
#ifdef ESP8266

View File

@@ -7,6 +7,7 @@ void MQTT_init() {
Serial.println("[VV] WiFi-ok");
if (client_mqtt.connected()) {
Serial.println("[VV] MQTT-ok");
led_blink("off");
} else {
MQTT_Connecting();
if (!just_load) mqtt_lost_error++;
@@ -53,12 +54,7 @@ void MQTT_init() {
}
void do_mqtt_send_settings_to_udp() {
if (mqtt_send_settings_to_udp) {
mqtt_send_settings_to_udp = false;
send_mqtt_to_udp();
}
}
void do_mqtt_connection() {
if (mqtt_connection) {
@@ -82,13 +78,14 @@ boolean MQTT_Connecting() {
String mqtt_server = jsonRead(configSetup, "mqttServer");
if ((mqtt_server != "")) {
Serial.println("[E] Lost MQTT connection, start reconnecting");
//ssl//espClient.setCACert(local_root_ca1);
led_blink("fast");
client_mqtt.setServer(mqtt_server.c_str(), jsonReadtoInt(configSetup, "mqttPort"));
if (WiFi.status() == WL_CONNECTED) {
if (!client_mqtt.connected()) {
Serial.println("[V] Connecting to MQTT server commenced");
if (client_mqtt.connect(chipID.c_str(), jsonRead(configSetup, "mqttUser").c_str(), jsonRead(configSetup, "mqttPass").c_str())) {
Serial.println("[VV] MQTT connected");
led_blink("off");
client_mqtt.setCallback(callback);
client_mqtt.subscribe(jsonRead(configSetup, "mqttPrefix").c_str()); // Для приема получения HELLOW и подтверждения связи
client_mqtt.subscribe((jsonRead(configSetup, "mqttPrefix") + "/" + chipID + "/+/control").c_str()); // Подписываемся на топики control
@@ -97,6 +94,7 @@ boolean MQTT_Connecting() {
return true;
} else {
Serial.println("[E] try again in " + String(wifi_mqtt_reconnecting / 1000) + " sec");
led_blink("fast");
return false;
}
}
@@ -120,7 +118,7 @@ void callback(char* topic, byte * payload, unsigned int length) {
Serial.println(" => " + str);
if (str == "HELLO") outcoming_date();
//превращает название топика в команду, а значение в параметр команды
if (topic_str.indexOf("control") > 0) { //IoTmanager/800324-1458415/button1/control 1 //IoTmanager/800324-1458415/button99/control 1
String topic = selectFromMarkerToMarker(topic_str, "/", 3); //button1 //button99
@@ -136,6 +134,11 @@ void callback(char* topic, byte * payload, unsigned int length) {
//Serial.println(str);
order_loop += str + ",";
}
if (topic_str.indexOf("update") > 0) {
if (str == "1") {
upgrade = true;
}
}
}
//данные которые отправляем при подключении или отбновлении страницы
@@ -143,7 +146,10 @@ void outcoming_date() {
sendAllWigets();
sendAllData();
#ifdef logging_enable
choose_log_date_and_send();
#endif
Serial.println("[V] Sending all date to iot manager completed");
}

View File

@@ -1,3 +1,4 @@
#ifdef push_enable
void Push_init() {
server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest * request) {
@@ -58,3 +59,4 @@ void pushControl() {
client_push.stop();
Serial.println("- stopping the client");
}
#endif

39
set.h
View File

@@ -5,16 +5,33 @@ boolean mb_4_of_memory = true;
//#define MDNS_enable
//#define WS_enable
//#define layout_in_ram
#define wifi_mqtt_reconnecting 30000
//===================================================================
//====================udp============================================
#define UDP_enable
//====================sensors========================================
#define level_enable
#define analog_enable
#define dallas_enable
#define dht_enable //подъедает оперативку сука
#define bmp_enable
#define bme_enable
//====================logging=========================================
#define logging_enable
//=====================gears==========================================
#define stepper_enable
#define servo_enable
//=====================other==========================================
#define serial_enable
#define push_enable
//====================================================================
//====================================================================
#define wifi_mqtt_reconnecting 20000
#define blink_pin 2
#define tank_level_times_to_send 10 //после скольки выстрелов делать отправку данных
#define statistics_update 1000 * 60 * 60 * 2
//======================================================================
//#define TIME_COMPILING String(__TIME__)
//#define DATE_COMPILING String(__DATE__)
//===============библиотеки и объекты для ESP8266========================
#ifdef ESP8266
#include <ESP8266WiFi.h>
@@ -92,29 +109,39 @@ StringCommand sCmd;
boolean but[NUM_BUTTONS];
Bounce * buttons = new Bounce[NUM_BUTTONS];
#ifdef level_enable
#include "GyverFilters.h" //настраивается в GyverHacks.h - MEDIAN_FILTER_SIZE
GMedian medianFilter;
#endif
#ifdef dallas_enable
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire *oneWire;
DallasTemperature sensors;
#endif
#ifdef dht_enable
#include <DHTesp.h>
DHTesp dht;
#endif
#include <Wire.h>
#ifdef bmp_enable
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp; // use I2C interface
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
#endif
#ifdef bmp_enable
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; // use I2C interface
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();
#endif
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(14, 12);

View File

@@ -1,3 +1,4 @@
#ifdef UDP_enable
void UDP_init() {
server.on("/udp", HTTP_GET, [](AsyncWebServerRequest * request) {
String value;
@@ -167,3 +168,11 @@ void send_mqtt_to_udp() {
}
}
}
void do_mqtt_send_settings_to_udp() {
if (mqtt_send_settings_to_udp) {
mqtt_send_settings_to_udp = false;
send_mqtt_to_udp();
}
}
#endif