Skip to content

Instantly share code, notes, and snippets.

@isleshocky77
Last active December 4, 2022 03:19
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isleshocky77/dd590cd092cead9b1f120954a0d8d187 to your computer and use it in GitHub Desktop.
Save isleshocky77/dd590cd092cead9b1f120954a0d8d187 to your computer and use it in GitHub Desktop.
Sense API Usage with cURL (and jq)
SENSE_EMAIL=""
SENSE_PASSWORD=""
SENSE_API_URI="https://api.sense.com/apiservice/api/v1"
SENSE_ACCESS_TOKEN=$(curl -sq "$SENSE_API_URI/authenticate" \
--data "email=$SENSE_EMAIL" \
--data "password=$SENSE_PASSWORD" \
| jq -r '.access_token')
SENSE_USER_ID=$(curl -sq "$SENSE_API_URI/authenticate" \
--data "email=$SENSE_EMAIL" \
--data "password=$SENSE_PASSWORD" \
| jq -r '.user_id')
# Only working with the first (and maybe only Monitor)
SENSE_MONITOR_0_ID=$(curl -sq "$SENSE_API_URI/authenticate" \
--data "email=$SENSE_EMAIL" \
--data "password=$SENSE_PASSWORD" \
| jq -r '.monitors[0].id')
# Get Always On
curl -sq --get "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/devices/always_on" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq '.'
# Get Other
curl -sq --get "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/devices/unknown" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq '.'
# Get First Device Detail
SENSE_DEVICE_0_ID="$(curl -sq --get "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/devices" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq -r '.[0].id')"
# Get Active Device
SENSE_DEVICE_1_ID="$(curl -sq --get "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/devices" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq -r 'first(.[] | select(.tags.Pending == "false" and .tags.Revoked == "false")).id')"
curl -sq --get "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/devices/$SENSE_DEVICE_0_ID" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq '.'
# Get Devices
curl -sq --get "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/devices" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq '.'
# Get Monitor History
curl -sq --get "$SENSE_API_URI/app/history/usage" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
--data "monitor_id=$SENSE_MONITOR_0_ID" \
--data "granularity=minute" \
--data "frames=5400" \
--data "start=$(date -Iseconds --date="last week")" \
| jq '.'
# Get Monitor Status
curl -sq "$SENSE_API_URI/app/monitors/$SENSE_MONITOR_0_ID/status" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
jq '.'
# Get Trends
curl -sq --get "$SENSE_API_URI/app/history/trends" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
--data "monitor_id=$SENSE_MONITOR_0_ID" \
--data "device_id=$SENSE_DEVICE_1_ID" \
--data "scale=hour" \
--data "start=$(date -Iseconds --date="last week")" \
| jq '.'
# Get TimeLine
curl -sq --get "$SENSE_API_URI/users/$SENSE_USER_ID/timeline" \
-H "Authorization: Bearer $SENSE_ACCESS_TOKEN" \
| jq '.'
# Get the realtime feed
curl \
--include \
--no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
--header "Sec-WebSocket-Version: 13" \
--output - \
"https://clientrt.sense.com/monitors/$SENSE_MONITOR_0_ID/realtimefeed?access_token=$SENSE_ACCESS_TOKEN"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment