request all measurements from all PZEM meters
This commit is contained in:
parent
ae972c78a2
commit
fce8008a68
21
main.c
21
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;
|
||||
|
Loading…
Reference in New Issue
Block a user