node.js부터 사용

11510 단어 Node.jsWindowsTheta

개시하다



node.js에서 시작합니다.
공식.에 따르면 API는 Google의 Open Spherical Camera API Version 1.0과 일치하므로 OSC를 사용하여 제어할 수 있습니다.

차리다


THETA는 P2P의 와이파이 연결을 통해 접근하기 때문에 와이파이 어댑터를 PC 측에 연결해 통신할 수 있다.
노트북 환경에서 무선으로 연결할 수 있는 환경도 좋지만 THETA와 연결하면 통상적인 인터넷 환경을 잃기 때문에 기존의 네트워크 환경을 유지하고 THETA에 연결하려면 최소 두 개의 네트워크 어댑터가 필요하다.
이번 와이파이 구성은 유선 네트워크의 정상적인 환경을 유지하면서 THETA에 연결하는 것이다.

curl을 통해 연결 확인


공식.의 API Reference에 따르면 THETA의 IP 주소와 포트는192.168.1.1:80이기 때문에curl로 이 주소에 명령을 던져 보았다.curl http://192.168.1.1:80/osc/info에서 info를 찾아보세요.
호응하다
{
    "manufacturer": "RICOH",
    "model": "RICOH THETA S",
    "serialNumber": "00XXXXXX",
    "firmareVersion": "01.11",
    "supportUrl": "https://theta360.com/en/support/",
    "endpoints": {
        "httpPort": 80,
        "httpUpdatesPort": 80
    },
    "gps": false,
    "gyro": false,
    "uptime": 222,
    "api": [
        "/osc/info",
        "/osc/state",
        "/osc/checkForUpdates",
        "/osc/commands/execute",
        "/osc/commands/status"
    ]
}
curl -X POST http://192.168.1.1:80/osc/state에서 THETA의 상태를 취득해 보았다.
호응하다
{
    "fingerprint": "FIG_0002",
    "state": {
        "sessionId": "SID_0000",
        "batteryLevel": 1,
        "storageChanged": false,
        "_captureStatus": "idle",
        "_recordedTime": 0,
        "_recordableTime": 0,
        "_latestFileUri": "",
        "_batteryState": "disconnect"
    }
}

node.js에서 액세스


랩 사용osc-client.
take Picture()로 사진을 찍어 jpeg 이미지를 얻었습니다.
theta.js
var fs = require('fs');
var OscClientClass = require('osc-client').OscClient;

var domain = '192.168.1.1';
var port = '80';
var client = new OscClientClass(domain, port);
var sessionId;
var filename;

client.startSession().then(function(res){
  sessionId = res.body.results.sessionId;
  return client.takePicture(sessionId);
})
.then(function (res) {
  var pictureUri = res.body.results.fileUri;
  console.log('pictureUri :%s',pictureUri);

  var path = pictureUri.split('/');
  filename = path.pop();
  return client.getImage(pictureUri);
})
.then(function(res){
  var imgData = res.body;
  fs.writeFile(filename,imgData);
  return client.closeSession(sessionId);
});
node theta.js에서 실행할 때, 촬영 후 파일 포획을 위한 fileUri를 표시합니다.
node theta.js
pictureUri :100RICOH/R0010009.JPG
실행 디렉토리에 파일을 생성합니다.

IP 주소 및 포트 사용API Reference에 기재된 IP 주소입니다.
P2P가 연결되고 고객이 한 대만 연결할 수 있기 때문에 따로 햇볕을 쬐어도 된다.
처리의 개요는 다음과 같다.
1. startSession()에서session Id 얻기
2. 취득한sessionId를 지정하고 take Picture()를 통해 촬영한다.
3. take Picture()에 대한 응답을 지정하고 getImage()를 통해 파일 이미지를 가져옵니다.
4.clossession()에서 세션이 닫힙니다.

최후


새로운 thetas는 Open Spherical Camera API를 따르기 때문에 응용 프로그램을 구축하기 쉽다는 인상을 준다.
잘 팔리는 것 같은데 앞으로도 재밌는 사용법이 늘겠죠?
개인적으로 와이파이의 전환, 테타 앱의 시작 등 일련의 작업이 번거롭다고 판단해 NFC 라벨을 활용한 자동화를 검토 중이다.
완성 후 투고 예정.

좋은 웹페이지 즐겨찾기