smithtek-mako-rf 3.4.1 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.txt ADDED
@@ -0,0 +1,80 @@
1
+ SMITHTEK SOFTWARE LICENCE
2
+ Version 1.0 - 8 October 2026
3
+
4
+ Copyright (c) Smithtek Pty Ltd. All rights reserved in Smithtek-owned material.
5
+
6
+ 1. Scope and ownership
7
+
8
+ This licence applies to original software and documentation owned by Smithtek
9
+ Pty Ltd and supplied with this licence, including V-NET2 and Smithtek's Mako RF
10
+ and PassPort Connect Node-RED nodes. The software is licensed, not sold.
11
+ Smithtek retains ownership of its software, documentation and branding.
12
+
13
+ This licence does not apply to third-party code, libraries, drivers, tools,
14
+ artwork or other material carrying separate terms. Those terms continue to
15
+ apply to those components and take precedence for them. See the accompanying
16
+ LICENSING.md and third-party notices for the component register.
17
+
18
+ 2. Permitted use
19
+
20
+ Smithtek permits you to install and run lawfully obtained copies to configure,
21
+ program, operate, monitor and integrate Smithtek equipment. This includes use
22
+ in commercial installations and installation by an integrator for a customer
23
+ using Smithtek equipment. You may make copies reasonably needed for those
24
+ installations and backups, retaining this licence and applicable notices.
25
+
26
+ You may create, edit and share your own V-NET2 projects, Node-RED flows,
27
+ configuration and application data. Smithtek does not claim ownership of
28
+ original material you create. Third-party code included in a project or
29
+ generated firmware retains its applicable licence. Smithtek runtime code
30
+ included in generated firmware may be deployed with that firmware for use
31
+ with Smithtek equipment under these terms.
32
+
33
+ 3. Reserved rights
34
+
35
+ Except for the permissions above, separate written permission from Smithtek,
36
+ applicable third-party terms, or rights that the law does not allow us to
37
+ restrict, you may not redistribute, sublicense, sell as a standalone product,
38
+ rebrand, modify, or incorporate Smithtek-owned software into another software
39
+ product. Access to readable source does not grant additional rights to it.
40
+
41
+ You may not remove Smithtek's ownership notices or use its names or logos to
42
+ claim ownership, endorsement or an official relationship without permission.
43
+ No ownership or trade mark rights are transferred by this licence.
44
+
45
+ Reverse engineering, decompilation and disassembly of Smithtek-owned software
46
+ are restricted only to the extent permitted by applicable law. Nothing here
47
+ restricts rights to inspect, modify, replace, relink, redistribute or debug
48
+ third-party components that their licences or applicable law provide. This
49
+ includes reverse engineering needed to debug modifications where an
50
+ applicable LGPL licence requires that right.
51
+
52
+ Smithtek and its authorised distributors may supply the official software
53
+ through authorised download services and package registries. Receipt through
54
+ a public registry does not, by itself, make Smithtek-owned code open source.
55
+
56
+ 4. Third-party rights and earlier releases
57
+
58
+ Open-source and other third-party components remain the property of their
59
+ respective copyright holders. Retain their copyright notices, licence texts
60
+ and any required source or other materials when distributing them.
61
+
62
+ This licence does not withdraw permissions granted for copies supplied under
63
+ an earlier licence, including earlier GPL releases. It applies to copies
64
+ supplied under this licence. A separate signed agreement with Smithtek
65
+ governing your use takes precedence to the extent of a conflict, subject to
66
+ applicable third-party rights and law.
67
+
68
+ 5. Warranty and legal rights
69
+
70
+ To the extent permitted by law and except as separately agreed in writing,
71
+ the software is provided as supplied, without additional express or implied
72
+ warranties. Nothing in this licence excludes or limits rights, guarantees or
73
+ remedies that cannot lawfully be excluded or limited, including under the
74
+ Australian Consumer Law. No waiver of those rights is required to use it.
75
+
76
+ 6. Contact
77
+
78
+ Smithtek Pty Ltd, Western Australia
79
+ https://www.smithtek.com.au
80
+ info@smithtek.com.au
package/LICENSING.md ADDED
@@ -0,0 +1,90 @@
1
+ # Smithtek software and component licences
2
+
3
+ Maintained by Smithtek Pty Ltd. Updated 8 October 2026.
4
+
5
+ This is the master licensing register for V-NET2, the Smithtek Mako RF / PassPort Connect Node-RED package and the tools and firmware libraries supplied with them. Original Smithtek software uses the **Smithtek Software Licence** in `LICENSE.txt`. Each third-party component keeps its own licence. Component-specific terms take precedence for that component; inclusion in a Smithtek product does not transfer its ownership to Smithtek.
6
+
7
+ ## Smithtek-owned components
8
+
9
+ | Component | Licence and scope |
10
+ | --- | --- |
11
+ | V-NET2 editor, desktop integration and original manuals | Smithtek Software Licence, excluding separately identified third-party material. This source update is after the 2.7.11 EXE; the existing EXE has not been rebuilt by this licensing change. |
12
+ | Smithtek Mako RF Node-RED node | Smithtek Software Licence from package 3.5.0. Smithtek confirms the former external-author wording was stale and that the external code had already been removed. |
13
+ | PassPort Connect Node-RED node and original supporting code | Smithtek Software Licence from package 3.5.0, including the channel-mapping helper shared with the V-NET2 exporter. Third-party serial/Modbus dependencies are listed separately below. |
14
+ | Original Smithtek firmware generation, PLC integration and BACnet adapter | Smithtek Software Licence for Smithtek's own implementation. Included Arduino, ESP-IDF, BACnet, radio and other upstream code retains its own terms. |
15
+ | Future independent Smithtek radio driver | Intended to use the Smithtek Software Licence after implementation and verification. The existing Mitov driver is still present under its existing terms. Replacement is planned for the week beginning 12 October 2026. |
16
+ | User-created programs, Node-RED flows and data | The Smithtek licence does not claim ownership of the user's original work. Embedded Smithtek runtime code and third-party components retain their applicable terms. |
17
+
18
+ Smithtek's proprietary terms apply to newly supplied copies carrying those terms. Earlier copies supplied under another licence keep the permissions granted with those copies. The licensing change does not retrospectively cancel earlier GPL grants.
19
+
20
+ ## Node-RED dependencies
21
+
22
+ | Component | Version inspected | Licence | Notice/source location |
23
+ | --- | --- | --- | --- |
24
+ | modbus-serial | 8.0.23-no-serial-port | ISC | Its `LICENSE` and `package.json`; copyright Yaacov Zamir. |
25
+ | serialport | 10.4.0 | MIT | Its `LICENSE` and `package.json`; copyright Christopher Williams and relevant contributors. |
26
+ | Transitive dependencies | See dependency inventory | MIT for the inspected installed dependency graph | Individual packages and the packaged `THIRD-PARTY-NOTICES.md`. The inventory includes bindings, parsers, debug, ms, node-addon-api and node-gyp-build. |
27
+ | Node-RED application | Installed separately on PassPort | Apache-2.0; included third-party components have their own terms | The Node-RED application is not owned by Smithtek and is not included in the Smithtek node tarball. See Node-RED's own licence and notices. |
28
+
29
+ The official package name remains `smithtek-mako-rf`. Both original Mako RF and PPC nodes are included. Installing them does not change Node-RED's licence.
30
+
31
+ ## Desktop/editor dependencies
32
+
33
+ | Component | Version inspected | Licence | Scope/evidence |
34
+ | --- | --- | --- | --- |
35
+ | React / React DOM | 19.3.0 | MIT | Respective package manifests and licence files. |
36
+ | React Flow (`@xyflow/react`) | 12.11.6 | MIT | Includes `@xyflow/system`; see dependency inventory. |
37
+ | SerialPort desktop | 13.0.0 | MIT | Desktop serial communication; separate dependency resolution from the Node-RED package. |
38
+ | Other editor/desktop JavaScript dependencies | See inventory | MIT, ISC and BSD-3-Clause in the inspected graphs | Preserve each package's own copyright and licence. Development type packages appearing in the dependency graph are not necessarily shipped in the browser bundle. |
39
+ | Electron | 44.3.0 | MIT for Electron; separate embedded component terms | Supplied Electron licence and Chromium licence collection. Electron includes Node.js, Chromium and additional native components; its MIT label does not replace their terms. |
40
+ | Chromium / embedded native dependencies | As supplied in Electron 44.3.0 | Per-component terms | Preserve `LICENSES.chromium.html`, Electron notices and any additional required runtime notices/source materials. |
41
+ | WCH CH340/CH341 USB driver | 3.4.2014.08 | Vendor terms; not asserted to be open source | Unmodified user-supplied driver payload. Redistribution terms still need documentary verification. A valid signature does not itself grant redistribution rights. |
42
+
43
+ ## PLC libraries and compiler tools
44
+
45
+ These are separate components. Smithtek's licence does not relicense them, their source or their contribution to generated firmware.
46
+
47
+ | Component | Version inspected | Applicable terms and evidence |
48
+ | --- | --- | --- |
49
+ | Mitov support headers | Library metadata 8.0.0-156 | Original Mitov notices and applicable commercial agreement. The installed headers remain covered by those terms while in use. |
50
+ | V-Net radio header | Library metadata 8.0.0-84 | Original Mitov/author notices and applicable agreement. Independently replacing the implementation is required before treating the replacement as wholly Smithtek code. |
51
+ | EspSoftwareSerial | 6.16.1 | LGPL 2.1 text supplied in `runtime/libraries/EspSoftwareSerial/LICENSE`; check per-file grants and source/relinking requirements. |
52
+ | Arduino AVR core | 1.8.6 | LGPL-2.1-or-later on the inspected core header; bundled libraries and other files may have separate terms. |
53
+ | Arduino ESP32 core | 2.0.11 | LGPL-2.1-or-later on the inspected core header; other files include Apache-2.0 and additional licences. |
54
+ | ESP-IDF SDK included with ESP32 | 4.4.5 | Apache-2.0 on inspected Espressif headers; bundled components have separate terms. Complete embedded component review remains required. |
55
+ | BACnet Stack in SmithtekBACnet | Adapter 0.1.0; upstream archive recorded in `UPSTREAM.md` | Per-file MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0, CC-PDDC, GPL-2.0-or-later and GPL-2.0-or-later WITH GCC-exception-2.0 declarations. Apply the linking exception only to files that grant it. Supplied licence texts remain in the library's `license` directory. |
56
+ | Arduino CLI, shipped as compiler-cli.exe | 0.34.1 | Upstream GPLv3 licence; compiler/discovery tools retain their own licences. Renaming the executable does not change its licence. |
57
+ | Arduino serial-monitor / serial-discovery | 0.13.0 / 1.4.0 | GPLv3 licence text supplied with each tool; verify precise upstream grants and corresponding source for the shipped binaries. |
58
+ | Arduino mdns-discovery / dfu-discovery | 1.0.9 / 0.1.2 | GPLv3 licence text supplied with each tool; same source-verification requirement. |
59
+ | Xtensa GCC toolchain | GCC 8.4.0, esp-2021r2-patch5 | GNU/toolchain component licences. Runtime-library exceptions, where applicable, do not replace the compiler's own distribution requirements. |
60
+ | AVR GCC toolchain | GCC 7.3.0 | GNU/toolchain component licences, with applicable runtime exceptions. Includes additional binutils/runtime components requiring their own notices and source checks. |
61
+ | newlib in Xtensa toolchain | 3.3.0 | Multiple upstream notices/licences; do not assign a single Smithtek or GPL licence to the entire C library. Full corresponding notice set requires verification. |
62
+ | avr-libc | 2.0.0 | BSD-style notice in inspected header; retain the individual upstream notices and verify the complete distribution. |
63
+ | Other bundled compiler/upload utilities and SDK subcomponents | Per supplied runtime | Retain their own terms. Inventory and corresponding-source verification is still in progress; this register is not a claim that every native subcomponent has been cleared. |
64
+
65
+ ## Supporting records
66
+
67
+ - `docs/licensing/javascript-components.md`: installed JavaScript dependencies and declared licences, one entry per resolved component location.
68
+ - `docs/licensing/component-inventory.json`: exact inspected manifests, notice locations, SHA-256 hashes and BACnet per-file SPDX records.
69
+ - `THIRD-PARTY-NOTICES.md` in the Node-RED package: dependency licence texts preserved verbatim from the inspected installed packages.
70
+ - `firmware/rf-runtime-files.json`: hashes and exact allowlist of the retained Mitov radio dependency files.
71
+ - `firmware/libraries/SmithtekBACnet/UPSTREAM.md`: upstream source/archive record and Smithtek modification note.
72
+ - `docs/licensing-audit-2026-10-08.md`: original findings and subsequent ownership clarification.
73
+
74
+ The machine inventory covers installed JavaScript dependency graphs and selected native evidence. It is not a complete binary composition or source-compliance certification. Regenerate it when dependencies change; check the exact shipped files, not just package names.
75
+
76
+ ## Release maintenance
77
+
78
+ Keep the master document, package licence declaration, included licence texts and customer-facing notices consistent. New independent Smithtek code uses Smithtek terms. Imported open-source code keeps its licence and attribution, including when changed or embedded. Do not remove upstream notices during cleanup, renaming or compilation.
79
+
80
+ Before the next desktop distribution, complete the outstanding native/compiler source and notice checks, vendor redistribution checks, and legal review of the Smithtek licence. The Node-RED package change does not certify those separate desktop components. No activation keys or online licence checks are introduced by these documents.
81
+
82
+ ## Reference sources
83
+
84
+ - GNU licensing FAQ: https://www.gnu.org/licenses/gpl-faq.en.html
85
+ - Node-RED: https://nodered.org/about/
86
+ - Arduino CLI 0.34.1 licence: https://github.com/arduino/arduino-cli/blob/0.34.1/LICENSE.txt
87
+ - BACnet Stack licence overview: https://github.com/bacnet-stack/bacnet-stack/blob/master/license/readme.txt
88
+ - Australian consumer contract rights: https://www.accc.gov.au/consumers/buying-products-and-services/contracts
89
+
90
+ The component's actual licence text governs; this register summarises and locates it. Contact Smithtek Pty Ltd at info@smithtek.com.au for Smithtek licensing enquiries.
package/MAKO-RF.md CHANGED
@@ -266,6 +266,22 @@ The write response is the actual Modbus confirmation returned by the remote devi
266
266
  - Timeout handled in seconds
267
267
  - Configurable retry attempts
268
268
  - Optional inter-request gap
269
+
270
+ ### Automatic queue recovery (from 3.5.1)
271
+
272
+ Open the Mako RF node and click the pencil beside **Bus**. **Max queue** is the number of messages allowed to wait before that connection restarts. The active message is not counted. With Max queue set to 10, the tenth waiting message starts recovery, even if it is a write.
273
+
274
+ Recovery cancels the active message and **all** waiting messages, including the one that reached the limit. Each cancellation reports `EBUSRESET` once: output 1 carries the usual named alarm, output 2 carries the technical error, and Catch receives the error. Messages arriving during recovery are rejected with `EBUSRECOVERING`; they are not saved for later.
275
+
276
+ **Cancelled writes are never replayed.** A write already sent to the PLC may have taken effect. Closing the connection cannot undo it. Check the equipment and read the value back before deciding whether to send it again. `msg.modbus.writeMayHaveApplied` and the technical error's `payload.writeMayHaveApplied` flag a write that may already have been sent.
277
+
278
+ The connection closes, opens fresh, waits for late replies to stop and clears old data. New messages can then take turns in arrival order. Other connections keep working. This restarts only the affected connection inside the nodes, not Node-RED, PassPort, system drivers or the PLC.
279
+
280
+ If closure cannot be confirmed, recovery stops with `EBUSRECOVERYFAILED` and keeps the port blocked. It never opens a second connection while the old one might still be open. Check the reported fault and the connection before redeploying; a still-held port remains blocked. A failed replacement connection also stops recovery and reports the failure.
281
+
282
+ There is **no five-minute recovery timer**. Recovery starts only when Max queue is reached. Existing response timeouts and configured retries still apply to normal requests. If recovery happens often, slow down Inject repeats and remove duplicate timers. Recovery clears a backlog; it cannot repair missing power, wiring or a missing PLC.
283
+
284
+ When original Mako RF and PassPort Connect nodes share a port, select the same Bus/Connection in all of them. Each PPC input message counts once, and its whole table finishes before the next message starts. PPC also retains its separate limit of 16 unfinished messages per node, including its active message. Extra messages report `EQUEUEFULL` through Catch without restarting the bus; this can happen before a larger Max queue is reached. With one busy PPC node, Max queue 10 allows bus recovery before that separate limit.
269
285
 
270
286
  Designed for stable Modbus RTU polling over RS485 or long-range RF links.
271
287
 
@@ -555,7 +571,9 @@ In RF systems, range and stability always win over speed.
555
571
  | Red status: timeout | RF link marginal | Increase spreading factor or improve antenna alignment |
556
572
  | Red status: timeout | Inject interval shorter than cycle time | Ensure inject interval is longer than full device cycle |
557
573
  | Red status: timeout after working normally | Bus overloaded | Reduce number of devices per cycle or increase interval |
558
- | Only first and last device polling | Queue dropping logic enabled | Disable aggressive queue dropping or increase maxQueue |
574
+ | EBUSRESET | The waiting list reached Max queue | All queued work and the active message were cancelled. Slow down Inject repeats; check any write before sending it again. |
575
+ | EBUSRECOVERING | The connection is restarting | This new message was rejected. Wait until recovery finishes before sending new work. |
576
+ | EBUSRECOVERYFAILED | Closing or reopening the connection failed | Check the reported fault and connection before redeploying. A port that may still be open remains blocked. |
559
577
  | Devices poll intermittently | Retries too high | Reduce retries to prevent blocking the queue |
560
578
  | Devices stop polling after deploy | Serial port locked | Restart Node-RED or power cycle PassPort |
561
579
  | Data values incorrect | Register order mismatch | Ensure V-NET Modbus table matches Node-RED decoder map exactly |
@@ -591,17 +609,9 @@ Slow and stable always beats fast and failing.
591
609
 
592
610
  ---
593
611
  # License
594
- Copyright (c) 2023 www.smithtek.com.au Licenced under the terms of the GPLv3
595
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
596
- AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
597
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
598
- ARE DISCLAIMED. IN NO EVENT SHALL DAMIEN CLARK BE LIABLE FOR ANY DIRECT,
599
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
600
- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
601
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
602
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
603
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
604
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
612
+ Copyright (c) Smithtek Pty Ltd. All rights reserved in Smithtek-owned material.
613
+
614
+ From version 3.5.0, the original Mako RF and PassPort Connect nodes are supplied under the [Smithtek Software Licence](LICENSE.txt). See the [master component licensing document](LICENSING.md) and [third-party notices](THIRD-PARTY-NOTICES.md) for separately licensed dependencies. Earlier distributed copies retain their applicable licences.
605
615
 
606
616
  www.smithtek.com.au
607
617
 
@@ -50,7 +50,7 @@ Keep the selected connection for PassPort messages. Do not also send ordinary Mo
50
50
  | 32-bit unsigned | Whole numbers from 0 to 4294967295. |
51
51
  | Digital | On or off: true or false. Use this for switches and simple controls. |
52
52
 
53
- An Analog row holds a number. A Digital row holds on or off. Mako supports up to 64 rows; Solaris supports up to 16, with space also needed for the rest of your program.
53
+ An Analog row holds a number. A Digital row holds on or off. Mako supports up to 128 rows (use the updated PassPort Connect Node-RED package for tables over 64 rows); Solaris supports up to 16, with space also needed for the rest of your program.
54
54
 
55
55
  Use a different name for each row, up to 40 characters. Capital letters matter: Pump and pump are different names. The editor will tell you if a name cannot be used.
56
56
 
@@ -144,7 +144,19 @@ Timeout is how long PassPort waits for an answer. Read retries is how many extra
144
144
 
145
145
  A queue is a waiting list of messages. If you ask for readings too quickly, the list grows and replies get late. Slow down the Inject repeat rate and remove duplicate triggers if this happens.
146
146
 
147
- Each Read or Write node can have up to 16 waiting messages. The shared connection also has a limit. Use a Catch node to show queue-full errors, as well as Debug on the second output for other problems.
147
+ Automatic queue recovery is available in the Smithtek node package from version 3.5.1. Open a Read or Write node, then click the pencil beside Connection. Max queue sets how many messages may wait before that connection restarts. The message already being processed does not count. For example, with Max queue set to 10, the tenth waiting message starts recovery.
148
+
149
+ Recovery cancels the active message and every waiting message, including the one that reached the limit. Each cancelled message reports EBUSRESET once through the second output and Catch. Messages arriving during recovery are rejected with EBUSRECOVERING; they are not saved for later.
150
+
151
+ Cancelled writes are never replayed. A write already sent to the PLC may have taken effect, even if its reply was lost. Recovery does not undo it. Check the equipment and read the value back before deciding whether to send that command again. The error output includes writeMayHaveApplied to flag a command that may already have been sent.
152
+
153
+ The connection closes, opens fresh, waits for late replies to stop, then clears old data. New messages can take turns again when recovery finishes. Other connections keep working. This restarts only that connection inside the nodes; it does not restart Node-RED, PassPort or the PLC, and it does not reset system drivers.
154
+
155
+ If the old connection cannot be confirmed closed, recovery stops and reports EBUSRECOVERYFAILED. It will not open a second connection to the same port. Check the reported fault and the connection before redeploying. If the old port is still held open, a redeploy will remain blocked rather than risk two users of that port.
156
+
157
+ There is no five-minute recovery timer. Recovery starts only when Max queue is reached; normal response timeouts and read retries still apply. Slow down repeated Inject messages if recovery happens often. Recovery clears a backlog but does not fix a missing PLC or an overloaded connection.
158
+
159
+ Each PassPort Connect input message counts once in the shared waiting list, even when its table needs several requests. Its whole table finishes before the next message starts. Each Read or Write node also keeps its existing limit of 16 unfinished messages, including its active message. Any extra message reports EQUEUEFULL through Catch. This separate limit can be reached before Max queue; it does not restart the connection. For one busy PPC node, a Max queue of 10 lets bus recovery happen before that separate limit. Keep Debug on the second output and a Catch node connected while testing.
148
160
 
149
161
  Start with one PLC and manual reads. Add regular reads and other PLCs gradually, checking how long replies take. Signal conditions and the amount of information affect the speed.
150
162
 
@@ -205,3 +217,13 @@ Check the relay itself or a feedback sensor, as well as the reply. For an Analog
205
217
 
206
218
  For a ready-wired farm project, open Farmers quick templates. Choose the picture, enter a unique Unit ID and the required sensor settings, then choose Load & export Node-RED. The project uses PassPort Connect, includes battery voltage and exports the complete Read and Write pair onto your current flow.
207
219
 
220
+ ## Remember table values on Mako
221
+
222
+ Mako only: select the logic block, then open its table from the left-hand Properties panel. Tick Save on restart beside each row you want to remember and click Apply table. New rows start unticked. Only ticked rows restore their last saved numbers or ON/OFF commands; unticked rows start from their Initial value.
223
+
224
+ Live values update immediately. Save interval (minutes) starts at 5, which is the minimum. Enter 60 for one hour, 360 for six hours, or any whole number up to 1440 (24 hours). Changed values save at those checks, starting one full interval after startup. New messages, EEPROM writes, Clear EEPROM, reset and sleep commands do not force an early table save. The PLC EEPROM interval still controls the other saved features; each table has its own interval.
225
+
226
+ Power loss or a restart before the next save loses changes since the last successful save. A connected input takes over when its source publishes a value; leave remote-command rows unwired on the left. Restored measurements are old readings until refreshed. Pulse on write rows are excluded and need a new command. Uploading a new Mako program clears saved values.
227
+
228
+ PLC EEPROM Save pending and Save error include remembered tables. Clear EEPROM and Read saved still work on the separate EEPROM values bank, not on these tables. To see a table value, use its output pin or read it from PassPort. Changing which rows are saved changes the saved record. A record that no longer matches uses Initial values. Older programs with whole-table saving enabled open with their ordinary rows already ticked; you can untick any you do not need.
229
+
package/README.md CHANGED
@@ -5,7 +5,7 @@ Node-RED nodes for communicating with Smithtek Mako and Solaris PLCs from a Pass
5
5
  ## Included nodes
6
6
 
7
7
  - **PassPort Connect (PPC)** is Smithtek’s proprietary communication link between PassPort, Mako and Solaris. It reads measurements and writes controls using the matching table created in V-NET2. Supports RF and RS485, plus USB for Mako.
8
- - **Original Mako RF** provides basic Modbus communication and remains available for existing flows. Its settings and message formats are described in the [original Mako RF guide](https://github.com/smithtekIOT/makorf/blob/main/MAKO-RF.md). Use that guide when working with the original node.
8
+ - **Original Mako RF** provides basic Modbus communication and remains available for existing flows. Its settings and message formats are described in the [original Mako RF guide](MAKO-RF.md). Use that guide when working with the original node.
9
9
 
10
10
  ## Install
11
11
 
@@ -15,7 +15,7 @@ Before updating an existing installation, export a backup of your flows. After i
15
15
 
16
16
  ## Which guide should I use?
17
17
 
18
- For a new V-NET2 PassPort Connect project, follow the instructions below. A separate copy is available in [PassPort Connect setup and everyday use](https://github.com/smithtekIOT/makorf/blob/main/PASSPORT-CONNECT.md). For an existing original Mako RF flow, use the [original Mako RF instructions](https://github.com/smithtekIOT/makorf/blob/main/MAKO-RF.md). The two nodes use different message formats.
18
+ For a new V-NET2 PassPort Connect project, follow the instructions below. A separate copy is available in [PassPort Connect setup and everyday use](PASSPORT-CONNECT.md). For an existing original Mako RF flow, use the [original Mako RF instructions](MAKO-RF.md). The two nodes use different message formats.
19
19
 
20
20
  ## PassPort Connect · setup and everyday use
21
21
 
@@ -69,7 +69,7 @@ Keep the selected connection for PassPort messages. Do not also send ordinary Mo
69
69
  | 32-bit unsigned | Whole numbers from 0 to 4294967295. |
70
70
  | Digital | On or off: true or false. Use this for switches and simple controls. |
71
71
 
72
- An Analog row holds a number. A Digital row holds on or off. Mako supports up to 64 rows; Solaris supports up to 16, with space also needed for the rest of your program.
72
+ An Analog row holds a number. A Digital row holds on or off. Mako supports up to 128 rows (use the updated PassPort Connect Node-RED package for tables over 64 rows); Solaris supports up to 16, with space also needed for the rest of your program.
73
73
 
74
74
  Use a different name for each row, up to 40 characters. Capital letters matter: Pump and pump are different names. The editor will tell you if a name cannot be used.
75
75
 
@@ -163,7 +163,19 @@ Timeout is how long PassPort waits for an answer. Read retries is how many extra
163
163
 
164
164
  A queue is a waiting list of messages. If you ask for readings too quickly, the list grows and replies get late. Slow down the Inject repeat rate and remove duplicate triggers if this happens.
165
165
 
166
- Each Read or Write node can have up to 16 waiting messages. The shared connection also has a limit. Use a Catch node to show queue-full errors, as well as Debug on the second output for other problems.
166
+ Automatic queue recovery is available in the Smithtek node package from version 3.5.1. Open a Read or Write node, then click the pencil beside Connection. Max queue sets how many messages may wait before that connection restarts. The message already being processed does not count. For example, with Max queue set to 10, the tenth waiting message starts recovery.
167
+
168
+ Recovery cancels the active message and every waiting message, including the one that reached the limit. Each cancelled message reports EBUSRESET once through the second output and Catch. Messages arriving during recovery are rejected with EBUSRECOVERING; they are not saved for later.
169
+
170
+ Cancelled writes are never replayed. A write already sent to the PLC may have taken effect, even if its reply was lost. Recovery does not undo it. Check the equipment and read the value back before deciding whether to send that command again. The error output includes writeMayHaveApplied to flag a command that may already have been sent.
171
+
172
+ The connection closes, opens fresh, waits for late replies to stop, then clears old data. New messages can take turns again when recovery finishes. Other connections keep working. This restarts only that connection inside the nodes; it does not restart Node-RED, PassPort or the PLC, and it does not reset system drivers.
173
+
174
+ If the old connection cannot be confirmed closed, recovery stops and reports EBUSRECOVERYFAILED. It will not open a second connection to the same port. Check the reported fault and the connection before redeploying. If the old port is still held open, a redeploy will remain blocked rather than risk two users of that port.
175
+
176
+ There is no five-minute recovery timer. Recovery starts only when Max queue is reached; normal response timeouts and read retries still apply. Slow down repeated Inject messages if recovery happens often. Recovery clears a backlog but does not fix a missing PLC or an overloaded connection.
177
+
178
+ Each PassPort Connect input message counts once in the shared waiting list, even when its table needs several requests. Its whole table finishes before the next message starts. Each Read or Write node also keeps its existing limit of 16 unfinished messages, including its active message. Any extra message reports EQUEUEFULL through Catch. This separate limit can be reached before Max queue; it does not restart the connection. For one busy PPC node, a Max queue of 10 lets bus recovery happen before that separate limit. Keep Debug on the second output and a Catch node connected while testing.
167
179
 
168
180
  Start with one PLC and manual reads. Add regular reads and other PLCs gradually, checking how long replies take. Signal conditions and the amount of information affect the speed.
169
181
 
@@ -223,3 +235,19 @@ Open Write, choose Single channel and select TestRelay. Do not leave Battery sel
223
235
  Check the relay itself or a feedback sensor, as well as the reply. For an Analog setpoint later, select that row and send a number in the original units.
224
236
 
225
237
  For a ready-wired farm project, open Farmers quick templates. Choose the picture, enter a unique Unit ID and the required sensor settings, then choose Load & export Node-RED. The project uses PassPort Connect, includes battery voltage and exports the complete Read and Write pair onto your current flow.
238
+
239
+ ### Remember table values on Mako
240
+
241
+ Mako only: select the logic block, then open its table from the left-hand Properties panel. Tick Save on restart beside each row you want to remember and click Apply table. New rows start unticked. Only ticked rows restore their last saved numbers or ON/OFF commands; unticked rows start from their Initial value.
242
+
243
+ Live values update immediately. Save interval (minutes) starts at 5, which is the minimum. Enter 60 for one hour, 360 for six hours, or any whole number up to 1440 (24 hours). Changed values save at those checks, starting one full interval after startup. New messages, EEPROM writes, Clear EEPROM, reset and sleep commands do not force an early table save. The PLC EEPROM interval still controls the other saved features; each table has its own interval.
244
+
245
+ Power loss or a restart before the next save loses changes since the last successful save. A connected input takes over when its source publishes a value; leave remote-command rows unwired on the left. Restored measurements are old readings until refreshed. Pulse on write rows are excluded and need a new command. Uploading a new Mako program clears saved values.
246
+
247
+ PLC EEPROM Save pending and Save error include remembered tables. Clear EEPROM and Read saved still work on the separate EEPROM values bank, not on these tables. To see a table value, use its output pin or read it from PassPort. Changing which rows are saved changes the saved record. A record that no longer matches uses Initial values. Older programs with whole-table saving enabled open with their ordinary rows already ticked; you can untick any you do not need.
248
+
249
+
250
+
251
+ ## Licence and ownership
252
+
253
+ Copyright (c) Smithtek Pty Ltd. All rights reserved in Smithtek-owned material. Original Mako RF and PassPort Connect code in package 3.5.0 and later uses the [Smithtek Software Licence](LICENSE.txt). Open-source dependencies retain their own terms: see [Component licences](LICENSING.md) and [Third-party notices](THIRD-PARTY-NOTICES.md). Earlier distributed copies retain their applicable licences.