Fix scheduler first execution (#798)

* Fix scheduler first execution not immediately

* Also update sensor filters
This commit is contained in:
Otto Winter 2019-10-24 21:24:57 +02:00
parent 681dcb51da
commit 6b3c7b0854
No known key found for this signature in database
GPG Key ID: DB66C0BE6013F97E
2 changed files with 3 additions and 3 deletions

View File

@ -259,7 +259,7 @@ def setup_sensor_core_(var, config):
if CONF_ACCURACY_DECIMALS in config:
cg.add(var.set_accuracy_decimals(config[CONF_ACCURACY_DECIMALS]))
cg.add(var.set_force_update(config[CONF_FORCE_UPDATE]))
if CONF_FILTERS in config:
if config.get(CONF_FILTERS): # must exist and not be empty
filters = yield build_filters(config[CONF_FILTERS])
cg.add(var.set_filters(filters))

View File

@ -57,7 +57,7 @@ void HOT Scheduler::set_interval(Component *component, const std::string &name,
item->name = name;
item->type = SchedulerItem::INTERVAL;
item->interval = interval;
item->last_execution = now - offset;
item->last_execution = now - offset - interval;
item->last_execution_major = this->millis_major_;
if (item->last_execution > now)
item->last_execution_major--;
@ -106,7 +106,7 @@ void ICACHE_RAM_ATTR HOT Scheduler::call() {
// Not reached timeout yet, done for this call
break;
uint8_t major = item->last_execution_major;
if (item->last_execution + item->interval < item->last_execution)
if (item->last_execution > now)
major++;
if (major != this->millis_major_)
break;