Skip to content

Commit

Permalink
Fix PZEM async task
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieucarbou committed Jun 7, 2024
1 parent cbcf169 commit b9971ac
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 40 deletions.
7 changes: 2 additions & 5 deletions include/YaSolR.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,10 @@ extern Mycila::Task dashboardTask;
extern Mycila::Task trialTask;
#endif

extern Mycila::TaskManager pzemO1TaskManager;
extern Mycila::TaskManager pzemTaskManager;
extern Mycila::Task pzemO1PairingTask;
extern Mycila::Task pzemO1Task;

extern Mycila::TaskManager pzemO2TaskManager;
extern Mycila::Task pzemO2PairingTask;
extern Mycila::Task pzemO2Task;
extern Mycila::Task pzemTask;

extern Mycila::TaskManager routerTaskManager;
extern Mycila::Task relaysTask;
Expand Down
7 changes: 2 additions & 5 deletions src/init/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ Mycila::Task initConfigTask("Init Config", [](void* params) {
mqttPublishTask.setEnabledWhen([]() { return mqtt.isConnected(); });
mqttPublishTask.setInterval(config.get(KEY_MQTT_PUBLISH_INTERVAL).toInt() * Mycila::TaskDuration::SECONDS);
profilerTask.setInterval(10 * Mycila::TaskDuration::SECONDS);
pzemO1Task.setEnabledWhen([]() { return pzemO1.isEnabled() && pzemO1PairingTask.isPaused() && pzemO2PairingTask.isPaused() && Mycila::Grid.isConnected(); });
pzemO2Task.setEnabledWhen([]() { return pzemO2.isEnabled() && pzemO1PairingTask.isPaused() && pzemO2PairingTask.isPaused() && Mycila::Grid.isConnected(); });
pzemTask.setEnabledWhen([]() { return (pzemO1.isEnabled() || pzemO2.isEnabled()) && pzemO1PairingTask.isPaused() && pzemO2PairingTask.isPaused() && Mycila::Grid.isConnected(); });
relaysTask.setInterval(10 * Mycila::TaskDuration::SECONDS);
routerTask.setInterval(200 * Mycila::TaskDuration::MILLISECONDS);
dashboardTask.setEnabledWhen([]() { return ESPConnect.isConnected() && dashboard.hasClient() && !dashboard.isAsyncAccessInProgress(); });
Expand Down Expand Up @@ -103,14 +102,12 @@ Mycila::Task initConfigTask("Init Config", [](void* params) {

// Task Monitor
Mycila::TaskMonitor.begin();
// Mycila::TaskMonitor.addTask("loopTask"); // Arduino
Mycila::TaskMonitor.addTask("async_tcp"); // AsyncTCP
Mycila::TaskMonitor.addTask("mqtt_task"); // MQTT
Mycila::TaskMonitor.addTask(ioTaskManager.getName()); // YaSolR
Mycila::TaskMonitor.addTask(jsyTaskManager.getName()); // YaSolR
Mycila::TaskMonitor.addTask(coreTaskManager.getName()); // YaSolR
Mycila::TaskMonitor.addTask(pzemO1TaskManager.getName()); // YaSolR
Mycila::TaskMonitor.addTask(pzemO2TaskManager.getName()); // YaSolR
Mycila::TaskMonitor.addTask(pzemTaskManager.getName()); // YaSolR
Mycila::TaskMonitor.addTask(routerTaskManager.getName()); // YaSolR

// Display
Expand Down
11 changes: 4 additions & 7 deletions src/init/Core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,10 @@ Mycila::Task initCoreTask("Init Core", [](void* params) {
trialTask.setManager(coreTaskManager);
#endif

// pzemO1TaskManager
pzemO1Task.setManager(pzemO1TaskManager);
pzemO1PairingTask.setManager(pzemO1TaskManager);

// pzemO2TaskManager
pzemO2Task.setManager(pzemO2TaskManager);
pzemO2PairingTask.setManager(pzemO2TaskManager);
// pzemTaskManager
pzemTask.setManager(pzemTaskManager);
pzemO1PairingTask.setManager(pzemTaskManager);
pzemO2PairingTask.setManager(pzemTaskManager);

// routerTaskManager
relaysTask.setManager(routerTaskManager);
Expand Down
20 changes: 9 additions & 11 deletions src/init/Logging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,20 @@ Mycila::Task initLoggingTask("Init Logging", [](void* params) {

if (debug) {
// Enable profiling for some FOREVER tasks
displayTask.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
ds18Task.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
jsyTask.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
mqttPublishTask.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
pzemO1Task.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
pzemO2Task.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
profilerTask.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
routerTask.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
dashboardTask.enableProfiling(8, Mycila::TaskTimeUnit::MILLISECONDS);
displayTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
ds18Task.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
jsyTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
mqttPublishTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
pzemTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
profilerTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
routerTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
dashboardTask.enableProfiling(10, Mycila::TaskTimeUnit::MILLISECONDS);
} else {
displayTask.disableProfiling();
ds18Task.disableProfiling();
jsyTask.disableProfiling();
mqttPublishTask.disableProfiling();
pzemO1Task.disableProfiling();
pzemO2Task.disableProfiling();
pzemTask.disableProfiling();
profilerTask.disableProfiling();
routerTask.disableProfiling();
dashboardTask.disableProfiling();
Expand Down
3 changes: 1 addition & 2 deletions src/init/REST.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ Mycila::Task initRestApiTask("Init REST API", [](void* params) {
ioTaskManager.toJson(root["ioTaskManager"].to<JsonObject>());
jsyTaskManager.toJson(root["jsyTaskManager"].to<JsonObject>());
coreTaskManager.toJson(root["coreTaskManager"].to<JsonObject>());
pzemO1TaskManager.toJson(root["pzemO1TaskManager"].to<JsonObject>());
pzemO2TaskManager.toJson(root["pzemO2TaskManager"].to<JsonObject>());
pzemTaskManager.toJson(root["pzemTaskManager"].to<JsonObject>());
routerTaskManager.toJson(root["routerTaskManager"].to<JsonObject>());

response->setLength();
Expand Down
6 changes: 2 additions & 4 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ Mycila::TrafficLight lights;
Mycila::TaskManager ioTaskManager("I/O");
Mycila::TaskManager jsyTaskManager("JSY");
Mycila::TaskManager coreTaskManager("Core");
Mycila::TaskManager pzemO1TaskManager("PZEM Output 1");
Mycila::TaskManager pzemO2TaskManager("PZEM Output 2");
Mycila::TaskManager pzemTaskManager("PZEM");
Mycila::TaskManager routerTaskManager("Router");

Mycila::RouterOutput output1("output1", dimmerO1, ds18O1, bypassRelayO1, pzemO1);
Expand All @@ -52,8 +51,7 @@ void setup() {
assert( coreTaskManager.asyncStart(1024 * 4, 0, 1, 100, true)); // NOLINT
assert( ioTaskManager.asyncStart(1024 * 5, 0, 1, 100, true)); // NOLINT
assert( jsyTaskManager.asyncStart(1024 * 3, 0, 0, 100, true)); // NOLINT
assert(pzemO1TaskManager.asyncStart(1024 * 3, 0, 0, 100, true)); // NOLINT
assert(pzemO2TaskManager.asyncStart(1024 * 3, 0, 0, 100, true)); // NOLINT
assert( pzemTaskManager.asyncStart(1024 * 3, 0, 0, 100, true)); // NOLINT
assert(routerTaskManager.asyncStart(1024 * 3, 0, 1, 100, true)); // NOLINT

// STARTUP READY!
Expand Down
11 changes: 7 additions & 4 deletions src/tasks/PZEM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@

#define TAG "YASOLR"

Mycila::Task pzemO1Task("PZEM 0x01", [](void* params) { pzemO1.read(); });
Mycila::Task pzemO2Task("PZEM 0x02", [](void* params) { pzemO2.read(); });
Mycila::Task pzemTask("PZEM", [](void* params) {
// PZEM are on the same serial so cannot be read concurrently
pzemO1.read();
pzemO2.read();
});

Mycila::Task pzemO1PairingTask("PZEM 0x01 Pairing", Mycila::TaskType::ONCE, [](void* params) {
Mycila::Task pzemO1PairingTask("PZEM Pairing 0x01", Mycila::TaskType::ONCE, [](void* params) {
logger.info(TAG, "Pairing connected PZEM to Output 1...");
pzemO1.end();
pzemO2.end();
Expand Down Expand Up @@ -39,7 +42,7 @@ Mycila::Task pzemO1PairingTask("PZEM 0x01 Pairing", Mycila::TaskType::ONCE, [](v
}
});

Mycila::Task pzemO2PairingTask("PZEM 0x02 Pairing", Mycila::TaskType::ONCE, [](void* params) {
Mycila::Task pzemO2PairingTask("PZEM Pairing 0x02", Mycila::TaskType::ONCE, [](void* params) {
logger.info(TAG, "Pairing connected PZEM to Output 2...");
pzemO1.end();
pzemO2.end();
Expand Down
3 changes: 1 addition & 2 deletions src/tasks/Profiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ Mycila::Task profilerTask("Profiler", [](void* params) {
ioTaskManager.log();
jsyTaskManager.log();
coreTaskManager.log();
pzemO1TaskManager.log();
pzemO2TaskManager.log();
pzemTaskManager.log();
routerTaskManager.log();
});

0 comments on commit b9971ac

Please sign in to comment.