Releases are posted in the nodered-hamradio Groups.io group.
v1.1.0 - Friday, January 7, 2022
This version is now available on NPM and will be available from the Node-RED Palette Manager shortly.
The big update in this version is the addition of streaming data! Panadapters, waterfalls, audio, and IQ streams are all now included in the new flexradio-stream
node.
-
Added
flexradio-stream
node to handle VITA-49 streaming data for panadapters, waterfalls, audio, and IQ streams. The data are parsed into JSON objects/arrays and injected into the flow. The examples has a Node-RED dashboard "template" example to display the panadapter on a dashboard. The example is "rough" but gets the idea across. There are no examples yet for waterfall, audio, or IQ data. -
Added
client
configuration to theflexradio-message
node so you can filter to receive only messages generated by yourself (self), by the radio (client id of 0), or by any client connected to the radio. The default isAll
to match the previous versions of the node. -
Fixed a bug where meters would become "unknown". The meter handling code was not watching for updates as it should have been.
-
Fixed a problem where VITA-49 trailers were not properly accounted for. Somehow I had the field in the wrong place and was seeing 4 bytes of 0's at the end of stream data. There were no adverse effects on flows as the radio seems to only send trailers on the stream data (panadapter, waterfall, etc.).
-
flexradio-request
now passesmsg
properties from input to output so you can track your requests easier. Example; setmsg.topic
on input and the response fromflexradio-request
will have the samemsg.topic
andmsg._msgid
as on the input.
NOTE: The nodes only decode audio. There is no audio encoding yet.
v1.0.0 - Monday, October 25, 2021
This topic is for the first general release of v1.0 of node-red-contrib-flexradio nodes for controlling FLexRadio 6xxx radios with Node-RED.
Before I go any further, A big THANK YOU to Dave W02X, Alan WA9WUD, Gary K6HN, Warren KD4Z, Mike K5MAP, and all the other members of nodered-hamradio on groups.io that have helped in making these nodes possible. Thier tireless reworking and adapting their existing flows and setup to use these nodes, testing them with their varied equipment, and encouragement have really been instrumental in getting to a usable set of nodes.
If you have not been following along the nodes in this collection are as follows:
* flexradio-request node to send commands to a radio (and get responses)
* flexradio-message node that injects messages and status from a radio into the flow
* flexradio-meter node that injects meter data from a radio (NOT WORKING)
* flexradio-radio configuration node that manages communication with radios
* flexradio-discovery node that injects radio discovery messages into the flow
There are very few changes to the nodes since the most recent pre-release of v0.9.2. Rather than re-tell the story that got us to here, I'll simply refer you to the previous topics on nodered-hamradio on groups.io, the documentation and examples included with the nodes when they are installed.
You can find the latest node-red-contrib-flexradio nodes in NodeRed's Manage Palette > Install panel. This will install the nodes and the examples.
A brief and growing series of videos specific to the installation and use of these nodes is on my YouTube channel. I'm hopeful with this v1.0 release I can begin to add to that collection with more details and some advanced uses.
For the adventurous, all the gory details and source code are on github.com/stephenhouser/node-red-contrib-flexradio. While the groups.io thread is a great place to discuss these nodes and alert me (and all of us) to potential problems, I track the identified issues within GitHub. Note that the GitHub issued also tracks possible feature requests in addition to bugs.
v0.9.0 - Sunday, October 10, 2021
I'm starting this topic for the release of v0.9.0 of node-red-contrib-flexradio.
At the time of this writing the nodes are in 'prerelease' and only available via npm
at the command line. I will update this thread when the general release of v0.9.0 is available via Node-RED's palette manager.
Only two changes in this minor version update:
- Auto discovery and configuration of Radios. There are three options for configuring your radio now
-
Automatic: monitors discovery information sent by the radio and configures itself to connect to the advertised radio. Will continue to work when the radio's IP address changes. NOTE: This mode only works consistently if there is a single radio on the local network.
-
Discovery / Nickname: shows a list of radios that are broadcasting discovery information on the local network and allows choosing from a list. This option remembers the radio's nickname and will connect if the radio's IP address changes. If the radio's nickname changes, you will have to reconfigure the node.
-
Manual: allows entering the radio's IP or DNS address and port number. This is the way all pre-v0.9.0 versions worked.
- Discovery node now reports
inuse_...
andgui_client_...
properties as lists and properly keeps client handles as hex strings.
v0.8.0 - Friday, October 1, 2021
v0.8.0 of node-red-contrib-flexradio nodes are now available via Manage Pallette and NPM.
-
Numbers in delivered messages are now actually numbers and not numbers wrapped in strings. This is from an overhaul (again) of the command stream parser code. Handles for clients, streams, and such are kept as hex strings and not converted to numbers, example: 0x40000001. Where a handle is not prefixed by '0x' in the flex radio responses, one is added to maintain consistency.
-
Found a few more edge cases in the command stream parsing,
meter 24 removed
which were causing errors and in some cases complete crashes of the system. -
Reorder items in node configuration so that the
Name
field is last. This maintains consistency with the built-in Node-RED nodes. This is only a user interface change. -
Clean up the event handlers among the nodes to more gracefully work with re-deploys and not consume extra memory and resources. Refactor many of the listeners in the top-level exposed nodes to be more consistent.
-
Change the default radio hostname from
localhost
toflexradio
as the radio hostname will surely never, ever, belocalhost
. It was misleading. -
Update the
vita49-decode
node which enables access to the VITA-49 datagram parser without creating a UDP listener (e.g. theflexradio-discover
orflexradio-meter
nodes). This is an advanced feature which may be removed in a future version. -
Add
flexradio-decode
node to enable access to the parser without a connection to the radio. Could be used if you want to manage the TCP connection yourself. An advanced feature which may be removed in a future version. -
Rewrite the vita49 parser to use
binary-parser
npm module. This adds a dependency, but it's a small one and will make the parser more flexible in the future. -
Begin to add support for more complex data streams (panadapter, waterfall, etc.). Mostly very low level in the parser. Prototype
flexradio-stream
node. -
Write and rewrite test scripts and workloads for both command stream (TCP) and data stream (UDP) parsers to exercise them and their use.
v0.7.7 - Thursday, September 12, 2021
v0.7.7 of node-red-contrib-flexradio nodes are now available via Manage Pallette and NPM.
There's a number of significant underlying changes in this version. The changes will likely break small portions of existing flows, but not to the extent of previous changes.
-
The parsing of data from the TCP control stream has been completely rewritten to be more efficient, cleaner, and to handle some of the cases the previous parser did not. This goes specifically to the caret (^) delimited lists, e.g.
profile list
. Also it adds full translation to JSON objects where the old one fell apart on some responses from the radio. -
With the new parsing of TCP data the topics are now consistent across status, messages, and responses as well as with topics emitted from the
flexradio-meter
node. -
The topic-matching system for
flexradio-messages
andflexradio-meters
has been rewritten to be consistent across both of these nodes and to allow the choice of filtering topics based on an (1) exact string match, (2) an MQTT-like topic as in previous versions, or (3) a JavaScript regular expression. The regular expression was added to maintain consistency with other standard Node-RED nodes and to avoid confusion about matching MQTT-like topics. -
The icons have changed in a few places. The most notable is the
flexradio-meter
andflexradio-discovery
nodes have new icons. -
The
flexradio-discovery
node was updated to fix how it generates it's payload. -
The top-level nodes not check the radio connection periodically for state change. Previously they had to catch the state change to update. When only portions of a flow were deployed this would sometimes fail.
-
The top-level nodes now properly handle the
node.on('close')
which they did not previously. -
The low-level VITA-49 and UDP decoding have the beginnings of support for audio, IQ, panadapter, and waterfall data. It is far from complete but the structure is now in place to support it in future versions.
-
Some new example flows have been added and can be imported from "Import" / "Examples".
v0.6.0 - Thursday, September 2, 2021
Apologies for starting a new topic so soon after the last v0.5.0 release topic. But I figured I'd create a new topic for each feature release.
I refactored a bit from v0.5.0 and added the ability to subscribe to meters by their topic name. That is you can now sub meter RAD/+/MAINFAN
and have the node find and subscribe to the correct meter number. Note that this works with sub meter TX-/#
to subscribe to all the TX-
meters. At that point, it might just be easier to to a sub meter all
though. I think that's what Dave does in his flows.
I fixed an inconsistency with the flexradio-request
node. If you sent a command that did not generate any response from the radio other than the success_code
it would copy your request into the outgoing payload
. That seemed wrong when other requests generated javascript objects as their result. So, I changed the flexradio-request
node to put the request you sent in into msg.request
on its output. If the request did not generate any response from the radio, then the msg.payload
will be empty. As it should be.
I cleaned up the topic in flexradio-meter
and flexradio-message
so the default (if you leave it empty) will be the same as putting in #
to match everything. Somehow that logic got cross-wired and was different in both of those. It is now the same. Those two nodes share their topic-matching code now.
IMPORTANT: The previous flexradio-status
and flexradio-messages
(plural) nodes have been removed from this release. If you were an early adopter, do not upgrade to this release until you have migrated everything with v0.5.0 to the flexradio-message
(singular) node.
v0.5.0 - Thursday, September 2, 2021
I've pulled the trigger on v0.5.0 and ready for wider-scale testing before calling it v1.0. This should be a relatively stable release that should install from the palette manager of Node-RED shortly (there is a slight delay from when I publish and nodered.org refreshes its copy/link).
Here are the details you should know when installing and using these:
-
The nodes themselves have help information that can be viewed within Node-RED, but there is also a short walk-through and description of the nodes on the GitHub project page -- https://github.com/stephenhouser/node-red-contrib-flexradio. Scroll down past the code to get to "Using these nodes in your flows" section. This text also appears on nodered.org in the description of the node(s).
-
There are some 'deprecated' nodes that were used in earlier versions that you should not use in new flows. They will be removed in the final v1.0 release. These are
flexradio-status
andflexradio-messages
(note the plural). These notes are a light blue color to highlight they are different. They are included in this release only to assist earlier adopters in migrating their flows to the newflexradio-message
(node the singular) node. -
These nodes are not compatible with other nodes in the same system listening on the same UDP ports. This is particularly a problem with the
flexradio-discovery
node which listens on UDP port 4992. -
These nodes may be compatible with other nodes and flows on the same system that communicate with the radio, connecting over TCP port 4992. However this is at your own discretion and peril. There is nothing in the nodes to prevent this multi-connection but they are not designed with that in mind either!
-
You will need to know the IP address or DNS name of your radio. When you first configure, just like MQTT and other server-based nodes, you will need to enter this in the
flexradio-radio
configuration node.
Current issues and some items loosely categorized as bugs can be found on the GitHub page for the project -- https://github.com/stephenhouser/node-red-contrib-flexradio/issues. If you do find a bug, please report it there or here (groups.io) and when verified, I'll post it there as well.