Better metrics.
This commit is contained in:
@ -26,31 +26,46 @@ void CycleEffect::changeEffect() {
|
||||
LOGln("CycleEffect * Changing effect from #%d to #%d", effect_id, new_id);
|
||||
delay(25);
|
||||
|
||||
if (effect) delete effect;
|
||||
String old_effect_name = String("UNKNOWN");
|
||||
if (effect) {
|
||||
old_effect_name = effect->get_name();
|
||||
delete effect;
|
||||
}
|
||||
|
||||
int16_t diff;
|
||||
int16_t diff = 0;
|
||||
uint16_t old_heap = _heap_free;
|
||||
_heap_free = ESP.getFreeHeap();
|
||||
if (old_heap) {
|
||||
// diff positive = More heap used (baad)
|
||||
// diff negative = Less heap used (good-ish)
|
||||
diff = old_heap - _heap_free;
|
||||
LOGln("CycleEffect * Heap usage: #%d,%d,%+d", effect_id, _heap_free, diff);
|
||||
LOGln("CycleEffect * Heap usage: #%d,%s,%d,%+d", effect_id, old_effect_name.c_str(), _heap_free, diff);
|
||||
}
|
||||
|
||||
delay(25);
|
||||
LOGln("CycleEffect * Searching for new effect #%d", new_id);
|
||||
uint8_t count = 0;
|
||||
EffectEntry* e = nullptr;
|
||||
for (uint8_t i=0; i<effects_size; i++) {
|
||||
if (effects[i].use_in_cycle) {
|
||||
if (count == new_id) {
|
||||
effect = effects[i].create();
|
||||
e = &effects[i];
|
||||
effect = e->create();
|
||||
break;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (effect) {
|
||||
if (e) {
|
||||
#ifdef MQTT_REPORT_METRICS
|
||||
e->heap_change_sum += diff;
|
||||
e->run_count++;
|
||||
LOGln("CycleEffect * Last effect stats: name:%s, runs:%d, total_change:%d", old_effect_name.c_str(), e->run_count, e->heap_change_sum);
|
||||
String topic = "metrics/effects/";
|
||||
topic.concat(old_effect_name);
|
||||
String message = String("runs:") + e->run_count + ", total_heap_change:" + e->heap_change_sum;
|
||||
mqtt_publish(topic.c_str(), message.c_str(), true);
|
||||
#endif
|
||||
effect_id = new_id;
|
||||
effectSince = millis();
|
||||
LOGln("CycleEffect * Effect %s found", effect->get_name().c_str());
|
||||
|
Reference in New Issue
Block a user