Modbustcp-read Function Script

Can you show the outputs you're getting? Even better, can you attach a debug node to the output and capture the debug along with what value you expect it to say? It could be the number is just being converted incorrectly and needs to be switched.

I once tested the first flow on my raspbbery pi, it works there. But i want it on my ccu. so i think the sysvar works. I'm on my way, I'll send you the flow later.

[{"id":"e4f0ea06.4e5b38","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"5f8d0e10.8d204","type":"inject","z":"e4f0ea06.4e5b38","name":"Chlor Wert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"100","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"chlor_wert","x":190,"y":160,"wires":[["a3e39dd9.d7162"]]},{"id":"c875c0e6.487cc","type":"inject","z":"e4f0ea06.4e5b38","name":"PH Wert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"115","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"ph_wert","x":200,"y":220,"wires":[["a3e39dd9.d7162"]]},{"id":"a3e39dd9.d7162","type":"modbus-flex-getter","z":"e4f0ea06.4e5b38","name":"Depolox Pool E 700P","showStatusActivities":false,"showErrors":false,"logIOActivities":false,"server":"3b446b30.590ab4","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"x":520,"y":360,"wires":[[],["7d907b02.8feda4"]]},{"id":"c859d8e1.9963d8","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"PH Wert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1020,"y":220,"wires":[[]]},{"id":"34cf62b3.c5426e","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Redox Wert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1030,"y":280,"wires":[[]]},{"id":"7d907b02.8feda4","type":"function","z":"e4f0ea06.4e5b38","name":"Wert Splitter","func":"var temp = Buffer.from(msg.payload.buffer);\nmsg.payload = temp.readFloatBE();\n\nif(msg.topic.name == \"chlor_wert\"){\n    return([msg,null,null,null,null,null,null,null]);\n}\nif(msg.topic.name == \"ph_wert\"){\n    return([null,msg,null,null,null,null,null,null]);\n}\nif(msg.topic.name == \"redox_wert\"){\n    return([null,null,msg,null,null,null,null,null]);\n}\nif (msg.topic.name == \"temp\") {\n    return ([null,null,null,msg,null,null,null,null]);\n}\nif (msg.topic.name == \"cl_soll\") {\n    return ([null,null,null,null,msg,null,null,null]);\n} \nif (msg.topic.name == \"ph_soll\") {\n    return ([null,null,null,null,null,msg,null,null]);\n}\nif (msg.topic.name == \"cl_dos\") {\n    return ([null,null,null,null,null,null,msg,null]);\n}\nif (msg.topic.name == \"ph_dos\") {\n    return ([null,null,null,null,null,null,null,msg]);\n}","outputs":8,"noerr":0,"initialize":"","finalize":"","x":730,"y":360,"wires":[["30b92cd9.2e88d4"],["c859d8e1.9963d8"],["34cf62b3.c5426e"],["874f459c.99a1e8"],["85315900.5704f8"],["dd5e0bbe.62d178"],["1b88a288.b432dd"],["471e0104.4a78a"]]},{"id":"874f459c.99a1e8","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Temperatur","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${temp}","change":true,"cache":true,"x":1030,"y":340,"wires":[[]]},{"id":"85315900.5704f8","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Chlor Sollwert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${clsoll}","change":true,"cache":true,"x":1040,"y":400,"wires":[[]]},{"id":"dd5e0bbe.62d178","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"PH Sollwert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${phsoll}","change":true,"cache":true,"x":1030,"y":460,"wires":[[]]},{"id":"1b88a288.b432dd","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Chlor Dosierleistung","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${cl-dosierleistung}","change":true,"cache":true,"x":1060,"y":520,"wires":[[]]},{"id":"471e0104.4a78a","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"PH Dosierleistung","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${dos2}","change":true,"cache":true,"x":1050,"y":580,"wires":[[]]},{"id":"30b92cd9.2e88d4","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Chlor Wert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${chlor}","change":true,"cache":true,"x":1030,"y":160,"wires":[[]]},{"id":"c30afcbc.20a0e","type":"inject","z":"e4f0ea06.4e5b38","name":"Redox Wert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"130","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"redox_wert","x":190,"y":280,"wires":[["a3e39dd9.d7162"]]},{"id":"d221c075.ee4e4","type":"inject","z":"e4f0ea06.4e5b38","name":"Temperatur","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"175","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"temp","x":190,"y":340,"wires":[["a3e39dd9.d7162"]]},{"id":"3e0e3a5f.0c0e26","type":"inject","z":"e4f0ea06.4e5b38","name":"Chlor Sollwert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"111","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"cl_soll","x":180,"y":400,"wires":[["a3e39dd9.d7162"]]},{"id":"30d531ba.c4a5de","type":"inject","z":"e4f0ea06.4e5b38","name":"PH Sollwert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"126","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"ph_soll","x":190,"y":460,"wires":[["a3e39dd9.d7162"]]},{"id":"4a6ff88a.1f7818","type":"inject","z":"e4f0ea06.4e5b38","name":"Chlor Dosierleistung","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"113","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"cl_dos","x":160,"y":520,"wires":[["a3e39dd9.d7162"]]},{"id":"8ecb7048.d8b5f","type":"inject","z":"e4f0ea06.4e5b38","name":"PH Dosierleistung","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"128","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"ph_dos","x":170,"y":580,"wires":[["a3e39dd9.d7162"]]},{"id":"3b446b30.590ab4","type":"modbus-client","name":"Depolox Pool E 700P","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.178.250","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true},{"id":"f91a7c3b4fc2798e","type":"ccu-connection","name":"192.168.178.245","host":"192.168.178.245","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":true,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"Chlor Wert","rpcServerHost":"192.168.178.69","rpcBinPort":"0","rpcXmlPort":"0","tls":false,"inSecure":false,"authentication":false,"username":"","password":"","queueTimeout":"5000","queuePause":"250","contextStore":""}]

A couple things I'm noticing that may be causing issues. First, you're sending a msg.topic into your MODBUS node:
image
But you're looking for a msg.topic.name coming out of your MODBUS node.
image
This won't work because the MODBUS node carries msg.topic from one side to the other. msg.payload changes to carry the returned data and it adds a couple other objects to track the query with. But msg.topic stays the same. If your if statements aren't working, that's why. Just remove .name from the end of msg.topic in your if statements and they should work as expected.

Second, there looks to be a way to simplify your flow a little bit. I can't read German and I'm not on a computer I can translate with (business limits my access). But it looks like you can simply pass a topic into your sysvar node to have it carry on to your CCU. Instead of setting it in the sysvar node, you can set it in your function. Then you only need one output on your function going to one sysvar node. You can use the incoming value of msg.topic to assign a new value for output. There's a small amount of documentation for that node that you may be able to pick out what's necessary to do that. It looks like you leave the topic field blank in the node configuration and then pass it in from the function. But that would not only simplify your function considerably, it would also make it so if you add things or change things in your setup, it will automatically accommodate the changes. Again, I'm just going off what I can guess with, but that's an option for you if you would like to explore it.

If I delete .name it still doesn't work.

What do you mean by simplification?

Reducing the number of nodes you're using while helping your flow work with everything you have so far. It's not necessary, but something that can be looked at once it's working.

Can you attach a debug node to the output of your MODBUS node and another to one of the outputs on your function node and show both outputs? Your MODBUS connected debug will produce a lot of objects due to the number of inject nodes, so you'll want to expand the object that matches the function output.

Sorry, but i don't know what you mean. I'm not a pro at node-red. :frowning:

You'll want to attach debug nodes and make sure you configure them to display the whole message object. Should look something like this:

[{"id":"e4f0ea06.4e5b38","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"5f8d0e10.8d204","type":"inject","z":"e4f0ea06.4e5b38","name":"Chlor Wert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"100","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"chlor_wert","x":190,"y":160,"wires":[["a3e39dd9.d7162"]]},{"id":"c875c0e6.487cc","type":"inject","z":"e4f0ea06.4e5b38","name":"PH Wert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"115","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"ph_wert","x":200,"y":220,"wires":[["a3e39dd9.d7162"]]},{"id":"a3e39dd9.d7162","type":"modbus-flex-getter","z":"e4f0ea06.4e5b38","name":"Depolox Pool E 700P","showStatusActivities":false,"showErrors":false,"logIOActivities":false,"server":"3b446b30.590ab4","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"x":520,"y":360,"wires":[[],["7d907b02.8feda4","bd5d3b4f18fcd96e"]]},{"id":"7d907b02.8feda4","type":"function","z":"e4f0ea06.4e5b38","name":"Wert Splitter","func":"var temp = Buffer.from(msg.payload.buffer);\nmsg.payload = temp.readFloatBE();\n\nif(msg.topic.name == \"chlor_wert\"){\n    return([msg,null,null,null,null,null,null,null]);\n}\nif(msg.topic.name == \"ph_wert\"){\n    return([null,msg,null,null,null,null,null,null]);\n}\nif(msg.topic.name == \"redox_wert\"){\n    return([null,null,msg,null,null,null,null,null]);\n}\nif (msg.topic.name == \"temp\") {\n    return ([null,null,null,msg,null,null,null,null]);\n}\nif (msg.topic.name == \"cl_soll\") {\n    return ([null,null,null,null,msg,null,null,null]);\n} \nif (msg.topic.name == \"ph_soll\") {\n    return ([null,null,null,null,null,msg,null,null]);\n}\nif (msg.topic.name == \"cl_dos\") {\n    return ([null,null,null,null,null,null,msg,null]);\n}\nif (msg.topic.name == \"ph_dos\") {\n    return ([null,null,null,null,null,null,null,msg]);\n}","outputs":8,"noerr":0,"initialize":"","finalize":"","x":730,"y":360,"wires":[["30b92cd9.2e88d4","9f007d158f98dfac"],["c859d8e1.9963d8"],["34cf62b3.c5426e"],["874f459c.99a1e8"],["85315900.5704f8"],["dd5e0bbe.62d178"],["1b88a288.b432dd"],["471e0104.4a78a"]]},{"id":"c30afcbc.20a0e","type":"inject","z":"e4f0ea06.4e5b38","name":"Redox Wert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"130","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"redox_wert","x":190,"y":280,"wires":[["a3e39dd9.d7162"]]},{"id":"d221c075.ee4e4","type":"inject","z":"e4f0ea06.4e5b38","name":"Temperatur","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"175","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"temp","x":190,"y":340,"wires":[["a3e39dd9.d7162"]]},{"id":"3e0e3a5f.0c0e26","type":"inject","z":"e4f0ea06.4e5b38","name":"Chlor Sollwert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"111","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"cl_soll","x":180,"y":400,"wires":[["a3e39dd9.d7162"]]},{"id":"30d531ba.c4a5de","type":"inject","z":"e4f0ea06.4e5b38","name":"PH Sollwert","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"126","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"ph_soll","x":190,"y":460,"wires":[["a3e39dd9.d7162"]]},{"id":"4a6ff88a.1f7818","type":"inject","z":"e4f0ea06.4e5b38","name":"Chlor Dosierleistung","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"113","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"cl_dos","x":160,"y":520,"wires":[["a3e39dd9.d7162"]]},{"id":"8ecb7048.d8b5f","type":"inject","z":"e4f0ea06.4e5b38","name":"PH Dosierleistung","props":[{"p":"fc","v":"3","vt":"num"},{"p":"address","v":"128","vt":"num"},{"p":"quantity","v":"2","vt":"num"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":true,"onceDelay":"0.5","topic":"ph_dos","x":170,"y":580,"wires":[["a3e39dd9.d7162"]]},{"id":"c859d8e1.9963d8","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"PH Wert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1020,"y":220,"wires":[[]]},{"id":"34cf62b3.c5426e","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Redox Wert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1030,"y":280,"wires":[[]]},{"id":"874f459c.99a1e8","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Temperatur","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${temp}","change":true,"cache":true,"x":1030,"y":340,"wires":[[]]},{"id":"85315900.5704f8","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Chlor Sollwert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${clsoll}","change":true,"cache":true,"x":1040,"y":400,"wires":[[]]},{"id":"dd5e0bbe.62d178","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"PH Sollwert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${phsoll}","change":true,"cache":true,"x":1030,"y":460,"wires":[[]]},{"id":"1b88a288.b432dd","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Chlor Dosierleistung","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${cl-dosierleistung}","change":true,"cache":true,"x":1060,"y":520,"wires":[[]]},{"id":"471e0104.4a78a","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"PH Dosierleistung","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${dos2}","change":true,"cache":true,"x":1050,"y":580,"wires":[[]]},{"id":"30b92cd9.2e88d4","type":"ccu-sysvar","z":"e4f0ea06.4e5b38","name":"Chlor Wert","ccuConfig":"f91a7c3b4fc2798e","topic":"ReGaHSS/${chlor}","change":true,"cache":true,"x":1030,"y":160,"wires":[[]]},{"id":"bd5d3b4f18fcd96e","type":"debug","z":"e4f0ea06.4e5b38","name":"debug 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":680,"y":220,"wires":[]},{"id":"9f007d158f98dfac","type":"debug","z":"e4f0ea06.4e5b38","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1180,"y":180,"wires":[]},{"id":"3b446b30.590ab4","type":"modbus-client","name":"Depolox Pool E 700P","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.178.250","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true},{"id":"f91a7c3b4fc2798e","type":"ccu-connection","name":"192.168.178.245","host":"192.168.178.245","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":true,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"Chlor Wert","rpcServerHost":"192.168.178.69","rpcBinPort":"0","rpcXmlPort":"0","tls":false,"inSecure":false,"authentication":false,"username":"","password":"","queueTimeout":"5000","queuePause":"250","contextStore":""}]

When you see the output in your debug window under this tab:
image
Make sure to expand the object coming from your MODBUS node with the topic chlor. That way you can see all the details of the object so we can compare the MODBUS output to the function output.

It indicates there quite a lot of this.

25.11.2022, 14:18:27[node: HmIP CCU3]msg : string[58]

" < BidCos-Wired init Error: Unknown XML-RPC tag 'TITLE'"

Ok the error is gone.
Now only that is displayed.

25.11.2022, 21:28:28[node: HmIP CCU3]msg : string[18]

"metadata new empty"

Do you have a screenshot of the outputs?

Ok. None of those in your screenshot are from "node: Debug". They all seem to be from "node: HmIP CCU3". I'm guessing those are the nodes you have on the right side of your flow. If you put your mouse over one of the messages or errors, it will highlight the node that caused that specific message or error in your flow (orange dashed outline around the node). It looks like there are some configuration problems with some of your nodes that need to be worked out.

Have you looked at this page for information on that node set before? If not, you may want to read through it to make sure you're not missing something it's talking about.

ok the error is gone.
Now only that is displayed.

I'm reading through this page

Yes. Check all your nodes to make sure they're configured correctly. When everything is configured correctly, you should be getting output in your debug window from "node: Debug" telling you something created output and the debug node caught it. You shouldn't see anything else yellow or red in the window if it's all configured correctly.

When you start getting debug output, capture it so we can compare what the MODBUS node is sending compared to what the function is sending.

You can also clear your debug window by clicking the trashcan at the top of the window.
image

I'll test it tomorrow and report back.

This is a great way to go if you want inconsistent data.

Since the op is requesting registers between 100 and 176, The better solution would be to have one single poll of 78 items from address 100 and then grab & convert the values from the returned buffer in one go. That's 1 single poll & guaranteed data consistency.

The flow would simply become...

Inject > read fc3 from address 100 x78 > buffer-parser

That's it. All values would be extracted and parsed and named in the object.

If I get a chance tomorrow I'll provide a demo.

Alternatively, see this previous thread: Need some help with float numbers - #2 by Steve-Mcl

Yes, but we've already discussed previously in the timeline that there are limits as to what can be done on this particular system. A very similar proposal has already been made, but it can't be implemented due to the limitations imposed by the Redmatic setup. We're running on old nodes that for one reason or another, can't be updated. But it has already been discussed that there is a way to do a four node solution similar to what you're explaining (see post 6 and 24). The other part is:

The flow setup already works and is getting data on a regular Pi. It's not a bad flow, it's just not transferring to the Redmatic setup. Again, limitations imposed by the Redmatic environment. That's what we're trying to work through now. For some reason, the Redmatic setup looks to be breaking the CCU nodes, though I can't see why yet. If you have Redmatic or CCU knowledge, that would probably break this case wide open.

I could agree with that if you needed an exact snapshot of the setup at a particular point in time with all values frozen. But better is relative. This method on this setup also means skipping over many registers worth of unwanted data (registers aren't consecutive) to get the data you do want. Possible, yes, but it can be tedious coding since each would have to be individually referenced and labeled. And yes, I get that's a step that has to happen anyways regardless because data has to be labeled in the end.

In this case though with how the CCU node only seems to be able to take one variable at a time, sending a block of objects through a function might be more hassle than the good it causes. Or said differently, since the CCU only takes one variable at a time, processing one at a time is much easier to implement which means breaking it up at the MODBUS node keeps things simple. The only problem is we don't have access to a node like the sequencer to make that as simple as possible. (sigh)

In any case, none of that matters right now because we can't even get the flow to function due to errors and warnings. Once those are cleared up, we can optimize as much as possible and really make it work nicely.

But you are correct, this is not the ideal. I don't know how to remove the limits and make it that way which means I can only wish it could be.

While potentially moot, I can say, from experience, that polling 78 items (156 bytes + some modbus packaging) in one go Vs 8 polls for 2 words (4 bytes + modbus packaging) is far more efficient. The only caveat being the device has gaps in the registers that throw an error.

Yes. Six one way, half a dozen the other. Or at least in this case pointless since we can't figure out why the flow is broken on the Redmatic setup... So frustrating when limits are imposed and documentation is limited. I'm hoping we figure out the CCU issues soon so we can get passed this point and move on.

1 Like