add set SDM120 configuration

This commit is contained in:
King Kévin 2016-09-17 14:31:56 +02:00
parent 8c9f5afaaf
commit 2b7178284e
2 changed files with 17 additions and 2 deletions

View File

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

View File

@ -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
*/