josephdadams / TallyArbiter

The flexible and customizable camera tally light system
http://www.tallyarbiter.com
MIT License
287 stars 101 forks source link

[Feature Request]: Create (Hidden) Access Point for Embedded server. (Like Orange Pi Zero, Pi Zero W) #231

Open mg-1999 opened 3 years ago

mg-1999 commented 3 years ago

What feature would you like to see added to TallyArbiter?

I would like to run the TA server on an embedded system that is just set and forget for the Tally Clients. Any idea on how to start on that? I've looked at creating a AP in the Node.js app, but I dont know how to route the webserver from TA to the AP.

The flow would be something like this: Connect TA via Ethernet where it can find the Tally Source. TA should start up and set up a hidden AP. Tally Clients connect to hidden AP.

That way TA isn't depended on the external AP for TA anymore, and there is a possibility for the Custom TA hardware.

hrueger commented 3 years ago

I don't think that it is possible to create an AP with NodeJS as that is very platform-dependent.

We can, however, create a custom Raspberry Pi Image with a builtin AP. I'd like to work on that.

But I don't have any experience with Orange Pi.

mg-1999 commented 3 years ago

Orange Pi is just like the Raspberry Pi build on an arm platform. The upside of the orange pi zero 2 is that it has an Ethernet and a wifi chip onboard. And the wifi chups use an external antenna. That's hopefully good of range of the AP.

If you need any help I'm open to work on it as well

Update; https://forum.armbian.com/topic/13806-how-to-create-wireless-access-point-and-internet-connection-with-nodejs-on-armbian-board/

Isn't possible on nodejs sadly. I think that a sort of install/setup script could be an solution to get it user friendly?

JTF4 commented 3 years ago

I would love to setup images that can easily be deployed to an orange pi, however by biggest issue is that I don't have an orange pi to develop the image on.

How fast do you want this feature implemented?

hrueger commented 3 years ago

I have a few ideas but no time to implement that.

I suggest we add a new Tab to the settings page which is named "Network". There we can show some useful information like what network interface TA is running on. Then, we could add a "WiFi" or "WLAN" section there with a switch to set the mode: "AP" or "Client".

In AP Mode (only available on Raspberry Pi and the default mode there) we'd create an accesspoint with hostapd-config and / or hostapd_switch. (I haven't tested any of them).

In client mode we display available the WiFi networks, let the user select one or insert a manual SSID and prompt for a password. Then, we use node-wifi to connect to that wifi.

In a second step, we could built custom Pi Images or images for other platforms with GitHub Actions. A great tool which I have already used is https://github.com/guysoft/CustomPiOS.

It is not hard to use, you just need to do some bash scripting.

What do you think?

josephdadams commented 3 years ago

I like the ideas, I just think it's really niche. I wouldn't spend time on it unless under great personal motivation before solving other issues that will affect and benefit more users.

mg-1999 commented 3 years ago

Understandable. But I believe that creating our own Access Point, for listeners, a good start is for the custom hardware. Hopefully it will be plug and play like the Cerevo Flex Tally

I just ordered a Orange Pi Zero 2, have some spare Raspberry Pies and will work on this in my free time. Will keep this thread updated.

JTF4 commented 3 years ago

Biggest issue for me would be range. I think the best setup would be a orange/raspberry pi and a cheap ruckus AP

mg-1999 commented 3 years ago

Range could be improved by just moving the device to stage. As everything is embedded in the box and IP based the physical placement of the TA server doesn't matter

JTF4 commented 3 years ago

True. And now that I think about it, the raspberry pis have impressive range

dbussert commented 3 years ago

As someone who makes professional software for Raspberry Pi's, I would recommend against intertwining TA with the underlying hardware it's running on. At best, you make a wireless UI feature that ONLY works on Pi's with a specific Linux OS with specific packages installed, but that won't work on Windows, Mac OS or Docker.

I suggest a separate github repository that is a series of bash scripts to run on a fresh Pi Raspbian that will enable AP wifi, install TA and make it auto-start on boot, which should satisfy what is being requested.