====== Set up and use Modbus TCP on the router ======
===== Goal =====
Set up an LXC container with a Node-RED function. A 7KN Powercenter 1000 data transceiver is integrated into Node-RED, which can be queried via Modbus TCP. Additional end devices can transmit data to the Powercenter via the energy monitoring system and be queried via Modbus. The data is stored in a structured format in an Influx database and can then be virtualized using Grafana.
===== The background to this project =====
Companies are increasingly being urged to become more digital and smarter in the workplace. However, data and information are usually generated locally in the work process (on trains, buses, or production machines). In addition, the components (sensors or controls) were not developed for a network. We already use a Netmodule router for this task of collecting local data from various components and sending it to a central server via a mobile connection. The second point that I see as an obstacle to digitization is that many components also have their own protocols. The access programs supplied are not very smart, and you end up with a whole bunch of programs that need to be maintained. I have implemented a solution for this using the open source tool Node-RED. Access to components is standardized, making it less complex. Protocols that are not widely used are also supported.
----
=== Project setup ===
{{:app-notes:modbus_aufbau.jpg?950|}}
----
=== Interaction ===
{{:app-notes:interaction.png?950|}}
----
===== Prerequisites =====
* NetModule Wireless Router with wireless connection
* NetModule Software [[https://share.netmodule.com/public/system-software/5.0/|5.0.0.100]] or newer
* A license is required for the LXC container
* Not available for legacy products NB1600, NB2700, NB3700, NB3710
**
The wiki was tested with router software 5.0.0.100 and the LXC container with Debian armhf bookworn.
**
===== - Setting up an LXC container and then implementing Node RED =====
The link below takes you to a wiki that describes how to install and set up an LXC container on a NetModule router.
----
* Set up an LXC container / [[app-notes:set-up-lxc]]
----
Once the LXC container has been installed, we can install Node-RED.
For further installation, we need the ''curl'' program and the ''npm'' package on the container. We will then deploy Node-RED on the router using a script.
root@LXCNAME:/# apt-get install curl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
ca-certificates libbrotli1 libcurl4 libldap-2.5-0 libldap-common
libnghttp2-14 libpsl5 librtmp1 libsasl2-2 libsasl2-modules
libsasl2-modules-db libssh2-1 openssl publicsuffix
...
done.
root@LXCNAME:/#
root@LXCNAME:/# apt install npm
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
binutils binutils-arm-linux-gnueabihf binutils-common build-essential
...
x11-utils x11-xserver-utils xdg-user-dirs xdg-utils xz-utils zutty
0 upgraded, 614 newly installed, 0 to remove and 0 not upgraded.
Need to get 169 MB of archives.
After this operation, 684 MB of additional disk space will be used.
...
done.
root@LXCNAME:/#
Next, the Node-RED program is installed via a script file.
Further information on the installation script can be found at this link.
* Node-RED script information [[https://github.com/node-red/linux-installers| github link]]
**
Node-RED core is installed in version 4.0.9 and Node.js in version 18.19.0.
**
The script command for this:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/
master/deb/update-nodejs-and-nodered)
root@LXCNAME:/# bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) --node18
The first question is whether the installation should be carried out under
the "root" user. We only have the "root" user in the container, so
the answer is ''yes''.
Are you really sure you want to install as root ? (y/N) ? ''y''
If I want to see the installation steps, please also say ''yes'' here
Are you really sure you want to do this ? [y/N] ? ''y''
I don't have a Pi where I install Node-RED on it, so ''no'' here
Would you like to install the Pi-specific nodes ? [y/N] ? ''n''
Running Node-RED update for user root at /root on debian
Stop Node-RED \u2714
Remove old version of Node-RED \u2714
Remove old version of Node.js \u2714 18.19.0+dfsg-6~deb12u2
Install Node 18.20.6-1nodesource1 \u2714 v18.20.8 Npm 10.8.2
Clean npm cache \u2714
Install Node-RED core \u2714 4.0.9
Move global nodes to local -
Npm rebuild existing nodes \u2714
Install extra Pi nodes -
Add shortcut commands \u2714
Update systemd script \u2714
Any errors will be logged to /var/log/nodered-install.log
All done.
Further settings for the Node-Red interface
The script command for this:
root@LXCNAME:~# node-red admin init
✔ Settings file · /root/.node-red/settings.js
? That file already exists. Are you sure you want to overwrite it? …
▸ Yes
▸ No
User Security
=============
? Do you want to setup user security? …
▸ Yes
▸ No
✔ Do you want to setup user security? · Yes
✔ Username · admin
✔ Password · *********
? User permissions …
▸ full access
▸ read-only access
? Add another user? …
▸ Yes
▸ No
✔ Do you want to enable the Projects feature? …
▸ Yes
▸ No
✔ Do you want to enable the Projects feature? · Yes
? What project workflow do you want to use? …
▸ manual - you must manually commit changes
▸ auto - changes are automatically committed
Editor settings
===============
? Select a theme for the editor. To use any theme other than "default", you will need to install @node-red-contrib-themes/theme-collection in your Node-RED user directory. …
▸ default
* aurora
* cobalt2
* dark
* dracula
* espresso-libre
* midnight-red
* monoindustrial
* monokai
* oceanic-next
* oled
* solarized-dark
* solarized-light
* tokyo-night
* zenburn
✔ Select the text editor component to use in the Node-RED Editor …
▸ monaco (default)
▸ ace
Node settings
=============
? Allow Function nodes to load external modules? (functionExternalModules) …
▸ Yes
▸ No
If you want to test the whole thing first, you can start the Node-RED server manually by entering the command ''"node-red-start"''.
root@LXCNAME:/# node-red-start
Start Node-RED
23 Jan 14:41:17 - [info]
Welcome to Node-RED
===================
If you want this to happen automatically when you start the LXC container, you have to set it up with the command ''"systemctl enable nodered.service"''.
root@LXCNAME:/# systemctl enable nodered.service
Created symlink /etc/systemd/system/multi-user.target.wants/nodered.service → /lib/systemd/system/nodered.service.
root@LXCNAME:/#
Once you have stored the systemctl for Node-RED, you still have to restart the container for the service to start.
You can access the Node-RED interface via a web browser. Simply enter the IP address of the container and port 1880.
The Node-RED interface will then be displayed.
{{:pictures:node-red.png?950|}}
----
===== - Installing further app-nodes via palette management =====
For Node-RED, further ''"app nodes"'' need to be installed.
On the right side of the web interface, you can install additional nodes for Node-RED.
A tab opens under point 1. You can install the nodes under point 2.
{{ :app-notes:nodes_install.png?400 |}}
A separate window will open for the installation, where you can carry out the installation. The “Installation” item is responsible for installation. You can search for existing nodes and install them under the search field in item 2.
{{ :app-notes:modbus_node_install.png?800 |}}
Two additional nodes are required for implementation.
Node: ''„siemens-sentron“''
Node: ''„influxdb“''
{{ :app-notes:modbus_nodes.png?800 |}}
After installation, the new nodes are available on the left side of the web interface.
{{ :app-notes:modbus_new_nodes.png?200 |}}
----
===== - Importing a Modbus flow into Node-RED =====
The .json file can be inserted using the import function. The tab is located on the right side of the web interface.
{{ :app-notes:snmp_import.png?400 |}}
A separate window will open again. You can import a file or copy the code directly into the field.
{{ :app-notes:modbus_import.png?800 |}}
Under this item, you can download ''Modbus flow'' for Node-RED.
++++show code|
[
{
"id": "d5ce2090b297b4c6",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "temperature-inst",
"x": 340,
"y": 160,
"wires": [
[
"2f0ebe9cd2d2b874"
]
]
},
{
"id": "2f0ebe9cd2d2b874",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 160,
"wires": [
[],
[
"70d33694f36c71c4"
]
]
},
{
"id": "5c39c9a19d04e449",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Aktuelle Temperatur",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1040,
"y": 160,
"wires": []
},
{
"id": "ac4cb9b6732477a3",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "temperature-avg",
"x": 340,
"y": 60,
"wires": [
[
"60ab64e6613c450e"
]
]
},
{
"id": "60ab64e6613c450e",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 60,
"wires": [
[],
[
"825082452d5d010f"
]
]
},
{
"id": "4b31ff276199ef09",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Durchschnittstemperatur",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1050,
"y": 40,
"wires": []
},
{
"id": "70d33694f36c71c4",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 180,
"wires": [
[
"5c39c9a19d04e449",
"a2ee12a9702da904"
]
]
},
{
"id": "825082452d5d010f",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 60,
"wires": [
[
"4b31ff276199ef09",
"a3c868a94848cbba"
]
]
},
{
"id": "f241e7dc1bf26ab3",
"type": "inject",
"z": "183dfbe101ffc961",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "5",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 110,
"y": 680,
"wires": [
[
"ac4cb9b6732477a3",
"d5ce2090b297b4c6",
"f9d000ea64304079",
"e686309196e5f717",
"d19408c31774d706",
"b8d0c74ea0d092ea",
"0326ac7810216721",
"2c1d11f3452c726c",
"f8e430826e533bad",
"91010b58f6007138",
"412d4120960247fa",
"9324a72eae3e84c3",
"81648225b72d91b7",
"d01b0fb6fe4f0ad0",
"896657ebe0bdd44c",
"026a7a5fb9ddfacb",
"36cf0570bc0e658c",
"033e9bd124cad7af",
"2d6670646fee7c41"
]
]
},
{
"id": "f9d000ea64304079",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "current-inst",
"x": 340,
"y": 320,
"wires": [
[
"8a711a1b976c3b97"
]
]
},
{
"id": "8a711a1b976c3b97",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 320,
"wires": [
[],
[
"10284f02c713c2be"
]
]
},
{
"id": "7b67edbfd359886b",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Tatsächlicher Strom L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1040,
"y": 300,
"wires": []
},
{
"id": "10284f02c713c2be",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 320,
"wires": [
[
"7b67edbfd359886b",
"7d6d8fdeab87f509"
]
]
},
{
"id": "e686309196e5f717",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "current-avg",
"x": 340,
"y": 420,
"wires": [
[
"2f10f7a4ae54d6d6"
]
]
},
{
"id": "2f10f7a4ae54d6d6",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 420,
"wires": [
[],
[
"21ab3907d3c4c46d"
]
]
},
{
"id": "d485b74df236d67d",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Durchschnittlicher Strom L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1060,
"y": 420,
"wires": []
},
{
"id": "21ab3907d3c4c46d",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 440,
"wires": [
[
"d485b74df236d67d",
"a7b84bb4b8ccf268"
]
]
},
{
"id": "d19408c31774d706",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "current-max",
"x": 340,
"y": 520,
"wires": [
[
"4bf234954a9a3a20"
]
]
},
{
"id": "4bf234954a9a3a20",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 520,
"wires": [
[],
[
"ca9a80e4d6d76bc2"
]
]
},
{
"id": "21f853a57ef9d274",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Maximaler Strom L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 540,
"wires": []
},
{
"id": "ca9a80e4d6d76bc2",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 560,
"wires": [
[
"21f853a57ef9d274",
"60b6576caf875b1f"
]
]
},
{
"id": "b8d0c74ea0d092ea",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "voltage-LN",
"x": 340,
"y": 680,
"wires": [
[
"dda9f3d57c930464"
]
]
},
{
"id": "dda9f3d57c930464",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 680,
"wires": [
[],
[
"e513c9c66612fd10"
]
]
},
{
"id": "dcba45eea14ee4ea",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "L-N-Spannung",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1020,
"y": 680,
"wires": []
},
{
"id": "e513c9c66612fd10",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 680,
"wires": [
[
"dcba45eea14ee4ea",
"2b7776564ffd0081"
]
]
},
{
"id": "0326ac7810216721",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "frequency",
"x": 340,
"y": 780,
"wires": [
[
"9995251cd83d0aa1"
]
]
},
{
"id": "9995251cd83d0aa1",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 780,
"wires": [
[],
[
"dd67cec53ec0beb3"
]
]
},
{
"id": "602468e3838e7f0e",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Netzfrequenz",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1010,
"y": 800,
"wires": []
},
{
"id": "dd67cec53ec0beb3",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 820,
"wires": [
[
"602468e3838e7f0e",
"d6a7db12a469316f"
]
]
},
{
"id": "026a7a5fb9ddfacb",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "actPower-L",
"x": 340,
"y": 1020,
"wires": [
[
"55b8b02536c662a9"
]
]
},
{
"id": "55b8b02536c662a9",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1020,
"wires": [
[],
[
"c2fd95696f136cf9"
]
]
},
{
"id": "126039cec88baa1e",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Wirkleistung L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1020,
"y": 940,
"wires": []
},
{
"id": "c2fd95696f136cf9",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 960,
"wires": [
[
"126039cec88baa1e",
"849e857a4f01dd0f"
]
]
},
{
"id": "2c1d11f3452c726c",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "appPower-L",
"x": 340,
"y": 1120,
"wires": [
[
"124fce660cbb4841"
]
]
},
{
"id": "124fce660cbb4841",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1120,
"wires": [
[],
[
"05d973e599757f43"
]
]
},
{
"id": "ca99c0883391617e",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Scheinleistung L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1020,
"y": 1060,
"wires": []
},
{
"id": "05d973e599757f43",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1100,
"wires": [
[
"ca99c0883391617e",
"53fec0081b873707"
]
]
},
{
"id": "f8e430826e533bad",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "reactPower-L",
"x": 340,
"y": 1220,
"wires": [
[
"259f656a8e9534a1"
]
]
},
{
"id": "259f656a8e9534a1",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1220,
"wires": [
[],
[
"a096c3305b9eda6c"
]
]
},
{
"id": "9f0f75d81f713c69",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Blindleistung L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1020,
"y": 1180,
"wires": []
},
{
"id": "a096c3305b9eda6c",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1220,
"wires": [
[
"9f0f75d81f713c69",
"e09f762891d5d5c5"
]
]
},
{
"id": "91010b58f6007138",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "pFactor-L",
"x": 340,
"y": 1320,
"wires": [
[
"a3a6148eca8032cb"
]
]
},
{
"id": "a3a6148eca8032cb",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1320,
"wires": [
[],
[
"5f34d120adb9f242"
]
]
},
{
"id": "d4b926a328089743",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Leistungsfaktor L",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 1300,
"wires": []
},
{
"id": "5f34d120adb9f242",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1320,
"wires": [
[
"d4b926a328089743",
"430f38e50ea67712"
]
]
},
{
"id": "412d4120960247fa",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "actEnergyImp",
"x": 340,
"y": 1480,
"wires": [
[
"266430af173f7e8d"
]
]
},
{
"id": "266430af173f7e8d",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1480,
"wires": [
[],
[
"dbae79f90cef55cf"
]
]
},
{
"id": "5fcde377ae223fab",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Importierte aktive Energie",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1050,
"y": 1480,
"wires": []
},
{
"id": "dbae79f90cef55cf",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1480,
"wires": [
[
"5fcde377ae223fab",
"cf1a2e94bef2bd65"
]
]
},
{
"id": "9324a72eae3e84c3",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "actEnergyExp",
"x": 340,
"y": 1580,
"wires": [
[
"d3a057e7b01c4233"
]
]
},
{
"id": "d3a057e7b01c4233",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1580,
"wires": [
[],
[
"d18f10d5a949d8d2"
]
]
},
{
"id": "34b0f6bfe4ca1846",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Exportierte aktive Energie",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1050,
"y": 1600,
"wires": []
},
{
"id": "d18f10d5a949d8d2",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1620,
"wires": [
[
"34b0f6bfe4ca1846",
"912a9faceb68483a"
]
]
},
{
"id": "81648225b72d91b7",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "reactEnergyImp",
"x": 340,
"y": 1680,
"wires": [
[
"bafa278203eb2c92"
]
]
},
{
"id": "bafa278203eb2c92",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1680,
"wires": [
[],
[
"b807b68d2e2b4176"
]
]
},
{
"id": "46735f9094c683ba",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Importierte Blindleistung",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1050,
"y": 1720,
"wires": []
},
{
"id": "b807b68d2e2b4176",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1720,
"wires": [
[
"46735f9094c683ba",
"34761ac09051db16"
]
]
},
{
"id": "d01b0fb6fe4f0ad0",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "reactEnergyExp",
"x": 340,
"y": 1780,
"wires": [
[
"5b449731f78d5bfc"
]
]
},
{
"id": "5b449731f78d5bfc",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1780,
"wires": [
[],
[
"2530a7e4719d2e40"
]
]
},
{
"id": "6406db179cf62ac7",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Exportierte Blindleistung",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1050,
"y": 1840,
"wires": []
},
{
"id": "2530a7e4719d2e40",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1840,
"wires": [
[
"6406db179cf62ac7",
"35f074c9d506e1b1"
]
]
},
{
"id": "896657ebe0bdd44c",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "alarmsStatus",
"x": 340,
"y": 1980,
"wires": [
[
"63c5edb582b9adf6"
]
]
},
{
"id": "63c5edb582b9adf6",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 1980,
"wires": [
[],
[
"af64500e379d0d1b"
]
]
},
{
"id": "deb9179b43f5075a",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Alarmstatus",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1010,
"y": 1980,
"wires": []
},
{
"id": "af64500e379d0d1b",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 1980,
"wires": [
[
"deb9179b43f5075a",
"c86b7265fa0d8364"
]
]
},
{
"id": "36cf0570bc0e658c",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "mecOperCycles",
"x": 340,
"y": 2080,
"wires": [
[
"63f520a73a630f89"
]
]
},
{
"id": "63f520a73a630f89",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 2080,
"wires": [
[],
[
"92579b800575cfb5"
]
]
},
{
"id": "c7ebc5aeccc9c0cb",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Mechanische Arbeitszyklen",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1060,
"y": 2100,
"wires": []
},
{
"id": "92579b800575cfb5",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 2100,
"wires": [
[
"c7ebc5aeccc9c0cb",
"b1b9d959e08fd2fc"
]
]
},
{
"id": "033e9bd124cad7af",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "tripOpers",
"x": 340,
"y": 2200,
"wires": [
[
"76600a34a67a9146"
]
]
},
{
"id": "76600a34a67a9146",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 2200,
"wires": [
[],
[
"8c1047456f7921f5"
]
]
},
{
"id": "a062e594a3111b61",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Auslösevorgänge",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 2220,
"wires": []
},
{
"id": "8c1047456f7921f5",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 790,
"y": 2220,
"wires": [
[
"a062e594a3111b61",
"63fe288cef365bcb"
]
]
},
{
"id": "2d6670646fee7c41",
"type": "measure",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "1",
"device": "poc1000",
"deviceProtection": "5sl6com",
"data": "shortCircTrip",
"x": 340,
"y": 2340,
"wires": [
[
"a0b9ec1044b5c804"
]
]
},
{
"id": "a0b9ec1044b5c804",
"type": "modbus-flex-getter",
"z": "183dfbe101ffc961",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"logIOActivities": false,
"server": "4494449f14fb5f83",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": true,
"delayOnStart": false,
"startDelayTime": "",
"x": 570,
"y": 2340,
"wires": [
[],
[
"fd79250e59f9ca6d"
]
]
},
{
"id": "8afaee61899aa438",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Kurzschlussauslöser",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1040,
"y": 2340,
"wires": []
},
{
"id": "fd79250e59f9ca6d",
"type": "getter",
"z": "183dfbe101ffc961",
"name": "",
"unitId": "",
"data": "",
"x": 810,
"y": 2340,
"wires": [
[
"8afaee61899aa438",
"a3c83a3c01a9341d"
]
]
},
{
"id": "8b06388a0f1a2172",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Aktuelle Temperatur 5SL6 COM Unit 1",
"measurement": "aktuelle_temperatur_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1370,
"y": 220,
"wires": []
},
{
"id": "a2ee12a9702da904",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 220,
"wires": [
[
"8b06388a0f1a2172"
]
]
},
{
"id": "76b8173c48d57ecd",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Durchschnittstemperatur 5SL6 COM Unit 1",
"measurement": "durchschnittstemperatur_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1590,
"y": 100,
"wires": []
},
{
"id": "eaa03382ac6a47d2",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1250,
"y": 100,
"wires": [
[
"76b8173c48d57ecd"
]
]
},
{
"id": "adf6cafde8371f33",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Tatsächlicher Strom L 5SL6 COM Unit 1",
"measurement": "tatsaechlicher_strom_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1380,
"y": 360,
"wires": []
},
{
"id": "7d6d8fdeab87f509",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 360,
"wires": [
[
"adf6cafde8371f33"
]
]
},
{
"id": "7e6023b8d2c37389",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Durchschnittlicher Strom L 5SL6 COM Unit 1",
"measurement": "durchschnittlicher_strom_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1390,
"y": 480,
"wires": []
},
{
"id": "a7b84bb4b8ccf268",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 480,
"wires": [
[
"7e6023b8d2c37389"
]
]
},
{
"id": "433867ad17b36c42",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Maximaler Strom L 5SL6 COM Unit 1",
"measurement": "maximaler-strom_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1370,
"y": 600,
"wires": []
},
{
"id": "60b6576caf875b1f",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 600,
"wires": [
[
"433867ad17b36c42"
]
]
},
{
"id": "ca9f802db24f08f4",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "L-N-Spannung 5SL6 COM Unit 1",
"measurement": "l_n_spannung_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1360,
"y": 740,
"wires": []
},
{
"id": "2b7776564ffd0081",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 740,
"wires": [
[
"ca9f802db24f08f4"
]
]
},
{
"id": "7bd83607ca1b5ab3",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Netzfrequenz 5SL6 COM Unit 1",
"measurement": "netzfrequenz_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1350,
"y": 860,
"wires": []
},
{
"id": "d6a7db12a469316f",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 860,
"wires": [
[
"7bd83607ca1b5ab3"
]
]
},
{
"id": "280a38d9399812d7",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Wirkleistung L 5SL6 COM Unit 1",
"measurement": "wirkleistung_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1350,
"y": 1000,
"wires": []
},
{
"id": "849e857a4f01dd0f",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1000,
"wires": [
[
"280a38d9399812d7"
]
]
},
{
"id": "08a6d0411401dcfd",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Scheinleistung L 5SL6 COM Unit 1",
"measurement": "scheinleistung_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1360,
"y": 1120,
"wires": []
},
{
"id": "53fec0081b873707",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1120,
"wires": [
[
"08a6d0411401dcfd"
]
]
},
{
"id": "7056d7c08e28ea99",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Blindleistung L 5SL6 COM Unit 1",
"measurement": "blindleistung_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1360,
"y": 1240,
"wires": []
},
{
"id": "e09f762891d5d5c5",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1240,
"wires": [
[
"7056d7c08e28ea99"
]
]
},
{
"id": "658ec18b1afa23df",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Leistungsfaktor L 5SL6 COM Unit 1",
"measurement": "leistungsfaktor_l_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1360,
"y": 1360,
"wires": []
},
{
"id": "430f38e50ea67712",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1360,
"wires": [
[
"658ec18b1afa23df"
]
]
},
{
"id": "7dc9bc0891dd5667",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Importierte aktive Energie 5SL6 COM Unit 1",
"measurement": "importierte_aktive_energie_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1390,
"y": 1540,
"wires": []
},
{
"id": "cf1a2e94bef2bd65",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1540,
"wires": [
[
"7dc9bc0891dd5667"
]
]
},
{
"id": "aceca48c6c83f6c7",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Exportierte aktive Energie 5SL6 COM Unit 1",
"measurement": "exportierte_aktive_energie_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1390,
"y": 1660,
"wires": []
},
{
"id": "912a9faceb68483a",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1660,
"wires": [
[
"aceca48c6c83f6c7"
]
]
},
{
"id": "07775f20306710f7",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Importierte Blindleistung 5SL6 COM Unit 1",
"measurement": "importierte_blindleistung_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1390,
"y": 1780,
"wires": []
},
{
"id": "34761ac09051db16",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1780,
"wires": [
[
"07775f20306710f7"
]
]
},
{
"id": "6af0793105060fe9",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Exportierte Blindleistung 5SL6 COM Unit 1",
"measurement": "exportierte_blindleistung_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1390,
"y": 1900,
"wires": []
},
{
"id": "35f074c9d506e1b1",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 1900,
"wires": [
[
"6af0793105060fe9"
]
]
},
{
"id": "6fdd24ad042e973d",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Alarmstatus 5SL6 COM Unit 1",
"measurement": "alarmstatus_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1350,
"y": 2040,
"wires": []
},
{
"id": "c86b7265fa0d8364",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 2040,
"wires": [
[
"6fdd24ad042e973d"
]
]
},
{
"id": "ef06f7b929998109",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Mechanische Arbeitszyklen 5SL6 COM Unit 1",
"measurement": "mechanische_arbeitszyklen_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1390,
"y": 2160,
"wires": []
},
{
"id": "b1b9d959e08fd2fc",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 2160,
"wires": [
[
"ef06f7b929998109"
]
]
},
{
"id": "4d2ac4119fc7848d",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Auslösevorgänge 5SL6 COM Unit 1",
"measurement": "ausloesevorgaenge_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1360,
"y": 2280,
"wires": []
},
{
"id": "63fe288cef365bcb",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 2280,
"wires": [
[
"4d2ac4119fc7848d"
]
]
},
{
"id": "5f5567853204ce55",
"type": "influxdb out",
"z": "183dfbe101ffc961",
"influxdb": "17cdc5c1c4ee9b4d",
"name": "Kurzschlussauslöser 5SL6 COM Unit 1",
"measurement": "kurzschlussausloeser_unit_1_5sl6com",
"precision": "",
"retentionPolicy": "",
"database": "database",
"precisionV18FluxV20": "ms",
"retentionPolicyV18Flux": "",
"org": "smart-iot",
"bucket": "sentron-iot",
"x": 1370,
"y": 2400,
"wires": []
},
{
"id": "a3c83a3c01a9341d",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Von String in Float",
"func": "return [\n { payload: parseFloat(msg.payload)},\n\n];\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1030,
"y": 2400,
"wires": [
[
"5f5567853204ce55"
]
]
},
{
"id": "a3c868a94848cbba",
"type": "function",
"z": "183dfbe101ffc961",
"name": "Abfrage Wert",
"func": "\nif (msg.payload == \"NaN\") {\n msg.payload = 0;\n} \nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1010,
"y": 100,
"wires": [
[
"050a46b3b78eb832",
"eaa03382ac6a47d2"
]
]
},
{
"id": "050a46b3b78eb832",
"type": "debug",
"z": "183dfbe101ffc961",
"name": "Durchschnittstemperatur vorhanden",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1420,
"y": 160,
"wires": []
},
{
"id": "4494449f14fb5f83",
"type": "modbus-client",
"name": "",
"clienttype": "tcp",
"bufferCommands": true,
"stateLogEnabled": false,
"queueLogEnabled": false,
"failureLogEnabled": false,
"tcpHost": "192.168.1.150",
"tcpPort": "502",
"tcpType": "DEFAULT",
"serialPort": "/dev/ttyUSB",
"serialType": "RTU-BUFFERD",
"serialBaudrate": "9600",
"serialDatabits": "8",
"serialStopbits": "1",
"serialParity": "none",
"serialConnectionDelay": "100",
"serialAsciiResponseStartDelimiter": "",
"unit_id": 1,
"commandDelay": 1,
"clientTimeout": 5000,
"reconnectOnTimeout": true,
"reconnectTimeout": 7000,
"parallelUnitIdsAllowed": true,
"showErrors": false,
"showWarnings": true,
"showLogs": true
},
{
"id": "17cdc5c1c4ee9b4d",
"type": "influxdb",
"hostname": "192.168.1.110",
"port": "8086",
"protocol": "http",
"database": "database",
"name": "Smart-IoT",
"usetls": false,
"tls": "",
"influxdbVersion": "2.0",
"url": "http://192.168.1.110:8086",
"timeout": "10",
"rejectUnauthorized": true
}
]
++++
After execution, these objects are stored in the flow.
{{:app-notes:modbus_flow.png?950|}}
When this flow is executed, the two pieces of information ''L-N voltage'' and ''mains frequency'' are displayed in the Debug tab.
{{ :app-notes:modbus_debug.png?400 |}}
----
===== - Install and set up InfluxDB 2.0 on a Raspberry Pi =====
The database''(Influx)'' and data virtualization program''(Grafana)'' can be located centrally in a data center. The Netmodule router can transfer data to the server via a mobile connection and additionally via an IPsec or OpenVPN tunnel. The router is the gateway between local data and the network level.
The auxiliary tool “wget” is required to install InfluxDB. In the second step, the KEYS for package management can be added to the system. Once this has been done, InfluxDB can be installed.
:~ $ sudo apt install wget
Reading package lists... Done
...
wget is already the newest version (1.21.3-1+deb12u1).
:~ $
To add the KEYS, these three program lines must be executed. In the last step, the software database update and influxdb2 are installed.
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt-get update && sudo apt-get install influxdb2
If you want the database to start as a background service when the system starts up, please execute this command.
sudo service influxdb start
The whole thing can be checked using this command to see whether InfluxDB is running correctly on the Raspberry Pi.
:~ $ sudo service influxdb status
● influxdb.service - InfluxDB is an open-source, distributed, time series database
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-07-09 17:21:36 CEST; 1 day 22h ago
Docs: https://docs.influxdata.com/influxdb/
Main PID: 1310 (influxd)
Tasks: 19 (limit: 9564)
CPU: 1min 2.918s
CGroup: /system.slice/influxdb.service
├─1310 /usr/bin/influxd
├─1353 /usr/bin/dbus-daemon --syslog --fork --print-pid 4 --print-address 6 --session
├─1354 /usr/bin/dbus-daemon --syslog --fork --print-pid 4 --print-address 6 --session
├─1387 /usr/bin/dbus-daemon --syslog --fork --print-pid 4 --print-address 6 --session
└─1412 /usr/bin/dbus-daemon --syslog --fork --print-pid 4 --print-address 6 --session
The influxdb can be further configured via a web browser. To access the interface, you need the IP address of the Raspberry Pi and the port number 8086.
Example: 192.168.1.110:8086
When you log in for the first time, you will be asked to choose a username and password.
{{ :app-notes:influx_start.png?400 |}}
For the first point, select the ''"BUCKETS"'' option in the menu and create a new one with ''"+ CREATE BUCKET"''.
{{:app-notes:influx_bucket.png?950|}}
To access the database, you must first set up an API token. You can use the custom token to restrict access to individual buckets. A separate token can be created for each program that can access the database.
{{:app-notes:influx_token.png?950|}}
The token in this project is required for Node-Red to access the database.
{{ :app-notes:node_red_token.png?400 |}}
Once the connection between Node-RED and InfluxDB is established, the data is stored in a structured format in the database and can be viewed using the Influx Data Explorer.
{{:app-notes:influx_daten.png?950|}}
----
===== - Install and set up Grafana on a Raspberry Pi =====
As with the database, KEYS must be added for the installation of Grafana. After this step, the program can be installed again.
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana
To ensure that Grafana starts as a background service when the system boots, you must enable the Grafana Systemctl service.
sudo /bin/systemctl enable grafana-server
With the second command, you start the Grafana server.
sudo /bin/systemctl start grafana-server
Grafana is then further configured via a web browser. To access the interface, you need the IP address of the Raspberry Pi and port number 3000.
Example: 192.168.1.110:3000
When logging in for the first time, the user name is “admin” and the password is “admin”. After logging in, you must change the password first.
{{ :app-notes:grafana_start.png?400 |}}
First, the data source from which the data''(InfluxDB)'' originates is integrated into Grafana.
{{ :app-notes:grafana_datenbank_1.png?800 |}}
The URL address is important for accessing the InfluxDB.
Under the ''“InfluxDB Details”'' option, you must specify an organization for Grafana for access and the ''“bucket”'' that was previously set up in InfluxDB. In InfluxDB 2.0, access is always via a token and no longer with a user name and password. For Grafana, you can either create your own under the database or use the token you have already created here.
{{ :app-notes:grafana_datenbank_2.png?800 |}}
Once all settings have been made, you can test access to the database from Grafana to check that the settings are correct.
{{ :app-notes:grafana_datenbank_3.png?800 |}}
Next, you can set up dashboards in Grafana and visualize the data from the database for further processing within the company.
{{:app-notes:grafana_dashboard.png?950|}}
----
===== - Additional information =====
Further documentation on the data transceiver and the sensor.
* System Manual Sentron [[https://support.industry.siemens.com/cs/attachments/109791806/MAN_L1V30827018B_RS-AA_007_en_en-US.pdf|System Manual]]
* 7KN POWERCENTER 1000 [[https://support.industry.siemens.com/cs/attachments/109793297/OI_L1V30610178A-04_202403140748285024.pdf|Powercenter 1000]]
* Circuit Breaker 5SL6 COM [[https://support.industry.siemens.com/cs/attachments/109793301/OI_3355484128-04_202208180943403662.pdf|Circuit Breaker]]