module Adafruit::IO::Client::Data

Public Instance Methods

data(*args) click to toggle source

Get all data for a feed, may paginate.

# File lib/adafruit/io/client/data.rb, line 68
def data(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)
  query = get_query_from_arguments arguments, %w(start_time end_time limit)

  get api_url(username, 'feeds', feed_key, 'data'), query
end
data_chart(*args) click to toggle source

Get charting data for a feed.

# File lib/adafruit/io/client/data.rb, line 77
def data_chart(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)
  query = get_query_from_arguments arguments, %w(start_time end_time limit hours resolution)

  get api_url(username, 'feeds', feed_key, 'data', 'chart'), query
end
datum(*args) click to toggle source

Get a single data point.

# File lib/adafruit/io/client/data.rb, line 86
def datum(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)
  data_id = arguments.shift

  get api_url(username, 'feeds', feed_key, 'data', data_id)
end
last_data(*args) click to toggle source

Move the stream processing pointer to and retrieve the last (newest) data point available.

# File lib/adafruit/io/client/data.rb, line 113
def last_data(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)

  get api_url(username, 'feeds', feed_key, 'data', 'last')
end
next_data(*args) click to toggle source

Retrieve the next unprocessed data point.

# File lib/adafruit/io/client/data.rb, line 95
def next_data(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)

  get api_url(username, 'feeds', feed_key, 'data', 'next')
end
prev_data(*args) click to toggle source

Retrieve the previously processed data point. This method does not move the stream pointer.

# File lib/adafruit/io/client/data.rb, line 104
def prev_data(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)

  get api_url(username, 'feeds', feed_key, 'data', 'prev')
end
send_batch_data(*args) click to toggle source

Send a batch of data points.

Points can either be a list of strings, numbers, or hashes with the keys [ value, created_at OPTIONAL, lat OPTIONAL, lon OPTIONAL, ele OPTIONAL ]

# File lib/adafruit/io/client/data.rb, line 50
def send_batch_data(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)
  values = arguments.shift

  if values.nil? || !values.is_a?(Array)
    raise "expected batch values to be an array"
  end

  if !values.first.is_a?(Hash)
    # convert values to hashes with single key: 'value'
    values = values.map {|val| {value: val}}
  end

  post api_url(username, 'feeds', feed_key, 'data', 'batch'), data: values
end
send_data(*args) click to toggle source

Add data to a feed.

Params:

- feed_key: string
- value: string or number
- location (optional): {lat: Number, lon: Number, ele: Number}
- created_at (optional): iso8601 date time string.
# File lib/adafruit/io/client/data.rb, line 14
def send_data(*args)
  username, arguments = extract_username(args)
  feed_key = get_key_from_arguments(arguments)
  value = arguments.shift

  attrs = {
    value: value
  }

  if arguments.size > 0 && arguments.first.is_a?(Hash)
    location = arguments.shift
    if location[:lat] && location[:lon]
      attrs[:lat] = location[:lat]
      attrs[:lon] = location[:lon]
      attrs[:ele] = location[:ele]
    end
  end

  if arguments.size > 0
    if arguments.first.is_a?(String)
      created_at = arguments.shift
      attrs[:created_at] = created_at
    elsif arguments.first.is_a?(Time)
      created_at = arguments.shift
      attrs[:created_at] = created_at.utc.iso8601
    end
  end

  post api_url(username, 'feeds', feed_key, 'data'), attrs
end