I have succeeded in controlling NiryoOne from a remote location. The robot arm is connected to local WiFi (not in host mode) and I have set a rule in the firewall to pass port 9090 to the IP address of the robot. I can connect NirYo One Studio from outside the firewall to the domain IP and control the robot. I would like to be able to control more than one robot at the host domain.
I would not want to hard code additional ports (9091, 9092, etc.). Maybe one robot connected to Wifi could scan for other robots in host mode (returning connection list to NiryoOne Studio). Then route control / status messages to/from the hosting robots through the firewall to NiryoOne Studio? What sort of architecture would you suggest?
If you connect all the robots to the same Wi-Fi network, they will all have a unique IP address, and they will all use the port 9090 (rosbridge package). So, no need to create additional port here.
Also, using one robot to scan other robots might not work as you want. To communicate, 2 robots should be on the same network. You can’t have one robot connected to 2 Wi-Fi network (for ex: the main router, and another Niryo One in hotspot mode), and you can’t either have one robot connected to 1 Wi-FI network (the main router) while being itself a hostpot for another robot.
And then, using one robot to make a bridge between all the robots and the router would require some work with ROS and the rosbridge package. You’d have to find a way to add some prefixes on topics, nodes, etc for all the robots, so the messages don’t get mixed (and bad news: doing that is not really easy with ROS and sometimes quite buggy).
Connecting all robots to the same Wi-Fi network seems the best solution to me.
Though let me know if this really answers your question, I feel that I might have misunderstood something here.