Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

RubyでXivelyにデータを放り込む

今回は、生成済みFeedにRubyスクリプトでデータを飛ばす方法を紹介します。

下準備

  • XivelyにDeviceのFeedを生成
  • 上記にsensor1、sensor2というチャンネルを生成
  • gem 「xively-rb」を入れる。*1

コード

次のコードでは、ランダム値を10秒毎に10回送ります。

require 'xively-rb'

APIKEY = # your api key #
FEEDID = # your feed id #
c = Xively::Client.new(APIKEY)
puts c.get("/v2/feeds/%s.json" % FEEDID.to_s)
post_path = ["/v2/feeds/%s/datastreams/%s/datapoints" % [FEEDID.to_s, 'sensor1'],
             "/v2/feeds/%s/datastreams/%s/datapoints" % [FEEDID.to_s, 'sensor2']]

10.times do |i|
  val = [rand(20),rand(20)]

  (0..1).each do |i|
    datapoint = Xively::Datapoint.new(:at => Time.now, :value => val[i].to_s)
    c.post(post_path[i], :body => {:datapoints => [datapoint]}.to_json)
  end

  puts "sent:: %d , %d" % [val[0], val[1]]
  sleep(10)
end

API-keyとFeedIDについては、以前の記事を参照してください

結果

上記のコードが無事動けば、feedに以下のようなグラフが出る筈です。
pushの度にチョコチョコ動いて愉しいです。

*1:注意::真っ新から導入すると時間がかかります。依存関係が相当あるので。Raspberry Piだと光回線でも2時間以上かかりました……