집에서 매일 피아노 연습 시간을 시각화 (RaspberryPi + Pixela)

소개



최근 취미로 전자 피아노를 연주하게 되었습니다만, 집에서의 매일 연습 시간을
자동으로 기록할 수 있으면 좋다고 생각해, 피아노의 연습 시간을 Pixela로 가시화하는 구조를 만들어 보았습니다.

시스템 개요





전자 피아노와 RaspberryPi를 USB로 연결하고 USB 빼내기(=피아노 전원 ON/OFF)를
RaspberryPi 측에서 감지합니다.
피아노가 전원 ON 되어 있는 사이의 시간을 계측해, 피아노 연습 시간으로서 Pixela에 기록합니다.

사용환경


  • 전자 피아노 YAMAHA ARIUS YDP-S34

  • RaspberryPi Zero (별도 무선 LAN 모듈 준비)
  • Python 3.7.3
  • python3-pyudev 0.21.0-1


  • ※전자 피아노는 USB 접속 단자가 붙어 있는 것을 사용합니다.

    피아노 전원 ON/OFF를 감지



    Python의 pyudev라는 모듈에서 USB 연결 상태를 확인합니다.

    ※이하의 기사를 참고로 했습니다.
    RaspberryPi로 USB 메모리를 꽂은 것을 사용자 프로그램에서 인식

    USB 접속의 action=add를 검지한 시간으로부터, action=remove를 검지한 시간까지를 계측해,
    그날의 피아노 연습 시간으로 간주합니다.

    Pixela에 기록



    위에서 산출한 피아노 연습 시간을 WebAPI 경유로 Pixela에 보냅니다.

    같은 날에 여러 번 연습하는 경우도 있기 때문에 Pixela에서 대상일 연습 시간을 한 번 취득한 후,
    이번 분의 시간을 더해 Pixela에 보내도록 합니다.

    Pixela
    Pixela API Document

    우선, Pixela의 유저 작성과 그래프의 작성을 커멘드 라인으로 실시합니다.
    이쪽도 WebAPI 경유로 실시합니다.
  • 사용자 만들기

  • 은 적절하게 바꿉니다.
    $ curl -X POST https://pixe.la/v1/users -d '{"token":"<x-user-token>", "username":"<username>", "agreeTermsOfService":"yes", "notMinor":"yes"}'
    {"message":"Success.","isSuccess":true}
    
  • 그래프 만들기

  • 그래프 id는 임시로 "piano-time-graph"로 둡니다.
    $ curl -X POST https://pixe.la/v1/users/<username>/graphs -H 'X-USER-TOKEN:<x-user-token>' -d '{"id":"piano-time-graph","name":"piano-time-graph","unit":"minutes","type":"float","color":"shibafu","timezone":"Asia/Tokyo","isSecret":true,"publishOptionalData":true}'
    {"message":"Success.","isSuccess":true}
    

    프로그램에서는, 일단, 대상일의 연습 시간을 취득(GET)하고 나서,
    이번 분의 시간을 더해 Pixela에 송신(PUT)하도록(듯이) 합니다.

    단순히 이번 분의 시간을 Pixela에 송신(PUT)하는 것만으로,
    그날 Pixela에 기록 된 시간을 덮어 씁니다.

    또, Pixela에 그 날의 시간이 기록되어 있지 않은 경우(그 날 처음 연습하는 경우),
    시간을 취득(GET)하려고 해도 올바른 값을 취할 수 없습니다.
    $ curl -X GET https://pixe.la/v1/users/<username>/graphs/piano-time-graph/20200227 -H 'X-USER-TOKEN:<x-user-token>'
    {"message":"Specified pixel not found.","isSuccess":false}
    

    소스 코드 전문



    아래를 참조하십시오.
    htps : // 기주 b. 코 m / 히 ls와 p / 피아의 P 등 c Chisechime

    움직여 보자



    Pixela URL을 브라우저에서 두드리십시오.

    며칠 동안 기록해 보았습니다.
    아직도 전체적으로 흰색이지만, 1년 정도 계속하면 보기 좋게 될까? 라고 생각합니다. (처음은 긴・・・)

    좋은 웹페이지 즐겨찾기