SmartSDR v3.8.23 and the SmartSDR v3.8.23 Release Notes
SmartSDR v2.12.1 and the SmartSDR v2.12.1 Release Notes
Power Genius XL Utility v3.8.9 and the Power Genius XL Release Notes v3.8.9
Tuner Genius XL Utility v1.2.11 and the Tuner Genius XL Release Notes v1.2.11
Antenna Genius Utility v4.1.8
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.
Remote operating and Node Red
Comments
-
Just to share, this is what my Dashboard looks like --- today. Tomorrow it may be different.
I'm just looking at the 'Template' in the Dashboard so I can see what I can do there.1 -
Sending CW and tuning the radio is pretty easy. I need to play with the audio API commands to see if I can get audio to Node-Red. There is a audio node for Node-Red that should work to get audio to the browser.
The guys at Beloud.US have developed a web interface for Flex on their pay for play stations. That will be coming soon !
0 -
This was on Hackables this morning.
You can use it to incorporate weather into your Dashboard. I have yet to try it, but I will. I bet you could use it to auto turn your beam into the wind if needed.
https://www.instructables.com/id/Weather-Alert-Light-System/
Mike0 -
I am now tuning the radio and sending CW with Node-Red. Need to work on the text input box to send one character at a time on the fly but that seems doable. Right now I have it configured to send text after pressing the enter key. I will start working with audio this weekend. I also plan to experiment with speech to text for CW transmision ! This will use the IBM Watson cloud service. Should work but may have issues with latency ?
0 -
The sky is the limit with what you can do with this radio when it comes to software development.
1 -
Got Speech to Morse working tonight via IBM Watson speech to text node on Node-Red ! This is really cool but will have to figure out how to send punctuation and other Morse code prosigns and abbreviations. Good start for now.1
-
I'm going to brag about Joe's video.
Awesome work Joe!!!
https://www.youtube.com/watch?v=ZwYOZOm8Kio&feature=youtu.be
1 -
An update .. this is addictive!
Thanks to Andreas, I was able to get my Steppir added to my control console.
The RPI running Node-Red reads the operating frequency right from the radio and then sends the required tuning commands to the Steppir. The code is not totally done yet, but it does work. The Steppir interface is a PITA and there is no way I would have been able to get it to work, but thanks to Andreas, he had it 98% done.
I do not have a hardware interface in line with the Steppir to prevent any tuning while transmitting, however, I was able to add a GATE, much like a hardware logic GATE to the Steppir Code. By reading the data from the radio, it now knows the radio is in TX and it will block all commands being sent to the Steppir. In the screens shot below, it shows the Steppir at 1840khz. This is the frequency being sent to the Steppir, which, or course it can't handle and it will just ignore. I guess I need to add a High Pass Filter so that it doesn't make it to the controller.
I was also able to add an LED that goes red with the radio is in TX.
This has come a long way from just controlling a few web switches. Next, I am going to give reading the meter off the PGXL and the Radio a shot.
Mike va3mw
2 -
Mike
Looks nice. I too am addicted.
I do not have a Stepir but I see two Node-Red elements you have that have has me stumped and could use your help.
You mentioned a "gate". I have a similar situation with my satellite antenna control. I do not want to switch any antennas if the Tx is on. I have racked my brain to write a boolean logic, including bistables, but have not been able to get a true "gate". Could you share your solution for the gate?
Second, getting the TX/RX status from the Flex. I am using a Flex USB cable to operate a relay to get this status into the Rasberry. Works OK. Do you have a software way of getting the TX/RX status to Node-Red?
Alan
WA9WUD0 -
Alan. I monitor the state messages to determine TX or RX status. Then you can write a function to parse the info into something you want.
I simply parse the message then use a change node to change READY to RECEIVING and then display on my dashboard with a text node.
state=TRANSMITTING
state=READY
0 -
Like Joe said.
This is what the Flow looks like and it sends the TX Status to an MQTT server (not as hard as it sounds). This seemed to be the easier way for me to change the topic to a control topic.
This flow is a work in progress and I use it for a lot of testing.
Here is the code. Give a try and see if it helps you out I think N6NU started this and I expanded on it. You will have to change the IP address for the radio and the MQTT server.
Mike
[{"id":"a5a6f35f.a0a62","type":"tab","label":"FlexRadio","disabled":false,"info":""},{"id":"5332910e.2f411","type":"tcp in","z":"a5a6f35f.a0a62","name":"","server":"client","host":"192.168.110.76","port":"4992","datamode":"stream","datatype":"utf8","newline":"\\n","topic":"","base64":false,"x":203.01953125,"y":158.00390625,"wires":[["32af30a0.da29c","784db465.9bedfc","21676014.64315","4bb65a81.899f44"]]},{"id":"9f0dc4f.232cd38","type":"tcp out","z":"a5a6f35f.a0a62","host":"","port":"","beserver":"reply","base64":false,"end":false,"name":"","x":1003.01953125,"y":198.00390625,"wires":[]},{"id":"167dc49a.68cbab","type":"split","z":"a5a6f35f.a0a62","name":"","splt":" ","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":323.01953125,"y":418.00390625,"wires":[["66b580f3.0a7a4"]]},{"id":"66b580f3.0a7a4","type":"switch","z":"a5a6f35f.a0a62","name":"","property":"payload","propertyType":"msg","rules":[{"t":"regex","v":"^freq=","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":1,"x":463.01953125,"y":418.00390625,"wires":[["8d5baf1.32b805"]]},{"id":"8d5baf1.32b805","type":"function","z":"a5a6f35f.a0a62","name":"ParseFreq","func":"\nmsg.payload= msg.payload.split('=')[1]*100000;\n\nflow.set(\"FlexTXFreq\",msg.payload);\n\n\n\nreturn msg;","outputs":1,"noerr":0,"x":650,"y":420,"wires":[["b4944ad5.44dbd8"]]},{"id":"d63d2770.e41758","type":"mqtt out","z":"a5a6f35f.a0a62","name":"","topic":"FlexStatus","qos":"","retain":"","broker":"201e7171.0af3ee","x":1110,"y":500,"wires":[]},{"id":"b4944ad5.44dbd8","type":"function","z":"a5a6f35f.a0a62","name":"Devide Frequency by 100","func":"var Frequency=msg.payload/100;\n\n\n\nmsg.payload= parseFloat(Frequency).toFixed(2);\nreturn msg;","outputs":1,"noerr":0,"x":890,"y":420,"wires":[["d63d2770.e41758","b2a55269.8a30c","59f3c5b7.c2fbec"]]},{"id":"32af30a0.da29c","type":"trigger","z":"a5a6f35f.a0a62","op1":"C173|sub tx all","op2":"C173|sub tx all","op1type":"str","op2type":"str","duration":"60","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":563.01953125,"y":158.00390625,"wires":[["5039d92.c1ba328","5868bc45.056d54","12af30a0.75d09f","163c43e3.a5302c"]]},{"id":"b2a55269.8a30c","type":"trigger","z":"a5a6f35f.a0a62","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"10","extend":false,"units":"s","reset":"","name":"","x":730,"y":500,"wires":[["d63d2770.e41758"]]},{"id":"5039d92.c1ba328","type":"function","z":"a5a6f35f.a0a62","name":"SUB SLICE ALL","func":"// C172|sub slice all\nmsg.payload = \"C172|sub slice all\\r\"; \nreturn msg;","outputs":1,"noerr":0,"x":793.01953125,"y":178.00390625,"wires":[["9f0dc4f.232cd38"]]},{"id":"5868bc45.056d54","type":"function","z":"a5a6f35f.a0a62","name":"SUB CLIENT ALL","func":"// C172|sub slice all\nmsg.payload = \"C173|sub client all\\r\"; \nreturn msg;","outputs":1,"noerr":0,"x":803.01953125,"y":218.00390625,"wires":[["9f0dc4f.232cd38"]]},{"id":"12af30a0.75d09f","type":"function","z":"a5a6f35f.a0a62","name":"SUB TX ALL","func":"// C172|sub slice all\nmsg.payload = \"C202|sub tx all\\r\"; \nreturn msg;","outputs":1,"noerr":0,"x":783.01953125,"y":138.00390625,"wires":[["9f0dc4f.232cd38"]]},{"id":"784db465.9bedfc","type":"switch","z":"a5a6f35f.a0a62","name":"transmit","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"|transmit","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":173.01953125,"y":418.00390625,"wires":[["167dc49a.68cbab"]]},{"id":"163c43e3.a5302c","type":"function","z":"a5a6f35f.a0a62","name":"SUB RADIO ALL","func":"// C172|sub slice all\nmsg.payload = \"C73|sub radio all\\r\"; \nreturn msg;","outputs":1,"noerr":0,"x":810,"y":260,"wires":[["9f0dc4f.232cd38"]]},{"id":"2cdb975d.660f78","type":"inject","z":"a5a6f35f.a0a62","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":410.51171875,"y":58.94921875,"wires":[["12af30a0.75d09f"]]},{"id":"59f3c5b7.c2fbec","type":"ui_text","z":"a5a6f35f.a0a62","group":"2dbe67ac.f10de8","order":9,"width":0,"height":0,"name":"","label":"6600 Freq","format":"{{msg.payload}}","layout":"row-spread","x":1130,"y":420,"wires":[]},{"id":"21676014.64315","type":"switch","z":"a5a6f35f.a0a62","name":"rfpower","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"|transmit","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":180,"y":560,"wires":[["35cc47b5.351a98"]]},{"id":"35cc47b5.351a98","type":"split","z":"a5a6f35f.a0a62","name":"","splt":" ","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":350,"y":560,"wires":[["e7e8db4.377d128"]]},{"id":"e7e8db4.377d128","type":"switch","z":"a5a6f35f.a0a62","name":"","property":"payload","propertyType":"msg","rules":[{"t":"regex","v":"^rfpower=","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":1,"x":490,"y":560,"wires":[["edb3c81.600ee38"]]},{"id":"edb3c81.600ee38","type":"function","z":"a5a6f35f.a0a62","name":"ParsePWR","func":"\nmsg.payload= msg.payload.split('=')[1];\n\nflow.set(\"FlexTXPWR\",msg.payload);\n\n\n\nreturn msg;","outputs":1,"noerr":0,"x":710,"y":560,"wires":[["6e9b14da.a6563c"]]},{"id":"6e9b14da.a6563c","type":"ui_text","z":"a5a6f35f.a0a62","group":"2dbe67ac.f10de8","order":10,"width":0,"height":0,"name":"","label":"TX Power","format":"{{msg.payload}}","layout":"row-spread","x":1140,"y":560,"wires":[]},{"id":"4d6cb5be.c9a64c","type":"comment","z":"a5a6f35f.a0a62","name":"","info":" state=TRANSMITTING\n state=READY","x":1620,"y":200,"wires":[]},{"id":"4bb65a81.899f44","type":"switch","z":"a5a6f35f.a0a62","name":"TX/RX State","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"state","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":170,"y":660,"wires":[["50ad74fe.67e61c"]]},{"id":"50ad74fe.67e61c","type":"split","z":"a5a6f35f.a0a62","name":"","splt":" ","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":310,"y":660,"wires":[["3b771b3c.5215e4"]]},{"id":"3b771b3c.5215e4","type":"switch","z":"a5a6f35f.a0a62","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"TRANSMITTING","vt":"str"},{"t":"cont","v":"READY","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":430,"y":660,"wires":[["7d3c7d0d.97c674"],["ae295af8.9e4b38"]],"inputLabels":["i/p"],"outputLabels":["PTT Requested","UnKey"]},{"id":"7d3c7d0d.97c674","type":"change","z":"a5a6f35f.a0a62","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"close","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":700,"y":640,"wires":[["74bc71a6.a2d9e"]],"info":"The msg.payload is set to open or closed and\nsent to MQTT so that the Steppir controller\nwill know to open or close the gate.\n\nWhen Closed, the Steppir code will not send commands\nto the controller and hopefully not cause the \nSteppir to actually move while in TX"},{"id":"ae295af8.9e4b38","type":"change","z":"a5a6f35f.a0a62","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":700,"y":680,"wires":[["74bc71a6.a2d9e"]],"info":"The msg.payload is set to open or closed and\nsent to MQTT so that the Steppir controller\nwill know to open or close the gate.\n\nWhen Closed, the Steppir code will not send commands\nto the controller and hopefully not cause the \nSteppir to actually move while in TX"},{"id":"74bc71a6.a2d9e","type":"mqtt out","z":"a5a6f35f.a0a62","name":"To Steppir Control","topic":"control","qos":"","retain":"","broker":"201e7171.0af3ee","x":1010,"y":660,"wires":[],"info":"To Steppir Code"},{"id":"201e7171.0af3ee","type":"mqtt-broker","z":"","name":"","broker":"192.168.110.111","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"2dbe67ac.f10de8","type":"ui_group","z":"","name":"RF Info","tab":"d6ba9a2a.f3f0d8","order":2,"disp":true,"width":"5","collapse":false},{"id":"d6ba9a2a.f3f0d8","type":"ui_tab","z":"","name":"VA3MW Shack Control","icon":"dashboard","order":1,"disabled":false,"hidden":false}]
1 -
Thanks, Mike
I am able to understand everything in the flow except for how the commands to and from the Flex are formated. Still working on that.
I too have started using MQTT via Mosequeto on a Rasberry Pi. It was easy to set up.
Your's and other's sharing are helping me to jump-start my understanding. Thanks.
Alan
WA9WUD0 -
The commands for the radio are located here.
http://wiki.flexradio.com/index.php?title=SmartSDR_TCP/IP_API#SmartSDR_TCP.2FIP_Commands
0 -
BTW Node-Red works with Alexa. Go to Amazon and install Node-Red skill. Once installed you must link it to your device.
Have Fun
de W1GLV
0 -
I've had no luck getting Alexa to work with Node Red. Has anyone been successful ?0
-
I found the Node_Red graphs to use a lot of processing power from the internet browser, including Chrome, Safari and Internet Explorer.
After two weeks of trial and error, I have a working combination of Node-Red - InfluxDB - Grafana. Node-Red creates the data, InfluxDB stores the data and Grafana displays the data. I am not a programmer of any kind and was able to get all of this working.
First, I tried to install each on the Raspberry pi and could not make it work, despite several on-line articles. Many of the configuration files of each needed to be modified to make it all work and were beyond my experience level.
My final solution was to use a program called "Docker" which provided a "container" for each of the individual application's image files. Installation was via simple terminal commands which were all found in on-line articles. Nothing more complex, including no need to modify the apps configuration files.
I now have Docker and each of the above apps installed on my Mac. Docker also works with other operating systems including Windows and most versions of Raspberry pi operating systems. I plan to move everything over to a Rasberry pi using the "Docker" container app.
Access to the apps is via a web browser to the IP address of the host with an appropriate default port number for each application.
For me, I do not see Grafana as a replacement for the Node-Red Dashboard, rather, it is a very good addition for processing and displaying large amounts of data without crippling the web browser’s CPU. The Node-Red Dashboard seems well suited for real-time data and commands. InfluxDB appears to be very efficient and with the Node-Red, an easy way to store large amounts of time-based data.
Here is a screenshot of the Grafana Web Screen. It is very user-configurable:
Here is a screenshot of the Node-Red Flow for pinging the Flex and sending the results to InfluxDB:
Here is the flow. You will need the “influxdb” palette. Credit to Mike for the peaning portion of the flow.
[{"id":"ea598f17.90eb6","type":"ping","z":"2678606a.50a79","name":"Flex 6600","host":"192.168.50.80","timer":"20","x":160.01737213134766,"y":181.01043510437012,"wires":[["5b4776e4.4990b8"]]},{"id":"d088a00d.a16b8","type":"ui_text","z":"2678606a.50a79","group":"4ac6ce36.7ad7b","order":2,"width":0,"height":0,"name":"","label":"Flex 6600","format":"{{msg.payload}}","layout":"row-spread","x":532,"y":169,"wires":[]},{"id":"5b4776e4.4990b8","type":"smooth","z":"2678606a.50a79","name":"","property":"payload","action":"mean","count":"2","round":"1","mult":"single","x":300,"y":180,"wires":[["d088a00d.a16b8","f81556b7.9f8d08","dcd3cda5.c0479"]]},{"id":"f81556b7.9f8d08","type":"ui_chart","z":"2678606a.50a79","name":"Flex 6600","group":"4ac6ce36.7ad7b","order":4,"width":0,"height":0,"label":"Flex 6600","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"0","ymax":"0.5","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"outputs":1,"x":438,"y":253,"wires":[[]]},{"id":"dcd3cda5.c0479","type":"influxdb out","z":"2678606a.50a79","influxdb":"e0477678.147d58","name":"","measurement":"Flex_Ping","precision":"s","retentionPolicy":"","x":690,"y":226,"wires":[]},{"id":"4ac6ce36.7ad7b","type":"ui_group","z":"","name":"Host Info","tab":"60c7eab7.e319e4","order":4,"disp":true,"width":"6","collapse":false},{"id":"e0477678.147d58","type":"influxdb","z":"","hostname":"192.168.50.23","port":"8086","protocol":"http","database":"alan","name":"","usetls":false,"tls":""},{"id":"60c7eab7.e319e4","type":"ui_tab","z":"","name":"Flex 6600","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
Alan
WA9WUD
0 -
Hi Mike:
Awesome your job!
Could you give some more information about the infercafe between RBpi and Steppir?
Could you publish the flow to control the Steppir?
Thank you very much in advance.
Roberto EA2CNU0 -
Hi Alan
That is interesting. I don't see the same impact on the graphs. I run several for temperature yet my CPU load stays about zero-ish.
I wonder what could be different.
Mike
0 -
The Steppir control is complicated and it was written by Andreas, N6NU. I can email it to you if you wish. It does require that you use MQTT.
I need to add some TX inhibit code to the Steppir so that if the Steppir is tuning that turn on TX Inhibit to keep the radio out of TX. This, of course is a problem when using a 6600 when I want Ant 2/ Steppir to tune but still allow me to TX on Ant 1.
Have you started playing with NR yet? If not, get familiar with it first before I share it. If you jump in on the Steppir code you might find it a bit frustrating.
Mike0 -
Mike
I explained the observation and asked for help on the Node-Red forum. Several responses came back saying that the Node-Red Graphs were know to be CPU and memory inefficient. That is where I got the recommendation to look at Grafana.
Alan0 -
Over the weekend, I was able to move Grafana - Display, InfluxDB - Data Storage, Mosequeto - MQTT server, and Node-Red moved to my Rasberry Pi. Each app was an image file built by experts with all of the extra stuff done to make each work.
This was possible by first installing "Docker" which provided "containers" and "volumes" for each app. The app "Portainer" was also loaded to provide a GUI interface.
The entire process took less than 30 minutes after I built a fresh Raspian operating system onto a memory card.
The setup has been running now for two days without any problems. This is made possible by having each app running independently in its own container.
Here is a link to the git-hub providing the scripts and commands:
https://github.com/gcgarner/IOTstack
And here is a link to the you-tube video describing the same:
https://www.youtube.com/watch?v=a6mjt8tWUws
Alan
WA9WUD
0 -
Nice! The video is well done too. I will have to migrate to that for the remote for the point when the SD card crashes.0
-
Hi Mike:
Thank you so much for your answer.
First of all tell you that I am not a programmer. I am "playing" with NR to try to control the Steppir. I am reading the status and showing it. My next challenge is to send towards the Steppir orders.
I do not understand why the MQTT is necessary. Can you explain it to me?
Thank you.
P.D .: Excuse me for my poor English.
0 -
Hi Roberto
I don't think MQTT is really necessary, but by using it allowed for multiple stations to see what the steppir was tuned to. Andreas may be able to explain why he did it that way, but his station is used for Multi-Multi operations.
Mike0 -
Hi Mike:
If it is for multiple stations, I understand that it is necessary. I think it will also be good for changing data with the Flex API.
Thank you very much for the information.
0 -
Roberto
That is the beauty of it. You get to design it any way you wish and you are dependent on another persons preferences.0 -
Mike I have been following your threads on use of Node-red and developed a project that operates the remote On/Off function, Switches my antenna to a dummy load either when a switch on the Web page is clicked or when the weather stream provides a condition of Thunderstorms. I also have a flow that monitor the Raspberry Pi and has Power Down and Reboot switches. A PDF of the project is located at http://ns9rc-wiki.ddns.net/mediawiki/docs/Remote-Processing-Power-and-Antennas.pdf.
We also have a Wiki that documents a project our radio club Northeshore Amateur Radio club has developed for a cadre of Flex Radios http://ns9rc-wiki.ddns.net/mediawiki/index.php/Flex_cadre.
Thanks for your leadership in this endeavor.
Marty Boroff WD9GYM0 -
I have couple questions,
I have windows running on my system , what is the benefit for Rasberry PI ?
If i purchase a RPI install it in the shack i can connect it to the network hub .
For me to control the station, i will need to go thru windows . I do not want another monitor
Basically the RPI is remote computer and i control the station with one system?
Now i have to start PSTrotator, Wave node, software , smartsdr, , N!MM,
this would be one mini computer with everything connected ?
I am deciding if i should try it?0 -
You do not need another monitor. You can run the RPi without a monitor and telnet into it from you windows computer if you need to. That is one of the advantages of the RPi along with the low power consumption, small size, low price and many more. For $40 +/- it should not be a stressful decision if you want to experiment.0
-
Or you can use VNC to get to the desktop of the Pi. One of the advantages of using node-red on the Pi , the UI is browser based and most functions don’t (maybe shouldn’t) require you to constantly look at them..0
Leave a Comment
Categories
- All Categories
- 303 Community Topics
- 2.1K New Ideas
- 563 The Flea Market
- 7.7K Software
- 6.1K SmartSDR for Windows
- 153 SmartSDR for Maestro and M models
- 381 SmartSDR for Mac
- 253 SmartSDR for iOS
- 240 SmartSDR CAT
- 176 DAX
- 363 SmartSDR API
- 8.9K Radios and Accessories
- 7K FLEX-6000 Signature Series
- 84 FLEX-8000 Signature Series
- 879 Maestro
- 47 FlexControl
- 850 FLEX Series (Legacy) Radios
- 828 Genius Products
- 429 Power Genius XL Amplifier
- 291 Tuner Genius XL
- 108 Antenna Genius
- 258 Shack Infrastructure
- 179 Networking
- 423 Remote Operation (SmartLink)
- 132 Contesting
- 672 Peripherals & Station Integration
- 131 Amateur Radio Interests
- 907 Third-Party Software