diff --git a/AAOffice_kitchen.ino b/AAOffice_kitchen.ino index 0a9c7da..cbfb4e0 100644 --- a/AAOffice_kitchen.ino +++ b/AAOffice_kitchen.ino @@ -41,7 +41,7 @@ StaticJsonDocument<200> doc; WiFiClient espClient; PubSubClient MqttClient(espClient); -IPAddress IpMqtt(192, 168, 89, 210); +IPAddress IpMqtt(192, 168, 89, 210); WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, "192.168.89.210", 0, 60000); //Собственно сервер времени смещение и частоат запроса, но он вручную @@ -49,14 +49,18 @@ NTPClient timeClient(ntpUDP, "192.168.89.210", 0, 60000); //Собственно const char *wmhostname = "KitchenWater"; const PROGMEM char *willmess = "{\"conn\":\"err\"}"; -const PROGMEM char *mqttHostName = "192.168.89.210"; //Хостнейм брокера 192.168.89.210 cctv.automation.art:8889 -unsigned int mqttPort = 1883; // 1883 //Порт брокера 1883 +//const PROGMEM char *mqttHostName = "192.168.0.111"; //Хостнейм брокера 192.168.89.210 cctv.automation.art:8889 + +unsigned int mqttPort = 1883; // 1883 //Порт брокера 1883 + const PROGMEM char *mqttLogin = "AA_Lab", *mqttPass = "automation.art$"; const char *mqttIPHost; - + //тут хранится IP хоста по хостнейму -unsigned long timingUpdate, timingReqSensor, timingSendMqtt; //Таймеры для millis() -int PROGMEM nextM5Update = 450000; //каждые 7.5 минут запрос обновления с сервера //опрос датчиков раз в 10 секунд +unsigned long timingUpdate, timingSendStatus; //Таймеры для millis() +int PROGMEM nextM5Update = 18050000; //каждые 7.5 минут запрос обновления с сервера //опрос датчиков раз в 10 секунд +int PROGMEM nextSendStatus = 10000; + String getMacAddress(); String macc = getMacAddress(); @@ -68,7 +72,7 @@ int reqCounter = 0; short int rssi = 0; bool flagHIGH = false; char bufTopic[140], bufWillTopic[150]; - + volatile short int debounce = 0; TaskHandle_t Task1; @@ -146,7 +150,7 @@ void setup() String willTopicTemp = "aastudio/sens/" + macc + "/status"; Serial.println(topicTemp); - Serial.println(willTopicTemp); + Serial.println(willTopicTemp); topicTemp.toCharArray(bufTopic, topicTemp.length() + 1); willTopicTemp.toCharArray(bufWillTopic, willTopicTemp.length() + 1); @@ -164,15 +168,15 @@ void setup() // wm.setShowStaticFields(true); // force show static ip fields // wm.setShowDnsFields(true); // force show dns field always // wm.setConnectTimeout(20); // how long to try to connect for before continuing - wm.setConfigPortalTimeout(1); // auto close configportal after n seconds + wm.setConfigPortalTimeout(35); // auto close configportal after n seconds // wm.setCaptivePortalEnable(false); // disable captive portal redirection // wm.setAPClientCheck(true); // avoid timeout if client connected to softap // wifi scan settings // wm.setRemoveDuplicateAPs(false); // do not remove duplicate ap names (true) - wm.setMinimumSignalQuality(10); // set min RSSI (percentage) to show in scans, null = 8% + wm.setMinimumSignalQuality(15); // set min RSSI (percentage) to show in scans, null = 8% // wm.setShowInfoErase(false); // do not show erase button on info page wm.setScanDispPerc(true); // show RSSI as percentage not graph icons - wm.setConfigPortalBlocking(false); + //wm.setConfigPortalBlocking(false); // wm.setBreakAfterConfig(true); // always exit configportal even if wifi save fails wm.setWiFiAutoReconnect(true); // if true, enable autoreconnecting //wm.setHostname(wmhostname); @@ -466,7 +470,8 @@ int SendMqttReq(bool sendVal = true, bool sendStatus = true, byte statusConn = 1 doc["bsid"] = WiFi.BSSIDstr(); //doc["lasterror"] = errorID; doc["ts"] = timeNow; - doc["sv"] = VersionSW; + doc["exp"] = timeNow+15; + doc["sv"] = VersionSW; JsonData = ""; serializeJson(doc, JsonData); @@ -575,15 +580,14 @@ void Task1code(void *pvParameters) attachInterrupt(digitalPinToInterrupt(safetyPin), detectWaterOn, CHANGE); } - if (M5.Btn.pressedFor(60000)) + if (M5.Btn.pressedFor(90000)) { checkButton(); } - if (M5.Btn.pressedFor(2000)) + if (M5.Btn.wasReleasefor(2000)) { - Serial.println("KNOPKA SUKA"); - BuzTicker.detach(); + BuzTicker.detach(); } MqttClient.loop(); @@ -595,15 +599,27 @@ void Task1code(void *pvParameters) void Task2code(void *pvParameters) { for (;;) - { + { M5.update(); - wm.process(); + // wm.process(); if (WiFi.status() != WL_CONNECTED) { disPreSet((uint8_t *)image_wifi, 0, 0); } + +// if (WiFi.status() != WL_CONNECTED) +// { +// Serial.println(WiFi.status()); +// disPreSet((uint8_t *)image_wifi, 0, 0); +// errorID = 6; +// delay(3000); +// ESP.restart(); +// } + + + if (safetyStateNow != safetyStateOld) { Serial.println("safetyStateNow != safetyStateOld"); @@ -621,17 +637,31 @@ void Task2code(void *pvParameters) disPreSet((uint8_t *)image_arrow, 0, 0); } + + if (millis() - timingSendStatus > nextSendStatus) + { + SendMqttReq(false, true, 1); + timingSendStatus = millis(); + } + + + //По таймеру запруск обновления прошивки if (millis() - timingUpdate > nextM5Update) { SendMqttReq(false, true, 4); - // reqNtpTime(); + reqNtpTime(); OTAUpdate(); - // //Serial.print("OTAUpdate() - "); - // //Serial.println(millis()); + SendMqttReq(false, true, 1); timingUpdate = millis(); } + + + + + + //Таймер отправки данных в брокер if (!MqttClient.connected()) diff --git a/README.md b/README.md index 1db0db9..c2e2ff7 100644 --- a/README.md +++ b/README.md @@ -4,27 +4,38 @@ Подать питание после подключения датчика. -aastudio/94B97E92C24C/data/0 - -{"val":1,"ts":1615825905} - - -aastudio/94B97E92C24C/status -{"conn":"on","rssi":-74,"bsid":"70:4F:57:AA:2F:8A","ts":1615825905,"sv":2} -{"conn": "err"} - - - -Обозначения на схеме: - -"+" - подача питания 5 В (для удобства подключения всех проводов с одной стороны). Можно взять,но не более 0.5А (предохранитель) если питание от USB. +Обозначения на клемнике: +"+" - подача питания 5 В (для удобства подключения всех проводов с одной стороны). Можно взять для питания еще чего то от атома, но не более 0.5А (предохранитель) если питание от USB. "-" - ground "->" - уходящий сигнал на датчик 3.3В "<-" - приходящий сигнал через поплавок -{"swver":5,"waterlevel":1,"rssi":-69,"bsid":"70:4F:57:AA:2F:8A","lasterror":7,"time":1615576359} +Топики: +aastudio/sens/94B97E92C24C/data/0 +{"val":1,"ts":1616771531} + +aastudio/sens/94B97E92C24C/status +{"conn":"on","rssi":-65,"bsid":"08:55:31:57:99:A7","ts":720,"exp":735,"sv":3} +{"conn": "err"} + + +Отправка статуса каждые 10 секунд. + +Для отключения Бузера необходимо нажать на экран в течении 2х секунд. +При длительном нажатии кнопки более 90 секунд - сброс +Запрос обновления прошивки раз в 7 часов + +Датчик следует подключать к проводам или клемнику напрямую, скруткой или спайкой для избежания наводок и ненадежных соединиений. + + +Желтый круг - проблема подключения к MQTT +Красный знак - проблема подключения к WIFI +Зеленые точки - все хорошо. +Красная стрелочка указывающая вниз на синюю воду - сработка. + +Бузер срабатывает в любом режиме, независимо от подключения к Wifi или Mqtt. Экран @@ -33,8 +44,6 @@ https://github.com/m5stack/M5Atom/blob/master/README.md http://wikihandbk.com/wiki/ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_ESP32_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B5_%D1%81_PIR-%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%BC_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F - - Старт diff --git a/Описание.docx b/Описание.docx new file mode 100644 index 0000000..0e5ef1c Binary files /dev/null and b/Описание.docx differ