blob: f51d1e5ae4daa3e278e35de2452fc15cd8f41ab5 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="711.6px" preserveAspectRatio="none" style="width:1803px;height:711px;" version="1.1" viewBox="0 0 1803 711" width="1803.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f1r9pxs4xq39he" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="663.3844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="789" x2="789" y1="45.9563" y2="663.3844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1253.4" x2="1253.4" y1="45.9563" y2="663.3844"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="1527.6" x2="1527.6" y1="45.9563" y2="663.3844"/><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="686.1785">Device</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="684.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="693" y="27.5941">HTTP Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="204" x="684.6" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="187.2" x="693" y="686.1785">HTTP Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="1165.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="1174.2" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="1165.8" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="1174.2" y="686.1785">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="198" x="1426.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="1435.2" y="27.5941">Consumer Application</text><rect fill="#FEFECE" filter="url(#f1r9pxs4xq39he)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="198" x="1426.8" y="662.1844"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="1435.2" y="686.1785">Consumer Application</text><path d="M54,63.9563 L54,111.9563 L476.4,111.9563 L476.4,75.9563 L464.4,63.9563 L54,63.9563 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M464.4,63.9563 L464.4,75.9563 L476.4,75.9563 L464.4,63.9563 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="397.2" x="61.2" y="84.4365">sending explicit event to signal command readiness</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="61.2" y="102.5959">for the next 60 seconds</text><path d="M54,129.075 L54,177.075 L493.2,177.075 L493.2,141.075 L481.2,129.075 L54,129.075 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M481.2,129.075 L481.2,141.075 L493.2,141.075 L481.2,129.075 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="414" x="61.2" y="149.5553">The HTTP specific header "hono-ttd" is used to provide</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="270" x="61.2" y="167.7146">the value for ttd by the device itself</text><polygon fill="#A80036" points="774.6,208.7531,786.6,213.5531,774.6,218.3531,779.4,213.5531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="781.8" y1="213.5531" y2="213.5531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="711.6" x="57" y="207.474">POST event(hono-ttd="60", Content-Type="application/vnd.eclipse-hono-empty-notification")</text><path d="M608.4,229.1531 L608.4,331.1531 L963.6,331.1531 L963.6,241.1531 L951.6,229.1531 L608.4,229.1531 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M951.6,229.1531 L951.6,241.1531 L963.6,241.1531 L951.6,229.1531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="193.2" x="615.6" y="249.6334">Set AMQP 1.0 properties:</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="157.2" x="615.6" y="267.7928">tenant-id: "TENANT",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="133.2" x="615.6" y="285.9521">device-id: "4711",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="330" x="615.6" y="304.1115">creation-time: NOW (in epoch milliseconds)</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="176.4" x="615.6" y="322.2709">ttd: value from http-ttd</text><polygon fill="#A80036" points="1239,363.3094,1251,368.1094,1239,372.9094,1243.8,368.1094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="789" x2="1246.2" y1="368.1094" y2="368.1094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="435.6" x="797.4" y="362.0303">1.0 transfer("event/TENANT", "4711", , creation-time, ttd)</text><polygon fill="#A80036" points="1513.8,398.2688,1525.8,403.0687,1513.8,407.8688,1518.6,403.0687" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1253.4" x2="1521" y1="403.0687" y2="403.0687"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="246" x="1261.8" y="396.9896">1.2 transfer("event/TENANT", ...)</text><polygon fill="#A80036" points="1266.6,433.2281,1254.6,438.0281,1266.6,442.8281,1261.8,438.0281" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1259.4" x2="1527" y1="438.0281" y2="438.0281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="205.2" x="1273.8" y="431.949">2.0 disposition("accepted")</text><polygon fill="#A80036" points="802.2,468.1875,790.2,472.9875,802.2,477.7875,797.4,472.9875" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="795" x2="1252.2" y1="472.9875" y2="472.9875"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="205.2" x="809.4" y="466.9084">2.0 disposition("accepted")</text><polygon fill="#A80036" points="61.8,503.1469,49.8,507.9469,61.8,512.7469,57,507.9469" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="787.8" y1="507.9469" y2="507.9469"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="177.6" x="69" y="501.8678">HTTP/1.1 202 Accepted</text><line style="stroke: #A80036; stroke-width: 1.2;" x1="1528.2" x2="1578.6" y1="542.9063" y2="542.9063"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1578.6" x2="1578.6" y1="542.9063" y2="558.5063"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="1529.4" x2="1578.6" y1="558.5063" y2="558.5063"/><polygon fill="#A80036" points="1541.4,553.7063,1529.4,558.5063,1541.4,563.3063,1536.6,558.5063" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="253.2" x="1536.6" y="536.8271">callbackIfValid(creation-time, ttd)</text><path d="M1314,574.1062 L1314,640.1062 L1736.4,640.1062 L1736.4,586.1062 L1724.4,574.1062 L1314,574.1062 " fill="#FBFB77" filter="url(#f1r9pxs4xq39he)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1724.4,574.1062 L1724.4,586.1062 L1736.4,586.1062 L1724.4,574.1062 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="397.2" x="1321.2" y="594.5865">React if message indicates that currently the device</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="237.6" x="1321.2" y="612.7459">is ready to receive a command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="271.2" x="1321.2" y="630.9053">(e.g. by trying to send a command)</text><!--
@startuml
scale 1.2
participant Device
participant "HTTP Protocol Adapter"
participant "AMQP 1.0 Network"
participant "Consumer Application"
note right of Device
sending explicit event to signal command readiness
for the next 60 seconds
end note
note right of Device
The HTTP specific header "hono-ttd" is used to provide
the value for ttd by the device itself
end note
Device -> "HTTP Protocol Adapter": POST event(hono-ttd="60", Content-Type="application/vnd.eclipse-hono-empty-notification")
note over "HTTP Protocol Adapter"
Set AMQP 1.0 properties:
tenant-id: "TENANT",
device-id: "4711",
creation-time: NOW (in epoch milliseconds)
ttd: value from http-ttd
end note
"HTTP Protocol Adapter" -> "AMQP 1.0 Network": 1.0 transfer("event/TENANT", "4711", , creation-time, ttd)
"AMQP 1.0 Network" -> "Consumer Application": 1.2 transfer("event/TENANT", ...)
"Consumer Application" -> "AMQP 1.0 Network": 2.0 disposition("accepted")
"AMQP 1.0 Network" -> "HTTP Protocol Adapter": 2.0 disposition("accepted")
"HTTP Protocol Adapter" -> Device: HTTP/1.1 202 Accepted
"Consumer Application" -> "Consumer Application": callbackIfValid(creation-time, ttd)
note over "Consumer Application"
React if message indicates that currently the device
is ready to receive a command
(e.g. by trying to send a command)
end note
@enduml
PlantUML version 1.2019.07beta1(Unknown compile time)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
Java Version: 1.7.0_25-b15
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>