該板條箱是CAYENNE低功率有效載荷(LPP)API的端口,用於Rust編程語言。它提供了一種通過LPWAN網絡(例如Lorawan)發送數據的簡便方法。 Cayenne LPP符合有效載荷尺寸限制,可以將其降低至11個字節,並允許設備一次發送多個傳感器數據。它的重點在於嵌入式系統,因此它使用“ no_std”屬性僅鏈接核心板岩而不是std-crate。它也不取決於任何其他板條箱。
此外,還可以以不同幀發送不同的傳感器數據。為此,可以使用數據的通道值。
有效負載與事物網絡(TTN)控制台的集成有效載荷格式兼容。它可以啟用用於下載或設備的上行鏈路。有關TTN的Cayenne LPP有效載荷格式的更多信息,請參見此處。
Cayenne LPP的原始C ++版本可以在此處找到。
以下示例將顯示如何向Cayenne LPP有效載荷添加兩種數據類型,一種數字輸入值和一個溫度值。由於沒有可用的內存分配器(“ no_std”),因此API需要一個緩衝區,它將被其填充。
要創建具有有效載荷確切大小的緩衝區,請使用API提供的不同數據類型的大小常數。要添加兩個數字輸入,只需將大小變量乘以2,然後將此大小用於緩衝區初始化。緩衝區需要可變,因為它將由API修改。請注意,不必精確地定義緩衝區的大小,它只需要更大或等於添加到其添加的數據類型的大小。因此,可以使用不同的數據類型重複使用緩衝區。 cayennelpp :: reset()函數可用於重置結構。
緩衝區初始化後,只需創建一個新的Cayennelpp API的新實例,然後使用可用的API函數將數據類型添加到有效負載中。
添加所有值後,可以通過調用cayennelpp :: payload_slice()函數來檢索緩衝區的切片。然後可以將切片用於通過外部API發送數據。
fn main ( ) {
// create the buffer for a digital input and a temperature data type
let mut buffer : [ u8 ; LPP_DIGITAL_INPUT_SIZE + LPP_TEMPERATURE_SIZE ] = [ 0 ; LPP_DIGITAL_INPUT_SIZE + LPP_TEMPERATURE_SIZE ] ;
// create a new instance of CayenneLPP struct and initialize it with the buffer
let mut lpp = CayenneLPP :: new ( & mut buffer ) ;
// add a digital input with the value 0x55
lpp . add_digital_input ( 3 , 0x55 ) . unwrap ( ) ;
// add a temperature value of 12.3°C
lpp . add_temperature ( 5 , 12.3 ) . unwrap ( ) ;
// retrieve the payload slice to be able to send the payload via an external API
let cayenne_lpp_payload = lpp . payload_slice ( ) ;
// ... send the data via an external API
// reset the API and start from the beginning of the buffer
lpp . reset ( ) ;
// add new values...
lpp . add_digital_input ( 3 , 0xAA ) . unwrap ( ) ;
lpp . add_temperature ( 5 , 32.1 ) . unwrap ( ) ;
} 當前狀態的API應該非常穩定。目前,它僅支持no_std ,但也可以支持更易於使用API進行std 。
但是,如果您有任何備註或想添加一些功能,請隨時開始討論或發送PR,但不要忘記添加單元測試和 /或集成測試,如果您希望它將其合併到倉庫中。
板條箱根據麻省理工學院許可發布。有關更多信息,請參見許可證。