Applikationsbeschreibung : #NR5V1 : Auslesen von S7 Variabeln und als CSV Datei speichern. Werte per SFTP und E-Mail versenden.
Zugehörige Dokumentation:
- Applikationsbeschreibung: #NR0V1 : mbEDGE auf meinem Router einrichten
- Applikationsbeschreibung: #NR1V1 : Hello World
- https://nodered.org/docs/user-guide/
- https://flows.nodered.org/node/node-red-contrib-s7
Diese Applikation beschreibt, wie man mit einer S7 kommuniziert und die Werte in einem Node-RED Dashboard anzeigt. Außerdem können diese Werte in einer CSV Datei lokal auf dem Router gespeichert und regelmäßig per E-Mail versendet werden. Zusätzlich kann die Datei per SFTP an einen Fileserver gesendet werden.
Für diese Applikation stellen wir einen Beispiel Flow für Node-RED zur Verfügung, der Widgets anzeigt, Werte von einer S7-1200-Steuerung liest, Daten in/aus einer Datei liest und schreibt, E-Mails versendet und eine Datei über SFTP sendet. Bitte beachten Sie, dass diese Applikation auf dem Router läuft und über http oder https://router-ip:1880/ui aufgerufen werden kann. Sie können auch von außerhalb über einen Web2Go-Link von Ihrem mbCONNECT24-Konto darauf zugreifen.
Beschreibung 1 – Dashboard
Dieses Dashboard zeigt Widgets zur Visualisierung von Daten an. Das Bedienfeld verfügt über die folgenden Schaltflächen:
- Delete History file : Dies löscht die csv-Datei
- Send History file : Dies sendet die csv-Datei per SFTP
- Email history file : Dies sendet die csv-Datei als Anhang zu einer E-Mail Adresse
- Email actual data : Dies sendet eine E-Mail mit den aktuellen Werten zu einer E-Mail Adresse
- Send History file every Day : Dies sendet die csv-Datei jeden Tag um 23:30 zu einer E-Mail Adresse und löscht die csv-Datei.
Beschreibung 2 - Node-RED Flow, Lesen von der SPS
Wir lesen 3 Variablen von der SPS. Im Funktions Node speichern wir den Wert in der öffentlichen Flussvariable (damit wir den Wert von anderen Nodes aus asynchron abrufen können).
Beschreibung 3 - Funktions Node Speed
Nach der Funktions Node wird diese direkt mit einem Gauge-Widget verbunden, um den Wert auf dem Dashboard anzuzeigen. Der Wert ist auch mit einer Limiter Node verbunden. Wir möchten, dass der Wert nur alle 5 Sekunden in das historische Diagramm übertragen wird.
Beschreibung 4 - Limiter Node
Wir möchten, dass alle Variablen in einer csv formatierten Datei gespeichert werden und auch hier nur alle 5 Sekunden.
Beschreibung 5 - CSV Datei erstellen
Die Funktions Node "Add Date/Time" fügt das aktuelle Datum und die aktuelle Uhrzeit zur msg.payload hinzu. Außerdem wird ein Array namens msg.payload.Time hinzugefügt.
Beschreibung 6 - Funktions Node "Add Date/Time"
Die Nachricht an der Funktion „csv“ kommt dann mit den Werten und Datums-/Zeitstempel an.
Beschreibung 7 - CSV Node
Wir müssen die Spalten (columns), das Trennzeichen (separator) und das Ausgabeformat (output format) festlegen. Die Ausgabe wird dann in der Datei gespeichert.
Beschreibung 8 - Datei Node
Die Datei wird im verschlüsselten Userspace auf der SD-Karte gespeichert. Der Dateiname in diesem Beispiel lautet "mydata".
2. CSV Datei per SFTP versenden
Nachfolgend sehen Sie den Flow zum Senden der Datei an einen SFTP-Server:
Beschreibung 9 - Flow zum Versenden der Datei
Es fängt mit der Button Node "Send History File" an. Diese löst die Node "read mydata" aus. Diese Node gibt die Datei in msg.payload aus. Die Funktions Node "Generate File to send" formatiert die Payload so, dass die SFTP-Node "Transfer via SFTP" sie verarbeiten kann. Die SFTP-Node erwartet folgendes Format:
Beschreibung 10 - Script für SFTP Node Bereitstellung
Das Objekt "msg.payload.filename" beschreibt den Dateinamen inklusive Pfad auf dem SFTP-Server (Speicherort und Name der Datei). "msg.payload.filedata" enthält den eigentlichen Inhalt der Datei. Es gibt noch einige weitere Optionen, die über das Objekt verfügbar sind. Hierzu finden Sie weitere Informationen in der Node Hilfe.
Die Node "Generate File to send" löst auch den "Timeout 5s" aus. Wenn der Timeout von 5s erreicht ist, wird eine Nachricht an die message Node "message File transfer" gesendet. Die Nachricht wird nicht gesendet, wenn der Ausgang von "Transfer via SFTP" innerhalb von 5s auslöst und den Timeout zurücksetzt. In diesem Fall wird die Nachricht "Set success Message" an die message Node gesendet.
3. CSV Datei per E-Mail versenden
Unten sehen Sie den Flow, wie Sie die Datei per E-Mail versenden können. Hierzu benötigen Sie ein E-Mail-Konto mit allen Informationen zum Senden von E-Mails an das SMTP Ihres E-Mail-Kontos. Legen Sie zum Beispiel ein GMX-E-Mail-Konto an, und Sie erhalten die Informationen, mit denen Sie E-Mails über Ihr Konto versenden können.
Beschreibung 11 - Flow zum Versenden der Datei per E-Mail
Es verhält sich ähnlich wie mit dem SFTP-Fall. Der Unterschied ist, dass wir jeden Tag um 23:30 Uhr eine E-Mail mit der csv-Datei versenden. Mit dem Button "Send History File every Day at 23:30" wird ein globales Flow Flag gesetzt oder zurückgesetzt. Dieses Flag wird in der Funktions Node "Is Flag 'Send every Day '?" verwendet, um zu entscheiden, ob gesendet wird oder nicht. Auch die Fehlerbehandlung beim E-Mail-Versand ist anders als beim SFTP-Versand. Hier gibt es einen globalen Error-Handler "Errormessages", der auf die E-Mail Node hört:
Beschreibung 12 - Fehlerbehandlung für E-Mail
Wenn eine E-Mail gesendet wird, wird die Node "Wait till delete file" ausgelöst. Dieser Timeout dauert 10 Sekunden. Wenn der Timeout nicht zurückgesetzt wurde, dann löst er die Node aus, um die Datei zu löschen. Wenn jedoch eine Fehlermeldung auftritt, wird der Timeout zurückgesetzt und die Datei wird nicht gelöscht. Sie können die Datei auch löschen, indem Sie auf die Schaltfläche "Delete History File" klicken.
4. Aktuelle Daten per E-Mail versenden
Nachfolgend sehen Sie den Flow, wie Sie aktuelle Daten per E-Mail versenden können. Sie benötigen ein E-Mail-Konto mit allen Informationen, um E-Mails an das SMTP Ihres E-Mail-Konto zu senden. Legen Sie zum Beispiel ein GMX-E-Mail-Konto an, und Sie erhalten die Informationen, mit denen Sie E-Mails über Ihr Konto versenden können.
Beschreibung 13 - Aktuelle Daten per E-Mail versenden
Die Button Node löst das Versenden der E-Mail aus. Der Inhalt der E-Mail wird in der Node "Generate Context to send" erzeugt.
Beschreibung 14 - Script zur E-Mail Generierung
Den Flow als Datei zum Importieren in Ihre Applikation finden Sie unten.