use nson::{m, Id, Map, TimeStamp};
fn main() {
println!("=== IoT 智能设备数据示例 ===\n");
let sensor_data = create_sensor_reading();
println!("传感器数据:");
println!("{}\n", sensor_data);
let bytes = sensor_data.to_bytes().unwrap();
println!("传输大小: {} 字节\n", bytes.len());
let light_state = create_light_state();
println!("智能灯泡状态:");
println!("{}\n", light_state);
let power_usage = create_power_usage();
println!("电器能耗数据:");
println!("{}\n", power_usage);
let device_config = create_device_config();
println!("设备配置:");
println!("{}\n", device_config);
let decoded = Map::from_bytes(&bytes).unwrap();
assert_eq!(sensor_data, decoded);
println!("✓ 数据完整性验证通过");
}
fn create_sensor_reading() -> Map {
m! {
"device_id": Id::new(),
"device_type": "TempHumiditySensor",
"timestamp": TimeStamp::from(1732694400u64),
"temperature": 2345i16, "humidity": 65u8, "battery_level": 87u8, "signal_strength": -45i8, "firmware_version": "1.2.5",
}
}
fn create_light_state() -> Map {
m! {
"device_id": Id::new(),
"device_type": "SmartBulb",
"on_off": true,
"brightness": 192u8, "color_temp": 4000u16, "power_watts": 9u8, "mode": "normal",
"transition_time": 500u16, }
}
fn create_power_usage() -> Map {
m! {
"device_id": Id::new(),
"device_type": "SmartPlug",
"timestamp": TimeStamp::from(1732694400u64),
"voltage": 220u8, "current": 2500u16, "power": 550u16, "energy_today": 12345u32, "energy_total": 9876543u32, "status": "on",
}
}
fn create_device_config() -> Map {
m! {
"device_id": Id::new(),
"vendor_id": 0x1234u16, "product_id": 0x5678u16, "hardware_version": 2u8, "software_version": "2.1.0",
"max_brightness": 255u8,
"min_brightness": 10u8,
"default_brightness": 128u8,
"auto_off_delay": 3600u16, "enabled_features": vec![
"dimming",
"color_temp",
"schedule",
],
}
}