Add architecture test

This commit is contained in:
Paulus Schoutsen 2018-04-23 16:31:30 -04:00
parent 3ed5a01e36
commit a3da0f965e
4 changed files with 1781 additions and 2 deletions

View File

@ -1,4 +1,4 @@
# Hello world!
# Home Assistant developer documentation
This is a test
Welcome to the Home Assistant development documentation. This is the place to learn all about how Home Assistant works and how you can extend it with support for your devices and services!

View File

@ -1 +1,20 @@
# WOW Architecture!
Before we dive into the Home Assistant architecture, let's get a clear overview of the home automation landscape as a whole. This way, we can show how the different parts of Home Assistant fit into the picture.
For more information about each part in this overview, <a href='/blog/2014/12/26/home-control-home-automation-and-the-smart-home/'>check out our blog</a>. Here's the tl;dr version of the blog:
* Home Control is responsible for collecting information and controlling devices.
* Home Automation triggers commands based on user configurations.
* Smart Home triggers commands based on previous behavior.
![Home Automation landscape](home_automation_landscape.svg)
The Home Assistant core is responsible for Home Control. Home Assistant contains four parts which make this possible:
* **Event Bus**: facilitates the firing and listening of events -- the beating heart of Home Assistant.
* **State Machine**: keeps track of the states of things and fires a `state_changed` event when a state has been changed.
* **Service Registry**: listens on the event bus for `call_service` events and allows other code to register services.
* **Timer**: sends a `time_changed` event every 1 second on the event bus.
![Home Assistant core architecture](ha_architecture.svg)

View File

@ -0,0 +1,856 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="267.40555mm"
height="143.58057mm"
viewBox="0 0 267.40555 143.58057"
version="1.1"
id="svg8"
inkscape:version="0.92.0 r15299"
sodipodi:docname="ha_architecture.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4985"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4983"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInS"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4981"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4979"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(-0.2)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleInM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4823"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInS"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleInS"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4826"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(-0.2)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4973"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4971"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(0,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4969"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4967"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4711"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(0,0)" />
</marker>
<marker
inkscape:stockid="Torso"
orient="auto"
refY="0.0"
refX="0.0"
id="Torso"
style="overflow:visible"
inkscape:isstock="true">
<g
id="g4913"
transform="scale(0.7)"
style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
<path
id="path4899"
d="M -4.7792281,-3.2395420 C -2.4288541,-2.8736027 0.52103922,-1.3019943 0.25792722,0.38794346 C -0.0051877922,2.0778819 -2.2126741,2.6176539 -4.5630471,2.2517169 C -6.9134221,1.8857769 -8.5210350,0.75201414 -8.2579220,-0.93792336 C -7.9948090,-2.6278615 -7.1296041,-3.6054813 -4.7792281,-3.2395420 z "
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-opacity:1" />
<path
id="path4901"
d="M 4.4598789,0.088665736 C -2.5564571,-4.3783320 5.2248769,-3.9061806 -0.84829578,-8.7197331"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
<path
id="path4903"
d="M 4.9298719,0.057520736 C -1.3872731,1.7494689 1.8027579,5.4782079 -4.9448731,7.5462725"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
<rect
id="rect4905"
transform="matrix(0.527536,-0.849533,0.887668,0.460484,0,0)"
y="-1.7408575"
x="-10.391706"
height="2.7608147"
width="2.6366582"
style="fill-rule:evenodd;stroke-width:1pt;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" />
<rect
id="rect4907"
transform="matrix(0.671205,-0.741272,0.790802,0.612072,0,0)"
y="-7.9629307"
x="4.9587269"
height="2.8614161"
width="2.7327356"
style="fill-rule:evenodd;stroke-width:1pt;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" />
<path
id="path4909"
transform="matrix(0,-1.109517,1.109517,0,25.96648,19.71619)"
d="M 16.779951 -28.685045 A 0.60731727 0.60731727 0 1 0 15.565317,-28.685045 A 0.60731727 0.60731727 0 1 0 16.779951 -28.685045 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
<path
id="path4911"
transform="matrix(0,-1.109517,1.109517,0,26.82450,16.99126)"
d="M 16.779951 -28.685045 A 0.60731727 0.60731727 0 1 0 15.565317,-28.685045 A 0.60731727 0.60731727 0 1 0 16.779951 -28.685045 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
</g>
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4954"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4705"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(1,0)" />
</marker>
<inkscape:path-effect
effect="powerstroke"
id="path-effect4685"
is_visible="true"
offset_points="0,0.13229166"
sort_points="true"
interpolator_type="CubicBezierJohan"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="extrp_arc"
miter_limit="4"
end_linecap_type="zerowidth" />
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Sstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4590"
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.3) translate(-2.3,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="marker5272"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5270"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="marker5232"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5230"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4578"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(1,0)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-5"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-6-5"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-8-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0-5"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-6-5-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-8-0-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84-2"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.9899495"
inkscape:cx="523.48437"
inkscape:cy="158.30244"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1137"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-3.8805606,-107.28114)"
style="display:inline">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.58333302px;line-height:6.61458302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="268.43951"
y="123.67271"
id="text4509"><tspan
sodipodi:role="line"
id="tspan4507"
x="268.00031"
y="123.67271"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;letter-spacing:-0.43920839px;text-anchor:end;stroke-width:0.26458332"
dy="-4.7600002">Home Assistant</tspan><tspan
sodipodi:role="line"
x="268.00031"
y="130.28729"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:end;letter-spacing:-0.43920839px;text-anchor:end;stroke-width:0.26458332"
id="tspan4511">Core Architecture</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot4513"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,6.9043701,117.4865)"><flowRegion
id="flowRegion4515"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'"><rect
id="rect4517"
width="25.714285"
height="106.42857"
x="775"
y="41.9524"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'" /></flowRegion><flowPara
id="flowPara4519" /></flowRoot> <rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.86500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4521"
width="42"
height="23"
x="204.7749"
y="165.25009" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="225.69725"
y="173.02853"
id="text4525"
transform="scale(0.9650764,1.0361874)"><tspan
sodipodi:role="line"
id="tspan4523"
x="225.69725"
y="173.02853"
style="line-height:0.34869605px;stroke-width:0.15124445">Timer</tspan></text>
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.86500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4521-6"
width="42"
height="23.000002"
x="114.79425"
y="164.52242" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="125.60648"
y="172.14389"
id="text4525-5"
transform="scale(0.9650764,1.0361874)"><tspan
sodipodi:role="line"
id="tspan4523-3"
x="125.60648"
y="172.14389"
style="line-height:0.34869605px;stroke-width:0.15124445">Event Bus</tspan></text>
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.86500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4521-2"
width="42"
height="23.000002"
x="114.37717"
y="109.73598" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="140.76022"
y="118.67937"
id="text4525-8"
transform="scale(0.9650764,1.0361874)"><tspan
sodipodi:role="line"
id="tspan4523-8"
x="140.76022"
y="118.67937"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
dy="-2.2199998">State</tspan><tspan
sodipodi:role="line"
x="140.76022"
y="122.46048"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5413">Machine</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284786px;line-height:3.62678003px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="76.203026"
y="156.70473"
id="text5417-6"
transform="scale(0.9748707,1.0257771)"><tspan
sodipodi:role="line"
id="tspan5415-9"
x="76.203026"
y="156.70473"
style="stroke-width:0.14507121"
dy="-3.8942432">listen for events/</tspan><tspan
sodipodi:role="line"
x="76.203026"
y="160.33151"
style="stroke-width:0.14507121"
id="tspan5419-3">fire event</tspan></text>
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.86500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4521-2-1"
width="42"
height="23.000004"
x="114.9117"
y="221.45465" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="141.31412"
y="226.4964"
id="text4525-8-7"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
id="tspan4523-8-4"
x="141.31412"
y="226.4964"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
dy="-2.2199998">Service</tspan><tspan
sodipodi:role="line"
x="141.31412"
y="230.27751"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5413-0">Registry</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.06500006;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5470"
width="35.01231"
height="34.210499"
x="22.322157"
y="143.95389" />
<rect
style="fill:#9fc5e8;fill-opacity:1;stroke:#000000;stroke-width:1.06500006;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5472"
width="60.937454"
height="135.02786"
x="7.8895965"
y="110.62202" />
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.79502076;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474"
width="55.228729"
height="15.271934"
x="10.810782"
y="124.82534"
ry="2.9417019" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155703"
x="32.544708"
y="127.35789"
id="text4525-5-9"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
id="tspan4523-3-6"
x="32.544708"
y="127.35789"
style="line-height:0.37247187px;stroke-width:0.16155703">Light</tspan></text>
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.79502076;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474-6"
width="55.228729"
height="15.271934"
x="10.61033"
y="158.23402"
ry="2.9417019" />
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.79502076;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474-3"
width="55.228729"
height="15.271934"
x="10.743965"
y="226.1205"
ry="2.9417019" />
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.79502076;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474-4"
width="55.228729"
height="15.271934"
x="10.743966"
y="192.17728"
ry="2.9417019" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155702"
x="20.24564"
y="223.22211"
id="text4525-5-9-5"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
id="tspan4523-3-6-7"
x="20.24564"
y="223.22211"
style="line-height:0.37247187px;stroke-width:0.16155702">Many more...</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155702"
x="17.28315"
y="191.70107"
id="text4525-5-9-4"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
id="tspan4523-3-6-3"
x="17.28315"
y="191.70107"
style="line-height:0.37247187px;stroke-width:0.16155702">Device Tracker</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155702"
x="30.40275"
y="159.92683"
id="text4525-5-9-2"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
id="tspan4523-3-6-6"
x="30.40275"
y="159.92683"
style="line-height:0.37247187px;stroke-width:0.16155702">Switch</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.86684513px;line-height:3.66677809px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14667109"
x="11.098916"
y="120.1047"
id="text4525-5-9-54"
transform="scale(1.0066282,0.9934154)"><tspan
sodipodi:role="line"
id="tspan4523-3-6-0"
x="11.098916"
y="120.1047"
style="line-height:0.33815217px;stroke-width:0.14667109">Components</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="76.623322"
y="116.72686"
id="text5417-6-0"
transform="scale(0.97487067,1.0257771)"><tspan
sodipodi:role="line"
x="76.623322"
y="116.72686"
style="stroke-width:0.14507121"
id="tspan5419-3-8">set state</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.87828809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985)"
d="m 134.36663,161.72833 -0.0146,-1.20582 -0.0178,-27.58952"
id="path4951"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.9664281;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-8)"
d="m 143.6486,190.71339 0.0168,1.27138 0.0205,29.08959"
id="path4951-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:1.10393262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-6)"
d="m 159.711,175.37009 1.89837,-0.0147 43.43538,-0.0179"
id="path4951-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:1.08912098;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-84)"
d="m 111.54159,166.92655 -1.77427,0.0152 -40.595547,0.0186"
id="path4951-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:1.08779776;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-6-5)"
d="m 72.342632,186.06141 1.764254,-0.0153 40.366654,-0.0186"
id="path4951-7-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:1.08871329;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-84-8)"
d="m 111.39173,223.45319 -1.76627,0.0153 -40.412633,0.0187"
id="path4951-3-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:1.08904195;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-6-5-8)"
d="m 72.431037,242.88507 1.774682,-0.0152 40.605411,-0.0186"
id="path4951-7-6-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="76.486244"
y="175.48161"
id="text5417-6-6"
transform="scale(0.97487067,1.0257771)"><tspan
sodipodi:role="line"
x="76.486244"
y="175.48161"
style="stroke-width:0.14507121"
id="tspan5419-3-89"
dy="-3.8900001">call event </tspan><tspan
sodipodi:role="line"
x="76.486244"
y="179.1084"
style="stroke-width:0.14507121"
id="tspan4609">listeners</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="76.617371"
y="211.42024"
id="text5417-6-6-7"
transform="scale(0.97487066,1.0257771)"><tspan
sodipodi:role="line"
x="76.617371"
y="211.42024"
style="stroke-width:0.14507121"
id="tspan4609-8"
dy="-3.8900001">publish</tspan><tspan
sodipodi:role="line"
x="76.617371"
y="215.04703"
style="stroke-width:0.14507121"
id="tspan4634">service</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="76.617371"
y="229.13786"
id="text5417-6-6-3"
transform="scale(0.97487066,1.0257771)"><tspan
sodipodi:role="line"
x="76.617371"
y="229.13786"
style="stroke-width:0.14507121"
id="tspan4609-9"
dy="-3.8900001">call</tspan><tspan
sodipodi:role="line"
x="76.617371"
y="232.76465"
style="stroke-width:0.14507121"
id="tspan4648">service</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.90474069;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-4)"
d="m 121.36058,218.55632 -0.0146,-1.28211 -0.0178,-29.33525"
id="path4951-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<rect
style="fill:#fffff3;fill-opacity:1;stroke:none;stroke-width:0.47357163;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1;paint-order:markers fill stroke"
id="rect4773"
width="1.4365727"
height="12.76212"
x="120.5771"
y="197.74188" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121;stroke-opacity:1;"
x="124.50616"
y="200.86783"
id="text5417-6-6-7-6"
transform="scale(0.97487066,1.0257771)"><tspan
sodipodi:role="line"
x="124.50616"
y="200.86783"
style="text-align:center;text-anchor:middle;stroke-width:0.14507121;stroke:none;stroke-opacity:1;"
id="tspan4634-1"
dy="-3.8900001">call_service</tspan><tspan
sodipodi:role="line"
x="124.50616"
y="204.49461"
style="text-align:center;text-anchor:middle;stroke-width:0.14507121;stroke:none;stroke-opacity:1;"
id="tspan4673">events</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.08978689;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-84-2)"
d="m 111.70898,121.35631 -1.77986,0.0152 -40.723236,0.0186"
id="path4951-3-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="149.49513"
y="200.99426"
id="text5417-6-6-7-6-3"
transform="scale(0.97487066,1.0257771)"><tspan
sodipodi:role="line"
x="149.49513"
y="200.99426"
style="text-align:start;text-anchor:start;stroke-width:0.14507121"
id="tspan4634-1-4"
dy="-3.8900001">service_called</tspan><tspan
sodipodi:role="line"
x="149.49513"
y="204.62105"
style="text-align:start;text-anchor:start;stroke-width:0.14507121"
id="tspan4673-1">events</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="166.82645"
y="180.94534"
id="text5417-6-6-7-6-3-3"
transform="scale(0.97487066,1.0257771)"><tspan
sodipodi:role="line"
x="166.82645"
y="180.94534"
style="text-align:start;text-anchor:start;stroke-width:0.14507121"
id="tspan4634-1-4-4"
dy="-3.8900001">time_changed</tspan><tspan
sodipodi:role="line"
x="166.82645"
y="184.57213"
style="text-align:start;text-anchor:start;stroke-width:0.14507121"
id="tspan4673-1-0">events</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.80284834px;line-height:3.62678027px;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14507121"
x="140.479"
y="145.89252"
id="text5417-6-6-7-6-3-9"
transform="scale(0.97487066,1.0257771)"><tspan
sodipodi:role="line"
x="140.479"
y="145.89252"
style="text-align:start;text-anchor:start;stroke-width:0.14507121"
id="tspan4634-1-4-0"
dy="-3.8899999">state_changed</tspan><tspan
sodipodi:role="line"
x="140.479"
y="149.5193"
style="text-align:start;text-anchor:start;stroke-width:0.14507121"
id="tspan4673-1-2">events</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,904 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="223.45195mm"
height="150.39879mm"
viewBox="0 0 223.45195 150.39879"
version="1.1"
id="svg8"
inkscape:version="0.92.0 r15299"
sodipodi:docname="home_automation_landscape.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4983"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleInS"
orient="auto"
refY="0"
refX="0"
id="marker4981"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4979"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.2)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="TriangleInM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4823"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleInS"
orient="auto"
refY="0"
refX="0"
id="TriangleInS"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4826"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.2)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="marker4973"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4971"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="marker4969"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4967"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4711"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Torso"
orient="auto"
refY="0"
refX="0"
id="Torso"
style="overflow:visible"
inkscape:isstock="true">
<g
id="g4913"
transform="scale(0.7)"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<path
id="path4899"
d="m -4.7792281,-3.239542 c 2.350374,0.3659393 5.30026732,1.9375477 5.03715532,3.62748546 C -0.00518779,2.0778819 -2.2126741,2.6176539 -4.5630471,2.2517169 -6.9134221,1.8857769 -8.521035,0.75201414 -8.257922,-0.93792336 -7.994809,-2.6278615 -7.1296041,-3.6054813 -4.7792281,-3.239542 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4901"
d="M 4.4598789,0.08866574 C -2.5564571,-4.378332 5.2248769,-3.9061806 -0.84829578,-8.7197331"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4903"
d="M 4.9298719,0.05752074 C -1.3872731,1.7494689 1.8027579,5.4782079 -4.9448731,7.5462725"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
inkscape:connector-curvature="0" />
<rect
id="rect4905"
transform="matrix(0.527536,-0.849533,0.887668,0.460484,0,0)"
y="-1.7408575"
x="-10.391706"
height="2.7608147"
width="2.6366582"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" />
<rect
id="rect4907"
transform="matrix(0.671205,-0.741272,0.790802,0.612072,0,0)"
y="-7.9629307"
x="4.9587269"
height="2.8614161"
width="2.7327356"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" />
<path
id="path4909"
transform="matrix(0,-1.109517,1.109517,0,25.96648,19.71619)"
d="m 16.779951,-28.685045 a 0.60731727,0.60731727 0 1 0 -1.214634,0 0.60731727,0.60731727 0 1 0 1.214634,0 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4911"
transform="matrix(0,-1.109517,1.109517,0,26.8245,16.99126)"
d="m 16.779951,-28.685045 a 0.60731727,0.60731727 0 1 0 -1.214634,0 0.60731727,0.60731727 0 1 0 1.214634,0 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="marker4954"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4705"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<inkscape:path-effect
effect="powerstroke"
id="path-effect4685"
is_visible="true"
offset_points="0,0.13229166"
sort_points="true"
interpolator_type="CubicBezierJohan"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="extrp_arc"
miter_limit="4"
end_linecap_type="zerowidth" />
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4590"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,-0.69,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="marker5272"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5270"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="marker5232"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5230"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4578"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-5"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-6-5"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-8-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0-5"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-6-5-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-8-0-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84-2"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-84-2-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-0-6-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-8-0"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-5-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-63"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-8-2"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-5-62"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-8-3"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-5-7"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-69"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-1"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="marker4985-5"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4983-13"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(-0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.5"
inkscape:cx="672.05655"
inkscape:cy="79.162523"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1536"
inkscape:window-height="809"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-10.588714,-116.71881)"
style="display:inline">
<rect
style="display:inline;fill:#9fc5e8;fill-opacity:1;stroke:#000000;stroke-width:0.677472;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5472-3-1-9"
width="222.7041"
height="41.217026"
x="10.997826"
y="219.45093" />
<rect
style="display:inline;fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.99238181;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474-3-8"
width="53.971424"
height="24.349827"
x="175.33235"
y="233.58411"
ry="4.6902986" />
<flowRoot
xml:space="preserve"
id="flowRoot4513"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,6.9043701,117.4865)"><flowRegion
id="flowRegion4515"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'"><rect
id="rect4517"
width="25.714285"
height="106.42857"
x="775"
y="41.9524"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'" /></flowRegion><flowPara
id="flowPara4519" /></flowRoot> <rect
style="display:inline;fill:#9fc5e8;fill-opacity:1;stroke:#000000;stroke-width:0.48170522;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5472-3-8-8"
width="54.339752"
height="21.388721"
x="10.829567"
y="116.95966" />
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.06500006;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5470"
width="35.01231"
height="34.210499"
x="22.322157"
y="143.95389" />
<rect
style="fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.99238175;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474-3"
width="53.971424"
height="24.349825"
x="16.183468"
y="233.5192"
ry="4.6902981" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155702"
x="36.045589"
y="235.3748"
id="text4525-5-9-5"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
x="36.045589"
y="235.3748"
style="line-height:0.37247187px;stroke-width:0.16155702"
id="tspan5341">Lights</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.85971832;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985)"
d="m 168.96722,166.03337 -0.0146,-1.15536 -0.0178,-26.4352"
id="path4951"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.94406116;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-8)"
d="m 182.86476,141.59973 0.0181,1.12869 0.022,25.82477"
id="path4951-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<rect
style="display:inline;fill:#9fc5e8;fill-opacity:1;stroke:#000000;stroke-width:0.48170522;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5472-3"
width="54.339752"
height="21.388721"
x="179.30098"
y="117.29016" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="214.21021"
y="125.508"
id="text4525-8-4"
transform="scale(0.9650764,1.0361874)"><tspan
sodipodi:role="line"
x="214.21021"
y="125.508"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5413-9">Smart Home</tspan></text>
<rect
style="display:inline;fill:#9fc5e8;fill-opacity:1;stroke:#000000;stroke-width:0.48170522;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5472-3-8"
width="54.339752"
height="21.388721"
x="117.56172"
y="117.22337" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="149.95982"
y="125.70148"
id="text4525-8-4-2"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="149.95982"
y="125.70148"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5413-9-6"
dy="-3.4999983">Home</tspan><tspan
sodipodi:role="line"
x="149.95982"
y="129.48259"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474">Automation</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="39.138622"
y="125.46329"
id="text4525-8-4-2-9"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="39.138622"
y="125.46329"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8">User</tspan></text>
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:1.16749406;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-84-2-4)"
d="m 114.0517,127.63726 -2.04274,0.0152 -46.737832,0.0186"
id="path4951-3-4-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="93.829681"
y="118.77126"
id="text4525-8-4-2-9-4"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="93.829681"
y="118.77126"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-3">Configuration</tspan></text>
<rect
style="display:inline;fill:#9fc5e8;fill-opacity:1;stroke:#000000;stroke-width:0.48199999;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5472-3-1"
width="222.23811"
height="20.90729"
x="10.98922"
y="168.71695" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="126.84965"
y="174.99847"
id="text4525-8-4-2-9-2"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="126.84965"
y="174.99847"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4">Home Control</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="44.333305"
y="144.40453"
id="text4525-8-4-2-9-2-4"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="44.333305"
y="144.40453"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4-6">Commands</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="32.77951"
y="157.53647"
id="text4525-8-4-2-9-2-1"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="32.77951"
y="157.53647"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4-9">Information</tspan></text>
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:0.94522905;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-8-0)"
d="m 13.434252,141.35309 0.01792,1.13976 0.02188,26.07814"
id="path4951-6-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:0.85722983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-1)"
d="m 61.946656,165.98792 -0.01452,-1.1553 -0.0177,-26.43364"
id="path4951-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<rect
style="display:inline;fill:#cfe2f3;fill-opacity:1;stroke:#000000;stroke-width:0.99238181;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50078738;stroke-opacity:1"
id="rect5474-3-1"
width="53.971424"
height="24.349827"
x="92.93354"
y="233.9621"
ry="4.6902986" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155702"
x="112.86232"
y="235.3748"
id="text4525-5-9-5-4"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
x="112.86232"
y="235.3748"
style="line-height:0.37247187px;stroke-width:0.16155702"
id="tspan5341-3">Switches</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.46228218px;line-height:4.03892612px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16155702"
x="192.84842"
y="235.36662"
id="text4525-5-9-5-4-2"
transform="scale(0.94728752,1.0556457)"><tspan
sodipodi:role="line"
x="192.84842"
y="235.36662"
style="line-height:0.37247187px;stroke-width:0.16155702"
id="tspan5341-3-8">Many more...</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="41.44257"
y="221.21707"
id="text4525-8-4-2-9-4-7"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="41.44257"
y="221.21707"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-3-5">Internet of Things</tspan></text>
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:0.94489706;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-8-2)"
d="m 120.63407,141.54543 0.018,1.13664 0.0219,26.00672"
id="path4951-6-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:0.91256553;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-8-3)"
d="m 69.84404,192.49 0.0168,1.13361 0.0205,25.93741"
id="path4951-6-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:0.85846782;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-69)"
d="m 230.8668,166.05561 -0.0146,-1.15201 -0.0178,-26.35835"
id="path4951-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:0.86219335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8.30000019;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4985-5)"
d="m 173.62583,217.27194 -0.0146,-1.16203 -0.0178,-26.58762"
id="path4951-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="154.9097"
y="143.75829"
id="text4525-8-4-2-9-2-4-6"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="154.9097"
y="143.75829"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4-6-2">Commands</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="143.38155"
y="157.1857"
id="text4525-8-4-2-9-2-1-9"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="143.38155"
y="157.1857"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4-9-8">Information</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="207.90887"
y="157.44363"
id="text4525-8-4-2-9-2-1-2"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="207.90887"
y="157.44363"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4-9-3">Information</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="219.16008"
y="143.75829"
id="text4525-8-4-2-9-2-4-6-8"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="219.16008"
y="143.75829"
style="line-height:0.34869605px;text-align:center;text-anchor:middle;stroke-width:0.15124445"
id="tspan5474-8-4-6-2-5">Commands</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="76.223282"
y="200.77679"
id="text4525-8-4-2-9-2-1-9-6"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="76.223282"
y="200.77679"
style="line-height:0.34869605px;text-align:start;text-anchor:start;stroke-width:0.15124445"
id="tspan5474-8-4-9-8-0"
dy="-4.0999999">Information</tspan><tspan
sodipodi:role="line"
x="76.223282"
y="204.55791"
style="line-height:0.34869605px;text-align:start;text-anchor:start;stroke-width:0.15124445"
id="tspan11003">(ie. light is on)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.04977846px;line-height:3.78111124px;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.15124445"
x="184.67532"
y="200.63307"
id="text4525-8-4-2-9-2-4-6-8-6"
transform="scale(0.96507639,1.0361874)"><tspan
sodipodi:role="line"
x="184.67532"
y="200.63307"
style="line-height:0.34869605px;text-align:start;text-anchor:start;stroke-width:0.15124445"
id="tspan5474-8-4-6-2-5-3"
dy="-3.5999999">Commands</tspan><tspan
sodipodi:role="line"
x="184.67532"
y="204.41418"
style="line-height:0.34869605px;text-align:start;text-anchor:start;stroke-width:0.15124445"
id="tspan11005">(ie. turn light on)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:4.57105827px;line-height:2.85691118px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.11427645"
x="118.75391"
y="271.22955"
id="text11009"
transform="scale(1.0188363,0.98151192)"><tspan
sodipodi:role="line"
id="tspan11007"
x="118.75391"
y="271.22955"
style="stroke-width:0.11427645">Graphic by Paulus Schoutsen 2014, CC BY 4.0 </tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB