diff --git a/lib/sensor_sdm120.c b/lib/sensor_sdm120.c index 79157a8..af92f3f 100644 --- a/lib/sensor_sdm120.c +++ b/lib/sensor_sdm120.c @@ -117,7 +117,7 @@ void sensor_sdm120_setup(void) gpio_clear(USART_PORT(SENSOR_SDM120_USART), USART_PIN_RX(SENSOR_SDM120_USART)); // pull down to avoid noise when not connected (it will be set low by RS485 chip when RO is enabled) // setup USART parameters for electricity meter - usart_set_baudrate(USART(SENSOR_SDM120_USART), 2400); // get baud rate by scrolling through the measurements on the electricity meter's screen (default 2400) + usart_set_baudrate(USART(SENSOR_SDM120_USART), 9600); // get baud rate by scrolling through the measurements on the electricity meter's screen (default 2400) usart_set_databits(USART(SENSOR_SDM120_USART), 8); usart_set_stopbits(USART(SENSOR_SDM120_USART), USART_STOPBITS_1); usart_set_mode(USART(SENSOR_SDM120_USART), USART_MODE_TX_RX); @@ -212,6 +212,14 @@ bool sensor_sdm120_configuration_request(uint8_t meter_id, enum sensor_sdm120_co return sensor_sdm120_transmit_request(meter_id, 0x03, register_holding[type], 0); } +bool sensor_sdm120_configuration_set(uint8_t meter_id, enum sensor_sdm120_configuration_type_t type, float value) +{ + if (type>=SENSOR_SDM120_CONFIGURATION_MAX) { // invalid type + return false; + } + return sensor_sdm120_transmit_request(meter_id, 0x10, register_holding[type], value); +} + float sensor_sdm120_measurement_decode(void) { float measurement = NAN; // decoded measurement to return (invalid in the beginning) diff --git a/lib/sensor_sdm120.h b/lib/sensor_sdm120.h index f29e0fc..828c9d4 100644 --- a/lib/sensor_sdm120.h +++ b/lib/sensor_sdm120.h @@ -64,10 +64,17 @@ void sensor_sdm120_setup(void); bool sensor_sdm120_measurement_request(uint8_t meter_id, enum sensor_sdm120_measurement_type_t type); /** request configuration from electricity meter * @param[in] mater_id electricity meter device ID - * @param[in] type configuration: type to request + * @param[in] type configuration type to request * @return if transmission started */ bool sensor_sdm120_configuration_request(uint8_t meter_id, enum sensor_sdm120_configuration_type_t type); +/** set configuration in electricity meter + * @param[in] mater_id electricity meter device ID + * @param[in] type configuration type to set + * @param[in] value configuration value to set + * @return if transmission started + */ +bool sensor_sdm120_configuration_set(uint8_t meter_id, enum sensor_sdm120_configuration_type_t type, float value); /** decode received measurement * @return decoded measurement or number of registers written, NaN if message has error or no new measurement has been received, infinity if an error or unknown message has been received */