blob: 5bcc8e294cb5e95dee90e50ce34d4aeca82e2d81 [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="618px" preserveAspectRatio="none" style="width:1441px;height:618px;" version="1.1" viewBox="0 0 1441 618" width="1441.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ogymrygz90zi" 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><rect fill="#FFFFFF" filter="url(#f1ogymrygz90zi)" height="431.3531" style="stroke:#A80036;stroke-width:1.2;" width="12" x="369.6" y="105.2719"/><rect fill="#FFFFFF" filter="url(#f1ogymrygz90zi)" height="396.3938" style="stroke:#A80036;stroke-width:1.2;" width="12" x="825.6" y="140.2313"/><rect fill="#FFFFFF" filter="url(#f1ogymrygz90zi)" height="71.1187" style="stroke:#000000;stroke-width:2.4;" width="549.6" x="723.6" y="158.2313"/><rect fill="#FFFFFF" filter="url(#f1ogymrygz90zi)" height="141.0375" style="stroke:#000000;stroke-width:2.4;" width="701.4" x="723.6" y="246.15"/><line style="stroke:#A80036;stroke-width:1.2;stroke-dasharray:5.0,5.0;" x1="54" x2="54" y1="67.9125" y2="547.425"/><line style="stroke:#A80036;stroke-width:1.2;stroke-dasharray:5.0,5.0;" x1="375" x2="375" y1="67.9125" y2="547.425"/><line style="stroke:#A80036;stroke-width:1.2;stroke-dasharray:5.0,5.0;" x1="831.6" x2="831.6" y1="67.9125" y2="547.425"/><line style="stroke:#A80036;stroke-width:1.2;stroke-dasharray:5.0,5.0;" x1="1337.4" x2="1337.4" y1="67.9125" y2="547.425"/><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="36.3562" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="91.2" x="6" y="25.5563"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="74.4" x="14.4" y="49.5504">Gateway</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="36.3562" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="91.2" x="6" y="546.225"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="74.4" x="14.4" y="570.2191">Gateway</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="36.3562" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="214.8" x="265.8" y="25.5563"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="198" x="274.2" y="49.5504">Hono Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="36.3562" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="214.8" x="265.8" y="546.225"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="198" x="274.2" y="570.2191">Hono Protocol Adapter</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="55.9125" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="187.2" x="735.6" y="6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="170.4" x="744" y="29.9941">Device Registration</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="27.6" x="815.4" y="49.5504">API</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="55.9125" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="187.2" x="735.6" y="546.225"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="170.4" x="744" y="570.2191">Device Registration</text><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="27.6" x="815.4" y="589.7754">API</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="36.3562" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="145.2" x="1263" y="25.5563"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="128.4" x="1271.4" y="49.5504">AMQP Network</text><rect fill="#FEFECE" filter="url(#f1ogymrygz90zi)" height="36.3562" style="stroke:#A80036;stroke-width:1.7999999999999998;" width="145.2" x="1263" y="546.225"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacing" textLength="128.4" x="1271.4" y="570.2191">AMQP Network</text><rect fill="#FFFFFF" filter="url(#f1ogymrygz90zi)" height="431.3531" style="stroke:#A80036;stroke-width:1.2;" width="12" x="369.6" y="105.2719"/><rect fill="#FFFFFF" filter="url(#f1ogymrygz90zi)" height="396.3938" style="stroke:#A80036;stroke-width:1.2;" width="12" x="825.6" y="140.2313"/><polygon fill="#A80036" points="355.2,100.4719,367.2,105.2719,355.2,110.0719,360,105.2719" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="54" x2="362.4" y1="105.2719" y2="105.2719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="62.4" y="99.1928">1</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="277.2" x="78" y="99.1928">sendTelemetry(edgeDeviceId, data)</text><polygon fill="#A80036" points="811.2,135.4313,823.2,140.2313,811.2,145.0313,816,140.2313" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="381.6" x2="818.4" y1="140.2313" y2="140.2313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="390" y="134.1521">2</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="405.6" x="405.6" y="134.1521">transfer(subject: "assert", device_id: $edgeDeviceId)</text><path d="M723.6,158.2313 L802.8,158.2313 L802.8,166.6313 L790.8,178.6313 L723.6,178.6313 L723.6,158.2313 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.2;"/><rect fill="none" height="71.1187" style="stroke:#000000;stroke-width:2.4;" width="549.6" x="723.6" y="158.2313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="25.2" x="741.6" y="173.9115">alt</text><text fill="#000000" font-family="sans-serif" font-size="13.2" font-weight="bold" lengthAdjust="spacing" textLength="446.4" x="820.8" y="172.8838">[gateway is authorized AND edge device does not exist]</text><line style="stroke:#A80036;stroke-width:1.2;" x1="837.6" x2="888" y1="204.15" y2="204.15"/><line style="stroke:#A80036;stroke-width:1.2;" x1="888" x2="888" y1="204.15" y2="219.75"/><line style="stroke:#A80036;stroke-width:1.2;" x1="838.8" x2="888" y1="219.75" y2="219.75"/><polygon fill="#A80036" points="850.8,214.95,838.8,219.75,850.8,224.55,846,219.75" style="stroke:#A80036;stroke-width:1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="9.6" x="846" y="198.0709">3</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="228" x="860.4" y="198.0709">createDevice($edgeDeviceId)</text><path d="M723.6,246.15 L802.8,246.15 L802.8,254.55 L790.8,266.55 L723.6,266.55 L723.6,246.15 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.2;"/><rect fill="none" height="141.0375" style="stroke:#000000;stroke-width:2.4;" width="701.4" x="723.6" y="246.15"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="25.2" x="741.6" y="261.8303">alt</text><text fill="#000000" font-family="sans-serif" font-size="13.2" font-weight="bold" lengthAdjust="spacing" textLength="374.4" x="820.8" y="260.8025">[device provisioning notification not sent yet]</text><polygon fill="#A80036" points="1323.6,287.2688,1335.6,292.0687,1323.6,296.8688,1328.4,292.0687" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="837.6" x2="1330.8" y1="292.0687" y2="292.0687"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="846" y="285.9896">4</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="456" x="861.6" y="285.9896">transfer("event/TENANT", hono_registration_status="NEW")</text><polygon fill="#A80036" points="850.8,322.2281,838.8,327.0281,850.8,331.8281,846,327.0281" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="843.6" x2="1336.8" y1="327.0281" y2="327.0281"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="858" y="320.949">5</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="176.4" x="873.6" y="320.949">disposition("accepted")</text><line style="stroke:#A80036;stroke-width:1.2;" x1="837.6" x2="888" y1="361.9875" y2="361.9875"/><line style="stroke:#A80036;stroke-width:1.2;" x1="888" x2="888" y1="361.9875" y2="377.5875"/><line style="stroke:#A80036;stroke-width:1.2;" x1="838.8" x2="888" y1="377.5875" y2="377.5875"/><polygon fill="#A80036" points="850.8,372.7875,838.8,377.5875,850.8,382.3875,846,377.5875" style="stroke:#A80036;stroke-width:1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="846" y="355.9084">6</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="192" x="861.6" y="355.9084">markNotificationAsSent()</text><polygon fill="#A80036" points="394.8,416.1469,382.8,420.9469,394.8,425.7469,390,420.9469" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="387.6" x2="824.4" y1="420.9469" y2="420.9469"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="402" y="414.8678">7</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="396" x="417.6" y="414.8678">transfer(status: "200", ..., body: registration status)</text><polygon fill="#A80036" points="1323.6,451.1063,1335.6,455.9063,1323.6,460.7063,1328.4,455.9063" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="381.6" x2="1330.8" y1="455.9063" y2="455.9063"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="390" y="449.8271">8</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="373.2" x="405.6" y="449.8271">transfer(device_id: $edgeDeviceId, body: $data)</text><polygon fill="#A80036" points="394.8,486.0656,382.8,490.8656,394.8,495.6656,390,490.8656" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="387.6" x2="1336.8" y1="490.8656" y2="490.8656"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="10.8" x="402" y="484.7865">9</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="176.4" x="417.6" y="484.7865">disposition("accepted")</text><polygon fill="#A80036" points="67.2,521.025,55.2,525.825,67.2,530.625,62.4,525.825" style="stroke:#A80036;stroke-width:1.2;"/><line style="stroke:#A80036;stroke-width:1.2;" x1="60" x2="368.4" y1="525.825" y2="525.825"/><text fill="#000000" font-family="sans-serif" font-size="15.6" font-weight="bold" lengthAdjust="spacing" textLength="22.8" x="74.4" y="519.7459">10</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacing" textLength="18" x="102" y="519.7459">ok</text><!--MD5=[38ab6c6c5de9336e2806ea649ddddc6d]
@startuml
skinparam BoxPadding 10
scale 1.2
participant "Gateway" as gw
participant "Hono Protocol Adapter" as PA
participant "Device Registration\nAPI" as reg
participant "AMQP Network" as amqp
autonumber
gw -> PA++: sendTelemetry(edgeDeviceId, data)
PA -> reg++: transfer(subject: "assert", device_id: $edgeDeviceId)
alt gateway is authorized AND edge device does not exist
reg -> reg: createDevice($edgeDeviceId)
end
alt device provisioning notification not sent yet
reg -> amqp: transfer("event/TENANT", hono_registration_status="NEW")
amqp -> reg: disposition("accepted")
reg -> reg: markNotificationAsSent()
end
PA <- reg: transfer(status: "200", ..., body: registration status)
PA -> amqp: transfer(device_id: $edgeDeviceId, body: $data)
amqp -> PA: disposition("accepted")
gw <- PA: ok
@enduml
PlantUML version 1.2021.01beta3(Unknown compile time)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>