Pinoccio Ruby API

This library gives access to the pinoccio REST API to configure and manage Troops & Scouts. It additionally bundles all the built in ScoutScript commands so that you can command your Scouts straight from Ruby.

Example

require "pinoccio"

# Login to the API
client = Pinoccio::Client.new(USERNAME, PASSWORD) # or alternatively a valid API token
puts client..inspect

# get a handle to the first Troop (You'll most likely only have one)
troop = client.troops.first

# get the lead scout in this troop
lead_scout = troop.scouts.lead

# dump out some data about the scout
puts lead_scout.get('led.report')
puts lead_scout.power.charging?.inspect
puts lead_scout.power.percent.inspect
puts lead_scout.power.voltage.inspect
puts lead_scout.power.report

# create a new 'blink' function and print a list off all registered functions
lead_scout.functions.add(:blink, "if (led.isoff) { led.cyan; } else { led.off; }")
puts lead_scout.functions.list.inspect

# run the blink function every 250ms for 3 seconds
lead_scout.functions.repeat(:blink, 250)
puts lead_scout.functions.running.inspect
sleep(3)

# stop the blink function and ensure the LED is off when we finish
lead_scout.functions.stop(:blink)
lead_scout.led.off

Notes

  • I've not implemented the full API yet, only really enough to read data so far.
  • sometimes the API throws timeout errors, you can rescue and retry these by catching Pinoccio::TimeoutError
  • This is just a little playground, no tests yet, use at your own risk.