【IFTTT×라즈파이】체중을 기록+그래프화한 것을 LINE 통지할 수 있는 시스템을 만든 이야기(2/2)

소개



본 시스템을 만들기에 이른 동기, 필요한 기기 등은 마지막 기사 을 부디!
전회는 Raspberry Pi측의 구현을 소개해 갔습니다만, 이번은 Raspberry Pi 이외인 IFTTT, GoogleSpreadSheet측을 소개해 갑니다.

구현(IFTTT, GoogleSpreadSheet)



IFTTT 측



6. IFTTT가 Google Spread Sheet의 체중표에 체중값을 추가



Raspberry Pi에서 value1로 날짜 정보, value2에 체중치가 보내지기 때문에, 그것을 Webhook에서 받고 그대로 Google Spread Sheet에 씁니다. IFTTT 측의 등록 내용은 다음과 같은 느낌. 미리 Google Spreadsheet에 "Spreadsheet name"에 해당하는 시트를 준비해야합니다.



GoogleSpreadSheet 쪽



이쪽이지만 GoogleSpreadSheet의 gs(Google의 매크로)를 이용합니다.

7. GoogleSpreadSheet가 체중표에서 체중 추이 그래프를 만듭니다.



그래프 설정은 아래와 같습니다. 아래와 같은 설정으로 하면, 데이터를 추가하면 자동적으로 그래프도 갱신되게 됩니다. 그래프의 데이터 범위는 1153행이지만, 이것은 GoogleSpreadSheet의 사양상의 한계의 행수로 하고 있습니다(더 스마트한 지정의 방법이 있을 것 같다).


8. GoogleSpreadSheet가 체중 추이 그래프를 LINE에 알립니다.



gs를 이용하여 다음과 같은 흐름으로 처리해 갑니다. gs의 트리거는 시트의 변경입니다.

① 7.에서 작성한 시트의 취득
② LINE에 통지하는 메시지 작성
조금의 궁리로서 전회 기록시와의 차이를 내도록(듯이) 하고 있습니다.
③ LINE에 통지
function main() {
  sendGraphImage();
}

function sendGraphImage(){
  /* シートの取得 */
  var ss = SpreadsheetApp.openById('【スプレッドシートのID】')
  var sheet=ss.getSheetByName('sheet1');
  var charts = sheet.getCharts();

  /* POSTするメッセージと画像を作成 */
  var last_row = sheet.getLastRow()

  var current_weight = sheet.getRange(last_row, 2).getValue();
  var before_weight = sheet.getRange(last_row - 1, 2).getValue();

  var msg_current_weight = "\n本日の体重は" + current_weight + "でした。\n";
  var msg_compare_before = "前回との差は" + Utilities.formatString("%+.1f", (current_weight - before_weight)) + "です。";

  var post_msg = msg_current_weight + msg_compare_before;
  Logger.log(post_msg);

  var chartImage = charts[0].getBlob().getAs('image/png').setName("graph.png");

  /* POSTの実行 */
  var token = "【LINE API トークン】";
  var payload = {'message' : post_msg, 'imageFile' : chartImage};
  var options =
      {
        "method"  : "post",
        "payload" : payload,
        "headers" : {"Authorization" : "Bearer "+ token}  
      };
  UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

결론



기존 서비스에 조금 손을 넣는 것만으로 나름대로 편리한 시스템을 만들 수 있는 시대가 되었구나, 라고 생각했습니다. 스마트 체중계되는 것도 나와 있어 IFTTT 제휴 가능이라고 합니다만, 자신의 오리지날에 튜닝(이번이라면 인감 센서를 사용하거나라든지) 한다면 자작하는 편이 공부도 되고 좋을까라고( 변명). 끝까지 읽어 주셔서 감사합니다! 뭔가 감상 등 있으면, 코멘트 부탁드립니다!

좋은 웹페이지 즐겨찾기