読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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

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の度にチョコチョコ動いて愉しいです。
f:id:shuzo_kino:20131122201106p:plain

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