太陽光発電の遠隔監視システムを簡単につくってみた
Google スプレッドシートにセンサーで取得したバッテリーの電圧や電流を送って可視化するものを作っていきます
太陽光発電の監視システムを簡単に作ってみたお話をまとめてみました。
Google スプレッドシートにセンサーで取得したバッテリーの電圧や電流を送って可視化するものを作っていきます。
定期的に電圧が上がって充電できているのが確認できます!
充電しているときは電流がマイナス側に流れて、放電するときには電流がプラス側に流れます。
必要な部材
- 太陽光パネルとコントローラー
https://www.amazon.co.jp/dp/B075W67Q8C/ref=cm_sw_r_tw_dp_x_Ma8eFb6VZMMYX
- バッテリー
https://www.amazon.co.jp/dp/B01KO9LQJA/ref=cm_sw_r_tw_dp_x_7.7eFb59S42SR
- obniz
https://www.amazon.com/gp/product/B07DD6FK8G/ref=ox_sc_act_title_1?smid=A215VXJW7Q8EUM
- 電圧、電流計測モジュール(絶縁タイプじゃないと配線違う)
https://strawberry-linux.com/catalog/items?code=11226
回路
バッテリを制御する端子の+側に電圧、電流計測するためのセンサーを取り付けます。
センサーをobnizにつなげば準備は完了です!
プログラム
全文は下記のgistにあげてありますので簡単に説明します。
下記の関数によって、センサーから電流値と電圧値がそれぞれ取得できます。
let v = Math.round(await getData(INA226PRC_BUSV_REG)* 0.0125) / 10;
let ma = await getData(INA226PRC_SHUNTV_REG) *1.25;
async function getData(command){
obniz.i2c0.write(0x40, [command]);
let ret = await obniz.i2c0.readWait(0x40, 2);
let data =new DataView(new ArrayBuffer(2));
data.setUint16(0,(ret[0]<<8)|ret[1]);
return data.getInt16(0);
}
下記のコードによってIFTTTに送信するようにしています。
IFTTTの設定項目として、IFTTT_EVENT
とIFTTT_KEY
がありますが、下記の記事を参考に設定してください。IFTTTからスプレッドシートに記載する方法も載っていますので、こちらの設定に沿っていただければと思います。
//送信データ作成
var formData = new FormData();
formData.append("value1", v);
formData.append("value2", ma);
//IFTTTリクエスト
await fetch(
`https://maker.ifttt.com/trigger/IFTTT_EVENT/with/key/IFTTT_KEY`,
{
method: "POST",
mode: "no-cors",
body: formData
}
);
あと上記の記事を参考にobnizのサーバレスイベントを設定すればサーバを用意することなくobnizとセンサーとIFTTTを設定するだけで定期的にポコポコとセンシングしたデータをあげてくれます。めちゃくちゃ便利なので活用しましょう!
コード全体
まとめ
obnizを活用することで簡単にセンシングして、その結果をスプレッドシートにまとめられます。
ほしいと思っていたデータを活用して、今後にぜひ活用してみませんか!?