지각 방지 시스템을 생각해 만들어 보았다

3685 단어 5ifttt
그레인지 Advent Calendar 2018」 10일째를 담당의 "ito_shin_2017"입니다

소개



이전에는 집 열쇠를 스마트 폰으로 조작 할 수있는 세사미 스마트 락 충동을 구입했습니다.
GoogleHome, Alexa, IFTTT와도 제휴 할 수 있으므로 여러가지 할 것 같습니다

나는 사회인 3년째가 됩니다만, 두번 자고 버려 회사에 지각한 경험이 몇번인가 있습니다
그래서, 지각 빠듯한 시간이 되어도 집에 아직 있을 때만 경보를 울려 주는 기능을 세사미 스마트 락을 사용해 만들어 보았습니다

거친 구성





개발 환경


  • 서버
    아루카스 클라우드 서비스 사용
    DockerHub에 올린 Image를 지정하는 것만으로 서버를 시작합니다 (※무료로 이용 가능합니다)
  • 언어
    golang 1.9(최근 공부 중)

  • IFTTT 소개



    IFTTT의 이름의 유래인 「만약(IF)『This(입력)』이라면(Then)『That(출력)』한다」의「This」와「That」를 대응 서비스로부터 선택하면, 새로운 서비스 작성할 수 있는 것이다.
    예를 들면, 스마트폰의 위치 정보 서비스(로케이션 서비스)와 메일을 조합하면, 환승역에 도착하면, 자동적으로 가족에게 메일을 보내는 것이 간단하게 실현될 수 있다.

    ↑ "다양한 서비스를 연계 할 수있는 "IFTTT (이프트)"사용법 (1/3)"에서 인용

    ①집 열쇠를 풀면 통지





    IFTTT의 "This"에 세서미 스마트 락의 해제시와 잠금시를 지정할 수 있습니다.
    잠금을 해제하면 알림을 받으려면 "Sesame unlocked"를 지정합니다.
    IFTTT의 "That"에게는 "Webhooks"로 서버에 POST하고 풀린 것을 알려줍니다.

    ②지각 빠듯한 시간이 되면 통지



    IFTTT의 "This"에는 "Date & Time"의 "Every day of the week at"에서 평일 9시 45분으로 지정합니다.
    나의 경우, 9시 45분이 "지각 빠듯한 시간"이 됩니다



    앞에서와 같이 IFTTT의 "That"은 "Webhooks"로 서버에 POST하여 지각 빠듯한 시간이 되었음을 알립니다.
    (서버 측에서 cron을 설정해도 좋다고 생각합니다만 IFTTT 쪽이 설정이 간단하고 알기 쉽기 때문에)

    ③그날의 해정기록이 없는 경우 통지



    「②지각 빠듯한 시간이 되면 통지」가 서버에 왔을 때, 서버에 그 날 해정된 기록이 없으면,
    IFTTT에 POST하여 알림을 보냅니다.
    만약 그날 해정된 기록이 있으면, 무사히 기상하고 집을 나와야 하기 때문에 아무것도 하지 않습니다

    ④경보를 울린다



    "This"는 "Webhooks"를 지정하여 "③ 그 날의 잠금이 없는 경우 통지"가 왔을 때 "That"을 하도록 합니다.
    "That"은 "VoIP"를 지정합니다.



    VoIP는 IFTTT 앱을 넣은 자신의 iPhone에 전화를 걸어줍니다.



    과제점


  • 0시 이후 집에서 나왔을 경우는 두번 자 판정되지 않는다
  • 데이터베이스를 사용하지 않으므로 서버 프로그램을 종료하면 키 잠금 해제가 사라집니다

  • 사이고에게



    구현하는 동안 깨달았지만 Google AppsScript를 사용하면 서버 자체가 필요하지 않을 것 같습니다.
    일어날 시간이 되면 방의 불을 붙여 음악 흘리다든가 하고 있는 분도 있기 때문에, 그러한 것도 앞으로 흉내내고 가고 싶었습니다

    참고서적



    Go 언어로 웹 애플리케이션
    제6장의 「REST 형식으로 데이터나 기능을 공개한다」를 참고로 서버측을 구현했습니다

    좋은 웹페이지 즐겨찾기