今回は、Rustのプログラムを書いて、
実際のデータを使って、何秒か一回にデータが送られるようにする。
reqwest
e-tipsmemo.hatenablog.com
前回はreqwestを使って単発で送ったので
今回は昔の電力測定プログラムを合わせるだけ。
fn main() { println!("Hello, world!"); let mut wc = WattChecker::default(); wc.init(); wc.start_measure(); let running = Arc::new(AtomicBool::new(true)); let r = running.clone(); ctrlc::set_handler(move || { r.store(false, Ordering::SeqCst); }).expect("Error setting Ctrl-C handler"); let token = " ************** "; //デバイスのアクセストークンキーを入れる let str_url = format!("http://192.168.0.14:8080/api/v1/{}/telemetry", token); let url = reqwest::Url::parse(&str_url).unwrap(); let client = reqwest::Client::new(); while running.load(Ordering::SeqCst) { match wc.request_measure() { Ok(cmd) => { disp_data(&cmd); let map = parse_data(&cmd); let res = client .post(url.clone()) .json(&map) .send() .unwrap(); println!("{}", res.status()); }, Err(e) => eprintln!("{:?}", e), } thread::sleep(Duration::from_millis(2000)); } println!("stop measuring"); wc.stop_measure(); }
結果
どうやらHTTPのリクエストが遅くなって前の測定から2秒以上かかってしまうことがあるらしいので、
これは非同期に処理しなければいけないのかもしれない。
あとリクエストを投げ続けていると、とまってしまう。
とりあえず次は、thingsboardのログ表示部分を作る。
ラトックシステム Bluetoothワットチェッカー REX-BTWATTCH1
- 出版社/メーカー: ラトックシステム
- 発売日: 2014/07/17
- メディア: Personal Computers
- この商品を含むブログを見る