GoogleHome에서 REST를 두드려 실행 결과를 말한다 [0-1]

보통 REST를 두드리는 것만이라면 IFTTT에서 GoogleAssistant와 Webhook을 연결하는 등
하지만 로봇의 실행 환경이 외부 공개하지 않은 로컬 서버이므로 뭔가를 사이에 씹을 필요가 있다.
또한 Google Home에는 스스로 알림을 받고 말하는 기능이 없으므로 REST를 두드릴 수 있습니다.
그럼 결과를 말해주지 않는다.

[1] IFTTT에서 GoogleAssistant⇒GoogleSpreadSheet에서 작업 이름을 씁니다.
[2] 로컬 네트워크에 연결된 Raspberrypi에서 [1] 수신
[3] Raspberrypi에서 그대로 [2]를 두드리는
[4] Raspberrypi에서 [3]의 결과를 받습니다.
[5] Raspberrypi에서 [4]의 결과를 Google Home에 알립니다.

이것으로 갈 수 있다.

기사 목록


  • [0] Raspberrypi 설정
  • [1] IFTTT에서 GoogleAssistant⇒GoogleSpreadSheet에서 작업 이름을 씁니다.
  • [2] 로컬 네트워크에 연결된 Raspberrypi에서 [1] 수신
  • [3] Raspberrypi에서 그대로 [2]를 두드리는
  • [4] Raspberrypi에서 [3]의 결과를 받습니다.
  • [5] Raspberrypi에서 [4]의 결과를 Google Home에 알립니다.

  • ■ 준비하는 것, 사용하는 툴


  • GoogleHome(mini 가능)
  • Raspberrypi3(ModelB)
  • REST에서 실행하려는 도구 (BizRobo 사용)
  • GoogleSpreadSheet

  • [0] Raspberry Pi 설정



    참고 : Raspbian 설치 및 최강의 초기 설정 | 순수한 여가 취미 블로그
    RaspbiaLite를 사용했습니다.
    Desktop 쪽에서도 괜찮습니다.


    들어갔다.

    [1] IFTTT에서 GoogleAssistant⇒GoogleSpreadSheet에서 작업 이름을 씁니다.



    레시피 만들기



    Discover IFTTT and Applets - IFTTT
    액세스, 로그인 후 My Applets > New Applet에서 새로운 레시피 만들기



    「this」는 「Goole Assistant」를 선택.
    트리거 내용은 "Say a phrase with a text ingredient"를 선택.

    참고 : 【일본어】IFTTT(이프트)로 사용할 수 있는 「Google Assistant」의 해설|Google Home에 이용 가능!



    이런 식으로 넣는다.
    덧붙여서
    ・「\$」의 전후에는 반각 스페이스를 넣는다.
    ・명령문의 처음에 「\$」는 넣지 않는다(「\$ 실행 예약」등은 NG)
    규칙을 지켜라.



    「that」는 「Google Sheet」를 선택.
    액션 내용은 「Add row to spreadsheet」를 선택

    참고 : 【일본어】 IFTTT (이프트)에서 사용할 수있는 "Google Sheets"액션의 해설



    이런 식으로 넣는다.



    일단 테스트

    GoogleHome에 직접 말하지 않아도 GooogleAssistant 앱에서 명령 가능.



    GoogleDrive에 「IFTTT」와 폴더와 「cue」라고 하는 시트가 만들어져 B1셀에 입력이 되어 있으면 테스트 성공.

    GAS로 시트 자동 편집



    이 B1에 입력된 문구를 Raspberrypi에 그대로 받게 할 수 있지만,
    나중에 관리의 용이성을 생각하고 GAS를 사용하여 자동으로 다시 쓰도록 한다.



    도구 > 스크립트 편집기

    코드.gs
    var book = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = book.getSheetByName("シート1");
    
    
    function input() {
      setNumber(1);
      setFunction(3);
      setDate(4, "yyyy/M/d H:m:s");
      setExecutionTime(7);
    }
    //----------------------------------------------------
    
    //番号入力
    function setNumber(col) {
      var lastrow = sheet.getLastRow();
        if (sheet.getRange(lastrow, col).getValue() == "") 
          sheet.getRange(lastrow, col).setValue(lastrow);
    }
    
    //関数入力
    function setFunction(col) {
      var lastrow = sheet.getLastRow();
        if (sheet.getRange(lastrow, col).getValue() == "") 
          sheet.getRange(lastrow, col).setValue("=IFERROR(VLOOKUP(B"+lastrow+",'シート2'!A:B,2,false),\"\")");
    }
    
    //日付入力
    function setDate(col, format) {
      var lastrow = sheet.getLastRow();
      if (sheet.getRange(lastrow, col).getValue() == "") 
        sheet.getRange(lastrow, col).setValue(formatDate(new Date(), format));
    }
    
    //F列-E列の関数入力
    function setExecutionTime(col) {
      var lastrow = sheet.getLastRow();
        if (sheet.getRange(lastrow, col).getValue() == "") 
          sheet.getRange(lastrow, col).setValue("=if(F"+lastrow+"<>\"\",(F"+lastrow+"-E"+lastrow+")*86400,\"\")");
    }
    
    //----------------------------------------------------
    function formatDate(date, format) {
      return Utilities.formatDate(date, 'Asia/Tokyo', format)
    }
    

    ↑를 그대로 복사하여 저장.
    이름은 적용 가능하게.



    트리거 버튼 (돋보기와 시계 같은)를 누르십시오.



    실행: input
    이벤트: 스프레드시트에서 값 변경
    선택하여 저장. 승인 허가.



    SpreadSheet로 돌아가 "시트 2"를 만듭니다.
    작성한 시트에 이미지와 같은 느낌으로 입력.



    「시트 1」의 B1 셀을 만지면 A1, C1, D1 셀에 자동 입력된다.
    맛이 없기 때문에 헤더 행도 추가. 이때 A2셀을 「2」로 하고, 반드시 위에서 연속번호가 되도록 한다.

    테스트





    제대로 들어갔다. 성공.

    계속

    좋은 웹페이지 즐겨찾기