{"id":20381,"date":"2021-08-10T01:29:49","date_gmt":"2021-08-09T23:29:49","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=20381"},"modified":"2023-06-18T18:00:33","modified_gmt":"2023-06-18T16:00:33","slug":"hydropi","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/","title":{"rendered":"\ud83c\udf31HydroPi\ud83c\udf31 &#8211; Damit auch du deinen Garten vom Sofa aus gie\u00dfen kannst."},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">\u26a0\ufe0f Disclaimer<\/h3>\n\n\n\n<p>Da das Projekt keinerlei Sicherheitsaspekte abdeckt, ist es aufgrund einer sehr hohen IT-Security Gefahr mit m\u00f6glicherweise schweren Folgen nicht f\u00fcr die Nutzung au\u00dferhalb des eigenen Heimnetzwerkes ausgelegt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:clamp(17.905px, 1.119rem + ((1vw - 3.2px) * 0.74), 28px);\">\ud83c\udf31 Motivation<\/h2>\n\n\n\n<p>Aus aktuellem Anlass in der Entwicklung von Smart Home Technologien existiert ein stetig wachsendes Interesse, auch in der eigenen Wohnung aktuelle Bequemlichkeiten wie Staubsaugerroboter, Sprachassistenten oder Kontrollmechanismen, die einem den Alltag erleichtern zu implementieren. So w\u00e4chst auch das Interesse wie man diese Funktionalit\u00e4ten in anderen Lebensbereichen nutzen kann. Daraus resultierte die Frage, inwiefern man eine sehr routine-basierte und allt\u00e4gliche Aufgabe wie das Bew\u00e4ssern des Gartens oder der eigenen Innenpflanzen automatisieren kann. Dies w\u00fcrde dem Nutzer nicht nur Zeit und Aufwand im Alltag sparen, sondern auch die M\u00f6glichkeit er\u00f6ffnen, nicht vor Ort sein zu m\u00fcssen und ganz unbesorgt auch f\u00fcr l\u00e4ngere Zeit unterwegs sein zu k\u00f6nnen, ohne Nachbarn bitten zu m\u00fcssen sich um seine Pflanzen zu k\u00fcmmern. Obwohl es bereits SmartHome L\u00f6sungen gibt und diese sich auch stetig weiterentwickeln und verbessern, sind sie meistens sehr kostspielig und noch nicht f\u00fcr die breite Masse verwendbar. Deshalb w\u00e4re ein Konzept wie man sich auch schon mit geringeren Kosten eine SmartHome Bew\u00e4sserungsanlage im eigenen Heim installieren k\u00f6nnte noch f\u00fcr viele Menschen interessant. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Die Motivation f\u00fcr das Projekt war nicht nur das vorgesehene Pflichtprojekt im Studium zu absolvieren, sondern auch das bisher in Vorlesungen erlangte Wissen in einer praktischen Anwendung zusammen zu tragen und durch neue notwendige Technologien zu erg\u00e4nzen. Dabei war es uns besonders wichtig viele neue Technologien kennenzulernen.<br><br>Ziel war es eine Art Interface f\u00fcr Magnetventile auf einer Website zu realisieren die dann ein Relais mit passender Business-Logik ansteuern kann. Das ist auch nur m\u00f6glich, solange man sich entweder im Heimnetzwerk befindet oder ein VPN benutzt. Unser &#8220;Produkt&#8221; ist eine Software-L\u00f6sung die eine Menge Hardware-Recherche mit sich bringt f\u00fcr DIY-Begeisterte. Deshalb wird im folgenden kurz auf die Hardware eingegangen und anschlie\u00dfend sprechen wir dann \u00fcber den Software-Teil des Projekts.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:clamp(17.905px, 1.119rem + ((1vw - 3.2px) * 0.74), 28px);\">\ud83c\udf31 Unsere Hardware<\/h2>\n\n\n\n<p>Hier ist ein schematischer Aufbau unseres Bew\u00e4sserungssystems:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"20397\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/ubersicht\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht.png\" data-orig-size=\"3509,2482\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Ubersicht\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-1024x724.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-1024x724.png\" alt=\"\" class=\"wp-image-20397\" width=\"768\" height=\"543\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-1024x724.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-300x212.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-768x543.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-1536x1086.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Ubersicht-2048x1449.png 2048w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Der Raspberry Pi &#8211; Ein Mini Computer f\u00fcr viele Zwecke!<\/h3>\n\n\n\n<p>Als Basis f\u00fcr unser Projekt war uns bereits im Vorfeld klar, dass wir einen Raspberry Pi brauchen. Dieser erm\u00f6glicht es uns einen lokalen Server zu hosten, als auch \u00fcber die GPIO-Pins Dinge auszulesen oder anzusteuern. Wir haben uns f\u00fcr einen Raspberry 3b+ entschieden, der mit dem Betriebssystem Raspbian vorinstalliert ankam, um keine Probleme durch zu langsame CPU oder RAM zu haben. Allerdings k\u00f6nnte man auch eine \u00e4ltere Version verwenden, solange es gen\u00fcgend freie Pins f\u00fcr den Anwendungsfall gibt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Das Relais &#8211; Viel einfacher lassen sich Stromkreise nicht schalten!<\/h3>\n\n\n\n<p>Um Schaltkreise \u00f6ffnen und schlie\u00dfen zu k\u00f6nnen eignen sich in der Elektrotechnik sogenannte Relais. Mit ihrer Hilfe wird bei einem Output-Signal am verbunden GPIO-Pin ein Kanal ge\u00f6ffnet und damit der Stromkreis geschlossen. In unserem Fall nutzen wir sie, um Magnetventile zu \u00f6ffnen. Wir verwenden ein Relais-Board mit mehreren Kan\u00e4len, welches sich leicht auf die gesamte Reihe der GPIO-Pins setzen l\u00e4sst. Bei diesen ist es wichtig, sich den Schaltplan anzuschauen und herauszufinden, welcher Pin welchen Kanal anspricht. Man kann aber auch pro Ventil ein einzelnes Relaisboard verwenden, bei korrektem Anschluss greift dasselbe Prinzip.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Magnetventile und das Netzteil zur Stromversorgung!<\/h3>\n\n\n\n<p>Magnetventile kann man in einen Wasserdurchfluss einbauen und somit steuern, wann Wasser flie\u00dfen soll. Sie sind standardm\u00e4\u00dfig stromlos geschlossen. Wichtig f\u00fcr das Bew\u00e4sserungssystem ist es sich zu \u00fcberlegen, wieviele Ventile man braucht und wieviele man eventuell gleichzeitig betreiben m\u00f6chte. Das Netzteil, welches den Strom f\u00fcr unseren Magnetventil-Schaltkreis liefert, sollte anhand dieser Entscheidungen ausgew\u00e4hlt werden. Um Kosten f\u00fcr unser Projekt zu sparen haben wir nur ein Magnetventil gekauft, welches eine Spannung von 12V und eine Stromst\u00e4rke von 1,6 Ampere ben\u00f6tigt. M\u00f6chte man in der Lage sein zum Beispiel drei Magnetventile gleichzeitig zu \u00f6ffnen, sieht das ganze in etwa so aus:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-medium is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"20395\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/parallelschaltung\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung.png\" data-orig-size=\"1962,1587\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Parallelschaltung\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung-1024x828.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung-300x243.png\" alt=\"\" class=\"wp-image-20395\" width=\"300\" height=\"243\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung-300x243.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung-1024x828.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung-768x621.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung-1536x1242.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Parallelschaltung.png 1962w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption><em>Parallelschaltung der Magnetventile<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>Soll keine gleichzeitige \u00d6ffnung der Magnetventile m\u00f6glich sein, reicht es ein Netzteil auszuw\u00e4hlen das mit ein wenig Stromverlust ein einzelnes Magnetventil versorgen kann. Man sollte immer auf einen korrekten Anschluss und die Einhaltung der Flussrichtung der Magnetventile achten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Der Feuchtigkeitssensor &#8211; Eine ganz andere Herausforderung!<\/h3>\n\n\n\n<p>Bei den Feuchtigkeitssensoren gibt es eine sehr gro\u00dfe Auswahl an Funktionalit\u00e4t und Qualit\u00e4t, weshalb es schwer ist ein System f\u00fcr alle Hersteller zu entwickeln. Aus Kostengr\u00fcnden haben wir uns f\u00fcr ein billigeres Exemplar entschieden, da wir testen wollten inwiefern wir in unserem Projekt daf\u00fcr Verwendung finden k\u00f6nnen. F\u00fcr die Stromversorgung des Sensors reicht in unserer Anwendung ein 3,3V\/5V Pin des Pi\u2019s. Leider wurde uns erst sp\u00e4ter bewusst, dass bei diesem Produkt \u00fcber ein digitales Output nur erkennbar wurde, ob Feuchtigkeit gemessen wird oder nicht. Um mit dem Raspberry Pi genauere Feuchtigkeitswerte auslesen zu k\u00f6nnen, mussten wir das analoge Output des Sensors in ein digitales umwandeln. Das k\u00f6nnte man mit Hilfe eines Arduino\u2019s schaffen, wir haben daf\u00fcr einen Analog-Digital Converter MCP3008 verwendet. Wir empfehlen jedoch eher die Verwendung eines besseren Sensors, um sich die Arbeit beim L\u00f6ten und auch das Risiko eines fragilen Systems zu sparen. Bisher sind die Feuchtigkeitsdaten in unserer Anwendung rein zur Informationsdarstellung verwendet worden, sodass der Nutzer selbst entscheiden kann, ob gew\u00e4ssert werden sollte oder nicht. Sp\u00e4ter k\u00f6nnte das System anhand dieser Daten die Bew\u00e4sserung starten oder aussetzen lassen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:clamp(17.905px, 1.119rem + ((1vw - 3.2px) * 0.74), 28px);\">\ud83c\udf31 Unsere Software-L\u00f6sung<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"20398\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/software_architektur-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1.png\" data-orig-size=\"962,547\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Software_Architektur-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1.png\" alt=\"\" class=\"wp-image-20398\" width=\"481\" height=\"274\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1.png 962w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1-300x171.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Software_Architektur-1-768x437.png 768w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Da wir viele notwendige u. a. netzwerktechnische Sicherheitsaspekte nicht im Rahmen des Projektes umsetzen k\u00f6nnen, haben wir uns dazu entschieden HydroPi nur im Heimnetzwerk einsetzbar zu machen. So ist HydroPi nur im eigenen LAN zu erreichen und jeder Client von au\u00dferhalb muss sich daher via VPN mit dem Heimnetzwerk verbinden. Dabei empfehlen wir immer mit VPN Zertifikaten und einer SSH Verbindung zu arbeiten.<\/p>\n\n\n\n<p>Grunds\u00e4tzlich passiert die Business-Logik also Auslesung &amp; Verwertung von Sensordaten sowie geplante Ansteuerung von Magnetventilen auf dem Server. Dieser speichert und liest Daten aus der Datenbank und versorgt die Clients mit neuen Werten. Pr\u00e4zisere Informationen zur Software Architektur findest du im Abschnitt Back-End.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Unsere Datenbank &#8211; Persistente Datenspeicherung!<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"20399\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/blank_diagram_1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1.png\" data-orig-size=\"2145,1586\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Blank_diagram_1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-1024x757.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-1024x757.png\" alt=\"\" class=\"wp-image-20399\" width=\"512\" height=\"379\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-1024x757.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-300x222.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-768x568.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-1536x1136.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/Blank_diagram_1-2048x1514.png 2048w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Um Daten auch persistent speichern zu k\u00f6nnen haben wir uns f\u00fcr eine lokale Datenbank entschieden. Da die Hardware mit Python Skripts gesteuert wird benutzen wir die in Python implementierte SQLite3 Library.&nbsp;<\/p>\n\n\n\n<p>Das oben dargestellte physische Entity-Relationship Diagramm bildet alle Tabellen der Datenbank und deren Relationen zueinander ab. \u00dcber die Hilfstabelle \u201cplanXChannel\u201d lassen sich alle Pl\u00e4ne und deren dazugeh\u00f6rigen Magnetventile speichern und verwerten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Back-End &#8211; Der Server und Business-Logik!<\/h3>\n\n\n\n<p>Wir haben uns daf\u00fcr entschieden den Server mit der plattform\u00fcbergreifenden Open-Source-JavaScript-Laufzeitumgebung Node.js laufen zu lassen. Der Node Package Manager, kurz NPM, bringt viele M\u00f6glichkeiten mit sich um Projekte wie dieses zu verwirklichen. Genutzt werden die Packages Express, Socket.io, cron-job-manager, Winston, Python-shell, Knex und selbstverst\u00e4ndlich SQLite3.<\/p>\n\n\n\n<p>Bevor wir aber an dieser Stelle auf die Packages und deren Einsatz eingehen springen wir kurz in die Python Skripts, die ebenfalls auf dem Server, also dem Raspberry Pi liegen. Es werden gezielt GPIO Pins, in unserem Fall 20, 21 und 26 angesprochen und damit Signale an das Relais gesendet um das jeweilige Magnetventil zu \u00f6ffnen. Das dazugeh\u00f6rige Skript irrigationController.py ben\u00f6tigt die Parameter &#8211;c (Kan\u00e4le) und &#8211;d (Dauer) und wird \u00fcber das Node Package Python-shell ausgef\u00fchrt.<\/p>\n\n\n\n<p>Genau wie das Skript sensor.py, das dazu dient die aktuelle Feuchtigkeit zu ermitteln. Damit Messfehler vermeiden werden f\u00fchrt es zur Laufzeit mehrere Messungen durch, ermittelt deren Median und speichert das Ergebnis in die SQLite Datenbank.<\/p>\n\n\n\n<p>Um die Skripte nun zu festgelegten Zeiten auszuf\u00fchren, werden Cronjobs ben\u00f6tigt. Dies ist zwar auch \u00fcber die native Variante m\u00f6glich, jedoch w\u00e4re der Aufwand diese zu verwalten sehr hoch. Aus diesem Grund haben wir uns f\u00fcr das Node Package cron-job-manager entschieden.&nbsp;<\/p>\n\n\n\n<p>Im folgenden Code-Abschnitt l\u00e4sst sich entnehmen, wie aus einem Bew\u00e4sserungsplan, bestehend aus den einzelnen Wochentagen, die wiederum die jeweils definierte Zeit beinhalten, die dazugeh\u00f6rigen Cronjobs generiert werden:<\/p>\n\n\n\n<div class=\"wp-block-group has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#eeeeee\">\n<pre class=\"wp-block-code\" style=\"font-size:12px;padding: 10px\"><code class=\"\" data-line=\"\">weekdays.forEach(function (day, index) {\n    \/\/if != null \n    if (day) {\n \n      \/\/ each day needs its own cronID,\n      \/\/ since CronJobs are scheduled separately by day\n      const cronID = composeCronID(plan.planID, index);\n \n      \/\/ setup CronJob\n      manager.add(cronID, day, function () {\n        runIrrigation(valvesString, durations[index]);\n      });\n \n      \/\/ schedule CronJob\n      manager.start(cronID);\n    }\n});<\/code><\/pre>\n<\/div>\n\n\n\n<p>Das Managen der Cronjobs ist dadurch mit relativ wenig Aufwand zu bewerkstelligen. So zum Beispiel:<br>Aktualisieren:<\/p>\n\n\n\n<div class=\"wp-block-group has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#eeeeee\">\n<pre class=\"wp-block-code\" style=\"font-size:12px;padding: 10px\"><code class=\"\" data-line=\"\">manager.update(cronID, day, function (){\n  runIrrigation(valvesString, durations[index]);\n});<\/code><\/pre>\n<\/div>\n\n\n\n<p>L\u00f6schen:<\/p>\n\n\n\n<div class=\"wp-block-group has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#eeeeee\">\n<pre class=\"wp-block-code\" style=\"font-size:12px;padding: 10px\"><code class=\"\" data-line=\"\">manager.deleteJob(cronID)<\/code><\/pre>\n<\/div>\n\n\n\n<p>Sobald nun neue Daten f\u00fcr Bew\u00e4sserungspl\u00e4ne eintreffen, m\u00fcssen sie in die Datenbank gespeichert und die entsprechenden Cronjobs verwaltet werden. Das f\u00fchrt uns zu den (socket.io) WebSockets, mit deren Hilfe die Kommunikation zwischen Server und Client realisiert wird.<\/p>\n\n\n\n<p>Um diesen Vorgang mit einem simplen Beispiel zu veranschaulichen, werfen wir einen Blick auf den \u201cdeletePlan\u201d-Socket, der wie der Name schon verr\u00e4t, uns dar\u00fcber informiert welchen Bew\u00e4sserungsplan der Client l\u00f6schen m\u00f6chte:<\/p>\n\n\n\n<div class=\"wp-block-group has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#eeeeee\">\n<pre class=\"wp-block-code\" style=\"font-size:12px;padding: 10px\"><code class=\"\" data-line=\"\">socket.on(&quot;deletePlan&quot;, async function(plan){\n  try {\n    \/\/ delete plan\n    await db.deleteEntity(&#039;irrigationPlans&#039;, &#039;planID&#039;, plan.planID);\n    \/\/ delete related plan channels\n    await db.deleteEntity(&#039;planXChannel&#039;, &#039;planID&#039;, plan.planID);\n      \n    \/\/ delete CronJobs\n    cron.deleteJobsFromIrrigationPlan(plan);\n \n  } catch (error) {\n    logger.error(error);\n  }\n});<\/code><\/pre>\n<\/div>\n\n\n\n<p>Im Front-End wird der Socket dann nur noch \u00fcber folgenden Befehl angesprochen und der zu l\u00f6schende Plan mitgegeben:<\/p>\n\n\n\n<div class=\"wp-block-group has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#eeeeee\">\n<pre class=\"wp-block-code\" style=\"font-size:12px;padding:10px\"><code class=\"\" data-line=\"\">socket.emit(&#039;deletePlan&#039;, plan)<\/code><\/pre>\n<\/div>\n\n\n\n<p>Das senden von Daten ist nat\u00fcrlich in beide Richtungen und an einen bestimmten bzw. alle verbundenen Clients m\u00f6glich. So wird z.B. bei der Messung neuer Feuchtigkeitswerte der aktuelle Wert an alle verbundenen Clients gesendet, um das UI zu aktualisieren. Durch den Verzicht auf Polling werden sowohl System- als auch Netzwerkressourcen gespart.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Front-End &#8211; Die Website und was sie kann!<\/h3>\n\n\n\n<p>Design und Usability des Front-Ends hatten keine Priorit\u00e4t, daher ist das Front-End haupts\u00e4chlich funktionell. Programmiert wurde es gr\u00f6\u00dftenteils aus JavaScript mit kleinen Teilen HTML und CSS. Im Folgenden wird das Webinterface gezeigt und erkl\u00e4rt.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" data-attachment-id=\"20400\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/homepage_blog\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog.png\" data-orig-size=\"1920,938\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"HomePage_Blog\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog-1024x500.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog-1024x500.png\" alt=\"\" class=\"wp-image-20400\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog-1024x500.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog-300x147.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog-768x375.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog-1536x750.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/HomePage_Blog.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Standardansicht<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"has-normal-font-size\"><strong>1 Datums- und Uhrzeitanzeige mit HydroPi-Logo<\/strong><br>Im oberen Bereich der Webseite befindet sich neben dem HydroPi-Logo, eine Anzeige des aktuellen Datums und der Uhrzeit. Die Informationen stammen dabei von den Systemdaten des Raspberry Pi und sind somit immer lokal an die Daten des Einsatzortes angepasst. Dies ist relevant, falls man von einem Standort mit Zeitverschiebung auf die Webseite zugreift.<\/p>\n\n\n\n<p><strong>2 Bew\u00e4sserungspl\u00e4ne&nbsp;<\/strong><br>Diese Elemente dienen als Buttons zur Erstellung von Bew\u00e4sserungspl\u00e4nen, aber auch zur Anzeige und zum nachtr\u00e4glichen \u00c4ndern von bereits erstellten Pl\u00e4nen.<\/p>\n\n\n\n<p><strong>3 Feuchtigkeitsanzeige<\/strong><br>Darstellung der aktuell gemessenen Feuchtigkeit des Feuchtigkeitssensors in Prozent.<\/p>\n\n\n\n<p><strong>4 Ventil Anzeige<\/strong><br>Die Menge der angezeigten Ventile ist abh\u00e4ngig von der beim Setup eingestellten Anzahl der Ventile. Die Anzeige zeigt an, ob ein Ventil gerade ge\u00f6ffnet (blau gekennzeichnet) oder geschlossen ist (ausgegraut).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" data-attachment-id=\"20401\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/10\/hydropi\/cplan_blog\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog.png\" data-orig-size=\"1920,938\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CPlan_Blog\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog-1024x500.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog-1024x500.png\" alt=\"\" class=\"wp-image-20401\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog-1024x500.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog-300x147.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog-768x375.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog-1536x750.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/CPlan_Blog.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Ansicht bei Erstellung\/\u00c4nderung eines Bew\u00e4sserungsplanes<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p><strong>5 Ventilauswahl<\/strong><br>Auswahl von gew\u00fcnschten Ventilen \u00fcber Tile-Elemente. Ausgew\u00e4hlte Elemente werden hervorgehoben.<\/p>\n\n\n\n<p><strong>6 Wochentag Auswahl<\/strong><br>Auswahl von Wochentagen an denen gew\u00e4ssert werden soll, mit Einstellungen zur genauen Uhrzeit und Dauer in Sekunden. Standardm\u00e4\u00dfig sind alle Tage ausgegraut. Erst durch Klick des Benutzers werden die gew\u00fcnschten Tage mit Uhrzeit und Dauer visuell hervorgehoben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:clamp(17.905px, 1.119rem + ((1vw - 3.2px) * 0.74), 28px);\">\ud83c\udf31 Ausblick <a href=\"https:\/\/emojis.wiki\/de\/augen\/\">\ud83d\udc40<\/a><\/h2>\n\n\n\n<p>Dieses Projekt bietet eine solide Grundlage und viele M\u00f6glichkeiten zur Erweiterung, die aufgrund des begrenzten Zeitraumes nicht implementiert werden konnten. So ist es bisher nur per Computer und mit gewissen Einschr\u00e4nkungen auch per Smartphone nutzbar. Dies ist allerdings auch nur m\u00f6glich, solange man sich entweder im selben Netzwerk befindet oder ein VPN benutzt. Daher ist das N\u00e4chstliegende die Erweiterung der Verbindungsm\u00f6glichkeiten und die Entwicklung einer passenden IOS oder Android Applikation. Im Bereich des Front-Ends k\u00f6nnten Design und Usability \u00fcberarbeitet und Frameworks und Libraries in Betracht gezogen werden. Im Back-End Bereich k\u00f6nnte die Datenbank optimiert und eine Wetter API eingebunden werden, welche wiederum im Front-End das aktuelle Wetter mit Niederschlag auf der Webseite anzeigen k\u00f6nnte. M\u00f6gliche Erweiterungen an das System an sich k\u00f6nnten dem Nutzer die M\u00f6glichkeit geben, eine Bew\u00e4sserungsgrenze anzugeben ab der die Bew\u00e4sserung automatisch startet. F\u00fcr die Sicherheit des Systems w\u00e4re es auch vorteilhaft, einen Sensor einzubauen der den Wasserfluss kontrolliert um vor eventuellen Wassersch\u00e4den zu warnen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">\n<\/code><\/pre>\n\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u26a0\ufe0f Disclaimer Da das Projekt keinerlei Sicherheitsaspekte abdeckt, ist es aufgrund einer sehr hohen IT-Security Gefahr mit m\u00f6glicherweise schweren Folgen nicht f\u00fcr die Nutzung au\u00dferhalb des eigenen Heimnetzwerkes ausgelegt. \ud83c\udf31 Motivation Aus aktuellem Anlass in der Entwicklung von Smart Home Technologien existiert ein stetig wachsendes Interesse, auch in der eigenen Wohnung aktuelle Bequemlichkeiten wie Staubsaugerroboter, [&hellip;]<\/p>\n","protected":false},"author":1067,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[654,22],"tags":[],"ppma_author":[851],"class_list":["post-20381","post","type-post","status-publish","format-standard","hentry","category-internet-of-things","category-student-projects"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":25092,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/29\/ring-kameras-uberwachst-du-dein-umfeld-oder-amazon-hier-dich\/","url_meta":{"origin":20381,"position":0},"title":"Ring Kameras &#8211; \u00dcberwachst Du Dein Umfeld oder Amazon und Fremde hier Dich?","author":"Kristin Saueressig","date":"29. July 2023","format":false,"excerpt":"Es ist bereits aus vielen vorangestellten Blogbeitr\u00e4gen, Videos und Social-Media-Beitr\u00e4gen bekannt, dass Amazon eines der Unternehmen ist, das alles \u00fcber uns zu wissen scheint. Die letzte gr\u00f6\u00dfere Akquisition liegt inzwischen fast f\u00fcnf Jahre zur\u00fcck und handelt von dem Kauf der US-amerikanischen Firma Ring. Ring l\u00e4uft im Vergleich zu Alexa und\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/smart-ge734b1223_1280-1.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/smart-ge734b1223_1280-1.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/smart-ge734b1223_1280-1.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/smart-ge734b1223_1280-1.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/smart-ge734b1223_1280-1.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":28263,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2026\/02\/07\/hosting-my-own-models-wie-quantisierung-die-ki-aus-der-cloud-in-den-eigenen-keller-holt\/","url_meta":{"origin":20381,"position":1},"title":"Hosting My Own Models: Wie Quantisierung die KI aus der Cloud in den eigenen Keller holt","author":"Michael Jaufmann","date":"7. February 2026","format":false,"excerpt":"Dieser Blogpost wurde f\u00fcr das Modul Enterprise IT (113601a) verfasst. 1. Einleitung: Raus aus der Abh\u00e4ngigkeit Wer heute von KI spricht, meint oft die Dienste von OpenAI. Die Abh\u00e4ngigkeit von propriet\u00e4ren APIs wie GPT-4 entwickelt sich jedoch zunehmend zu einem Risiko f\u00fcr Unternehmen und Entwickler. Die Suche nach Alternativen wird\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2026\/02\/image-3.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2026\/02\/image-3.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2026\/02\/image-3.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2026\/02\/image-3.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":26129,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/27\/ctf-infrastruktur-als-proof-of-concept-in-der-microsoft-azure-cloud\/","url_meta":{"origin":20381,"position":2},"title":"CTF-Infrastruktur als Proof-of-Concept in der Microsoft Azure Cloud","author":"jk233","date":"27. February 2024","format":false,"excerpt":"Einf\u00fchrung Eine eigene Capture-The-Flag (CTF) Plattform zu betreiben bringt besondere Herausforderungen mit sich. Neben umfangreichem Benutzermanagement, dem Bereitstellen und sicherem Hosten von absichtlich verwundbaren Systemen, sowie einer m\u00f6glichst einfachen Methode, spielbare Systeme von externen Quellen einzubinden. So m\u00f6chte man vielleicht der eigenen Community die M\u00f6glichkeit bieten, eigene Szenarien zu entwickeln,\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/HkdUqtOvFEbZdRFQaVd9LpUF6TaU8VoYhJn2kK0A-rzTGuPjvqiNLsNYpHnMuPZpLr5RFCfTW30d46KxetHLb8mYfYqN_70fqpOvYevgh1bfHZFI_UUKHbqRjDrHQ-b8QG2jXXV6E2zh2W35Rr6gpnk.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":20729,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/25\/digital-ghostbusters-der-malware-auf-der-spur\/","url_meta":{"origin":20381,"position":3},"title":"Digital Ghostbusters &#8211; Der Malware auf der Spur","author":"Tobias M\u00fcller","date":"25. August 2021","format":false,"excerpt":"Die Suche nach Malware der Cyberkriminellen im Darknet: Welche Absichten stecken hinter den globalen Ransomware-Angriffen und besteht ein Zusammenhang zwischen Hacker und Regierungen?","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/Ransomware_russlandfreundlich_Bild2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/Ransomware_russlandfreundlich_Bild2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/Ransomware_russlandfreundlich_Bild2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/Ransomware_russlandfreundlich_Bild2.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":24916,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/13\/wie-sicher-ist-das-biometrische-verfahren-der-gesichtserkennung-und-wie-sicher-bleibt-es-in-zukunft\/","url_meta":{"origin":20381,"position":4},"title":"Wie sicher ist das biometrische Verfahren der Gesichtserkennung und wie sicher bleibt es in Zukunft?","author":"Michael Partes","date":"13. July 2023","format":false,"excerpt":"\u00dcberblick Die Verwendung von biometrischen Verfahren wie der Gesichtserkennung zur Identifizierung von Personen und damit als Sicherheitskonzept hat in den letzten Jahrzehnten deutlich zugenommen. Nicht nur fast jedes Smartphone funktioniert mittlerweile mit Fingerabdrucksensoren oder Gesichtserkennung, sondern auch Zutrittskontrollanlagen oder sogar mobile Banking-Apps verwenden diese Art der Authentifizierung und Identifizierung. Doch\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/lh4.googleusercontent.com\/-YI-vY0NpmF5-x26Iyb1eNJk15AXfnwhZtRyOF8S_7wb3-mhG17-8hhrjub56e3I-WJKxqt5HR4qD-Fu_yyDrAhWRZ1SpnTIJqGDnPnCYYuJiJssca_G71dZhdAtELIWddn6ZnHsiz5ulHjzfJo1O_0","width":350,"height":200,"srcset":"https:\/\/lh4.googleusercontent.com\/-YI-vY0NpmF5-x26Iyb1eNJk15AXfnwhZtRyOF8S_7wb3-mhG17-8hhrjub56e3I-WJKxqt5HR4qD-Fu_yyDrAhWRZ1SpnTIJqGDnPnCYYuJiJssca_G71dZhdAtELIWddn6ZnHsiz5ulHjzfJo1O_0 1x, https:\/\/lh4.googleusercontent.com\/-YI-vY0NpmF5-x26Iyb1eNJk15AXfnwhZtRyOF8S_7wb3-mhG17-8hhrjub56e3I-WJKxqt5HR4qD-Fu_yyDrAhWRZ1SpnTIJqGDnPnCYYuJiJssca_G71dZhdAtELIWddn6ZnHsiz5ulHjzfJo1O_0 1.5x"},"classes":[]},{"id":24048,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/03\/03\/cdns-und-die-dsgvo\/","url_meta":{"origin":20381,"position":5},"title":"CDNs und die DSGVO","author":"Yannick M\u00f6ller","date":"3. March 2023","format":false,"excerpt":"In Zeiten von weltweit verteilten gro\u00dfen Systemen im Internet und der \u00fcberwiegend mobilen Bedienung von Webseiten ist die schnelle Daten\u00fcbertragung an alle Orte auf der Welt ein entscheidendes Thema. Kein Deutscher Urlauber in Amerika m\u00f6chte eine Ewigkeit auf die hei\u00dfgeliebte online-Ausgabe der Bild-Zeitung l\u00e4nger als ein paar Sekunden warten. Und\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/03\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/03\/image-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/03\/image-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/03\/image-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":851,"user_id":1067,"is_guest":0,"slug":"sf102","display_name":"Steffen Fingerle","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/92986fbe1654fef8bf91e7da0e31305f97380affb17cce0d00d15354c2142cb4?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/20381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/1067"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=20381"}],"version-history":[{"count":54,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/20381\/revisions"}],"predecessor-version":[{"id":20444,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/20381\/revisions\/20444"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=20381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=20381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=20381"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=20381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}