From fce8008a68ec488a211dac94672fb55f48b9de35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Sun, 9 Oct 2016 17:25:33 +0200 Subject: [PATCH] request all measurements from all PZEM meters --- main.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/main.c b/main.c index 70eadfa..036e45d 100644 --- a/main.c +++ b/main.c @@ -306,9 +306,9 @@ void main(void) char c = ' '; // to store received character bool char_flag = false; // a new character has been received - struct sensor_pzem_measurement_t pzem_measurements[3][4]; // PZEM-004T measurements + struct sensor_pzem_measurement_t pzem_measurements[2][4]; // PZEM-004T measurements uint8_t pzem_measurement_i = 0; // PZEM-004T measurement index - sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_VOLTAGE); // start measurement + sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_VOLTAGE); // start measurement (based on base address plus meter number, and voltage is the first measurement) while (true) { // infinite loop iwdg_reset(); // kick the dog @@ -350,22 +350,27 @@ void main(void) if (measurement.valid) { // only show valid measurement switch (measurement.type) { case SENSOR_PZEM_VOLTAGE: - printf("voltage: %.01f V\n", measurement.value.voltage); // display measurement + printf("PZEM-004T meter %u voltage: %.01f V\n", pzem_measurement_i, measurement.value.voltage); // display measurement + sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_CURRENT); // request next measurement break; case SENSOR_PZEM_CURRENT: - printf("current: %.02f A\n", measurement.value.current); + printf("PZEM-004T meter %u current: %.02f A\n", pzem_measurement_i, measurement.value.current); + sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_POWER); // request next measurement break; case SENSOR_PZEM_POWER: - printf("power: %.00f W\n", measurement.value.power); + printf("PZEM-004T meter %u power: %.00f W\n", pzem_measurement_i, measurement.value.power); + sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_ENERGY); // request next measurement break; case SENSOR_PZEM_ENERGY: - printf("energy: %lu Wh\n", measurement.value.energy); + printf("PZEM-004T meter %u energy: %lu Wh\n", pzem_measurement_i, measurement.value.energy); + pzem_measurement_i++; // got to next meter (sending to none existing meter will just end in void) + sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_VOLTAGE); // request next measurement break; case SENSOR_PZEM_ADDRESS: - printf("address set\n"); + printf("PZEM-004T meter %u address set\n", pzem_measurement_i); break; case SENSOR_PZEM_ALARM: - printf("alarm threshold set\n"); + printf("PZEM-004T meter %u alarm threshold set\n", pzem_measurement_i); break; default: break;