| <?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><!-- |
| participant "HTTP Protocol Adapter" |
| participant "AMQP 1.0 Network" |
| participant "Consumer Application" |
| sending explicit event to signal command readiness |
| The HTTP specific header "hono-ttd" is used to provide |
| the value for ttd by the device itself |
| Device -> "HTTP Protocol Adapter": POST event(hono-ttd="60", Content-Type="application/vnd.eclipse-hono-empty-notification") |
| note over "HTTP Protocol Adapter" |
| creation-time: NOW (in epoch milliseconds) |
| "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) |
| 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 |