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;