最小物聯網系統——Dashboard

Phodal發表於2014-03-06

Dashboard對於一個需要及時檢視應用狀態的物聯網系統來說是一個很不錯的東西,在接觸到了Dashing之後發現可以快速用於這個物聯網系統,於是便試著將他們整合到了一起

最後效果如下圖所示 最小物聯網系統——Dashboard

原始碼地址:https://github.com/gmszone/iot-dashboard

Dashboard是因為 一個最小的物聯網系統設計方案及原始碼 而開發的

Quick Dashboard

如果你看了上一篇介紹的話《Dashboard 框架 dashing 入門及淺析

  1. Install the gem from the command line. Make sure you have Ruby 1.9+
$ gem install dashing
  1. Generate a new project
$ dashing new sweet_dashboard_project
  1. Change your directory to sweet_dashboard_project and bundle gems
$ bundle
  1. Start the server!
$ dashing start
  1. Point your browser at localhost:3030 and have fun!

新增溫度顯示

修改位置

 jobs/sample.rb

因為溫度需要用到HTTP請求以及解析JSON,所以需要用到這三個庫

require "json"
require "net/http"
require "uri"

於是我們需要一個function來獲取json資料

def get_data(num)
  uri = URI.parse("http://b.phodal.com/athome/"+num.to_s)
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Get.new(uri.request_uri)
    response = http.request(request)
    result=JSON.parse(response.body)
    result
end

返回的結果,便是

[{"id":1,"temperature":14,"sensors1":18,"sensors2":12,"led1":0}]

我們還需要獲取id為2的資料,以便用來生成溫度對比情況,也就是圖中的綠色部分。於是

current_temperature = get_data(2)[0]["temperature"].to_i
last_temperature = get_data(1)[0]["temperature"].to_i

再將temperature sent出去

  send_event('temperature', { current: current_temperature, last: last_temperature })

最後也就有了

require "rubygems"
require "json"
require "net/http"
require "uri"

def get_data(num)
  uri = URI.parse("http://b.phodal.com/athome/"+num.to_s)
  http = Net::HTTP.new(uri.host, uri.port)
  request = Net::HTTP::Get.new(uri.request_uri)
  response = http.request(request)
  result=JSON.parse(response.body)
  result
end

SCHEDULER.every '2s' do
  current_temperature = get_data(2)[0]["temperature"].to_i
  last_temperature = get_data(1)[0]["temperature"].to_i

  send_event('temperature', { current: current_temperature, last: last_temperature })
end

新增一個資料大致以上面類似

  sensors1 = get_data(2)[0]["sensors1"].to_i
  send_event('sensors1',   { value: sensors1})

於是也就有了圖2中的sensors1,當然我們還需要新增樣式到erb檔案中



    
  • 新增溫度趨勢

    方法大致以上面類似,主要還是儲存資料到points以及獲取資料

    require "rubygems"
    require "json"
    require "net/http"
    require "uri"
    
    def get_data
      uri = URI.parse("http://b.phodal.com/athome")
    
      http = Net::HTTP.new(uri.host,uri.port)
      request = Net::HTTP::Get.new(uri.request_uri)
    
      response=http.request(request)
      result=JSON.parse(response.body)
    
      result.map do |data|
        {x: data["id"].to_i, y: data["temperature"].to_i}
      end
    end
    
    points=get_data
    
    SCHEDULER.every '2s' do
      send_event('tempdata', points: points)
    end
    

    相關文章