Крайний код 35 версия
parent
cb0938fa50
commit
46a1131229
164
M5Atom_airqa.ino
164
M5Atom_airqa.ino
|
@ -17,6 +17,14 @@
|
||||||
24A160474D14
|
24A160474D14
|
||||||
24A160542B80
|
24A160542B80
|
||||||
|
|
||||||
|
|
||||||
|
Белая 2B80
|
||||||
|
Шумная 38CC
|
||||||
|
У вас 23AC
|
||||||
|
Офис 5450
|
||||||
|
Кухня 4D41
|
||||||
|
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include "esp_sleep.h"
|
#include "esp_sleep.h"
|
||||||
|
|
||||||
|
@ -47,7 +55,7 @@
|
||||||
#define CCS811_ADDR 0x5B //Default I2C Address
|
#define CCS811_ADDR 0x5B //Default I2C Address
|
||||||
//#define CCS811_ADDR 0x5A //Alternate I2C Address
|
//#define CCS811_ADDR 0x5A //Alternate I2C Address
|
||||||
|
|
||||||
unsigned int VersionSW = 30; //65536 Версия прошивки
|
unsigned int VersionSW = 35; //65536 Версия прошивки
|
||||||
|
|
||||||
//15 - добавлено то, се, забыл вообще дописать что добавленоSerial
|
//15 - добавлено то, се, забыл вообще дописать что добавленоSerial
|
||||||
//19 - вывод в консоль всех действий, ошибки с обновлнеием - починил, прияногое мигание светодиодом, тест для поиска metrics.
|
//19 - вывод в консоль всех действий, ошибки с обновлнеием - починил, прияногое мигание светодиодом, тест для поиска metrics.
|
||||||
|
@ -59,8 +67,13 @@ unsigned int VersionSW = 30; //65536 Версия прошивки
|
||||||
//26 - тест обновления сука - работает
|
//26 - тест обновления сука - работает
|
||||||
//27 - таймаут станции без wifi 40 сек
|
//27 - таймаут станции без wifi 40 сек
|
||||||
//28 - калибровка вернулась
|
//28 - калибровка вернулась
|
||||||
//29 - baseline выведен и отключен
|
//29 - baseline выведен и отключен
|
||||||
//30 - новое освещение оранжевый цвет
|
//30 - новое освещение оранжевый цвет
|
||||||
|
//31 - фиксим время
|
||||||
|
//32 - рестарт без wifi
|
||||||
|
//33 - бейслайн и куча изменений по переподключению mqtt
|
||||||
|
//34 - правка с опросом, бесконечный цикл
|
||||||
|
//35 - закоменчен вывод ошибок available
|
||||||
|
|
||||||
gpio_num_t pinWak = GPIO_NUM_23;
|
gpio_num_t pinWak = GPIO_NUM_23;
|
||||||
|
|
||||||
|
@ -78,11 +91,10 @@ PubSubClient MqttClient(espClient);
|
||||||
IPAddress IpMqtt;
|
IPAddress IpMqtt;
|
||||||
|
|
||||||
WiFiUDP ntpUDP;
|
WiFiUDP ntpUDP;
|
||||||
NTPClient timeClient(ntpUDP, "0.ua.pool.ntp.org", 7200, 60000); //Собственно сервер времени смещение и частоат запроса, но он вручную
|
NTPClient timeClient(ntpUDP, "pool.ntp.org", 0, 60000); //Собственно сервер времени смещение и частоат запроса, но он вручную
|
||||||
const PROGMEM char *willmess = "{\"conn\":\"err\"}";
|
const PROGMEM char *willmess = "{\"conn\":\"err\"}";
|
||||||
const char *mqttHostName = "metrics"; //Хостнейм брокера metrics.local cctv.automation.art //192.168.89.210
|
const char *mqttHostName = "metrics"; //Хостнейм брокера metrics.local cctv.automation.art //192.168.89.210
|
||||||
unsigned int mqttPort = 1883; //Порт брокера 1883 8889
|
unsigned int mqttPort = 1883; //Порт брокера 1883 8889
|
||||||
|
|
||||||
|
|
||||||
String getMacAddress();
|
String getMacAddress();
|
||||||
String macc = getMacAddress();
|
String macc = getMacAddress();
|
||||||
|
@ -102,7 +114,7 @@ int PROGMEM nextReqSensor = 10000; //опрос датчиков раз в 10 с
|
||||||
int PROGMEM nextMqttSend = 60000; //Отправка
|
int PROGMEM nextMqttSend = 60000; //Отправка
|
||||||
|
|
||||||
float TempAv, HumAv, Eco2Av, TvocAv;
|
float TempAv, HumAv, Eco2Av, TvocAv;
|
||||||
unsigned int BaselineTvoc=0;
|
unsigned int BaselineTvoc = 0;
|
||||||
byte errorID = 0;
|
byte errorID = 0;
|
||||||
long rssi = 0;
|
long rssi = 0;
|
||||||
byte idxT = 0, idxH = 0, idxECO = 0, idxTVOC = 0;
|
byte idxT = 0, idxH = 0, idxECO = 0, idxTVOC = 0;
|
||||||
|
@ -117,16 +129,16 @@ void ledset(byte color = 0, bool blink = false)
|
||||||
switch (color)
|
switch (color)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
M5.dis.drawpix(0, 0xf00000); //Зеленый
|
M5.dis.drawpix(0, 0xf00000); //Зеленый
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
M5.dis.drawpix(0, 0x00ff00); //Красный
|
M5.dis.drawpix(0, 0x00ff00); //Красный
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
M5.dis.drawpix(0, 0x0000ff); //Синий
|
M5.dis.drawpix(0, 0x0000ff); //Синий
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
M5.dis.drawpix(0, 0x707070); //Белый
|
M5.dis.drawpix(0, 0x707070); //Белый
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
M5.dis.clear();
|
M5.dis.clear();
|
||||||
|
@ -139,7 +151,7 @@ void setup()
|
||||||
{
|
{
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
// Serial.setDebugOutput(true);
|
Serial.setDebugOutput(true);
|
||||||
|
|
||||||
btStop();
|
btStop();
|
||||||
// esp_bt_controller_disable();
|
// esp_bt_controller_disable();
|
||||||
|
@ -161,8 +173,8 @@ void setup()
|
||||||
ledset(1, true);
|
ledset(1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//ccs.setTempOffset(8.6);
|
//ccs.setTempOffset(8.6);
|
||||||
// ccs.setBaseline(21634);
|
ccs.setBaseline(25725);
|
||||||
//Установка коеффициентов каллибровки по MAC адресу
|
//Установка коеффициентов каллибровки по MAC адресу
|
||||||
// SetCallibrationCoeff();
|
// SetCallibrationCoeff();
|
||||||
|
|
||||||
|
@ -247,16 +259,16 @@ int reqNtpTime()
|
||||||
if (timeClient.update())
|
if (timeClient.update())
|
||||||
{
|
{
|
||||||
uint32_t timeEpoch = timeClient.getEpochTime();
|
uint32_t timeEpoch = timeClient.getEpochTime();
|
||||||
setTime(timeEpoch);
|
|
||||||
|
|
||||||
Serial.print(timeEpoch);
|
if (timeEpoch < 1000000)
|
||||||
Serial.print(" <=ntp== ==device=> ");
|
|
||||||
Serial.println(now());
|
|
||||||
|
|
||||||
if (timeEpoch < 100000)
|
|
||||||
{
|
{
|
||||||
Serial.println("Error Time");
|
Serial.println("Error Time");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setTime(timeEpoch);
|
||||||
|
// Serial.print(timeEpoch);
|
||||||
|
// Serial.print(" <=ntp== ==device=> ");
|
||||||
|
// Serial.println(now());
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -287,7 +299,7 @@ int checkButton()
|
||||||
|
|
||||||
void OTAUpdate()
|
void OTAUpdate()
|
||||||
{
|
{
|
||||||
Serial.println("!!!!!!!!!!!!!!!!!!!!!!!!!OTAUpdate() START!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
Serial.println("!!!OTAUpdate() START!!!!");
|
||||||
bool flagOTA = false;
|
bool flagOTA = false;
|
||||||
String keyOTA;
|
String keyOTA;
|
||||||
String payload;
|
String payload;
|
||||||
|
@ -351,7 +363,6 @@ void OTAUpdate()
|
||||||
if (flagOTA == true)
|
if (flagOTA == true)
|
||||||
{
|
{
|
||||||
// flagOTA = false;
|
// flagOTA = false;
|
||||||
|
|
||||||
disconnectMQTT();
|
disconnectMQTT();
|
||||||
|
|
||||||
ESPhttpUpdate.rebootOnUpdate(true);
|
ESPhttpUpdate.rebootOnUpdate(true);
|
||||||
|
@ -460,34 +471,39 @@ void reqSensorData()
|
||||||
TempAv = atof(outstr);
|
TempAv = atof(outstr);
|
||||||
dtostrf(hdc1080Hum, 5, 2, outstr);
|
dtostrf(hdc1080Hum, 5, 2, outstr);
|
||||||
HumAv = atof(outstr);
|
HumAv = atof(outstr);
|
||||||
|
|
||||||
|
for (int g = 0; g <= 7; g++)
|
||||||
for (int g = 0; g <= 5; g++)
|
|
||||||
{
|
{
|
||||||
delay(1000);
|
while (!ccs.available())
|
||||||
if (ccs.available())
|
|
||||||
{
|
{
|
||||||
if (!ccs.readData())
|
// Serial.println("ccs.NONE available()");
|
||||||
{
|
}
|
||||||
ccs.setEnvironmentalData(hdc1080Hum-55,hdc1080Temp-25);
|
|
||||||
eco2 = ccs.geteCO2();
|
if (!ccs.readData())
|
||||||
tvoc = ccs.getTVOC();
|
{
|
||||||
BaselineTvoc=ccs.getBaseline();
|
ccs.setEnvironmentalData(hdc1080Hum - 55, hdc1080Temp - 25);
|
||||||
Serial.println(eco2);
|
eco2 = ccs.geteCO2();
|
||||||
Serial.println(tvoc);
|
tvoc = ccs.getTVOC();
|
||||||
}
|
BaselineTvoc = ccs.getBaseline();
|
||||||
else
|
Serial.print(eco2);
|
||||||
{
|
Serial.print(" ");
|
||||||
Serial.println("==========ECO TVOC NONE READ");
|
Serial.print(tvoc);
|
||||||
}
|
Serial.print(" ");
|
||||||
|
Serial.println(BaselineTvoc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eco2 = 0;
|
Serial.println("==========ECO TVOC NONE READ");
|
||||||
tvoc = 0;
|
|
||||||
Serial.println("==========ECO TVOC NONE AVAILABLE");
|
|
||||||
errorID = 5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// eco2 = 0;
|
||||||
|
// tvoc = 0;
|
||||||
|
// Serial.println("==========ECO TVOC NONE AVAILABLE");
|
||||||
|
// errorID = 5;
|
||||||
|
// delay(1000);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
Eco2Av = eco2;
|
Eco2Av = eco2;
|
||||||
|
@ -500,6 +516,8 @@ int SendMqttReq(bool sendVal = true, bool sendStatus = true, byte statusConn = 1
|
||||||
{
|
{
|
||||||
if (mqttSendFlag == true)
|
if (mqttSendFlag == true)
|
||||||
{
|
{
|
||||||
|
ledset(2, true);
|
||||||
|
|
||||||
char resultString[200];
|
char resultString[200];
|
||||||
String JsonData = "";
|
String JsonData = "";
|
||||||
rssi = WiFi.RSSI();
|
rssi = WiFi.RSSI();
|
||||||
|
@ -511,20 +529,20 @@ int SendMqttReq(bool sendVal = true, bool sendStatus = true, byte statusConn = 1
|
||||||
doc["h"] = HumAv;
|
doc["h"] = HumAv;
|
||||||
doc["eco"] = (int)Eco2Av;
|
doc["eco"] = (int)Eco2Av;
|
||||||
doc["tvoc"] = (int)TvocAv;
|
doc["tvoc"] = (int)TvocAv;
|
||||||
doc["blt"]= BaselineTvoc;
|
doc["blt"] = BaselineTvoc;
|
||||||
if (macc == "24A1605423AC")
|
if (macc == "24A1605423AC")
|
||||||
{
|
{
|
||||||
doc["ligh"] = (int)map(analogRead(33), 0, 4095, 0, 100);
|
doc["ligh"] = (int)map(analogRead(33), 0, 4095, 0, 100);
|
||||||
}
|
}
|
||||||
doc["ts"] = timeNow;
|
doc["ts"] = timeNow;
|
||||||
|
|
||||||
serializeJson(doc, JsonData);
|
serializeJson(doc, JsonData);
|
||||||
|
|
||||||
doc.remove("t");
|
doc.remove("t");
|
||||||
doc.remove("h");
|
doc.remove("h");
|
||||||
doc.remove("eco");
|
doc.remove("eco");
|
||||||
doc.remove("tvoc");
|
doc.remove("tvoc");
|
||||||
doc.remove("blt");
|
doc.remove("blt");
|
||||||
|
|
||||||
if (macc == "24A1605423AC")
|
if (macc == "24A1605423AC")
|
||||||
{
|
{
|
||||||
|
@ -557,6 +575,10 @@ int SendMqttReq(bool sendVal = true, bool sendStatus = true, byte statusConn = 1
|
||||||
conn = "slp";
|
conn = "slp";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
conn = "upd";
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -589,7 +611,7 @@ void reconnectMqtt()
|
||||||
Serial.print("MQTT reconnect...");
|
Serial.print("MQTT reconnect...");
|
||||||
|
|
||||||
circle++;
|
circle++;
|
||||||
if (circle == 2)
|
if (circle == 7)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -607,9 +629,9 @@ void reconnectMqtt()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
////Serial.print("MqttClient.state() = ");
|
Serial.print("MqttClient.state() = ");
|
||||||
////Serial.println(MqttClient.state());
|
Serial.println(MqttClient.state());
|
||||||
/*
|
/*
|
||||||
-4 : MQTT_CONNECTION_TIMEOUT - the server didn't respond within the keepalive time
|
-4 : MQTT_CONNECTION_TIMEOUT - the server didn't respond within the keepalive time
|
||||||
-3 : MQTT_CONNECTION_LOST - the network connection was broken
|
-3 : MQTT_CONNECTION_LOST - the network connection was broken
|
||||||
-2 : MQTT_CONNECT_FAILED - the network connection failed
|
-2 : MQTT_CONNECT_FAILED - the network connection failed
|
||||||
|
@ -622,7 +644,7 @@ void reconnectMqtt()
|
||||||
5 : MQTT_CONNECT_UNAUTHORIZED - the client was not authorized to connect
|
5 : MQTT_CONNECT_UNAUTHORIZED - the client was not authorized to connect
|
||||||
*/
|
*/
|
||||||
mqttSendFlag = false;
|
mqttSendFlag = false;
|
||||||
delay(1000);
|
delay(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -635,50 +657,52 @@ void loop()
|
||||||
if (!MqttClient.connected())
|
if (!MqttClient.connected())
|
||||||
{
|
{
|
||||||
reconnectMqtt();
|
reconnectMqtt();
|
||||||
ledset(1, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (countOta >= 10)
|
MqttClient.loop();
|
||||||
{
|
|
||||||
// reqNtpTime();
|
|
||||||
OTAUpdate();
|
|
||||||
countOta = 0;
|
|
||||||
}
|
|
||||||
countOta++;
|
|
||||||
|
|
||||||
reqSensorData();
|
reqSensorData();
|
||||||
SetCallibrationCoeff(macc);
|
SetCallibrationCoeff(macc);
|
||||||
|
|
||||||
SendMqttReq(true, true, 3);
|
SendMqttReq(true, true, 3);
|
||||||
|
|
||||||
MqttClient.loop();
|
|
||||||
disconnectMQTT();
|
|
||||||
delay(500);
|
|
||||||
|
|
||||||
if (M5.Btn.pressedFor(1000))
|
if (M5.Btn.pressedFor(1000))
|
||||||
{
|
{
|
||||||
ledset(4, true);
|
ledset(4, true);
|
||||||
checkButton();
|
checkButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (countOta >= 10)
|
||||||
|
{
|
||||||
|
// reqNtpTime();
|
||||||
|
countOta = 0;
|
||||||
|
|
||||||
|
SendMqttReq(false, true, 4);
|
||||||
|
OTAUpdate();
|
||||||
|
SendMqttReq(false, true, 1);
|
||||||
|
}
|
||||||
|
countOta++;
|
||||||
|
|
||||||
goToSleep();
|
goToSleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
int disconnectMQTT()
|
int disconnectMQTT()
|
||||||
{
|
{
|
||||||
MqttClient.disconnect();
|
MqttClient.disconnect();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int goToSleep()
|
int goToSleep()
|
||||||
{
|
{
|
||||||
ledset(3, true);
|
ledset(3, true);
|
||||||
|
disconnectMQTT();
|
||||||
|
delay(500);
|
||||||
WiFi.disconnect(true);
|
WiFi.disconnect(true);
|
||||||
|
delay(50);
|
||||||
WiFi.mode(WIFI_OFF);
|
WiFi.mode(WIFI_OFF);
|
||||||
|
delay(50);
|
||||||
esp_wifi_stop();
|
esp_wifi_stop();
|
||||||
|
delay(100);
|
||||||
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
|
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
|
||||||
|
delay(100);
|
||||||
esp_deep_sleep_start();
|
esp_deep_sleep_start();
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue