|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- \section{Subflow}
- \label{kevin:subflow}
- Mit der Funktion Subflow bietet Node-RED die Möglichkeit, kleinere untergeordnete Flows zu erstellen die in einem Projekt auf verschiedenen Arbeitsblättern wiederverwendet werden können.
- Durch Subflows können komplexere Abläufe und Auswertungen in einem Node abstrahiert werden.
- Größere Projekte werden dadurch vereinfacht und klarer strukturiert.
-
- \subsection{PirSensor–Subflow}
- \label{kevin:pir-subflow}
- \begin{figure}[H]
- \centering
- \includegraphics[width=.75\textwidth]{images/pir-subflow.png}
- \caption{Subflow PIR-Sensor}
- \label{fig:pir-subflow}
- \end{figure}
- Für die Anzeige der Sensordaten in einer Time-Chart, wird eine Subscription durchgeführt um die Daten zu empfangen.
- Durch den anschließenden „NachrichtenBegrenzung“ Node wird nur eine bestimmte Anzahl an Daten pro Zeiteinheit weitergeleitet, überschüssige Daten werden verworfen.
-
- Die folgend „PirFunction“ filtert die Daten und leitet vereinfachte Werte weiter an das TimeChart und an den Ausgang des Subflows.
- \lstinputlisting{code/pirfunction.js}
- Das „PirFunction“ Node wertet die eintreffenden Daten bei der \inline{if} Anweisung aus und erstellt ein abstrahiertes Messageobjekt für die Weiterverarbeitung.
- Die \inline{If-Else}-Funktion in den Zeilen 3-17 und 18-32 wird unterschieden ob ein PIR-Sensor ausgelöst hat oder nicht, demnach wird ein neues Objekt mit dem Namen \inline{newMsg} erstellt.
- Mit \inline{return newMsg} werden die Daten weiter an den Ausgang und der Time-Chart geschickt.
-
- \subsection{UltraSchallSensor -Subflow}
- \begin{figure}[H]
- \centering
- \includegraphics[width=.75\textwidth]{images/ultraschall-subflow.png}
- \caption{Ultraschallsensor Subflow}
- \label{fig:ultraschall-subflow}
- \end{figure}
- Das Arbeitsblatt für den „UltraSchallSensor“ wurde in vier logische Untergruppen eingeteilt (siehe farbige Markierungenin Abb. \ref{fig:ultraschall-subflow}).
-
- Innerhalb der grünen Markierung werden die Ultraschallsensordaten durch die Subscription empfangen.
- Durch das anschließende „Function“ Node wird der Datenstrom aufgeteilt und die Sensoren einzeln ausgewertet.
- Durch die \inline{Sensor2_I} und \inline{Sensor1_A} Funktion werden die einzelnen Datenströme ausgewertet.
- Da der eine Ultraschallsensor eine zu große Schwankung aufwies ist dieser nicht weiter mit in die Auswertung der Logik eingegangen, dadurch wurde in der \inline{Sensor1_A} Funktion eine Weiterleitung mit \inline{return 0} definiert.
-
- \paragraph{}
- Die türkise Markierung, unten rechts, definiert die Auswertungschart.
-
- \paragraph{}
- Die Graue Markierung verbindet die Ausgabedaten von dem Ultraschallsensor und HomeMatic Funk Tür-/Fensterkontakt.
- Durch das „merge“ Node werden die beiden Datenströme zusammengeführt und in der „OutputFunction“ verarbeitet.
- Nach der Verarbeitung werden die Ergebnisse an den Output geleitet.
- \lstinputlisting{code/sensor2_l.js}
- Die „Sensor2\_I“ Function verarbeitet von einem der beiden Ultraschall\-sensoren die Daten.
- Innerhalb der Zeilen 4 und 5 werden zuerst die Konstanten festgelegt, welche die Distanz und eine Schwankungstoleranz definieren.
-
- In den Zeilen 9 bis 22 wird durch eine Kontrollstruktur geprüft, ob jemand den Ultraschallsensor passiert hat.
- Sobald eine Person vorbeigelaufen ist, wird ein neues Message-Objekt erstellt und mit den dem payload-Wert true gefüllt.
- \lstinputlisting{code/sensor2_l-output.js}
- Die „OutputFunction“ beschreibt die Logikauswertung der Daten von dem HomeMatic Funk Tür-/ Fensterkontakt und des Ultraschallsensors.
- Durch die Überprüfung mit der Kontrollstruktur wird definiert, wenn die Türe geöffnet ist und jemand den Ultraschallsensor passiert.
|