e-tipsmemo.hatenablog.com
前回設定したThingsboardを
以前構築した録画サーバーの電力測定とつなげることを考える。
Thingsboardにデータを送るためのAPIドキュメント
ThingsBoard API reference | ThingsBoard
今回はデータを受ける側を準備して、データを投げる側はあまり深入りせずに
最もシンプルな方法で行く。
adminを変更する
デモモードでインストールしなくてもsysadminのアカウントは最初から存在する。
sysadminで入って、右上のプロフィールからパスワードを変更する。
テナントを作ってから、テナントのユーザーアカウントを作る。
この時アクティベーションURLというのが出てくるので、そのURLにログインすると
今作ったテナントアカウントのパスワードを設定することができる。
そして、テナントでログインしなおす。
以下の動画を参考にやっていく。
Getting Started | ThingsBoard
以降はテナントアカウントでログインしている。
紐づけする
アセットの画面からプロパティを変更する画面で「関係」タブで設定する。
先ほど定義したものをここで紐づける。
Thingsboardにデータを投げる
とりあえずコマンドラインからcurlで投げたデータがThingsboardの画面に出るかを確認する。
ACCESS_TOKENはデバイス画面からコピーする
以下のjsonを送る
{ "time":2019/01/14 02:50:07, "voltage":102.396, "current":108.74219, "wattage":5.335 }
timeはStringで送らないとダメだった
curl -v -X POST -d "{\"time\":\"2019/01/14 02:50:07\", \"voltage\":102.396, \"current\":108.74219, \"wattage\":5.335}" http://192.168.0.14:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
これはOK
ワットチェッカーのデータを投げる
reqwestを使った。
extern crate reqwest; use std::collections::HashMap; use reqwest::*; fn main() { let time = "2019/01/14 02:50:07"; let v = "102"; let c = "108.9"; let w = "5"; let token = " ^^^^^^^^^^^^^ "; //アクセストークンを書く。 let str_url = format!("http://192.168.0.14:8080/api/v1/{}/telemetry", token); let url = Url::parse(&str_url).unwrap(); let mut map = HashMap::new(); map.insert("time", time); map.insert("voltage", v); map.insert("current", c); map.insert("wattage", w); let client = reqwest::Client::new(); let mut res = client .post(url) .json(&map) .send() .unwrap(); println!("{}", res.status()); }
とりあえずこれで行けたので
次は、前にRustで作ったワットチェッカーにBluetooth経由で取りに行くプログラムを改造する。
時間があればRustのMQTT crateなどを利用して別のプロトコルでも行えることを試してみようかと思う。
ラトックシステム Bluetoothワットチェッカー REX-BTWATTCH1
- 出版社/メーカー: ラトックシステム
- 発売日: 2014/07/17
- メディア: Personal Computers
- この商品を含むブログを見る
- 作者: κeen,河野達也,小松礼人
- 出版社/メーカー: 技術評論社
- 発売日: 2019/05/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る