request all measurements from all PZEM meters

This commit is contained in:
King Kévin 2016-10-09 17:25:33 +02:00
parent ae972c78a2
commit fce8008a68
1 changed files with 13 additions and 8 deletions

21
main.c
View File

@ -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;