Voltmeter object implementation for LwM2M client using Wakaama.
More...
Voltmeter object implementation for LwM2M client using Wakaama.
- Warning
- This feature is experimental!
This implements the LwM2M Voltage Sensor object (ID 3316) as specified in the LwM2M registry. This IPSO object should be used with voltmeter sensor to report measured voltage between two points. It also provides resources for minimum and maximum measured values, as well as the minimum and maximum range that can be measured by the sensor. An example measurement unit is volts.
The sensor value can be updated by the application using the lwm2m_object_voltage_update_value function, or polled when required if a callback is registered upon object instantiation via lwm2m_obj_voltage_args_t::read_cb.
To use this object add USEMODULE += wakaama_objects_voltage
to the application Makefile.
Resources
For an XML description of the object see https://raw.githubusercontent.com/OpenMobileAlliance/lwm2m-registry/prod/version_history/3316-1_0.xml
This object is based on the IPSO Sensor base object, therefore it shares the same resources. Note that the optional resources "Current Calibration" (ID 5821) and "Application Type" (ID 5750) are not implemented.
Usage
- Initialize the LwM2M object with an initialized client pointer.
lwm2m_object_t * lwm2m_object_voltage_init(lwm2m_client_data_t *client_data)
Initialize the Voltage Sensor object handle.
- Create a new instance of the object with a given configuration (lwm2m_obj_voltage_args_t). Here, you can decide the way of updating the sensor values: polling or pushing. In this case, we register a callback function that is called whenever the sensor value is read.
int _read_cb(void *arg, int16_t *value)
{
(void)arg;
*value = 100;
return 0;
}
.max_range_value = 200.0,
.units = "V",
.units_len = sizeof("V") - 1,
.instance_id = 0,
.read_cb = _read_cb,
.read_cb_arg = NULL
};
if (res < 0) {
puts("Could not create voltage object instance");
}
int32_t lwm2m_object_voltage_instance_create(const lwm2m_obj_voltage_args_t *args)
Create a new Voltage Sensor instance.
Arguments for the creation of an object based on the IPSO Sensor Base object instance.
int16_t min_range_value
Minimum value that can be measured by the sensor.
- You can now update the sensor values using the lwm2m_object_voltage_update_value function.
uint16_t instance_id = (uint16_t)res;
void lwm2m_object_voltage_update_value(const lwm2m_client_data_t *client_data, uint16_t instance_id, int16_t value)
Update the value of the voltage sensor and trigger a notification to the observing servers,...
◆ LWM2M_VOLTAGE_OBJECT_ID
#define LWM2M_VOLTAGE_OBJECT_ID 3316 |
LwM2M Voltage Sensor object ID.
Definition at line 120 of file voltage.h.
◆ lwm2m_obj_voltage_args_t
Arguments for the creation of a Voltage Sensor object instance.
Definition at line 125 of file voltage.h.
◆ lwm2m_object_voltage_init()
Initialize the Voltage Sensor object handle.
- Parameters
-
[in] | client_data | Pointer to the LwM2M client data. |
- Returns
- Pointer to the global handle of the Voltage Sensor object.
◆ lwm2m_object_voltage_instance_create()
Create a new Voltage Sensor instance.
- Parameters
-
[in] | args | Initialize structure with the parameter for the instance. May not be NULL. |
- Returns
- > 0 value representing the instance ID if the instance was created successfully.
-
<0 otherwise
◆ lwm2m_object_voltage_update_value()
void lwm2m_object_voltage_update_value |
( |
const lwm2m_client_data_t * |
client_data, |
|
|
uint16_t |
instance_id, |
|
|
int16_t |
value |
|
) |
| |
Update the value of the voltage sensor and trigger a notification to the observing servers, if any.
- Parameters
-
[in] | client_data | Pointer to the LwM2M client. |
[in] | instance_id | ID of the instance to update. |
[in] | value | New value for the sensor. |