Jay Goldman suggested this on a comment in DZone. I have not tested this yet:
If someone gets node or some type of JavaScript working with Digest Authentication to the THETA in Client Mode, please post a working example.
Thanks.
Update December 11, 2019
Update May 19, 2020
I moved the key points of the discussion to this article.
https://www2.theta360.guide/doc/article/19
There are two ways to connect your mobile app to the RICOH THETA with Wi-Fi.
-
Access Point (AP) mode where the THETA camera functions as a hotspot. The mobile phone connects to the THETA as if the camera were a hotspot or Wi-Fi router
-
Client Mode (CM) where the THETA camera connects to your home or office router. Your mobile phone connects to the same router
Authentication
The RICOH THETA requires Digest Authentication for client mode. When you use client mode, you must use Digest Authentication in addition to the username and password.
On the THETA V, the username is similar to this: THETAYL00105377
The password is the numerical digits. Example: 00105377
HTTP GET example
In the example below, I am using curl on Linux Ubuntu 20.04 from the command line to test a HTTP GET command to a RICOH THETA V. You can also run curl on Mac or Windows.
$ curl --digest --user "THETAYL00105377:00105377" -X GET http://192.168.2.101/osc/info
Response
{"api":["/osc/info","/osc/state","/osc/checkForUpdates","/osc/commands/execute","/osc/commands/status"],"apiLevel":[2],"_bluetoothMacAddress":"00:26:73:D5:4C:40","endpoints":{"httpPort":80,"httpUpdatesPort":80},"firmwareVersion":"3.21.1","gps":false,"gyro":true,"manufacturer":"RICOH","model":"RICOH THETA V","serialNumber":"00105377","supportUrl":"https://theta360.com/en/support/","uptime":1555858,"_wlanMacAddress":"00:26:73:D5:AA:64"}
HTTP POST example
When you use POST, you must include the header.
curl --digest --user "THETAYL00105377:00105377" -H "Content-Type:application/json" -X POST http://192.168.2.101/osc/state
Response
{"fingerprint":"FIG_0067","state":{"_apiVersion":2,"batteryLevel":1.0,"_batteryState":"charged","_cameraError":[],"_captureStatus":"idle","_capturedPictures":0,"_latestFileUrl":"http://192.168.2.101/files/150100525831424d42079d18e0b6c300/100RICOH/R0010048.JPG","_pluginRunning":false,"_pluginWebServer":false,"_recordableTime":0,"_recordedTime":0,"storageUri":"http://192.168.2.101/files/150100525831424d42079d18e0b6c300/"}}
HTTP POST with data payload
The next example takes a picture.
curl -d '{"name":"camera.takePicture"}' --digest --user "THETAYL00105377:00105377" -H "Content-Type:application/json; charset=utf-8;" -X POST http://192.168.2.101/osc/commands/execute
Response
{"id":"29","name":"camera.takePicture","progress":{"completion":0.00},"state":"inProgress"}
December 19, 2021 notes on trying to get Digest Auth working with Flutter.
https://issueexplorer.com/issue/dart-lang/http/605
try using dart:io
directly with preserveHeaderCase
.