Sony Camera API and the Smart Remote Control app w

2020-02-09 09:39发布

问题:

I purchased a Sony A5000 for the purpose of integrating the Sony Camera API into our professional photo booth software for iPad.

I understood that the Sony A5000 can connect to an existing Wi-Fi access point that has a connection to the internet, which I have tested and it works - but not with the API.

That is because in order to use the API, you have to run the Smart Remote Control App on the camera for it to be recognized. But when you run that camera app, it gives you the direct Wi-Fi access point credentials from the camera and does not allow you to use the existing access point that the camera has connected to. I tested it using the sample code provided by Sony for iPhone/iPad. Therefore, internet connection is impossible even though the camera clearly has the capability to connect to an existing Wi-Fi.

My app requires that the device be able to connect to the internet for social sharing and in order to sync photos to kiosks that display the images.

Is there a way around this limitation? Dear Sony engineers, can you please enable the use of the API over the access point the camera is connected to? I promise we will sell a lot of Sony cameras. Our customers are looking forward to being able to use a DSLR with their iPad-based photo booths.

回答1:

Almost four years later, I had the exact same use case as you, and I finally found a workaround to have both internet and API access. It's possible by making a "smart router" with at least 3 wifi cards/keys : a Raspberry Pi is a good fit.

  • First card acts as an access point (AP) to the smart router : wlan0 (main application will connect to it instead of the camera).
  • Second one connects to a wifi to get internet : wlan1
  • Third one connects to the camera AP : wlan2

Then you configure iptables to let wlan0 connections go to wlan1 and wlan2.

iptables -A POSTROUTING -t nat -o wlan1 -j MASQUERADE
iptables -A POSTROUTING -t nat -o wlan2 -j MASQUERADE

The camera discovery URL is still tricky to expose by the router but it's a fixed URL usually, so you can hardcode it once you found it (http://192.168.122.1:8080 for me). You can find it on the raspberry using this Python wrapper :