Fix all issues found debugging (#285)
This commit is contained in:
parent
9015878c0c
commit
c3673a4dd3
|
@ -81,7 +81,7 @@ int BleFingerprint::get1mRssi()
|
||||||
return _parent->getRefRssi() + DEFAULT_TX;
|
return _parent->getRefRssi() + DEFAULT_TX;
|
||||||
}
|
}
|
||||||
|
|
||||||
BleFingerprint::BleFingerprint(BleFingerprintCollection *parent, BLEAdvertisedDevice *advertisedDevice, float fcmin, float beta, float dcutoff) : oneEuro{OneEuroFilter<float, long long>(1, fcmin, beta, dcutoff)}
|
BleFingerprint::BleFingerprint(BleFingerprintCollection *parent, BLEAdvertisedDevice *advertisedDevice, float fcmin, float beta, float dcutoff) : oneEuro{OneEuroFilter<double, unsigned long>(1, fcmin, beta, dcutoff)}
|
||||||
{
|
{
|
||||||
_parent = parent;
|
_parent = parent;
|
||||||
|
|
||||||
|
|
|
@ -94,10 +94,10 @@ private:
|
||||||
unsigned long firstSeenMillis, lastSeenMillis = 0, lastReportedMillis = 0, lastQryMillis = 0;
|
unsigned long firstSeenMillis, lastSeenMillis = 0, lastReportedMillis = 0, lastQryMillis = 0;
|
||||||
uint16_t mv = 0;
|
uint16_t mv = 0;
|
||||||
|
|
||||||
Reading<Differential<float>> output;
|
Reading<Differential<double>> output;
|
||||||
|
|
||||||
OneEuroFilter<float, long long> oneEuro;
|
OneEuroFilter<double, unsigned long> oneEuro;
|
||||||
DifferentialFilter<float, long long> diffFilter;
|
DifferentialFilter<double, unsigned long> diffFilter;
|
||||||
|
|
||||||
bool filter();
|
bool filter();
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,6 +23,7 @@ lib_deps_external =
|
||||||
bbx10/DNSServer@^1.1.0
|
bbx10/DNSServer@^1.1.0
|
||||||
build_flags =
|
build_flags =
|
||||||
-D CONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED
|
-D CONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED
|
||||||
|
-D CONFIG_NEWLIB_NANO_FORMAT
|
||||||
|
|
||||||
[common_sensors]
|
[common_sensors]
|
||||||
lib_deps_external =
|
lib_deps_external =
|
||||||
|
@ -44,6 +45,21 @@ monitor_filters = esp32_exception_decoder
|
||||||
build_flags =
|
build_flags =
|
||||||
-D FIRMWARE='"esp32"'
|
-D FIRMWARE='"esp32"'
|
||||||
|
|
||||||
|
[env:esp32-debug]
|
||||||
|
build_type=debug
|
||||||
|
platform = ${common_env_data.platform}
|
||||||
|
framework = ${common_env_data.framework}
|
||||||
|
board = esp-wrover-kit
|
||||||
|
debug_tool = esp-prog
|
||||||
|
upload_protocol = esp-prog
|
||||||
|
lib_deps = ${common_env_data.lib_deps_external}
|
||||||
|
board_build.partitions = partitions_singleapp.csv
|
||||||
|
monitor_speed = 115200
|
||||||
|
upload_speed = 1500000
|
||||||
|
monitor_filters = esp32_exception_decoder
|
||||||
|
build_flags =
|
||||||
|
-D FIRMWARE='"esp32-debug"'
|
||||||
|
|
||||||
[env:adafruit-huzzah32]
|
[env:adafruit-huzzah32]
|
||||||
platform = ${common_env_data.platform}
|
platform = ${common_env_data.platform}
|
||||||
framework = ${common_env_data.framework}
|
framework = ${common_env_data.framework}
|
||||||
|
|
39
src/main.cpp
39
src/main.cpp
|
@ -38,11 +38,11 @@ bool sendTelemetry(int totalSeen, int totalFpSeen, int totalFpQueried, int total
|
||||||
|
|
||||||
lastTeleMillis = now;
|
lastTeleMillis = now;
|
||||||
|
|
||||||
StaticJsonDocument<512> tele;
|
doc.clear();
|
||||||
tele["ip"] = localIp;
|
doc["ip"] = localIp;
|
||||||
tele["uptime"] = getUptimeSeconds();
|
doc["uptime"] = getUptimeSeconds();
|
||||||
tele["firm"] = String(FIRMWARE);
|
doc["firm"] = String(FIRMWARE);
|
||||||
tele["rssi"] = WiFi.RSSI();
|
doc["rssi"] = WiFi.RSSI();
|
||||||
#ifdef MACCHINA_A0
|
#ifdef MACCHINA_A0
|
||||||
tele["batt"] = a0_read_batt_mv() / 1000.0f;
|
tele["batt"] = a0_read_batt_mv() / 1000.0f;
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,26 +50,26 @@ bool sendTelemetry(int totalSeen, int totalFpSeen, int totalFpQueried, int total
|
||||||
tele["ver"] = String(VERSION);
|
tele["ver"] = String(VERSION);
|
||||||
#endif
|
#endif
|
||||||
if (totalSeen > 0)
|
if (totalSeen > 0)
|
||||||
tele["adverts"] = totalSeen;
|
doc["adverts"] = totalSeen;
|
||||||
if (totalFpSeen > 0)
|
if (totalFpSeen > 0)
|
||||||
tele["seen"] = totalFpSeen;
|
doc["seen"] = totalFpSeen;
|
||||||
if (totalFpQueried > 0)
|
if (totalFpQueried > 0)
|
||||||
tele["queried"] = totalFpQueried;
|
doc["queried"] = totalFpQueried;
|
||||||
if (totalFpReported > 0)
|
if (totalFpReported > 0)
|
||||||
tele["reported"] = totalFpReported;
|
doc["reported"] = totalFpReported;
|
||||||
|
|
||||||
if (teleFails > 0)
|
if (teleFails > 0)
|
||||||
tele["teleFails"] = teleFails;
|
doc["teleFails"] = teleFails;
|
||||||
if (reconnectTries > 0)
|
if (reconnectTries > 0)
|
||||||
tele["reconnectTries"] = reconnectTries;
|
doc["reconnectTries"] = reconnectTries;
|
||||||
|
|
||||||
tele["freeHeap"] = ESP.getFreeHeap();
|
doc["freeHeap"] = ESP.getFreeHeap();
|
||||||
tele["minFreeHeap"] = ESP.getMinFreeHeap();
|
doc["minFreeHeap"] = ESP.getMinFreeHeap();
|
||||||
tele["maxAllocHeap"] = ESP.getMaxAllocHeap();
|
doc["maxAllocHeap"] = ESP.getMaxAllocHeap();
|
||||||
tele["resetReason"] = resetReason(rtc_get_reset_reason(0));
|
doc["resetReason"] = resetReason(rtc_get_reset_reason(0));
|
||||||
|
|
||||||
char teleMessageBuffer[512];
|
char teleMessageBuffer[512];
|
||||||
serializeJson(tele, teleMessageBuffer);
|
serializeJson(doc, teleMessageBuffer);
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
|
@ -351,7 +351,7 @@ void connectToMqtt()
|
||||||
|
|
||||||
bool reportDevice(BleFingerprint *f)
|
bool reportDevice(BleFingerprint *f)
|
||||||
{
|
{
|
||||||
StaticJsonDocument<512> doc;
|
doc.clear();
|
||||||
if (!f->report(&doc))
|
if (!f->report(&doc))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -407,6 +407,7 @@ void scanForDevices(void *parameter)
|
||||||
while (updateInProgress || !mqttClient.connected())
|
while (updateInProgress || !mqttClient.connected())
|
||||||
delay(1000);
|
delay(1000);
|
||||||
|
|
||||||
|
yield();
|
||||||
auto seen = fingerprints.getCopy();
|
auto seen = fingerprints.getCopy();
|
||||||
|
|
||||||
sendTelemetry(totalSeen, totalFpSeen, totalFpQueried, totalFpReported);
|
sendTelemetry(totalSeen, totalFpSeen, totalFpQueried, totalFpReported);
|
||||||
|
@ -432,6 +433,7 @@ void scanForDevices(void *parameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto reported = 0;
|
||||||
for (auto it = seen.begin(); it != seen.end(); ++it)
|
for (auto it = seen.begin(); it != seen.end(); ++it)
|
||||||
{
|
{
|
||||||
auto f = (*it);
|
auto f = (*it);
|
||||||
|
@ -442,7 +444,10 @@ void scanForDevices(void *parameter)
|
||||||
totalFpSeen++;
|
totalFpSeen++;
|
||||||
}
|
}
|
||||||
if (reportDevice(f))
|
if (reportDevice(f))
|
||||||
|
{
|
||||||
totalFpReported++;
|
totalFpReported++;
|
||||||
|
reported++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
24
src/main.h
24
src/main.h
|
@ -67,6 +67,9 @@ AsyncMqttClient mqttClient;
|
||||||
TimerHandle_t reconnectTimer;
|
TimerHandle_t reconnectTimer;
|
||||||
TaskHandle_t scannerTask;
|
TaskHandle_t scannerTask;
|
||||||
|
|
||||||
|
DynamicJsonDocument doc(2048);
|
||||||
|
char buffer[2048];
|
||||||
|
|
||||||
bool updateInProgress = false;
|
bool updateInProgress = false;
|
||||||
String localIp;
|
String localIp;
|
||||||
unsigned long lastTeleMillis, lastQueryMillis;
|
unsigned long lastTeleMillis, lastQueryMillis;
|
||||||
|
@ -237,6 +240,7 @@ void configureOTA()
|
||||||
|
|
||||||
void firmwareUpdate()
|
void firmwareUpdate()
|
||||||
{
|
{
|
||||||
|
#ifdef FIRMWARE
|
||||||
if (!autoUpdate) return;
|
if (!autoUpdate) return;
|
||||||
static long lastFirmwareCheck = 0;
|
static long lastFirmwareCheck = 0;
|
||||||
long uptime = getUptimeSeconds();
|
long uptime = getUptimeSeconds();
|
||||||
|
@ -291,6 +295,7 @@ void firmwareUpdate()
|
||||||
|
|
||||||
updateInProgress = false;
|
updateInProgress = false;
|
||||||
fingerprints.setDisable(updateInProgress);
|
fingerprints.setDisable(updateInProgress);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void spiffsInit()
|
void spiffsInit()
|
||||||
|
@ -345,6 +350,7 @@ bool sendOnline()
|
||||||
|
|
||||||
void commonDiscovery(JsonDocument *doc)
|
void commonDiscovery(JsonDocument *doc)
|
||||||
{
|
{
|
||||||
|
doc->clear();
|
||||||
auto identifiers = (*doc)["dev"].createNestedArray("ids");
|
auto identifiers = (*doc)["dev"].createNestedArray("ids");
|
||||||
identifiers.add(Sprintf("espresense_%06" PRIx64, ESP.getEfuseMac() >> 24));
|
identifiers.add(Sprintf("espresense_%06" PRIx64, ESP.getEfuseMac() >> 24));
|
||||||
auto connections = (*doc)["dev"].createNestedArray("cns");
|
auto connections = (*doc)["dev"].createNestedArray("cns");
|
||||||
|
@ -356,14 +362,15 @@ void commonDiscovery(JsonDocument *doc)
|
||||||
#ifdef VERSION
|
#ifdef VERSION
|
||||||
(*doc)["dev"]["sw"] = VERSION;
|
(*doc)["dev"]["sw"] = VERSION;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef FIRMWARE
|
||||||
(*doc)["dev"]["mf"] = "ESPresense (" FIRMWARE ")";
|
(*doc)["dev"]["mf"] = "ESPresense (" FIRMWARE ")";
|
||||||
|
#endif
|
||||||
(*doc)["dev"]["cu"] = "http://" + localIp;
|
(*doc)["dev"]["cu"] = "http://" + localIp;
|
||||||
(*doc)["dev"]["mdl"] = ESP.getChipModel();
|
(*doc)["dev"]["mdl"] = ESP.getChipModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sendDiscoveryConnectivity()
|
bool sendDiscoveryConnectivity()
|
||||||
{
|
{
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room;
|
doc["name"] = "ESPresense " + room;
|
||||||
|
@ -383,7 +390,6 @@ bool sendDiscoveryConnectivity()
|
||||||
|
|
||||||
bool sendDiscoveryUptime()
|
bool sendDiscoveryUptime()
|
||||||
{
|
{
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " Uptime";
|
doc["name"] = "ESPresense " + room + " Uptime";
|
||||||
|
@ -403,7 +409,6 @@ bool sendDiscoveryUptime()
|
||||||
|
|
||||||
bool sendDiscoveryFreeMem()
|
bool sendDiscoveryFreeMem()
|
||||||
{
|
{
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " Free Memory";
|
doc["name"] = "ESPresense " + room + " Free Memory";
|
||||||
|
@ -425,7 +430,6 @@ bool sendDiscoveryMotion()
|
||||||
{
|
{
|
||||||
if (!pirPin && !radarPin) return true;
|
if (!pirPin && !radarPin) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " Motion";
|
doc["name"] = "ESPresense " + room + " Motion";
|
||||||
|
@ -446,7 +450,6 @@ bool sendDiscoveryTemperature()
|
||||||
{
|
{
|
||||||
if (!dht11Pin && !dht22Pin) return true;
|
if (!dht11Pin && !dht22Pin) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " Temperature";
|
doc["name"] = "ESPresense " + room + " Temperature";
|
||||||
|
@ -457,7 +460,6 @@ bool sendDiscoveryTemperature()
|
||||||
doc["unit_of_meas"] = "°C";
|
doc["unit_of_meas"] = "°C";
|
||||||
doc["frc_upd"] = true;
|
doc["frc_upd"] = true;
|
||||||
|
|
||||||
char buffer[1200];
|
|
||||||
serializeJson(doc, buffer);
|
serializeJson(doc, buffer);
|
||||||
String discoveryTopic = "homeassistant/sensor/espresense_" + ESPMAC + "/temperature/config";
|
String discoveryTopic = "homeassistant/sensor/espresense_" + ESPMAC + "/temperature/config";
|
||||||
return pub(discoveryTopic.c_str(), 0, true, buffer);
|
return pub(discoveryTopic.c_str(), 0, true, buffer);
|
||||||
|
@ -467,7 +469,6 @@ bool sendDiscoveryHumidity()
|
||||||
{
|
{
|
||||||
if (!dht11Pin && !dht22Pin) return true;
|
if (!dht11Pin && !dht22Pin) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " Humidity";
|
doc["name"] = "ESPresense " + room + " Humidity";
|
||||||
|
@ -477,7 +478,6 @@ bool sendDiscoveryHumidity()
|
||||||
doc["dev_cla"] = "humidity";
|
doc["dev_cla"] = "humidity";
|
||||||
doc["frc_upd"] = true;
|
doc["frc_upd"] = true;
|
||||||
|
|
||||||
char buffer[1200];
|
|
||||||
serializeJson(doc, buffer);
|
serializeJson(doc, buffer);
|
||||||
String discoveryTopic = "homeassistant/sensor/espresense_" + ESPMAC + "/humidity/config";
|
String discoveryTopic = "homeassistant/sensor/espresense_" + ESPMAC + "/humidity/config";
|
||||||
return pub(discoveryTopic.c_str(), 0, true, buffer);
|
return pub(discoveryTopic.c_str(), 0, true, buffer);
|
||||||
|
@ -487,7 +487,6 @@ bool sendDiscoveryLux()
|
||||||
{
|
{
|
||||||
if (BH1750_I2c.isEmpty()) return true;
|
if (BH1750_I2c.isEmpty()) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " Lux";
|
doc["name"] = "ESPresense " + room + " Lux";
|
||||||
|
@ -508,7 +507,6 @@ bool sendDiscoveryBME280Temperature()
|
||||||
{
|
{
|
||||||
if (BME280_I2c.isEmpty()) return true;
|
if (BME280_I2c.isEmpty()) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " BME280 Temperature";
|
doc["name"] = "ESPresense " + room + " BME280 Temperature";
|
||||||
|
@ -536,7 +534,6 @@ bool sendDiscoveryBME280Humidity()
|
||||||
{
|
{
|
||||||
if (BME280_I2c.isEmpty()) return true;
|
if (BME280_I2c.isEmpty()) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " BME280 Humidity";
|
doc["name"] = "ESPresense " + room + " BME280 Humidity";
|
||||||
|
@ -564,7 +561,6 @@ bool sendDiscoveryBME280Pressure()
|
||||||
{
|
{
|
||||||
if (BME280_I2c.isEmpty()) return true;
|
if (BME280_I2c.isEmpty()) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " BME280 Pressure";
|
doc["name"] = "ESPresense " + room + " BME280 Pressure";
|
||||||
|
@ -592,7 +588,6 @@ bool sendDiscoveryTSL2561Lux()
|
||||||
{
|
{
|
||||||
if (TSL2561_I2c.isEmpty()) return true;
|
if (TSL2561_I2c.isEmpty()) return true;
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = "ESPresense " + room + " TSL2561 Lux";
|
doc["name"] = "ESPresense " + room + " TSL2561 Lux";
|
||||||
|
@ -622,7 +617,6 @@ bool sendButtonDiscovery(String name, String entityCategory)
|
||||||
{
|
{
|
||||||
auto slug = slugify(name);
|
auto slug = slugify(name);
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = Sprintf("ESPresense %s %s", room.c_str(), name.c_str());
|
doc["name"] = Sprintf("ESPresense %s %s", room.c_str(), name.c_str());
|
||||||
|
@ -642,7 +636,6 @@ bool sendSwitchDiscovery(String name, String entityCategory)
|
||||||
{
|
{
|
||||||
auto slug = slugify(name);
|
auto slug = slugify(name);
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = Sprintf("ESPresense %s %s", room.c_str(), name.c_str());
|
doc["name"] = Sprintf("ESPresense %s %s", room.c_str(), name.c_str());
|
||||||
|
@ -669,7 +662,6 @@ bool sendNumberDiscovery(String name, String entityCategory)
|
||||||
{
|
{
|
||||||
auto slug = slugify(name);
|
auto slug = slugify(name);
|
||||||
|
|
||||||
DynamicJsonDocument doc(1200);
|
|
||||||
commonDiscovery(&doc);
|
commonDiscovery(&doc);
|
||||||
doc["~"] = roomsTopic;
|
doc["~"] = roomsTopic;
|
||||||
doc["name"] = Sprintf("ESPresense %s %s", room.c_str(), name.c_str());
|
doc["name"] = Sprintf("ESPresense %s %s", room.c_str(), name.c_str());
|
||||||
|
|
Loading…
Reference in New Issue