开云体育

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Panadapter! #node-red-contrib-flexradio


 

Here's a happy new year treat. I was finally able to get a usable looking panadapter (or just the frequency part) up and running today. Using the "stream" node that I have been poking at on and off the past few weeks. The flow needed to create this is pretty simple with only one "function" node that watches incoming messages to see when a panadapter for the current client (need to be a GUI client to create panadapters) is created. Then the function node sets the X & Y size (1024, 512) and sends the stream id to the "flexradio-stream" node to configure it to listen for the stream/panadapter data. Lastly, that data is sent to a UI template node which is using D3js to make a chart.

The below example is at 10fps. I've not tried higher rates yet.?
This is also with NodeRed on a regular desktop computer (Linux) and displaying in a browser on a different desktop computer (macOS).

More details to follow ... next year after I get some documentation written up and clean up my example. Waterfall data to come next!

Stephen, N1SH




 

开云体育

Very nice work!

Happy New Year!

Dave WO2X

Sent from my waxed string and tin cans.?

On Dec 31, 2021, at 5:16 PM, Stephen Houser, N1SH <stephenhouser@...> wrote:

?Here's a happy new year treat. I was finally able to get a usable looking panadapter (or just the frequency part) up and running today. Using the "stream" node that I have been poking at on and off the past few weeks. The flow needed to create this is pretty simple with only one "function" node that watches incoming messages to see when a panadapter for the current client (need to be a GUI client to create panadapters) is created. Then the function node sets the X & Y size (1024, 512) and sends the stream id to the "flexradio-stream" node to configure it to listen for the stream/panadapter data. Lastly, that data is sent to a UI template node which is using D3js to make a chart.

The below example is at 10fps. I've not tried higher rates yet.?
This is also with NodeRed on a regular desktop computer (Linux) and displaying in a browser on a different desktop computer (macOS).

More details to follow ... next year after I get some documentation written up and clean up my example. Waterfall data to come next!

Stephen, N1SH




 

Wow.? Another thing Node Red is able to pull off.??

Kyle
AA0Z


 

WOW, Very impressive.? This can actually be a game changer for all those who wanted a Linux SSDR client.? Can't wait for more.? Thanks so much.


 

For the really brave, this version (v1.1.0-beta.1) is on NPM in "prerelease" state along with an example flow. The example flow requires the dashboard nodes as well. The example is under "Import > Examples".

To install, from a command line or terminal in your NodeRed spot (where the node_modules is located):

? ? `npm install node-red-contrib-flexradio@prerelease`

If you don't know what that does or where to do it, you are probably better off waiting for the general release.

NOTE: I have not updated the documentation and there's a bunch of loose ends. I had to make a few changes to the larger code so there might be subtle differences from the v1.0 version. Also, not sure how well it will handle multiple panadapters yet. This is early days for this feature.

Oh, daxAudio is in there as well. Just no good way to get it to the dashboard.

Stephen, N1SH


 

Meant to include an updated video. Been playing with the "look" of the panadapter with SVG/D3js. I'm better at code than I am visuals :-)


 

开云体育

You all are amazing, great talent .?

On Jan 1, 2022, at 3:44 PM, Stephen Houser, N1SH <stephenhouser@...> wrote:

?Meant to include another "video"

--
Nick
W7NIK?


 

This is amazing! Looking forward to the release.?
Thanks for the work on this.

--
Gary
K6HN


 

Just published v1.1.0-beta.2 which includes

- panadapter data streams
- waterfall data streams
- audio data streams (including opus)
- IQ data streams (turns out they are the same as the audio stream)

Again, available via manual NPM install as `node-red-contrib-flexradio@prerelease`

Stephen, N1SH


 

开云体育

Oohh! Yummy ?

?

Dave wo2x

?

?

From: [email protected] <[email protected]> On Behalf Of Stephen Houser, N1SH
Sent: Sunday, January 2, 2022 4:25 PM
To: [email protected]
Subject: Re: [nodered-hamradio] Panadapter! #node-red-contrib-flexradio

?

Just published v1.1.0-beta.2 which includes

- panadapter data streams
- waterfall data streams
- audio data streams (including opus)
- IQ data streams (turns out they are the same as the audio stream)

Again, available via manual NPM install as `node-red-contrib-flexradio@prerelease`

Stephen, N1SH


 
Edited

Also, not yet published but the next version will also pass extra msg properties from input to output on the -request node.

I saw a comment from Dave over on the flex community which made me realize I was not doing this.

The gist of it is if you have a bunch of inputs to a -request node there was previously no easy way to tell which one a response is tied to. With this new addition, if you set, say `msg.topic` on your input message it will be set on the output/response from the -request node so you can switch on it and know what command it is the response code or results for.



In this example I have two inputs, one with topic='ant' and the other topic='meter'. Using these topics which now also appear on output of the request node, I can switch and do different actions based on the command that was sent.

Can't believe I missed this problem and simple fix earlier.?

Stephen

[edit] pushing the new version 1.1.0-beta.3 now. Give it a few minutes and you will have this feature as well.


 

Stephen

This will be a good addition.

I will use the three messages in the Flex Request Node Output Object, following sending a command, to update the commanded variable's context, if the Flex Radio Server, sends a confirmation. ?To do this, I will use:

- your new msg.topic (name assigned to the command) >> used to filter out the correct message object
- msg.status_code ? >>Flex Radio command receipt confirmation
- msg.request ? >> update the commanded variables context based on the command sent and the command assigned name (msg.topic)

Alan. WA9WUD


 

Stephen

On the subject of the next Flex Request Node.....I have a request:

Attached is a paper by ?John Linfor,d G3WGV, "Flex Application Programing Interface".

Below is an excerpt, that John says it is best to limit the rate of commands to 25ms to 50ms.

Could you build a command rate limiter into your Flex Request Configuration Node?

Alan. "WA9WUD"

===========================

Notes on sending commands to the API

Generally you can send commands to the radio as you please. Each command has a command number and the radio will execute them in the order they were sent, send back a receipt message with the same number and then progress to the next command. It is not necessary to wait for one command to be completed with response before sending the next command.

That said, it is not a good idea to flood the API with commands. A good example is fast VFO tuning using a spinner knob?with fairly small frequency steps. It’s not hard to send hundreds or even?thousands of updates a second and that is a bad idea!

A realistic update rate for the radio is once every 25ms to 50ms. The radio seems comfortable with that. If you go faster than that you will likely start hearing odd audio clicks and other artefacts. The radio takes some time (typically around 50ms) to respond to commands, so nothing is gained by sending updates to the radio more often.


 

开云体育

Keep in mind sending TCP commands to the radio during TX WILL create a “pop” in the audio. This is a known issue and Flex is aware. No known info as to when/if this will get addressed.?

Try to limit commands to the radio, especially during TX.?

Just a friendly reminder.?

Dave wo2x

Sent from my waxed string and tin cans.?

On Jan 2, 2022, at 7:12 PM, Alan Blind, WA9WUD <a.alan.blind@...> wrote:

?Stephen

On the subject of the next Flex Request Node.....I have a request:

Attached is a paper by ?John Linfor,d G3WGV, "Flex Application Programing Interface".

Below is an excerpt, that John says it is best to limit the rate of commands to 25ms to 50ms.

Could you build a command rate limiter into your Flex Request Configuration Node?

Alan. "WA9WUD"

===========================

Notes on sending commands to the API

Generally you can send commands to the radio as you please. Each command has a command number and the radio will execute them in the order they were sent, send back a receipt message with the same number and then progress to the next command. It is not necessary to wait for one command to be completed with response before sending the next command.

That said, it is not a good idea to flood the API with commands. A good example is fast VFO tuning using a spinner knob?with fairly small frequency steps. It’s not hard to send hundreds or even?thousands of updates a second and that is a bad idea!

A realistic update rate for the radio is once every 25ms to 50ms. The radio seems comfortable with that. If you go faster than that you will likely start hearing odd audio clicks and other artefacts. The radio takes some time (typically around 50ms) to respond to commands, so nothing is gained by sending updates to the radio more often.


 

I'm having way too much fun with this. Added some controls to pan around and change the displayed bandwidth.


 

Can you share the latest flow? I have it working but can't control the display.

Can I link the panadapter to an existing client or does it need to be it's own?

If I want to use this new version with an exiting flow do I need to delete the earlier version before installing this version via npm?
--
Gary
K6HN


 

I’ll post that latest flow in the morning.

I think it needs to be a GUI client. I’ve not been able to get a panadapter and waterfall sent to NodeRed without being a GUI client.

You should be able to ‘npm install’ over the old version, but deleting/cleaning up first never hurts.

Stephen


 

What I meant was can the panadapter display data from an existing GUI display (if we had the gui handle from that client) such as the normal Flex windows app running on a PC?

--
Gary
K6HN


 

Gary,

I don’t think the radio allows sending panadapter data to a second location. If someone knows how I’d love to know!

(…other than intercepting the UDP packets on the network, which could work if you were displaying from Radio->PC, but that would be awkward at best.)


 

Got it.?More questions...

Is the GUI client ID you used is a random number or is there a specific format the radio wants?

How do I send the HEX value client Handle if I want to disconnect, such as 0x40000001

'client disconnect 0x40000001' doesn't seem to work.


?
--
Gary
K6HN