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