一、概述
本文主要就Hello World 教程 • Eclipse Ditto™ • 数字孪生框架 文章做一个梳理,归纳。
二、完整代码如下
{
"thingId": "io.eclipseprojects.ditto:floor-lamp-0815",
"policyId": "io.eclipseprojects.ditto:floor-lamp-0815",
"definition": "https://eclipse-ditto.github.io/ditto-examples/wot/models/floor-lamp-1.0.0.tm.jsonld",
"attributes": {
"manufacturer": "",
"serialNo": ""
},
"features": {
"Spot1": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/dimmable-colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/switchable-1.0.0.tm.jsonld"
],
"properties": {
"dimmer-level": 0,
"color": { "r": 0, "g": 0, "b": 0 },
"on": false
}
},
"Spot2": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/dimmable-colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/switchable-1.0.0.tm.jsonld"
],
"properties": {
"dimmer-level": 0,
"color": { "r": 0, "g": 0, "b": 0 },
"on": false
}
},
"Spot3": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/dimmable-colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/switchable-1.0.0.tm.jsonld"
],
"properties": {
"dimmer-level": 0,
"color": { "r": 0, "g": 0, "b": 0 },
"on": false
}
},
"ConnectionStatus": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/connection-status-1.0.0.tm.jsonld"
],
"properties": {
"readySince": "",
"readyUntil": ""
}
},
"PowerConsumptionAwareness": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/power-consumption-aware-1.0.0.tm.jsonld"
],
"properties": {
"reportPowerConsumption": {}
}
},
"SmokeDetection": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/smoke-detector-1.0.0.tm.jsonld"
]
},
"Status-LED": {
"definition": [
"https://eclipse-ditto.github.io/ditto-examples/wot/models/colored-lamp-1.0.0.tm.jsonld",
"https://eclipse-ditto.github.io/ditto-examples/wot/models/switchable-1.0.0.tm.jsonld"
],
"properties": {
"color": { "r": 0, "g": 0, "b": 0 },
"on": false
}
}
}
}
三、创建一个物模型
(1)创建"落地灯"的数字孪生设备
bash
curl -u ditto:ditto -X PUT -H 'Content-Type: application/json' -d '{
"definition": "https://eclipse-ditto.github.io/ditto-examples/wot/models/floor-lamp-1.0.0.tm.jsonld",
"attributes": {
"manufacturer": "ACME",
"serialNo": "0815666337"
}
}' 'http://localhost:8080/api/2/things/io.eclipseprojects.ditto:floor-lamp-0815'
(2)通过ID查询该设备
bash
curl -u ditto:ditto -X GET \
'http://localhost:8080/api/2/things/io.eclipseprojects.ditto:floor-lamp-0815' | jq
# if you have python installed, that's an alternative for pretty-printing:
curl -u ditto:ditto -X GET \
'http://localhost:8080/api/2/things/io.eclipseprojects.ditto:floor-lamp-0815' | python -m json.tool
(3)添加带有状态的功能
添加一个特征来表示灯的第一个聚光灯。特征保存动态状态数据,如 传感器读数或设备配置:
bash
curl -u ditto:ditto -X PUT -H 'Content-Type: application/json' -d '{
"properties": {
"on": false,
"dimmer-level": 0,
"color": { "r": 0, "g": 0, "b": 0 }
}
}' 'http://localhost:8080/api/2/things/io.eclipseprojects.ditto:floor-lamp-0815/features/Spot1'
(4)检索当前灯的状态
例如:检索 当前开关状态:Spot1
bash
curl -u ditto:ditto -X GET \
'http://localhost:8080/api/2/things/io.eclipseprojects.ditto:floor-lamp-0815/features/Spot1/properties/on'
四、更新物模型数据
(1)通过更新灯具属性来点亮灯具:on
bash
curl -u ditto:ditto -X PUT -H 'Content-Type: application/json' -d 'true' \
'http://localhost:8080/api/2/things/io.eclipseprojects.ditto:floor-lamp-0815/features/Spot1/properties/on'
(2)查询产品
bash
curl -u ditto:ditto -X GET \
'http://localhost:8080/api/2/search/things?filter=eq(attributes/manufacturer,"ACME")'