「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:番外編①LINE通知機能

あれ、なんかIoTっぽいことしてなくない?

なんかこう、IoTってスマホやパソコンから指示を出したらその結果が通知されたり、家電が動いたりするっていうイメージがあるじゃないですか?(あると思います)

「HAGUKUMU」ではその辺の機能ってないなーと思ったので、番外編①では、LINE Notifyを使って水耕栽培の現在の状況を知らせる機能を作る。

 

実装してみる

実装に当たって必要なのはLINE Notifyの登録とGASでプログラムすること。

まあ大体のやり方はここの記事にあるのでそれを見ながら実装する。

 

function lineAssigned() {  
  //最終行の番号を取得する
  var lastRow = dsheet.getLastRow();
   
  //最新情報を取得
  var table = dsheet.getRange(lastRow,1,1,D_DUM).getValues();
  
  array = {
  "date":table[0][0],
  "temp":table[0][1],
  "humi":table[0][2],
  "weth":table[0][3],
  "lat" :table[0][4],  
  "lon" :table[0][5],
  "mage":table[0][6],
  "sunr":table[0][7],
  "suns":table[0][8],
  "batt":table[0][9],
  "img" :table[0][10],
  "gimg":table[0][11],
  "heit":table[0][12],
  "lswh":table[0][13],
  }
 //LINEで送信したい文章
  var content = '\n\n川上ちりやが今の状況をおしらせします!' 
              + '\n' + array.date + 'の環境情報は以下になります。'
              + '\n気温:'       + array.temp
              + '\n湿度:'       + array.humi
              + '\n天気:'       + array.weth
              + '\n植物の高さ:'    + array.heit + 'cm'
              + '\n日出:'       + array.sunr
              + '\n日没:'       + array.suns
              + '\n月齢:'       + array.mage
              + '\nライトON/OFF:'   + array.lswh + ' (ライトは19時以降点灯、6時に消灯)'
              + '\nMUバッテリー残量:' + array.batt              
              + '\n緯度:'       + array.lat
              + '\n経度:'       + array.lon;
 
  sendHttpPost_lineAssigned(content);
  
  if (array.heit == 'err'){
    errmsg = '\n\n植物の高さの数値が異常です。以下の要因が考えられます' +
              '\n\n・植物が植えられていない' +
              '\n・植物が計測可能なサイズではない' +
              '\n・サーボモーターの異常' +
              '\n・サーボモータのジャンパピンが刺さっていない';
    sendHttpPost_lineAssigned(errmsg);
  }
}
  
function cron_lineAssigned() {
  var now = new Date();
  
  lineAssigned(now);
}


// LINE Notifyへの通知
function sendHttpPost_lineAssigned(content){
  //LINE Notifyのトークンを入力してください
  var token = ["yout_token"];
  var options =
   {
     "method"  : "post",
     "payload" : "message=" + content,
     "headers" : {"Authorization" : "Bearer "+ token}
   };
 
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

こんなかんじ。

 

それではご覧いただこう

f:id:udonnamerou:20200814113449g:plain


できた。

ちなみに高さが計測できていない場合は

f:id:udonnamerou:20200814121603p:plain

このようにエラー通知してくれる。

前回:⑫完成

次回:番外編②ライト操作機能