センスデータにアクセスします。
この行をアプリケーションのGemfileに追加します。
gem 'unofficial_sense_api'そして実行してください:
$ bundle
または、自分でインストールします:
$ gem install unofficial_sense_api
リアルタイムデータの取得( wss://clientrt.sense.com/monitors/#{api.first_monitor_id}/realtimefeedへのwebsocketを起動します)
require 'sense_api'
require 'pp'
api = SenseApi . new ( "USERNAME" , "PASSWORD" )
count = 0
api . realtime do | json |
pp json
# Be sure to return :exit to terminate the connection and shut down EventMachine!
count += 1
count > 5 ? :exit : nil
end fetchを使用して、選択したRESTエンドポイントから引き出します。この宝石にまだ追加されていません。
require 'sense_api'
api = SenseApi . new ( "USERNAME" , "PASSWORD" )
timeline = api . fetch ( "https://api.sense.com/apiservice/api/v1/users/ #{ api . user_id } /timeline?n_item=30" )
trends = api . fetch ( "https://api.sense.com/apiservice/api/v1/app/history/trends?monitor_id= #{ api . first_monitor_id } &scale=WEEK&start=2017-10-23T04:00:00.000Z" )
devices = api . fetch ( "https://api.sense.com/apiservice/api/v1/app/monitors/ #{ api . first_monitor_id } /devices?include_merged=true" )
first_device_id = devices . first [ "id" ]
first_device_details = api . fetch ( "https://api.sense.com/apiservice/api/v1/app/monitors/ #{ api . first_monitor_id } /devices/ #{ first_device_id } " )
first_device_hostory = api . fetch ( "https://api.sense.com/apiservice/api/v1/app/history/usage?monitor_id= #{ api . first_monitor_id } &granularity=MINUTE&start=2017-10-21T11:00:00.000Z&frames=5400&device_id= #{ first_device_id } " )これが私たちがこれまでに知っているエンドポイントを紹介します:
"https://api.sense.com/apiservice/api/v1/users/#{api.user_id}/timeline?n_item=30""https://api.sense.com/apiservice/api/v1/app/history/trends?monitor_id=#{api.first_monitor_id}&scale=WEEK&start=2017-10-23T04:00:00.000Z""https://api.sense.com/apiservice/api/v1/app/history/usage?monitor_id=#{api.first_monitor_id}&granularity=SECOND&start=2017-10-25T03:54:00.000Z&frames=5400" {api.first_monitor_id}& granularity SECOND second&start=2017-10-25T03:54:00.000Z& MINUTE &frames"リストデバイス:
"https://api.sense.com/apiservice/api/v1/app/monitors/#{api.first_monitor_id}/devices?include_merged=true"履歴リクエストにdevice_idを追加できます。
"https://api.sense.com/apiservice/api/v1/app/history/usage?monitor_id=#{api.first_monitor_id}&granularity=MINUTE&start=2017-10-21T11:00:00.000Z&frames=5400&device_id=SOME_DEVICE_ID"デバイスのデータを取得します。
"https://api.sense.com/apiservice/api/v1/app/monitors/#{api.first_monitor_id}/devices/always_on""https://api.sense.com/apiservice/api/v1/app/monitors/#{api.first_monitor_id}/devices/unknown""https://api.sense.com/apiservice/api/v1/app/monitors/#{api.first_monitor_id}/devices/SOME_DEVICE_ID"必要に応じて、Rubyを完全にスキップして、CurlでSense APIに相談することができます。
curl -k --data "[email protected]" --data "password=URL_ENCODED_PASSWORD" -H "Sense-Client-Version: 1.17.1-20c25f9" -H "X-Sense-Protocol: 3" -H "User-Agent: okhttp/3.8.0" "https://api.sense.com/apiservice/api/v1/authenticate"
応答には、 access_token 、およびuser_idとSense APIへのアクセスに使用できるmonitors配列があります。例えば:
curl -k -H "Authorization: bearer ACCESS_TOKEN" -H "Sense-Client-Version: 1.17.1-20c25f9" -H "X-Sense-Protocol: 3" -H "User-Agent: okhttp/3.8.0" "https://api.sense.com/apiservice/api/v1/app/history/usage?monitor_id=A_MONITOR_ID&granularity=SECOND&start=2017-10-24T05:36:00.000Z&frames=5400"
実験を可能にするインタラクティブなプロンプトのbin/consoleを実行できます。
この宝石をローカルマシンにインストールするには、 bundle exec rake install実行します。新しいバージョンをリリースするには、 version.rbのバージョン番号を更新してから、バージョンbundle exec rake release gitタグを作成し、gitコミットとタグをプッシュし、 .gemファイルをRubygems.orgにプッシュします。
宝石は、MITライセンスの条件の下でオープンソースとして利用できます。