Accéder à vos données de sens.
Ajoutez cette ligne à Gemfile de votre application:
gem 'unofficial_sense_api'Puis exécuter:
$ bundle
Ou installez-le vous-même comme:
$ gem install unofficial_sense_api
Obtenir des données en temps réel (démarre un websocket à wss://clientrt.sense.com/monitors/#{api.first_monitor_id}/realtimefeed )
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 Utilisez fetch pour tirer des points de terminaison de repos de votre choix. Aucun n'a encore été ajouté à ce joyau.
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 } " )Voici les points de terminaison que nous connaissons jusqu'à présent:
"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" MINUTE granularity SECONDListe des appareils:
"https://api.sense.com/apiservice/api/v1/app/monitors/#{api.first_monitor_id}/devices?include_merged=true" Vous pouvez ajouter un device_id à la demande d'historique:
"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"Et obtenez les données pour les appareils:
"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"Si vous le souhaitez, vous pouvez ignorer entièrement Ruby et parler à l'API Sense avec Curl:
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"
La réponse aura un access_token , ainsi qu'un user_id et un tableau monitors que vous pouvez utiliser pour accéder aux API de sens. Par exemple:
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"
Vous pouvez exécuter bin/console pour une invite interactive qui vous permettra d'expérimenter.
Pour installer ce gemme sur votre machine locale, exécutez bundle exec rake install . Pour publier une nouvelle version, mettez à jour le numéro de version dans version.rb , puis exécutez bundle exec rake release , qui créera une balise GIT pour la version, pousse Git Commits and Tags, et poussez le fichier .gem sur RubyGems.org.
Le GEM est disponible en open source en vertu des termes de la licence du MIT.