Skip to content
Snippets Groups Projects
Verified Commit 47c9912e authored by Nádudvari Ákos's avatar Nádudvari Ákos
Browse files

bevezetés rész + kapcsolási rajz

parent 9b75bea2
Branches
No related tags found
No related merge requests found
Pipeline #2691 passed
...@@ -5,7 +5,47 @@ ...@@ -5,7 +5,47 @@
\def\nev{Nádudvari Ákos} \def\nev{Nádudvari Ákos}
\def\kepzes{Mérnökinformatikus BSc} \def\kepzes{Mérnökinformatikus BSc}
\def\cim{ESP32 alapú biztonsági rendszer tervezése és megvalósítása Rust nyelv használatával, okosotthon-integrációval} \def\cim{ESP32 alapú biztonsági rendszer tervezése és megvalósítása Rust nyelv használatával, okosotthon-integrációval}
\def\temavezetok{Témavezető: Tihanyi Attila Kálmán} \def\temavezetok{Témavezető:\\Tihanyi Attila Kálmán}
\def\bevezetesintro{
\paragraph{} Manapság az informatika mindenhol jelen van. Nem túlzás, ha azt
mondjuk, hogy ma már elkerülhetetlen a számítógépek jelenléte, bármely iparágról
is legyen szó. Az informatika erre rendezkedett be, illetve az a célja, hogy
kisegítse és támogassa a világban zajló események folyását. Az informatika
a biztonságtechika világában is jelentősen számottevő, mely egy szerteágazó,
multidiszciplináris témakör. Ilyen rendszerek különböző kategóriákba
sorolhatóak, mint például: távfelügyeleti rendszerek, megfigyelőrendszerek
(kamerarendszerek), beléptetőrendszerek és behatolásjelző rendszerek.
\cite{bizt-rendszerek} Sok háztartásban találkozhatunk ilyen rendszerekkel,
melyeket bizonyára egy beépített célszámítógép vezérel. A dolgozatom egy ilyen
rendszer tervezésével és megvalósításával foglalkozik.
}
\def\elozmenyekintro{
\paragraph{} Mielőtt a saját rendszer megvalósításával foglalkoznánk, szeretnék
beszélni az iparág állapotáról; a már elérhető megoldásokról írni. Szeretném
felmérni azok képességeit. Fontosnak tartom, hogy egy ilyen biztonságtechnikai
szempontból kritikus rendszer tervezése előtt legyen egy megértésem mások
korábbi tapasztalatairól a témakörben. Továbbá, ismerkedem a projekthez
illő technológiákkal, keresek a megvalósításhoz használható eszközöket és
megválasztom azokat az arra vetett megkötéseinket figyelembe véve. A kutatás
eredményeit, az elméleti kérdéseket és a projekt lehetőségeit dokumentálom.
}
\def\tervezesintro{
\paragraph{} Miután konkretizáltam a projekt kereteit, a megvalósítandó
rendszer tervezésével foglalkozom. A mikrokontroller az ESP32 hardver platfomon,
Rust szoftveres környezetben valósul meg. Az okosotthon integrációhoz a
rendszer vezetékes hálózaton MQTT protokollon fog kommunikálni. A választott
technológiákkal ismerkedem, megindoklom a választásaimat helyesség, biztonság és
a fejlesztés kényelmessége (későbbi bővíthetőség) alapján.
}
\def\eredmenyekintro{
\paragraph{} Végül a kész rendszer megvalósításán végigjárok. Bemutatom
a hardver felépítését, a firmware működését és az okosotthon integrációt.
Értékelem, hogy a rendszer hogyan felel meg a feladatnak és a megkötéseinknek.
}
% címlap generálása % címlap generálása
\cimlap \cimlap
......
\chapter*{Kivonat} \chapter*{Kivonat}
% Minimum 2000 karakter, maximum két oldalas tartalmi összefoglaló a dolgozat nyelve szerinti nyelven % Minimum 2000 karakter, maximum két oldalas tartalmi összefoglaló a dolgozat nyelve szerinti nyelven
\paragraph{}
% a fejezetek elején az első pár mondat összesítése itt
% TODO: 2000 karakter fölé bővíteni
A dolgozat célja egy mikrokontroller által vezérelt biztonsági rendszer tervezése és megvalósítása. % Neptun kivonat:
A teljes objektumvédelmi rendszer % \paragraph{}
felépítése: Központi egység (ESP32), PIR mozgásérzékelők, IoT integrációs lehetőség biztosítása vezetékes/WiFi hálózatok felhasználásával. % A dolgozat célja egy mikrokontroller által vezérelt biztonsági rendszer tervezése és megvalósítása.
A rendszer feladata az érzékelt események kezelése és a felhasználók értesítése SMS-en vagy e-mail-en. % A teljes objektumvédelmi rendszer
Kiemelt cél a rendszer okosotthon-megoldásokkal való integrálása. A dolgozat során a hallgató irodalmi adatok alapján ismerkedjen meg a hardveres és szoftveres % felépítése: Központi egység (ESP32), PIR mozgásérzékelők, IoT integrációs lehetőség biztosítása vezetékes/WiFi hálózatok felhasználásával.
biztonsági megoldásokkal. % A rendszer feladata az érzékelt események kezelése és a felhasználók értesítése SMS-en vagy e-mail-en.
% Kiemelt cél a rendszer okosotthon-megoldásokkal való integrálása. A dolgozat során a hallgató irodalmi adatok alapján ismerkedjen meg a hardveres és szoftveres
% biztonsági megoldásokkal.
% Válassza ki a feladat
% megoldásához illeszkedő programozási környezetet és nyelvet. Válassza ki
% az ESP32 és az okosotthon által támogatott közös kommunikációs
% protokollt. Készítse el az eszköz, szoftver és az okosotthon-integráció
% gyakorlati megvalósítását. Értékelje a megvalósított rendszert, keresse
% meg annak továbbfejlesztési lehetőségeit és adjon javaslatot ezek megvalósítására.
\bevezetesintro
\elozmenyekintro
\tervezesintro
\eredmenyekintro
Válassza ki a feladat
megoldásához illeszkedő programozási környezetet és nyelvet. Válassza ki
az ESP32 és az okosotthon által támogatott közös kommunikációs
protokollt. Készítse el az eszköz, szoftver és az okosotthon-integráció
gyakorlati megvalósítását. Értékelje a megvalósított rendszert, keresse
meg annak továbbfejlesztési lehetőségeit és adjon javaslatot ezek megvalósítására.
\clearpage \clearpage
\chapter{Bevezetés} \chapter{Bevezetés}
\paragraph{} Manapság az informatika mindenhol jelen van. Nem túlzás, ha \bevezetesintro
azt mondjuk, hogy ma már elkerülhetetlen a számítógépek jelenléte, bármely
iparágról is legyen szó. Az informatika erre rendezkedett be, illetve az
a célja, hogy kisegítse és támogassa a világban zajló események folyását.
Az informatika a biztonságtechika világában is jelentősen számottevő, mely
egy szerteágazó, multidiszciplináris témakör. Ilyen rendszerek különböző
kategóriákba sorolhatóak, mint például: távfelügyeleti rendszerek,
megfigyelőrendszerek (kamerarendszerek), beléptetőrendszerek és behatolásjelző
rendszerek. \cite{bizt-rendszerek} Sok háztartásban találkozhatunk
ilyen rendszerekkel, melyeket bizonyára egy beépített célszámítógép
vezérel. A dolgozatom egy ilyen rendszer tervezésével és megvalósításával
foglalkozik.
\section{Feladat} \section{Feladat}
% Az elvégzett munka kontextusa, szakmai indoklása, motivációk, célkitűzés és az elvégzett feladatok összefoglalása. % Az elvégzett munka kontextusa, szakmai indoklása, motivációk, célkitűzés és az elvégzett feladatok összefoglalása.
......
\chapter{Előzmények} \chapter{Előzmények}
% \paragraph{} irodalomkutatás, hasonló alkotások bemutatása, az ezekből a dolgozat készítője által levonható következtetések. A szakirodalom önálló, kritikai elemzése. % \paragraph{} irodalomkutatás, hasonló alkotások bemutatása, az ezekből a
% dolgozat készítője által levonható következtetések. A szakirodalom önálló,
\section{Elterjedten használt megoldások} % kritikai elemzése.
% Itt kutatnék már létező, hasonló rendszerekről. Ismertetném, hogy miben hoztak más döntéseket, hogyan oldottak meg
% biztonsági kérdéseket. Következtetések levonása, hogy mire érdemes figyelni itt, miben lehet javítani/máshogy megvalósítani. \elozmenyekintro
\subsection{Komplett ipari megoldások elemzése} \section{Kereskedelmi megoldások elemzése}
Számos cég foglalkozik biztonságtechnikával, közöttük sok évnyi tapasztalattal, \paragraph{} Számos cég foglalkozik biztonságtechnikával, közöttük sok évnyi
de viszonylag új versenytásak is jelen vannak a térben. tapasztalattal, de viszonylag új versenytásak is jelen vannak a térben. Az
Hazánkban a legelterjedtebbek közül megemlítendő ilyen cégek: Paradox, DSC. általuk kínált megoldásokat az alábbi két nagy kategóriába tudom sorolni:
\begin{enumerate}
\item "Hagyományos", komplett, telepített ipari rendszerek
\item Úgynevezett "DIY", szakember nélkül, házilag be- vagy összeszerelhető
rendszerek.
\end{enumerate}
Az előbbi kategória esetében szükséges egy szakember ismerete, aki a felmért
igények alapján ad ajánlatot, illetve hoz döntést, hogy a rendszer mely
elemeket fogja tartalmazni. A telepítés szintúgy egy szakember feladata. Az
ilyen termékeknél nem szempont az "onboarding" élmény a végfelhasználó számára,
ellenben az utóbbi kategóriával. A DIY rendszereknél a beszerelés kezdetétől
fogva a végfelhasználóra van bízva a rendszer.
Ezt a megkülönböztetést azért tartom fontosnak, mert - megfigyelésem szerint
- az általam nevezett hagyományos rendszerek sok esetben nem adnak lehetőséget
bármiféle integrációs lehetőségre, illetve elavult megoldásokat kínálnak arra.
Egy ilyen rendszerrel potenciálisan nehezebb interfészelni egy modern okosotthon
megoldás keretében, mint az újabb DIY rendszerek esetében, melyek előtérbe
helyezik annak fontosságát.
Ennek ellenére a DIY rendszereknek is megvannak a hátrányai. A legtöbb
rendszerben minden hardver elem saját akkumulátorral van ellátva, ahol fenn
áll az üzemkimaradás veszélye akkor, ha nem rendelkeznek bármilyen újratöltési
lehetőséggel. Sok rendszer lényegében egy házon belül fejlesztett IoT hub és
a hozzá tartozó IoT kiegészítőkből áll. Ebből kifolyólag a szoftver legtöbb
esetben zárt, és a rendszer teljeskörű funkcionalitása egy digitális előfizetés
keretében elérhető.
\section{Biztonságtechnikai kérdések} \section{Biztonságtechnikai kérdések}
% Kutatás a biztonságtechnikáról. Mire kell figyelni egy ilyen rendszer tervezésekor.
% hardveres és szoftveres biztonság.
\subsection{Mechnanikai biztonság} \subsection{Mechnanikai biztonság}
\subsection{Informatikai biztonság} \subsection{Informatikai biztonság}
\section{Integrációs lehetőségek}
% \section{Első dolog}
% \subsection{Valami}
% \paragraph{}
% \lipsum[7] % 1 random bekezdés - töröld ki
% \paragraph{}
% \lipsum[8] % 1 random bekezdés - töröld ki
% \section{Második dolog}
% \paragraph{}
% \lipsum[9] % 1 random bekezdés - töröld ki
% \section{Harmadik dolog}
% \subsection{Valami2}
% \paragraph{}
% \lipsum[10] % 1 random bekezdés - töröld ki
% \paragraph{}
% \lipsum[11] % 1 random bekezdés - töröld ki
% \subsection{Valami3}
% \paragraph{}
% \lipsum[12] % 1 random bekezdés - töröld ki
% \paragraph{}
% \lipsum[13] % 1 random bekezdés - töröld ki
\clearpage % Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez \clearpage % Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
% Kimondjuk, hogy miből áll a teljes rendszer, mit tervezünk megvalósítani. % Kimondjuk, hogy miből áll a teljes rendszer, mit tervezünk megvalósítani.
% Megfogalmazom a biztonsági elvásárokat, kényelmi szempontokat (+okosotthon-integráció). % Megfogalmazom a biztonsági elvásárokat, kényelmi szempontokat (+okosotthon-integráció).
\tervezesintro
\section{Döntések} \section{Döntések}
% A korábban kutatottak alapján kiértékelem, hogy a létező megoldások milyen minőségben felelnek meg a célunknak. % A korábban kutatottak alapján kiértékelem, hogy a létező megoldások milyen minőségben felelnek meg a célunknak.
......
...@@ -9,5 +9,21 @@ ...@@ -9,5 +9,21 @@
% Tapasztalt hibák bemutatása (esetleges tervezési hibák), fejlődési lehetőségek. % Tapasztalt hibák bemutatása (esetleges tervezési hibák), fejlődési lehetőségek.
% Mit lehetett volna másképp csinálni, illetve miben lehet bővíteni. % Mit lehetett volna másképp csinálni, illetve miben lehet bővíteni.
\eredmenyekintro
\section{Hardware}
\begin{figure}[htbp!]
\includesvg[width=\columnwidth]{images/rendszer.drawio.svg}
\caption{A teljes rendszer magas szintű vázlata}
\label{diag:rendszer}
\end{figure}
\begin{figure}[htbp!]
\includesvg[width=\columnwidth,inkscapelatex=false]{images/hardware.drawio.svg}
\caption{A megvalósított rendszer kapcsolási rajza}
\label{diag:hardware}
\end{figure}
\clearpage % Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez \clearpage % Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez
...@@ -11,10 +11,10 @@ A dolgozat mindenkori legújabb változata \href{https://dev.itk.ppke.hu/api/v4/ ...@@ -11,10 +11,10 @@ A dolgozat mindenkori legújabb változata \href{https://dev.itk.ppke.hu/api/v4/
\section{A dolgozat írásához használt eszközök és technológiák} \section{A dolgozat írásához használt eszközök és technológiák}
Ebben a mellékelt fejezetben csupán az érdekesség kedvéért ismertetem a dolgozat \paragraph{} Ebben a mellékelt fejezetben csupán az érdekesség kedvéért
írásához felhasznált technológiákat. Itt azok számára adom ajánlásomat, akik ismertetem a dolgozat írásához felhasznált technológiákat. Itt azok számára adom
szeretnének hasonló dokumentumokat előállítani és publikálni, illetve belátást ajánlásomat, akik szeretnének hasonló dokumentumokat előállítani és publikálni,
nyerhetnek az általam használt környezetre. illetve belátást nyerhetnek az általam használt környezetre.
% \chapter{Melléklet} % \chapter{Melléklet}
......
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="432px" height="267px" viewBox="-0.5 -0.5 432 267" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0&quot; version=&quot;26.2.12&quot;&gt;&#10; &lt;diagram name=&quot;Page-1&quot; id=&quot;lOt5DuucHZqO-FceC0Nk&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;598&quot; dy=&quot;967&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;850&quot; pageHeight=&quot;1100&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-6&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;startFill=0;dashed=1;startArrow=none;shadow=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontFamily=monospace;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;fKnSCGM_49d5ayVgUhBN-2&quot; target=&quot;fKnSCGM_49d5ayVgUhBN-12&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;170&quot; y=&quot;560&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-7&quot; value=&quot;Ethernet, MQTT&quot; style=&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=monospace;&quot; vertex=&quot;1&quot; connectable=&quot;0&quot; parent=&quot;fKnSCGM_49d5ayVgUhBN-6&quot;&gt;&#10; &lt;mxGeometry x=&quot;-0.2238&quot; y=&quot;-2&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;-16&quot; y=&quot;-8&quot; as=&quot;offset&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-9&quot; value=&quot;&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;startFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontFamily=monospace;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;fKnSCGM_49d5ayVgUhBN-2&quot; target=&quot;fKnSCGM_49d5ayVgUhBN-8&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-2&quot; value=&quot;Központi egység&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;fontFamily=monospace;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;280&quot; y=&quot;515&quot; width=&quot;180&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-8&quot; value=&quot;PIR mozgásérzékelők&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;rounded=1;fontFamily=monospace;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;291.09&quot; y=&quot;340&quot; width=&quot;157.81&quot; height=&quot;70&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-12&quot; value=&quot;Home Assistant&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;fontFamily=monospace;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;30&quot; y=&quot;530&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-18&quot; value=&quot;&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;startFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontFamily=monospace;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;390&quot; y=&quot;515&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;390&quot; y=&quot;409&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-19&quot; value=&quot;&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;startFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontFamily=monospace;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;355&quot; y=&quot;515&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;355&quot; y=&quot;410&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-20&quot; value=&quot;...&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;365&quot; y=&quot;448&quot; width=&quot;30&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;fKnSCGM_49d5ayVgUhBN-21&quot; value=&quot;&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;startFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontFamily=monospace;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;340&quot; y=&quot;515&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;340&quot; y=&quot;408&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="fKnSCGM_49d5ayVgUhBN-6"><g><path d="M 250 220 L 120 220" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-7"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 210px; margin-left: 184px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;monospace&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">Ethernet, MQTT</div></div></div></foreignObject><text x="184" y="214" fill="light-dark(#000000, #ffffff)" font-family="&quot;monospace&quot;" font-size="11px" text-anchor="middle">Ethernet, MQTT</text></switch></g></g></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-9"><g><path d="M 340 175 L 339.99 70" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-2"><g><rect x="250" y="175" width="180" height="90" rx="13.5" ry="13.5" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;monospace&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Központi egység</div></div></div></foreignObject><text x="340" y="224" fill="light-dark(#000000, #ffffff)" font-family="&quot;monospace&quot;" font-size="12px" text-anchor="middle">Központi egység</text></switch></g></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-8"><g><ellipse cx="339.99" cy="35" rx="78.905" ry="35" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 156px; height: 1px; padding-top: 35px; margin-left: 262px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;monospace&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PIR mozgásérzékelők</div></div></div></foreignObject><text x="340" y="39" fill="light-dark(#000000, #ffffff)" font-family="&quot;monospace&quot;" font-size="12px" text-anchor="middle">PIR mozgásérzékelők</text></switch></g></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-12"><g><rect x="0" y="190" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 220px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;monospace&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Home Assistant</div></div></div></foreignObject><text x="60" y="224" fill="light-dark(#000000, #ffffff)" font-family="&quot;monospace&quot;" font-size="12px" text-anchor="middle">Home Assistant</text></switch></g></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-18"><g><path d="M 360 175 L 360 69" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-19"><g><path d="M 325 175 L 325 70" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-20"><g><rect x="335" y="108" width="30" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 123px; margin-left: 350px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">...</div></div></div></foreignObject><text x="350" y="127" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">...</text></switch></g></g></g><g data-cell-id="fKnSCGM_49d5ayVgUhBN-21"><g><path d="M 310 175 L 310 68" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment