研究筆記 - 多App 同 sensor 的分析

最後編輯:2016-06-01 建立:2015-10-12 歷史紀錄

 

WUULONG S目的

  • 多個 App, 很有可能提供某種相同類別的感測器資料,比方說溫度。但是在資料上呈現的樣子卻有一點小差異,比方說 sensor 在系統內的10-20 中選的位置不同,或是感測器不同,所以精度可能也有差異。但是基本上都是溫度的資料,系統應該能有整合共用這些資料的能力。
  • 這裡想研究,如何分析這些資料,以及如何顯示這些資料,給系統設計一些 Input

 

情境

  • App-A 有使用 PM2.5 感測器
  • App-B 使用相同 PM2.5 感測器

 

分析需求

  • 將所有相同的 Sensor 一起分析

 

使用者需求

規格

 

設計

  • 全 Client 方法:
    • 利用 lass.py 將 log 轉換成 javascript 可以方便使用的 .js 檔(當資料 input )
    • 利用 Google maps javascript api 在地圖上顯示出來
    • 此內含 Javascript 的 html 可以放在 github 給大家隨時取用

 

  • temp sensor value input jason format:
  • var data_jason = '[ \
  • {"device_id" : "LASS-DUST-LJ", "data_D" : "33.00","lat" : 24.797717, "lng": 121.000916}, \
  • {"device_id" : "LASS-DUST-LJ", "data_D" : "23.00","lat" : 24.817717, "lng": 121.010916}, \
  • {"device_id" : "LASS-DUST-LJ", "data_D" : "13.00","lat" : 24.827717, "lng": 121.020916}, \
  • {"device_id" : "LASS-DUST-LJ1", "data_D" : "5.00","lat": 24.807717, "lng": 121.030916} \
  • ]';

 

 

 

 

  • 使用方式:
    • 1. 使用 lass.py 產生資料檔 data.jason
    • 2. 下載網頁範例,放在同一個目錄
    • 3. 用瀏覽器開啟網頁,即可看到資料

 

  • Log 轉 Jason 的設計考量
    • lass.py 需可以 sync ftp 上的 log 到 local.
    • 為了避免太多 filter 要實作,在 import log 端做一個 regular expression 的 filter, 可以很有彈性的濾 device_id, app, format, data-x
    • 濾完的 data 仍有多維的特性
      • 維度:
        • gps 位置 => 在地圖上
        • 時間 => 需要實作時間的 filter, 目前已經有
        • 不同的硬體 => 用 Maker 的 label 顯示,和畫圈
    • 特殊選項
      • 目前的資料
  • 一些想法
    • 可考慮 lass.py 做週期產生 jason data file(比方說每分鐘). html 也做週期 reload. 這樣就可以一直看到目前的資料
  • 建議:
    • javascript的 jason檔案,副檔名通常都是 .json 檔
    • 用 GeoJSON 的格式定義 lass 給 Client javascript 的資料
    • PM2.5 sensor 值,建議有 5-10 分鐘的平均值(可在轉出資料的時候做)
    • 需定義打算 sensor 值轉換成圈圈的邏輯
      • 比方說,
      • 不同的 PM2.5 值該轉成什麼顏色?
      • 圈圈的大小是不是固定的,還是根據值來改變大小
        • 目前系統初期建議畫 5km 的圈(先畫畫看),待更多研究以及更多節點再來修正

 

  • 目前 GeoJSON
  • lass_callback({"type":"FeatureCollection","metadata":{"generated":1395197681000,"url":"https://github.com/LinkItONEDevGroup/LASS","title":"LASS Sensors data","status":200,"api":"0.7.1","count":3},"features":[{"type":"Feature","properties":{"data_d":7.0,"ver_format":2,"fmt_opt":0,"app":"EXAMPLE_APP2","ver_app":"0.7.1","device_id":"LASS-DUST-LJ","tick":160839412,"date":"2015-10-15","time":"06:26:14","device":"LinkItONE","data-0":16100.00,"data-1":100.00,"data-2":1.00,"data-3":0.00,"data-D":9.00,"gps-lat":25.023487,"gps-lon":121.370950,"gps-fix":0,"gps-num":0,"gps-alt":13},"geometry":{"type":"Point","coordinates":[121.370950,25.023487,8.7]},"id":""},
  • {"type":"Feature","properties":{"data_d":5.0,"ver_format":2,"fmt_opt":0,"app":"EXAMPLE_APP2","ver_app":"0.7.1","device_id":"LASS-DUST-LJ","tick":160839412,"date":"2015-10-15","time":"06:26:14","device":"LinkItONE","data-0":16100.00,"data-1":100.00,"data-2":1.00,"data-3":0.00,"data-D":9.00,"gps-lat":25.023487,"gps-lon":121.370950,"gps-fix":0,"gps-num":0,"gps-alt":13},"geometry":{"type":"Point","coordinates":[121.390950,25.023487,8.8]},"id":""}],"bbox":[-179.463,-60.7674,-2.9,178.4321,67.0311,609.13]});

 

  • Server 方法:
    • 建議:產生 GeoJSON 資料,類似地震資料的觀念
    • [ 另外設計 ]

 

驗證

 

里程碑

 

問題討論

Q1 : csv, kml, json, GeoJSON三者的使用情境有什麼不同?

A1 : kml : 主要使用在轉出給 google map, google earth 使用。一般用在靜態資料轉出

  • GeoJSON: 由於 google map 在 JavaScript 上整合完整,也簡單,可以做動態的處理,豐富 Client 端的資料呈現。而 JavaScript 基本上支援 JSON format, 而 google 地理方面資料的提供走的是 GeoJSON. 所以目前打算在 Client 端也有 JavaScript 上的支援,而 Sensor 得資料,以 GeoJSON 的格式來提供。短期 GeoJSON 可以用 lass.py 轉出,為還也很容易接上 Server 提供的資料

 

  • 目前 github 上也有 json 的檔案,那只是開發的暫存格式,會統一使用 GeoJSON

 

  • csv : 為更一般的轉換通用格式

參考資料