This commit is contained in:
2020-11-17 15:38:11 +01:00
parent 8e5ece822c
commit e3c16ef712
4 changed files with 199 additions and 157 deletions

View File

@ -32,159 +32,6 @@ void my_errorHandler() {
}
static uint8_t numOfDevices = 8;
static t_mbusDevice devices[] = {
{
.deviceName = "Total Power",
.address = 80,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 17 },
{ .label = "", .index = 0 },
{ .label = "", .index = 0 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
},
{
.deviceName = "Computer Power",
.address = 85,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
},
{
.deviceName = "Dryer Power",
.address = 81,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
},
{
.deviceName = "Laundry Power",
.address = 82,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
},
{
.deviceName = "Dishwasher Power",
.address = 83,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
},
{
.deviceName = "Light Power",
.address = 84,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 15,
.delay = 0,
.waiting = false
},
{
.deviceName = "Freezer Power",
.address = 86,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
},
{
.deviceName = "Fridge Power",
.address = 87,
.consideredField = {
{ .label = "energy", .index = 0 },
{ .label = "power", .index = 4 },
{ .label = "voltage", .index = 2 },
{ .label = "current", .index = 3 }
},
.requests = 0,
.failures = 0,
.period = 60,
.delay = 0,
.waiting = false
}
};
void triggerMBusRequest(void *handle) {
static uint8_t deviceIndex = 0;
if (devices[deviceIndex].waiting) {
e_mbusCommRequestResult r = mbusCommRequest(&(devices[deviceIndex]));
if (r == MBCRR_TRIGGERED) {
devices[deviceIndex].waiting = false;
deviceIndex++;
}
} else {
deviceIndex++;
}
if (deviceIndex >= numOfDevices) {
deviceIndex = 0;
}
}
void scheduleMBusRequest(void *handle) {
for (uint8_t i = 0; i < numOfDevices; i++) {
devices[i].delay -= 1;
if (devices[i].delay <= 0) {
devices[i].delay = devices[i].period;
devices[i].waiting = true;
coloredMsg(LOG_GREEN, false, "*** Scheduled: %s", devices[i].deviceName);
}
}
}
void my_setup_2() {
show(LED_RED, OFF);
show(LED_GREEN, BLINK);
@ -200,8 +47,7 @@ void my_setup_2() {
frontendInit();
frontendSetThreshold(240);
schAdd(scheduleMBusRequest, NULL, 0, 1000);
schAdd(triggerMBusRequest, NULL, 0, 100);
mbusCommInit();
}
void my_loop() {