SC2 Take Picture Status

 

Using /osc/status to see the completion of startCapture on the SC2 does not work. You must use /osc/state to see when the interval or bracket sequence ends.

Using /osc/status with takePicture does work. However, the SC2 has a problem with handling individual HTTP requests in rapid sequence.

Using /osc/status, I can take pictures in rapid sequence with the Z1 camera if I space out the shots by 1 second. I can likely reduce this delay, but I have not tried.

For the SC2, tests with 1 second and 2 second delays failed.

If I insert a delay of 10 seconds between pictures, I can take 200 pictures.

SC2 Sequence Shot Result Summary

Test # delay after done total delay between shots number of shots hdr result
1 1 sec 9 seconds 200 no fail
2 2 sec 10 seconds 200 no fail
3 10 sec 18 seconds 200 no success
4 5 sec 13 seconds 200 no fail
5 8 sec 16 seconds 200 no success
6 6 sec 14 seconds 200 no success
7 5 sec 13 seconds 200 no success
8 3 sec 11 seconds 100 no success
9 1 sec 9 seconds 100 no success
10 0 sec 8 seconds 100 no success
11 0 sec 8 seconds 100 hdr success

Test Environment

  • uses takePicture, not startCapture
  • uses non-HDR pictures
  • SC2 with firmware 1.51
  • SC2 is plugged into a power source with a USB cable. However, this should not be needed and should not impact the test
  • SC2 is connected to Windows 10 computer with 2.4GHz Wi-Fi
  • camera is within 50cm of computer
  • camera is indoor, in the shade, during winter
  • all media is deleted from camera prior to test

Test Scripts

Loop to take 200 Pictures

for counter in {1..200}
do
    ./theta.exe takeAndReady
    echo that was picture $counter
    ((counter++))
    # waiting 10 seconds for SC2 test
    echo waiting 10 seconds for the next shot
    sleep 10s

done
echo finished endurance test

Camera Status Check Code Snippet

This is the check used in the tests. I put it into a loop to check the status after each shot. I check the status every second.

Future<String> isDone(String id) async {
  var url = 'http://192.168.1.1/osc/commands/status';
  var data = {'id': id};

  var payload = jsonEncode(data);

  var response = await http.post(url,
      headers: {'Content-Type': 'application/json;charset=utf-8'},
      body: payload);

  Map<String, dynamic> status = jsonDecode(response.body);
  String state = status['state'];

  return state;
}

At the end of 200 files, I received this:

thumbnail download test completed
thumbnails are in local storage for inspection

Example with 5 second delay

for counter in {1..200}
do
    ./theta.exe takeAndReady
    echo that was picture $counter
    ((counter++))
    # waiting 5 seconds for SC2 test
    echo waiting 5 seconds for the next shot
    sleep 5s
done
echo finished endurance test

Result Fail. Lost connection.