Crate ruuvi_sensor_protocol
source · [−]Expand description
ruuvi-sensor-protocol implements parser for Ruuvi Sensor Protocols used by the RuuviTag sensor beacon.
Parsing a set of values from manufacturer specific data
Parsing may return an error due to unknown manufacturer id, unsupported data format version or invalid data in value field.
use ruuvi_sensor_protocol::{ParseError, SensorValues};
let id = 0x0499;
let value = [
0x07, 0x17, 0x01, 0x45, 0x35, 0x58, 0x03, 0xE8, 0x04, 0xE7, 0x05, 0xE6, 0x08, 0x86,
];
let result = SensorValues::from_manufacturer_specific_data(id, value);
assert_eq!(result, Err(ParseError::UnsupportedFormatVersion(7)));
A successful parse returns a SensorValues
structure with a set of values.
use ruuvi_sensor_protocol::{
Acceleration, AccelerationVector, BatteryPotential, Humidity, Pressure, SensorValues,
Temperature,
};
let id = 0x0499;
let value = [
0x03, 0x17, 0x01, 0x45, 0x35, 0x58, 0x03, 0xE8, 0x04, 0xE7, 0x05, 0xE6, 0x08, 0x86,
];
let values = SensorValues::from_manufacturer_specific_data(id, value)?;
assert_eq!(values.humidity_as_ppm(), Some(115_000));
assert_eq!(values.temperature_as_millicelsius(), Some(1690));
assert_eq!(values.pressure_as_pascals(), Some(63656));
assert_eq!(values.acceleration_vector_as_milli_g(), Some(AccelerationVector(1000, 1255, 1510)));
assert_eq!(values.battery_potential_as_millivolts(), Some(2182));
See SensorValues
documentation for a description of each value.
Parsing Ruuvi Gateway data formats
This crate also supports parsing MQTT message payloads published by a Ruuvi Gateway.
Deserialization is implemented with Serde, and requires gateway
feature to be enabled. See
gateway
module for documentation, structures, and functions.
Modules
This module implements data formats used by Ruuvi Gateway for relaying RuuviTag advertisements. At the moment, only the data format used in MQTT message payloads is implemented. For a complete description of the payload formats, read Ruuvi Gateway data format documentation.
Structs
a 3-dimensional vector which represents acceleration of each dimension in milli-G
Represents a set of values read from sensors on the device
Enums
Errors which can occur during parsing of the manufacturer specific data