Improve low power mode (#859)
-add switch on HASS -avoid issue when using ESPWifiManualSetup -Correct issue on gateway discovery on first connect -stop processing during discovery
This commit is contained in:
1 parent
2d377a1c3f
commit
557cf340db
11 files changed
+129
-81
No files matched your search
+12
-5
@@ -17,14 +17,21 @@ OpenMQTTGateway support a low power mode for ESP32, this mode can be set by MQTT
|
||||
|
||||
* Normal mode (per default)
|
||||
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"low_power_mode":0}'`
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"lowpowermode":0}'`
|
||||
|
||||
* Low Power mode
|
||||
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"low_power_mode":2}'`
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"lowpowermode":2}'`
|
||||
|
||||
::: tip
|
||||
When coming back from mode 2 to mode 0 you may publish the command with a retain flag so as to enable the gateway to retrieve it when reconnecting.
|
||||
A low power mode switch is automaticaly created by discovery with Home Assistant, you may experience a delay between the command and the state update due to the fact that the update is published every 2 minutes.
|
||||
In low power mode you should use ESPWifiManualSetup so as to rely on the credentials entered into User_config.h.
|
||||
So as to do that uncomment the line below in User_config.h
|
||||
``` c
|
||||
//# define ESPWifiManualSetup true
|
||||
```
|
||||
For platformio and example of environment is available into [prod_env.ini.example](https://github.com/1technophile/OpenMQTTGateway/blob/development/prod_env.ini.example)
|
||||
:::
|
||||
|
||||
::: warning
|
||||
@@ -60,14 +67,14 @@ OpenMQTTGateway support a low power mode for ESP32, this mode can be set by MQTT
|
||||
|
||||
* Normal mode (per default), screen ON
|
||||
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"low_power_mode":0}'`
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"lowpowermode":0}'`
|
||||
|
||||
* Low Power mode, screen ON when processing only
|
||||
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"low_power_mode":1}'`
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"lowpowermode":1}'`
|
||||
|
||||
* Low Power mode, screen OFF, LED ON when processing on M5StickC or M5stickC Plus
|
||||
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"low_power_mode":2}'`
|
||||
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m '{"lowpowermode":2}'`
|
||||
|
||||
The low power mode can be changed also with a push to button B when the board is processing (top button on M5stickC, M5stickC Plus and middle button of M5stack).
|
||||
+1
-1
@@ -182,7 +182,7 @@ const char* certificate CERT_ATTRIBUTE = R"EOF("
|
||||
# ifndef DEFAULT_LOW_POWER_MODE
|
||||
# define DEFAULT_LOW_POWER_MODE 0
|
||||
# endif
|
||||
int low_power_mode = DEFAULT_LOW_POWER_MODE;
|
||||
int lowpowermode = DEFAULT_LOW_POWER_MODE;
|
||||
#endif
|
||||
|
||||
// WIFI mode, uncomment to force a wifi mode, if not uncommented the ESP will connect without a mode forced
|
||||
|
||||
+9
-9
@@ -57,8 +57,8 @@ void setupM5() {
|
||||
// M5 stack 320*240
|
||||
// M5StickC 160*80
|
||||
// M5Stick LCD not supported
|
||||
Log.notice(F("Low power set to: %d" CR), low_power_mode);
|
||||
switch (low_power_mode) // if LOW POWER the intro is bypassed and the brightness set to sleep brightness
|
||||
Log.notice(F("Low power set to: %d" CR), lowpowermode);
|
||||
switch (lowpowermode) // if LOW POWER the intro is bypassed and the brightness set to sleep brightness
|
||||
{
|
||||
case 0:
|
||||
wakeScreen(NORMAL_LCD_BRIGHTNESS);
|
||||
@@ -106,30 +106,30 @@ void loopM5() {
|
||||
static int previousBtnState;
|
||||
int currentBtnState = digitalRead(SLEEP_BUTTON);
|
||||
if (currentBtnState != previousBtnState && currentBtnState == 0) {
|
||||
int newlow_power_mode = low_power_mode;
|
||||
(low_power_mode == 2) ? newlow_power_mode = 0 : newlow_power_mode = newlow_power_mode + 1;
|
||||
changelow_power_mode(newlow_power_mode);
|
||||
int newlowpowermode = lowpowermode;
|
||||
(lowpowermode == 2) ? newlowpowermode = 0 : newlowpowermode = newlowpowermode + 1;
|
||||
changelowpowermode(newlowpowermode);
|
||||
}
|
||||
previousBtnState = currentBtnState;
|
||||
static int previousLogLevel;
|
||||
switch (Log.getLastMsgLevel()) {
|
||||
case 1:
|
||||
case 2:
|
||||
if (low_power_mode != 2) {
|
||||
if (lowpowermode != 2) {
|
||||
wakeScreen(NORMAL_LCD_BRIGHTNESS);
|
||||
M5.Lcd.fillScreen(TFT_RED); // FATAL, ERROR
|
||||
M5.Lcd.setTextColor(TFT_BLACK, TFT_RED);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (low_power_mode != 2) {
|
||||
if (lowpowermode != 2) {
|
||||
wakeScreen(NORMAL_LCD_BRIGHTNESS);
|
||||
M5.Lcd.fillScreen(TFT_ORANGE); // WARNING
|
||||
M5.Lcd.setTextColor(TFT_BLACK, TFT_ORANGE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (previousLogLevel != Log.getLastMsgLevel() && low_power_mode != 2) {
|
||||
if (previousLogLevel != Log.getLastMsgLevel() && lowpowermode != 2) {
|
||||
wakeScreen(SLEEP_LCD_BRIGHTNESS);
|
||||
M5.Lcd.fillScreen(TFT_WHITE);
|
||||
drawLogo(M5.Lcd.width() * 0.1875, (M5.Lcd.width() / 2) - M5.Lcd.width() * 0.24, M5.Lcd.height() * 0.5, true, true, true, true, true, true);
|
||||
@@ -218,7 +218,7 @@ void drawLogo(int logoSize, int circle1X, int circle1Y, bool circle1, bool circl
|
||||
}
|
||||
|
||||
void M5Display(char* line1, char* line2, char* line3) {
|
||||
if (low_power_mode == 2) digitalWrite(LED_INFO, LED_INFO_ON);
|
||||
if (lowpowermode == 2) digitalWrite(LED_INFO, LED_INFO_ON);
|
||||
wakeScreen(NORMAL_LCD_BRIGHTNESS);
|
||||
M5.Lcd.fillScreen(TFT_WHITE);
|
||||
drawLogo(M5.Lcd.width() * 0.1875, (M5.Lcd.width() / 2) - M5.Lcd.width() * 0.24, M5.Lcd.height() * 0.5, true, true, true, true, true, true);
|
||||
|
||||
+8
-8
@@ -616,7 +616,7 @@ void coreTask(void* pvParameters) {
|
||||
launchDiscovery();
|
||||
dumpDevices();
|
||||
}
|
||||
if (low_power_mode) {
|
||||
if (lowpowermode) {
|
||||
lowPowerESP32();
|
||||
} else {
|
||||
delay(BLEinterval);
|
||||
@@ -651,10 +651,10 @@ void deepSleep(uint64_t time_in_us) {
|
||||
esp_deep_sleep(time_in_us);
|
||||
}
|
||||
|
||||
void changelow_power_mode(int newLowPowerMode) {
|
||||
void changelowpowermode(int newLowPowerMode) {
|
||||
Log.notice(F("Changing LOW POWER mode to: %d" CR), newLowPowerMode);
|
||||
# if defined(ZboardM5STACK) || defined(ZboardM5STICKC) || defined(ZboardM5STICKCP)
|
||||
if (low_power_mode == 2) {
|
||||
if (lowpowermode == 2) {
|
||||
# ifdef ZboardM5STACK
|
||||
M5.Lcd.wakeup();
|
||||
# endif
|
||||
@@ -667,9 +667,9 @@ void changelow_power_mode(int newLowPowerMode) {
|
||||
sprintf(lpm, "%d", newLowPowerMode);
|
||||
M5Display("Changing LOW POWER mode to:", lpm, "");
|
||||
# endif
|
||||
low_power_mode = newLowPowerMode;
|
||||
lowpowermode = newLowPowerMode;
|
||||
preferences.begin(Gateway_Short_Name, false);
|
||||
preferences.putUInt("low_power_mode", low_power_mode);
|
||||
preferences.putUInt("lowpowermode", lowpowermode);
|
||||
preferences.end();
|
||||
}
|
||||
|
||||
@@ -678,7 +678,7 @@ void setupBT() {
|
||||
Log.notice(F("BLE scans number before connect: %d" CR), BLEscanBeforeConnect);
|
||||
Log.notice(F("Publishing only BLE sensors: %T" CR), publishOnlySensors);
|
||||
Log.notice(F("minrssi: %d" CR), minRssi);
|
||||
Log.notice(F("Low Power Mode: %d" CR), low_power_mode);
|
||||
Log.notice(F("Low Power Mode: %d" CR), lowpowermode);
|
||||
|
||||
// we setup a task with priority one to avoid conflict with other gateways
|
||||
xTaskCreatePinnedToCore(
|
||||
@@ -1315,8 +1315,8 @@ void MQTTtoBT(char* topicOri, JsonObject& BTdata) { // json object decoding
|
||||
Log.notice(F("New minrssi: %d" CR), minRssi);
|
||||
}
|
||||
# ifdef ESP32
|
||||
if (BTdata.containsKey("low_power_mode")) {
|
||||
changelow_power_mode((int)BTdata["low_power_mode"]);
|
||||
if (BTdata.containsKey("lowpowermode")) {
|
||||
changelowpowermode((int)BTdata["lowpowermode"]);
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ void RFtoMQTTdiscovery(SIGNAL_SIZE_UL_ULL MQTTvalue) { //on the fly switch creat
|
||||
will_Topic, switchRF[3], switchRF[4],
|
||||
switchRF[5], switchRF[6], switchRF[7],
|
||||
0, "", "", true, subjectMQTTtoRF,
|
||||
"", "", "", "");
|
||||
"", "", "", "", false);
|
||||
}
|
||||
# endif
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ void RF2toMQTTdiscovery(JsonObject& data) {
|
||||
(char*)getUniqueId(switchRF[1], "").c_str(), will_Topic,
|
||||
switchRF[3], switchRF[4], switchRF[5], switchRF[6],
|
||||
switchRF[7], 0, "", "", true, subjectMQTTtoRF2,
|
||||
"", "", "", "");
|
||||
"", "", "", "", false);
|
||||
}
|
||||
# endif
|
||||
|
||||
|
||||
+53
-41
@@ -59,7 +59,7 @@ void createDiscoveryFromList(char* mac, char* sensorList[][8], int sensorCount,
|
||||
will_Topic, sensorList[i][3], sensorList[i][4],
|
||||
sensorList[i][5], sensorList[i][6], sensorList[i][7],
|
||||
0, "", "", false, "",
|
||||
device_name, device_manufacturer, device_model, mac);
|
||||
device_name, device_manufacturer, device_model, mac, false);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
@@ -70,7 +70,7 @@ void createDiscovery(char* sensor_type,
|
||||
char* payload_on, char* payload_off, char* unit_of_meas,
|
||||
int off_delay,
|
||||
char* payload_available, char* payload_not_avalaible, bool gateway_entity, char* cmd_topic,
|
||||
char* device_name, char* device_manufacturer, char* device_model, char* device_mac) {
|
||||
char* device_name, char* device_manufacturer, char* device_model, char* device_mac, bool retainCmd) {
|
||||
const int JSON_MSG_CALC_BUFFER = JSON_OBJECT_SIZE(14) + JSON_OBJECT_SIZE(5) + JSON_ARRAY_SIZE(1);
|
||||
StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonBuffer;
|
||||
JsonObject& sensor = jsonBuffer.createObject();
|
||||
@@ -92,6 +92,8 @@ void createDiscovery(char* sensor_type,
|
||||
|
||||
sensor.set("name", s_name); //name
|
||||
sensor.set("uniq_id", unique_id); //unique_id
|
||||
if (retainCmd)
|
||||
sensor.set("retain", retainCmd); // Retain command
|
||||
if (device_class[0])
|
||||
sensor.set("dev_cla", device_class); //device_class
|
||||
if (value_template[0])
|
||||
@@ -167,7 +169,7 @@ void pubMqttDiscovery() {
|
||||
Gateway_AnnouncementMsg, will_Message, "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
Gateway_AnnouncementMsg, will_Message, true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: Uptime", (char*)getUniqueId("uptime", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -175,7 +177,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "s", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
|
||||
# if defined(ESP8266) || defined(ESP32)
|
||||
@@ -185,7 +187,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "B", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: IP", (char*)getUniqueId("ip", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -193,7 +195,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# ifndef ESP32_ETHERNET
|
||||
createDiscovery("sensor", //set Type
|
||||
@@ -202,7 +204,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "dB", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
# endif
|
||||
@@ -213,7 +215,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac
|
||||
);
|
||||
# if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP)
|
||||
createDiscovery("sensor", //set Type
|
||||
@@ -222,7 +224,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "V", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: Bat current", (char*)getUniqueId("m5batcurrent", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -230,7 +232,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "A", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: Vin voltage", (char*)getUniqueId("m5vinvoltage", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -238,7 +240,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "V", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: Vin current", (char*)getUniqueId("m5vincurrent", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -246,7 +248,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "A", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
# ifdef ZboardM5STACK
|
||||
@@ -256,7 +258,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "%", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("binary_sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: Is Charging", (char*)getUniqueId("m5ischarging", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -264,7 +266,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "%", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("binary_sensor", //set Type
|
||||
subjectSYStoMQTT, "SYS: Is Charge Full", (char*)getUniqueId("m5ischargefull", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -272,7 +274,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "%", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a child device, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
# endif
|
||||
@@ -282,7 +284,7 @@ void pubMqttDiscovery() {
|
||||
"{\"cmd\":\"restart\"}", "", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
Gateway_AnnouncementMsg, will_Message, true, subjectMQTTtoSYSset, //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("switch", //set Type
|
||||
will_Topic, "SYS: Erase credentials", (char*)getUniqueId("erase", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -290,7 +292,7 @@ void pubMqttDiscovery() {
|
||||
"{\"cmd\":\"erase\"}", "", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
Gateway_AnnouncementMsg, will_Message, true, subjectMQTTtoSYSset, //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("switch", //set Type
|
||||
"", "SYS: Auto discovery", (char*)getUniqueId("discovery", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -298,7 +300,7 @@ void pubMqttDiscovery() {
|
||||
"{\"discovery\":true}", "{\"discovery\":false}", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
Gateway_AnnouncementMsg, will_Message, true, subjectMQTTtoSYSset, //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", true // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
|
||||
# ifdef ZsensorBME280
|
||||
@@ -321,7 +323,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, BMEsensor[i][3], BMEsensor[i][4],
|
||||
BMEsensor[i][5], BMEsensor[i][6], BMEsensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -343,7 +345,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, HTUsensor[i][3], HTUsensor[i][4],
|
||||
HTUsensor[i][5], HTUsensor[i][6], HTUsensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -364,7 +366,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, AHTsensor[i][3], AHTsensor[i][4],
|
||||
AHTsensor[i][5], AHTsensor[i][6], AHTsensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -386,7 +388,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, DHTsensor[i][3], DHTsensor[i][4],
|
||||
DHTsensor[i][5], DHTsensor[i][6], DHTsensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -403,7 +405,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, ADCsensor[3], ADCsensor[4],
|
||||
ADCsensor[5], ADCsensor[6], ADCsensor[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -425,7 +427,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, BH1750sensor[i][3], BH1750sensor[i][4],
|
||||
BH1750sensor[i][5], BH1750sensor[i][6], BH1750sensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -448,7 +450,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, TSL2561sensor[i][3], TSL2561sensor[i][4],
|
||||
TSL2561sensor[i][5], TSL2561sensor[i][6], TSL2561sensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -465,7 +467,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, HCSR501sensor[3], HCSR501sensor[4],
|
||||
HCSR501sensor[5], HCSR501sensor[6], HCSR501sensor[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -481,7 +483,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, GPIOInputsensor[3], GPIOInputsensor[4],
|
||||
GPIOInputsensor[5], GPIOInputsensor[6], GPIOInputsensor[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -503,7 +505,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, INA226sensor[i][3], INA226sensor[i][4],
|
||||
INA226sensor[i][5], INA226sensor[i][6], INA226sensor[i][7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
}
|
||||
# endif
|
||||
@@ -525,7 +527,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, actuatorONOFF[3], actuatorONOFF[4],
|
||||
actuatorONOFF[5], actuatorONOFF[6], actuatorONOFF[7],
|
||||
0, "", "", true, subjectMQTTtoONOFF,
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -542,7 +544,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewayRF[3], gatewayRF[4],
|
||||
gatewayRF[5], gatewayRF[6], gatewayRF[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -559,7 +561,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewayRF2[3], gatewayRF2[4],
|
||||
gatewayRF2[5], gatewayRF2[6], gatewayRF2[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -576,7 +578,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewayRFM69[3], gatewayRFM69[4],
|
||||
gatewayRFM69[5], gatewayRFM69[6], gatewayRFM69[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -593,7 +595,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewayLORA[3], gatewayLORA[4],
|
||||
gatewayLORA[5], gatewayLORA[6], gatewayLORA[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -610,7 +612,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewaySRFB[3], gatewaySRFB[4],
|
||||
gatewaySRFB[5], gatewaySRFB[6], gatewaySRFB[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -627,7 +629,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewayPilight[3], gatewayPilight[4],
|
||||
gatewayPilight[5], gatewayPilight[6], gatewayPilight[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -644,7 +646,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gatewayIR[3], gatewayIR[4],
|
||||
gatewayIR[5], gatewayIR[6], gatewayIR[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -661,7 +663,7 @@ void pubMqttDiscovery() {
|
||||
will_Topic, gateway2G[3], gateway2G[4],
|
||||
gateway2G[5], gateway2G[6], gateway2G[7],
|
||||
0, "", "", true, "",
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
|
||||
@@ -672,7 +674,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "ms", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("sensor", //set Type
|
||||
subjectSYStoMQTT, "BT: Connnect every X scan(s)", (char*)getUniqueId("scanbcnct", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -680,7 +682,7 @@ void pubMqttDiscovery() {
|
||||
"", "", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, "", //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("switch", //set Type
|
||||
will_Topic, "BT: Force scan", (char*)getUniqueId("force_scan", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -688,7 +690,7 @@ void pubMqttDiscovery() {
|
||||
"{\"interval\":0}", "", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
Gateway_AnnouncementMsg, will_Message, true, subjectMQTTtoBTset, //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", false // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
createDiscovery("switch", //set Type
|
||||
"", "BT: Publish only sensors", (char*)getUniqueId("only_sensors", "").c_str(), //set state_topic,name,uniqueId
|
||||
@@ -696,8 +698,18 @@ void pubMqttDiscovery() {
|
||||
"{\"onlysensors\":true}", "{\"onlysensors\":false}", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
Gateway_AnnouncementMsg, will_Message, true, subjectMQTTtoBTset, //set,payload_avalaible,payload_not avalaible ,is a gateway entity, command topic
|
||||
"", "", "", "" // device name, device manufacturer, device model, device mac
|
||||
"", "", "", "", true // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# ifdef ESP32
|
||||
createDiscovery("switch", //set Type
|
||||
"", "SYS: Low Power Mode command", (char*)getUniqueId("lowpowermode", "").c_str(), //set state_topic,name,uniqueId
|
||||
"", "", "", //set availability_topic,device_class,value_template,
|
||||
"{\"lowpowermode\":2}", "{\"lowpowermode\":0}", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
"", "", true, subjectMQTTtoBTset, //set,payload_avalaible,payload_not avalaible,is a gateway entity, command topic
|
||||
"", "", "", "", true // device name, device manufacturer, device model, device mac, retain
|
||||
);
|
||||
# endif
|
||||
# endif
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ void pubOneWire_HADiscovery() {
|
||||
jsonTempc,
|
||||
"", "", "°C",
|
||||
0, "", "", true, "",
|
||||
"", "", "", "");
|
||||
"", "", "", "", false);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
|
||||
@@ -37,7 +37,7 @@ extern void createDiscovery(char* sensor_type,
|
||||
char* payload_on, char* payload_off, char* unit_of_meas,
|
||||
int off_delay,
|
||||
char* payload_available, char* payload_not_avalaible, bool gateway_entity, char* command_topic,
|
||||
char* device_name, char* device_manufacturer, char* device_model, char* device_mac);
|
||||
char* device_name, char* device_manufacturer, char* device_model, char* device_mac, bool retainCmd);
|
||||
|
||||
#define discovery_Topic "homeassistant"
|
||||
|
||||
|
||||
+21
-13
@@ -475,7 +475,7 @@ void connectMQTT() {
|
||||
client.setBufferSize(mqtt_max_packet_size);
|
||||
if (client.connect(gateway_name, mqtt_user, mqtt_pass, topic, will_QoS, will_Retain, will_Message)) {
|
||||
#if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP) || defined(ZboardM5STACK)
|
||||
if (low_power_mode < 2)
|
||||
if (lowpowermode < 2)
|
||||
M5Display("MQTT connected", "", "");
|
||||
#endif
|
||||
Log.notice(F("Connected to broker" CR));
|
||||
@@ -553,7 +553,7 @@ void setup() {
|
||||
# endif
|
||||
# elif ESP32
|
||||
preferences.begin(Gateway_Short_Name, false);
|
||||
low_power_mode = preferences.getUInt("low_power_mode", DEFAULT_LOW_POWER_MODE);
|
||||
lowpowermode = preferences.getUInt("lowpowermode", DEFAULT_LOW_POWER_MODE);
|
||||
preferences.end();
|
||||
# if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP) || defined(ZboardM5STACK)
|
||||
setupM5();
|
||||
@@ -873,7 +873,6 @@ void setupTLS() {
|
||||
void setup_wifi() {
|
||||
char manual_wifi_ssid[] = wifi_ssid;
|
||||
char manual_wifi_password[] = wifi_password;
|
||||
|
||||
delay(10);
|
||||
WiFi.mode(WIFI_STA);
|
||||
if (wifiProtocol) forceWifiProtocol();
|
||||
@@ -893,14 +892,15 @@ void setup_wifi() {
|
||||
WiFi.begin(manual_wifi_ssid, manual_wifi_password);
|
||||
# endif
|
||||
|
||||
if (wifi_reconnect_bypass())
|
||||
Log.notice(F("Connected with saved credentials" CR));
|
||||
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Log.trace(F("." CR));
|
||||
failure_number_ntwk++;
|
||||
disconnection_handling(failure_number_ntwk);
|
||||
# if defined(ESP32) && defined(ZgatewayBT)
|
||||
if (failure_number_ntwk > maxConnectionRetryWifi)
|
||||
lowPowerESP32();
|
||||
# endif
|
||||
}
|
||||
Log.notice(F("WiFi ok with manual config credentials" CR));
|
||||
}
|
||||
@@ -1057,7 +1057,7 @@ void setup_wifimanager(bool reset_settings) {
|
||||
if (!wifi_reconnect_bypass()) // if we didn't connect with saved credential we start Wifimanager web portal
|
||||
{
|
||||
# ifdef ESP32
|
||||
if (low_power_mode < 2) {
|
||||
if (lowpowermode < 2) {
|
||||
# if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP) || defined(ZboardM5STACK)
|
||||
M5Display("Connect your phone to WIFI AP:", WifiManager_ssid, WifiManager_password);
|
||||
# endif
|
||||
@@ -1086,7 +1086,7 @@ void setup_wifimanager(bool reset_settings) {
|
||||
}
|
||||
|
||||
# if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP) || defined(ZboardM5STACK)
|
||||
if (low_power_mode < 2)
|
||||
if (lowpowermode < 2)
|
||||
M5Display("Wifi connected", "", "");
|
||||
# endif
|
||||
|
||||
@@ -1243,16 +1243,24 @@ void loop() {
|
||||
failure_number_ntwk = 0;
|
||||
if (client.connected()) {
|
||||
digitalWrite(LED_INFO, LED_INFO_ON);
|
||||
connectedOnce = true;
|
||||
failure_number_ntwk = 0;
|
||||
|
||||
client.loop();
|
||||
|
||||
#ifdef ZmqttDiscovery
|
||||
if (disc)
|
||||
if (!connectedOnce) pubMqttDiscovery(); // at first connection we publish the discovery payloads
|
||||
if (disc) {
|
||||
if (!connectedOnce) {
|
||||
# if defined(ZgatewayBT) && defined(ESP32)
|
||||
stopProcessing(); // Avoid publication concurrency issues on ESP32 BLE
|
||||
# endif
|
||||
pubMqttDiscovery(); // at first connection we publish the discovery payloads
|
||||
# if defined(ZgatewayBT) && defined(ESP32)
|
||||
startProcessing();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
connectedOnce = true;
|
||||
#if defined(ESP8266) || defined(ESP32) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
|
||||
if (now > (timer_sys_measures + (TimeBetweenReadingSYS * 1000)) || !timer_sys_measures) {
|
||||
timer_sys_measures = millis();
|
||||
@@ -1398,7 +1406,7 @@ void stateMeasures() {
|
||||
# endif
|
||||
# ifdef ZgatewayBT
|
||||
# ifdef ESP32
|
||||
SYSdata["lowpowermode"] = (int)low_power_mode;
|
||||
SYSdata["lowpowermode"] = (int)lowpowermode;
|
||||
# endif
|
||||
SYSdata["interval"] = BLEinterval;
|
||||
SYSdata["scanbcnct"] = BLEscanBeforeConnect;
|
||||
|
||||
@@ -57,3 +57,24 @@ build_flags =
|
||||
'-DZactuatorONOFF="ONOFF"'
|
||||
'-DGateway_Name="OpenMQTTGateway_ESP8266_ONOFFRF"'
|
||||
board_build.flash_mode = dout
|
||||
|
||||
[env:esp32-lolin32lite-ble-lp]
|
||||
platform = ${com.esp32_platform}
|
||||
board = lolin32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.ble}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_RECEIVE=22'
|
||||
'-DLED_RECEIVE_ON=0'
|
||||
'-DGateway_Name="OpenMQTTGateway_LOLIN32LITE_LP"'
|
||||
'-DESPWifiManualSetup=true'
|
||||
'-Dwifi_ssid="MyWiFiAP"
|
||||
'-Dwifi_password="MyWiFiAPPassword'
|
||||
'-DMQTT_USER="lolin-esp32"'
|
||||
'-DMQTT_PASS="abcdefghi"'
|
||||
'-DMQTT_SERVER="192.168.1.17"'
|
||||
'-DDEFAULT_LOW_POWER_MODE=2'
|
||||
Reference in new issue
Block a user