BlueZ D-Bus Thermometer API description **************************************** Santiago Carot-Nemesio Health Thermometer Profile hierarchy ===================================== Service org.bluez Interface org.bluez.Thermometer Object path [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX Methods void SetProperty(string name, variant value) Changes the value of the specified property. Only read-write properties can be changed. On success this will emit a PropertyChanged signal. Possible Errors: org.bluez.Error.InvalidArguments dict GetProperties() Returns all properties for the interface. See the Properties section for the available properties. RegisterWatcher(object agent) Registers a watcher to monitor scanned measurements. This agent will be notified about final temperature measurements. Possible Errors: org.bluez.Error.InvalidArguments UnregisterWatcher(object agent) Unregisters a watcher. Final and intermediate temperatures won't be notified to this agent any more. Possible Errors: org.bluez.Error.InvalidArguments org.bluez.Error.NotFound EnableIntermediateMeasurement(object agent) Enables intermediate measurement notifications for this agent if the thermometer supports it. Possible Errors: org.bluez.Error.InvalidArguments org.bluez.Error.NotSupported DisableIntermediateMeasurement(object agent) Disables intermediate measurement notifications for this agent. It will disable notifications in the thermometer when the last agent removes the watcher for intermediate measurements. Possible Errors: org.bluez.Error.InvalidArguments org.bluez.Error.NotFound Signals PropertyChanged(string name, variant value) This signal indicates a changed value of the given property. Properties boolean Intermediate [readonly] True if the thermometer supports intermediate measurement notifications. uint16 Interval (optional) [readwrite] The Measurement Interval defines the time (in seconds) between measurements. This interval is not related to the intermediate measurements and must be defined into a valid range. Setting it to zero means that no periodic measurements will be taken. uint16 Maximum (optional) [readonly] Defines the maximum value allowed for the interval between periodic measurements. uint16 Minimum (optional) [readonly] Defines the minimum value allowed for the interval between periodic measurements. Health Thermometer Watcher hierarchy ==================================== Service unique name Interface org.bluez.ThermometerWatcher Object path freely definable Methods void MeasurementReceived(dict measure) This callback gets called when a measure has been scanned in the thermometer. The Time entry in the dict will be only present if the device supports storing of data. The time value is expressed in seconds since epoch. The value represented is (mantissa) x (10**exponent) See foot note for special values when treating with health devices. The Type entry is only present if the measurement type is known. Otherwise, it is undefined. Dict is defined as below: { "Exponent" : int8, "Mantissa" : int32, "Unit" : ("Celsius" or "Fahrenheit"), "Time" : uint64, "Type" : ("Armpit", "Body", "Ear", "Finger", "Intestines", "Mouth", "Rectum", "Toe", "Tympanum"), "Measurement" : ("Final" or "Intermediate"), } For special cases, the exponent shall always be zero and the mantissa should be one of following values: NRes = -(2**23) NaN = +(2**23-1) INFINITY = (2**23-2) -INFINITY = -(2**23-2)