@mickym 0 Vielen Dank. Ich schaue es mir an den Feiertagen an.
NEWS
Latest posts made by Tim84
-
RE: SPS => Node-red => MYSQL mehrere Daten
-
RE: SPS => Node-red => MYSQL mehrere Daten
@mickym Genau das habe ich ja versucht.
Wie funktioniert das denn mit einer Jason Node? Alle Werte mit einem mal auszulesen wäre natürlich die beste Variante.
Danke schonmal für die Hilfe
-
RE: SPS => Node-red => MYSQL mehrere Daten
@mickym Danke für die Antwort.
Ich brauche am ende ja einen String den ich zur SQL schicke. Ich denke es müsste so aussehen:
msg.topic ="INSERT INTO test (`SpannungL1-N`,`SpannungL2-N`,`SpannungL3-N´) VALUES (:WERT1,:WERT2,:WERT3);"
Vorher muss ich die Daten aus der SPS auslesen und in Variablen (hier als Beispiel WERT1, WERT2 und WERT3) speichern. Könnte das so ablaufen:
SPS(Datenbaustein) ein Wert auslesen => Payload in Variable1 speichern,
danach
SPS(Datenbaustein) ein Wert auslesen => Payload in Variable2 speichern,
usw....Auf der SPS läuft ein OPC_UA Server, entweder ich hole die Daten nacheinander oder gleichzeitig. Am liebsten würde ich das alles ohne Funktionen machen. Du sagtest alles in ein Objekt speichern (JASON String), wie geht so etwas? Was bringt mir das?
LG Tim
-
SPS => Node-red => MYSQL mehrere Daten
Hallo Leute,
ich möchte folgende Aufgabe mit Node-Red bei mir zu Hause realisieren. Ich habe an meiner Wärmepumpe ein Siemens PAC3200 verbaut, diesen lese ich mit einer SPS (1500CPU) aus und schreibe die Werte in einen Datenbaustein. Auf der SPS läuft ein OPC-UA Server, den ich mit Node-Red auslese und dann in eine MYSQL DB schreibe. Das funktioniert mit einzelnen Werte auch schon ohne Probleme.
Ob das alles so optimal ist weiß ich nicht
Jetzt möchte ich aber die 21 Werte aus dem Datenbaustein alles auslesen und in die SQL Datenbank schreiben.
Ich habe da schon diverse Sachen ausprobiert, aber nichts hat so funktioniert. Ich hatte mir überleget für alle Daten einen eigenen payload anzulegen z.B. msgL1 usw. und die Variablen dann per Topic String mit "insert in" in die Datenbank zu schreiben.
Das kann ja eigentlich nicht so schwer sein. Für einen Tip oder ein Beispiel mit zwei Daten wäre ich dankbar.
Lg Tim
[ { "id": "26d40d242fae4652", "type": "tab", "label": "Flow 1", "disabled": false, "info": "", "env": [] }, { "id": "21a603b8ddfa0115", "type": "function", "z": "26d40d242fae4652", "name": "Abfrage Werte", "func": "\nvar msgL1 = {};\nvar msgL2 = {};\nvar msgL3 = {};\nvar msgI1 = {};\nvar msgI2 = {};\nvar msgI3 = {};\nvar msgPg = {};\n\n\nmsgL1.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Spannung L1-N\"`;\nmsgL2.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Spannung L2-N\"; datatype = objekt`;\nmsgL3.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Spannung L3-N\"; datatype = objekt`;\nmsgI1.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Strom L1\"; datatype = objekt`;\nmsgI2.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Strom L2\"; datatype = objekt`;\nmsgI3.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Strom L3\"; datatype = objekt`;\nmsgPg.topic = `ns=3;s=\"DB-Test\".PacHeizung.\"Gesamtwirkleistung\"; datatype = objekt`;\n\nreturn [msgL1, msgL2, msgL3, msgI1, msgI2, msgI3, msgPg];", "outputs": 7, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 300, "y": 180, "wires": [ [ "896c18aa8bcbf184" ], [], [], [], [], [], [ "896c18aa8bcbf184" ] ] }, { "id": "62ee487dbd535d54", "type": "inject", "z": "26d40d242fae4652", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 100, "y": 180, "wires": [ [ "21a603b8ddfa0115" ] ] }, { "id": "896c18aa8bcbf184", "type": "OpcUa-Client", "z": "26d40d242fae4652", "endpoint": "aa0b0b1ec465be5d", "action": "read", "deadbandtype": "a", "deadbandvalue": 1, "time": 10, "timeUnit": "s", "certificate": "n", "localfile": "", "localkeyfile": "", "securitymode": "None", "securitypolicy": "None", "folderName4PKI": "", "useTransport": false, "maxChunkCount": 1, "maxMessageSize": 8192, "receiveBufferSize": 8192, "sendBufferSize": 8192, "name": "SPS", "x": 570, "y": 180, "wires": [ [ "9feef9c4efb5ecc1", "6b2e635dedb8a4e0", "337b4b50896ff60e", "678f94dc25a7a009" ], [] ] }, { "id": "9feef9c4efb5ecc1", "type": "function", "z": "26d40d242fae4652", "name": "insertValue", "func": "/*\nmsg.payload = {}\nvar msgL1={};\n//var msgL2={};\n//var msgL3={};\n//var msgI1={};\n//var msgI2={};\nvar msgI3={};\n//var msgPg={};\n\n//msg.sps = msg.payload;\nmsg.payload.WERT1=msgL1;\nmsg.payload.WERT2=msgI3;\nmsg.topic =\"INSERT INTO test (`r-wert-2`,`r-wert1`) VALUES (:WERT1,:WERT2);\"\nreturn msg;\n\nmsg.sps = msg.payload;\nmsg.payload = {}\nmsg.payload.WERT1 = msg.sps;\nmsg.topic = \"INSERT INTO test (`r-wert-2`) VALUES (:WERT1);\"\nreturn msg; \n*/\n\nmsg.payload = {}\nvar msgL1 = {};\nvar msgPg={};\n\nif (msgL1.topic == `ns= 3; s = \"DB-Test\".PacHeizung.\"Spannung L1-N\"`)\n{ \n msgL1.payload=msg.payload;\n //msgL1.topic=\"\"\n //return [msgL1,null];\n}\n\nif (msgPg.topic == `ns=3;s=\"DB - Test\".PacHeizung.\"Gesamtwirkleistung\"; datatype = objekt`) \n{\n msgPg.payload = msg.payload;\n //msgL1.topic=\"\"\n //return [msgL1,null];\n}\n\nmsg.sps = msg.payload;\nmsg.payload.WERT1 = msgL1;\nmsg.payload.WERT2 = msgPg;\nmsg.topic = \"INSERT INTO test (`r-wert-2`,`r-wert1`) VALUES (:WERT1,:WERT2);\"\n\nreturn [msgL1, msgPg];\n", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 810, "y": 180, "wires": [ [ "d4d90c319292393d", "4b7e50ec17c817af", "ebfaad7c20f6ab22" ] ] }, { "id": "d4d90c319292393d", "type": "debug", "z": "26d40d242fae4652", "name": "insert payload", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1000, "y": 60, "wires": [] }, { "id": "4b7e50ec17c817af", "type": "debug", "z": "26d40d242fae4652", "name": "insert topic", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 990, "y": 20, "wires": [] }, { "id": "6b2e635dedb8a4e0", "type": "debug", "z": "26d40d242fae4652", "name": "sps topic", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "topic", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 760, "y": 20, "wires": [] }, { "id": "337b4b50896ff60e", "type": "debug", "z": "26d40d242fae4652", "name": "sps payload", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 770, "y": 60, "wires": [] }, { "id": "ebfaad7c20f6ab22", "type": "debug", "z": "26d40d242fae4652", "name": "insert komplett", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 1000, "y": 100, "wires": [] }, { "id": "678f94dc25a7a009", "type": "debug", "z": "26d40d242fae4652", "name": "sps komplett", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 770, "y": 100, "wires": [] }, { "id": "2dd8113895eb655b", "type": "mysql", "z": "26d40d242fae4652", "mydb": "a210a46b27a492e3", "name": "SQL DB", "x": 1160, "y": 180, "wires": [ [] ] }, { "id": "aa0b0b1ec465be5d", "type": "OpcUa-Endpoint", "endpoint": "opc.tcp://192.168.178.3:4840", "secpol": "None", "secmode": "None", "none": true, "login": false, "usercert": false, "usercertificate": "", "userprivatekey": "" }, { "id": "a210a46b27a492e3", "type": "MySQLdatabase", "name": "SQL1", "host": "127.0.0.1", "port": "3306", "db": "node-red-test", "tz": "", "charset": "UTF8" } ]