簡體   English   中英

OneM2M、IOTKETI Mobius 檢索組成員內容實例

[英]OneM2M, IOTKETI Mobius RETRIEVE Group Member ContentInstances

在我的示例架構中; 我有一個 IN-Mobius 和一個 ADN-AE-Thyme (nCube Thyme)。

首先; 我創建了一個名為“ae_test_02”的 AE,我可以通過 Postman 獲取此資源。

ae_test_02

這一步之后; 我運行 ADN-AE-Thyme、thyme.js,它創建了一個名為“thyme_01”的容器,我也可以通過 Postman 獲取此資源。

百里香_01

同樣在該步驟中,thyme.js 將 containerInstances 添加到“thyme_01”容器中。 然后,我可以通過 Postman 獲取帶有“/la”參數的最新 containerInstance

拉

至此,問題就開始了。 我創建了一個組資源,在創建我嘗試了幾個解決方案時,總是失敗。 我嘗試了“中”屬性;

{ "m2m:grp": {
    "rn": "grp_test_100520_08",
    "mt": 3,
    "mid": ["3-20200505012920476/la", 
            "Mobius/3-20200505012920476/la",
            "Mobius/thyme_01/la",
            "Mobius/ae_test_02/3-20200505012920476/la",
            "Mobius/ae_test_02/thyme_01/la",
            "ae_test_02/thyme_01/la",
            "ae_test_02/3-20200505012920476/la"],
    "mnm": 10
}

組創建

問題是,我一一嘗試了這些中間路徑,但從未奏效。 當我嘗試通過 Postman 獲取最新的 containerInstances 時,我使用這個 URL,結果是“資源不存在(get_target_url)”

組檢索

IN-Mobius 中的容器和 contentInstances,我向 IN-Mobius 請求。 通過使用這些信息,我應該如何實現組“mid”屬性; 通過組資源獲取容器實例?


第一次編輯。

嗨安德烈亞斯。

對於第一個問題,我可以正確獲取資源。 在這一點上,我的目標是在容器中獲取 containerInstance,它是其中的成員(中間)。

第二; 現在我明白了,資源中沒有現有資源,好吧。 正如您所提到的,我想將請求傳遞給資源的所有成員(容器)。 為此,我將使用https://localhost:7579/Mobius/grp_test_100520_08/fopt ,但它給出了錯誤“ERR_INVALID_ARG_TYPE”。 我知道,至少有一個中間結構是正確的,但哪一個是正確的?

對於較小的問題,我已經知道在 mid 屬性中多次使用資源,因為我不知道哪個是正確的尋址方案?

此外,在創建資源時,該資源應該在 ae 資源 (/Mobius/ae_test_02/grp_name) 或 Mobius (/Mobius/grp_name) 中

資源可以直接在 IN-Mobius 中還是應該在 MN-Rosemary 中? fanOutPoint 是否僅由 MN 甚至 IN 等外部資源使用,fopt 使用?


第二次編輯。

“百里香”來自nCube Thyme( https://github.com/IoTKETI/nCube-Thyme-Nodejs ),它創建一個容器然后隨機創建ContainerInstances。

資源樹看起來像;

Mobius >> ae_test_02 (AE 資源) >> thyme_01 (它從 nCube Thyme 創建的容器https://github.com/IoTKETI/nCube-Thyme-Nodejs ) >> ContainerInstances

我在 >> Mobius >> grp_test_100520_08 中還有一個資源(使用的 GROUP 資源)

我試過了;

{ "m2m:grp": { "mid": ["Mobius/ae_test_02/thyme_01"], "mnm": 5 } }

在這個請求中,fopt.js 給出了一個錯誤“回調不是函數”。

錯誤1

{ "m2m:grp": { "mid": ["ae_test_02/thyme_01"], "mnm": 5 } }

在這個請求中,fopt.js 給出了相同的“回調不是函數”,但在不同的行。

錯誤2

我想我的 fopt.js 文件很舊,然后我檢查了 mobius github 頁面並獲取了該文件,但它不能解決這個問題。

我的資源也是這樣的;

grp

我的 fopt.js 文件也與此相同;

https://github.com/IoTKETI/Mobius/blob/master/mobius/fopt.js


更新 3。

“cnm”屬性問題是這樣的; 在創建資源時,CSE 會根據成員大小自動分配“cnm”屬性。 但是,CSE 不會在 UPDATE (PUT) 請求中進行此處理。 從這一點開始,我將創建資源,而不是更新它們。

正如您所提到的,我向組的資源發送請求,但它給出了“回調不是函數”錯誤。 為了解決這個問題,我下載並安裝了整個發行版。 ( https://github.com/IoTKETI/Mobius ) 之后,我將再次執行相同的過程以了解 fopt.js 文件的行為。 結果沒有改變,它給出了同樣的錯誤。

我計划在 Mobius github 頁面中解釋整個情況並創建一個問題。 我希望他們會盡快回復。

我認為你的例子有兩個問題。

第一個問題是對 <Group> 的請求。 您需要區分對 <Group> 資源本身的請求和對 <Grou> 成員的請求。

<Group> 資源本身沒有子資源 <la>。 這就是您收到錯誤消息的原因。 如果要將請求傳遞給 <Group> 資源的所有成員,則需要以虛擬子資源 <fopt> 為目標。 在您的情況下,請求應針對 URI https://localhost:7579/Mobius/grp_text_100520/fopt 由於您已經將 <la> 資源作為成員,因此您無需將/la部分添加到請求中。 但是,我建議只將 <Container> 資源添加到組中,並使用目標 URI https://localhost:7579/Mobius/grp_text_100520/fopt/la來檢索每個容器的最新 <ContentInstances>。

第二個(較小的)問題是,從我可以從您的示例代碼中得到的信息是,您將相同的資源多次添加到組中,但僅使用不同的尋址方案。 請注意,CSE 在創建或更新mid屬性時必須刪除重復資源。

問題更新后編輯

您的資源樹是什么樣子的還不是很清楚。 因此,也許您應該只從一個資源引用開始,然后從那里繼續。 mid屬性中的有效 ID 要么是結構化的(基本上是rn屬性的路徑),要么是非結構化的 ID( ri的)。 CSE 應該過濾不正確的 ID,因此您應該在 CREATE 請求的結果正文中獲得正確的 ID 集。

順便說一句,“百里香”從何而來? 這僅在 label 中,它不會形成 ID。

關於 <fanOutPoint> 資源:通常所有請求都將針對<Group>資源,但對虛擬<fanOuPoint>資源的請求將轉發給該組的所有成員。 如果mid 中引用的資源可訪問,則轉發請求並收集結果,並作為原始請求的結果正文的一部分。

您還需要小心並考慮資源類型:僅向組成員發送有效請求。

更新 2

從 <Group> 資源的mid屬性中的 ID 看來,CSE 驗證了目標(盡管cnm (當前成員數)顯然是錯誤的,這似乎是 CSE 的錯誤)。

因此,您應該能夠向組的 <fopt> 資源發送請求,如上所述。

對於 CSE 運行時錯誤,您或許應該聯系 Mobius 開發人員。 但我的猜測是,您或許應該下載並安裝整個發行版,而不僅僅是單個文件。

對於未來的任何人; 誰在處理這個問題。

問題很簡單; 在 app.js 中有 4 個 function 調用(fopt.check)。 While calling the function in the app.js file, there are 5 parameter exists, on the other hand, while getting these arguments in the function it takes only 4 arguments. 出於這個原因,body_obj 總是變為“未定義”,然后它永遠不會到達“容器”或“容器實例”源。 最近,KETI 向 Mobius Github 頁面( https://github.com/IoTKETI/Mobius/commit/950182b725d5ffc0552119c5c705069 )發送了一個新的提交來解決這個問題。 它解決了這個問題,除非你使用 use_secure == 'disable'。 如果你嘗試使用 use_secure == 'enable' 你應該添加一個 if 語句來檢查 use_secure 並添加 import HTTPS 模塊。

此外,在創建資源時,定義“mid”屬性不是很清楚。 就目前而言,如果您想獲得(最新)來源; 您應該為該組的所有成員添加“/la”。 這是 KETI 在 Github 頁面問題 5 上推薦的。( https://github.com/IoTKETI/Mobius/issues/5#issuecomment-625076540

最后,謝謝 Andreas Kraft; 你的幫助非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM