日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

開發獲取溫度數據的服務

更新時間:

在業務邏輯工作臺,開發三個業務服務,分別用于獲取設備上報的溫度數據,每整點統計前一小時的最高溫度數據,和篩選指定時間段內每小時的最高溫度數據。

前提條件

已完成以下操作:

  1. 創建項目和產品

  2. 開發虛擬設備

  3. 使用云數據庫創建數據表

說明

開發設備有不同的方法,用戶可根據實際場景需要,選擇相應的設備開發方法。本案例以開發虛擬設備為例。

操作步驟

  1. 在開發工具模塊,單擊業務邏輯

    業務邏輯

  2. 業務邏輯開發頁面,單擊空白模板區域。

    新建業務邏輯

  3. 創建一個設備觸發服務。

    該服務以溫度監測器設備作為觸發節點,接收溫度監測器設備上報的溫度數據,并存儲到云數據庫RDS版MySQL數據表中。

    1. 輸入業務邏輯服務的基本信息并單擊確認

      參數

      說明

      服務名稱

      服務的唯一標識符,在項目下具有唯一性。例如:存儲溫度數據

      僅支持中文漢字、英文字母、數字、下劃線(_)、連接號(-)和英文圓括號(()),且必須以中文漢字、英文字母或數字開頭,長度不超過30個字符(一個中文漢字算一個字符)。

      所屬項目

      服務所屬的項目。本案例選擇已創建的項目:茶園監控方案

      備注

      描述服務的用途等信息。長度不超過100個字符(一個中文漢字算一個字符)。

    2. 從服務編輯器左側節點頁簽下,拖拽一個設備觸發節點到畫布上,并配置輸入數據為溫度監測器上報的屬性。

      配置設備觸發節點

    3. 配置一個云數據庫MySQL節點,用于將溫度監測器上報的溫度數據存入數據表sensor_data。節點配置具體操作,請參見節點配置。

      配置RDS節點

      本示例中,輸入的參數如下所示。

      {
          "table": "sensor_data",
          "rows": [
              {
             "id":"{{payload.deviceContext.gmtCreate}}",
             "deviceName" : "{{payload.deviceContext.deviceName}}",
             "dateTime" : "{{payload.props.temperature.time}}",
             "temperature" : "{{payload.props.temperature.value}}"
      
               }
          ]
      }
    4. 單擊部署調試按鈕部署,部署并啟動服務。

      說明

      本案例是以開啟虛擬設備上報數據,無需再次部署調試。具體操作,請參見開發虛擬設備。

  4. 創建一個定時觸發服務。

    該服務用于每整點統計前一小時的最高溫度數據,并存儲到云數據庫RDS版MySQL數據表中。

    1. 切換到服務列表頁面,單擊服務列表右側的添加圖標添加按鈕。

      新增服務

    2. 業務邏輯開發頁面,創建并設置定時觸發服務。

      1. 打開新建業務服務對話框。具體操作,請參見步驟3。

      2. 設置定時觸發服務的基本信息設置(例如服務名稱為存儲最高溫度數據)。具體操作,請參見步驟4的第一個子步驟。

    3. 配置一個定時觸發節點,用于每整點觸發一次服務。

      定時觸發節點

    4. 配置一個云數據庫MySQL節點,用于從存儲設備上報的溫度數據的數據表sensor_data中,查詢數據。

      rds節點

      本示例中,查詢數據的輸入參數如下所示。

      {
          "table": "sensor_data",
          "condition": {
              "where": {"deviceName": "bZxNh9qi6PyqYvFcDvqK"},
              "columns": [
                  "id",
                  "deviceName",
                  "temperature",
                  "dateTime"
                  ],
              "orders": ["temperature"]
          }
      }
    5. 配置一個Node.js節點,用于提取每小時內,設備上報的最高溫度。

      node.js節點

      本示例中,輸入的腳本如下所示。

      /**
      * @param {Object} payload 上一節點的輸出
      * @param {Object} node 指定某個節點的輸出
      * @param {Object} query 服務流第一個節點的輸出
      * @param {Object} context  { appKey, appSecret }
      */
      module.exports = async function(payload, node, query, context) {
           console.log("payload: ", payload);
      
           let  result = {};
           result.index = payload.length - 1;
           result.maxTemperature = payload[result.index].temperature;
           result.id = payload[result.index].id;
           result.deviceName = payload[result.index].deviceName;
           result.dateTime = payload[result.index].dateTime;
           return result;
      }
    6. 再配置一個云數據庫MySQL節點,用于將Node.js處理后的數據存入數據表Maxtemperature。

      rds數據表節點

      本示例中,輸入的參數如下所示。

      {
          "table": "Maxtemperature",
          "rows": [{
                  "id": "{{payload.id}}",
                  "deviceName": "{{payload.deviceName}}",
                  "dateTime": "{{payload.dateTime}}",
                  "maxTemperature": "{{payload.maxTemperature}}"
          }]
      }
    7. 單擊部署調試按鈕部署,部署并啟動服務。

    8. 單擊部署調試按鈕部署,輸入模擬時間,調試服務。

  5. 創建一個HTTP接口,用于實現篩選指定時間段的數據。

    1. 參照步驟5中的子步驟1和子步驟2,新增一個服務(例如獲取溫度數據)。

    2. 配置一個HTTP請求節點,設置篩選溫度數據API的Action名稱和請求參數。

      HTTP請求

      本示例中,配置了以下三個請求參數。

      參數

      類型

      是否必需

      說明

      DeviceName

      String

      調用接口時,傳入設備名稱,查詢指定設備上報的溫度數據;不傳入設備名稱,則返回全部設備的溫度數據。

      startTime

      Int

      調用接口時,需傳入要查詢數據的起始時間。

      endTime

      Int

      調用接口時,需傳入要查詢數據的結束時間。

    3. 配置一個云數據庫MySQL節點,用于從數據表Maxtemperature中獲取每小時的最高溫度數據。

      RDS節點

      本示例中,輸入的參數如下所示。

      {
          "table": "maxtemperature",
          "condition": {
              "where": {
                  "deviceName": "{{payload.DeviceName}}"
              },
              "columns": [
                  "maxTemperature",
                  "dateTime"
              ],
              "orders": [
                  "dateTime"
              ]
          }
      }
    4. 配置一個Node.js節點,用于篩選指定時間段內的溫度數據。

      腳本

      本示例中,輸入的腳本如下所示。

      /**
      * @param {Object} payload 上一節點的輸出
      * @param {Object} node 指定某個節點的輸出
      * @param {Object} query 服務流第一個節點的輸出
      * @param {Object} context  { appKey, appSecret }
      */
      module.exports = async function(payload, node, query, context) {
      
        console.log("payload: ", payload);
      
        let length = 0;
        for (let i = 0; i < payload.length; i++) {
            if(parseInt(payload[i].dateTime) >= query.startTime*1000 && parseInt(payload[i].dateTime) <= query.endTime*1000) {
                length = length + 1;
            }
        }
      
        console.log("length", length);
      
        var result = new Array(length);
        for(let i = 0; i < length ; i++){
            result[i] = new Array(2);
            result[i][0] = "";
            result[i][1] = 0;
        }
      
        let valid = 0; 
        for(let j = 0 ;j < payload.length ; j++ ){
            if(parseInt(payload[j].dateTime) >= query.startTime*1000 && parseInt(payload[j].dateTime) <= query.endTime*1000) {
                 result[valid][0] = payload[j].dateTime;
                 result[valid][1] = payload[j].maxTemperature;
                 valid = valid + 1;
             }
        }
      
        return result;
      }
    5. 配置一個HTTP返回節點,輸出Node.js節點處理后的數據。

      HTTP返回

    6. 單擊部署調試按鈕部署,部署并啟動服務。

    7. 單擊部署調試按鈕部署,輸入請求參數,調試服務。

  6. 三個服務均調試成功后,單擊頁面右上角的發布按鈕發布,發布服務。

后續步驟

開發可視化茶園監控大屏