diff --git a/main.c b/main.c index 43e3c22..2dd520c 100644 --- a/main.c +++ b/main.c @@ -252,7 +252,7 @@ void main(void) // setup RTC printf("setup internal RTC: "); - rtc_auto_awake(RCC_LSE, 32768-1); // ensure internal RTC is on, uses the 32.678 kHz LSE, and the prescale is set to our tick speed, else update backup registers accordingly (power off the micro-controller for the change to take effect) + rtc_auto_awake(RCC_LSE, 0x8000-1); // ensure internal RTC is on, uses the 32.768 kHz LSE, and the prescale is set to our tick speed, else update backup registers accordingly (power off the micro-controller for the change to take effect) rtc_interrupt_enable(RTC_SEC); // enable RTC interrupt on "seconds" nvic_enable_irq(NVIC_RTC_IRQ); // allow the RTC to interrupt printf("OK\n"); @@ -361,25 +361,26 @@ void main(void) while (true); // unhandled error } if (measurement.valid) { // only show valid measurement + printf("PZEM-004T meter %u ", pzem_meter); switch (measurement.type) { case SENSOR_PZEM_VOLTAGE: - printf("PZEM-004T meter %u voltage: %.01f V\n", pzem_meter, measurement.value.voltage); // display measurement + printf("voltage: %.01f V\n", measurement.value.voltage); // display measurement break; case SENSOR_PZEM_CURRENT: - printf("PZEM-004T meter %u current: %.02f A\n", pzem_meter, measurement.value.current); + printf("current: %.02f A\n", measurement.value.current); break; case SENSOR_PZEM_POWER: - printf("PZEM-004T meter %u power: %u W\n", pzem_meter, measurement.value.power); + printf("power: %u W\n", measurement.value.power); break; case SENSOR_PZEM_ENERGY: - printf("PZEM-004T meter %u energy: %lu Wh\n", pzem_meter, measurement.value.energy); + printf("energy: %lu Wh\n", measurement.value.energy); break; /* not used for this application case SENSOR_PZEM_ADDRESS: - printf("PZEM-004T meter %u address set\n", pzem_id); + printf("address set\n"); break; case SENSOR_PZEM_ALARM: - printf("PZEM-004T meter %u alarm threshold set\n", pzem_id); + printf("alarm threshold set\n"); break; */ default: @@ -415,7 +416,50 @@ void main(void) while (true); // unhandled error } else { sdm120_measurements[sdm120_meter][sdm120_measurement] = measurement; // save measurement - printf("SDM120 meter %u measurement %u: %.01f\n", sdm120_meter, sdm120_measurement, measurement); + printf("SDM120 meter %u ", sdm120_meter); // display measurement + switch (sdm120_measurement) { + case SENSOR_SDM120_VOLTAGE: + printf("voltage: %.01f V\n", measurement); + break; + case SENSOR_SDM120_CURRENT: + printf("current: %.02f A\n", measurement); + break; + case SENSOR_SDM120_POWER_ACTIVE: + printf("power (active): %.0f W\n", measurement); + break; + case SENSOR_SDM120_POWER_APPARENT: + printf("power (apparent): %.0f VA\n", measurement); + break; + case SENSOR_SDM120_POWER_REACTIVE: + printf("power (reactive): %.0f VAr\n", measurement); + break; + case SENSOR_SDM120_POWER_FACTOR: + printf("power factor: %.02f\n", measurement); + break; + case SENSOR_SDM120_FREQUENCY: + printf("frequency: %.02f Hz\n", measurement); + break; + case SENSOR_SDM120_ENERGY_ACTIVE_IMPORT: + printf("energy (import,active): %.02f KWh\n", measurement); + break; + case SENSOR_SDM120_ENERGY_ACTIVE_EXPORT: + printf("energy (export,active): %.02f kWh\n", measurement); + break; + case SENSOR_SDM120_ENERGY_REACTIVE_IMPORT: + printf("energy (import,reactive): %.02f kVArh\n", measurement); + break; + case SENSOR_SDM120_ENERGY_REACTIVE_EXPORT: + printf("energy (export,reactive): %.02f kVArh\n", measurement); + break; + case SENSOR_SDM120_ENERGY_ACTIVE_TOTAL: + printf("energy (active,total): %.02f kWh\n", measurement); + break; + case SENSOR_SDM120_ENERGY_REACTIVE_TOTAL: + printf("energy (reactive,total): %.02f kVArh\n", measurement); + break; + default: + break; + } if (sdm120_measurement query measurements timer_clear_flag(TIM(MAIN_TIMER), TIM_SR_UIF); // clear flag action = true; // action has been performed - printf("query meter measurements\n"); + printf("query meter measurements (%02lu:%02lu:%02lu)\n", ticks_time/(60*60), (ticks_time%(60*60))/60, (ticks_time%60)); // start getting all PZEM-004T measurements from all meters pzem_meter = 0; // reset PZEM meter number pzem_measurement = 0; // reset PZEM measurement index