{"formatVersion":"1.0","tagData":{"name":"ThetaV","icon":"data:image/png;base64,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","description":"ThetaVのタグです。\n【360 Live Photos】トリガーが入力されると短い360度動画が撮影されます。\n【写真撮影】写真を撮影します。\n【動画撮影】動画の開始・停止をコントロールできます。","functions":[{"id":"function_0","name":"360 Live Photos","connector":{"inputs":[{"label":""}],"outputs":[{"label":""}]},"properties":[{"name":"時間(ミリ秒)","referenceName":"millisecond","type":"number","defaultValue":"3000"}],"extension":{"initialize":"","receive":"","execute":"//Theta Endpoint URL の設定(デフォルトは192.168.1.1:80)\nvar endPointURL = \"http://192.168.1.1:80\"\n\nwait().then((v) => {\n log(\"wait \" + v + \" millisecond\");\t\n\tcloseCaptureSession(endPointURL) ;\n\tcallbackSuccess( {\n\t\tresultType : \"continue\"\n\t} );\n});\n\nfunction sleep() {\n\treturn new Promise(resolve => setTimeout(resolve,properties.millisecond));\n}\n\nasync function wait() {\n\tcheckState(endPointURL);\n\t//非同期処理が完了するまで待機\n\tawait sleep();\n\t\n\treturn properties.millisecond.toString();\n}\n\nfunction checkState(_endPointURL) {\n\tajax( {\n\t\turl : _endPointURL + \"/osc/state\",\n\t\ttype : \"post\",\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\t//var json_data = JSON.stringify(contents);\n\t\t\t//var json_text = JSON.parse(json_data)\n\t\t\t//log(\"contents = \" + json_data);\n\t\t\tcheckCaptureMode(endPointURL);\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(XMLHttpRequest + \" | \" + textStatus + \" | \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t});\n}\n\n//Theta Vの撮影モードがvideoモードになっている確認\nfunction checkCaptureMode(endPointURL) {\n\tvar getOptionsJSONData = {\n\t\tname: \"camera.getOptions\",\n\t\tparameters: {\n optionNames: [\n\t\t\t\t\"captureMode\"\n\t\t\t]\n }\n\t}\n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( getOptionsJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tvar json_data = JSON.stringify(contents);\n\t\t\tvar json_text = JSON.parse(json_data)\n\t\t\tlog(\"checkCaptureMode = \" + json_data);\n\t\t\t\n\t\t\tvar mode = json_text[\"results\"][\"options\"][\"captureMode\"];\n\t\t\t\n\t\t\t//写真モードだったら、動画モードに切り替える\n\t\t\tif(mode == \"image\"){\n\t\t\t\tsetCaptureMode(endPointURL, \"video\");\n\t\t\t}\n\t\t\telse{\n\t\t\t\tstartCaptureSession(endPointURL);\n\t\t\t}\n\t\t\t\t\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n\n//Theta Vの撮影モードを変更する\nfunction setCaptureMode(endPointURL, _mode) {\n\tvar getOptionsJSONData = {\n\t\tname: \"camera.setOptions\",\n\t\tparameters: {\n\t\t\toptions: {\n\t\t\t\t captureMode: _mode\n\t\t\t}\n\t\t}\n \t}\t\n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( getOptionsJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tlog(\"動画モードに変更\");\n\t\t\tstartCaptureSession(endPointURL);\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n//Theta の動画の撮影をスタートする\nfunction startCaptureSession(endPointURL) {\n\tvar takePictureJSONData = {\n\t\tname: \"camera.startCapture\",\n\t} \n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( takePictureJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\t\tlog(\"動画撮影スタート\");\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n//動画の撮影を終了する\nfunction closeCaptureSession(endPointURL) {\n\tvar closeSessionJSONData = {\n\t\tname: \"camera.stopCapture\",\n\t} \n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( closeSessionJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tlog(\"動画撮影ストップ\");\n\t\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\nreturn {\n\tresultType : \"pause\"\n};","result":""}},{"id":"function_1","name":"写真撮影","connector":{"inputs":[{"label":"撮影"}],"outputs":[{"label":""}]},"properties":[],"extension":{"initialize":"","receive":"","execute":"//Theta Endpoint URL の設定(デフォルトは192.168.1.1:80)\nvar endPointURL = \"http://192.168.1.1:80\"\n\ncheckState(endPointURL);\n\nfunction checkState(_endPointURL) {\n\tajax( {\n\t\turl : _endPointURL + \"/osc/state\",\n\t\ttype : \"post\",\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tcheckCaptureMode(endPointURL);\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(XMLHttpRequest + \" | \" + textStatus + \" | \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t});\n}\n\n//Theta Vの撮影モードがiamgeモードになっている確認\nfunction checkCaptureMode(endPointURL) {\n\tvar getOptionsJSONData = {\n\t\tname: \"camera.getOptions\",\n\t\tparameters: {\n optionNames: [\n\t\t\t\t\"captureMode\"\n\t\t\t]\n }\n\t}\n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( getOptionsJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tvar json_data = JSON.stringify(contents);\n\t\t\tvar json_text = JSON.parse(json_data)\n\t\t\tlog(\"checkCaptureMode = \" + json_data);\n\t\t\t\n\t\t\tvar mode = json_text[\"results\"][\"options\"][\"captureMode\"];\n\t\t\t\n\t\t\t//写真モードだったら、動画モードに切り替える\n\t\t\tif(mode == \"video\"){\n\t\t\t\tsetCaptureMode(endPointURL, \"image\");\n\t\t\t}\n\t\t\telse{\n\t\t\t\tstartCaptureSession(endPointURL);\n\t\t\t}\t\t\t\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n\n//Theta Vの撮影モードを変更する\nfunction setCaptureMode(endPointURL, _mode) {\n\tvar getOptionsJSONData = {\n\t\tname: \"camera.setOptions\",\n\t\tparameters: {\n\t\t\toptions: {\n\t\t\t\t captureMode: _mode\n\t\t\t}\n\t\t}\n \t}\t\n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( getOptionsJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tlog(\"写真モードに変更\");\n\t\t\tstartCaptureSession(endPointURL);\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n//Theta の写真の撮影をスタートする\nfunction startCaptureSession(endPointURL) {\n\tvar takePictureJSONData = {\n\t\tname: \"camera.takePicture\",\n\t} \n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( takePictureJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\t\tlog(\"写真撮影開始\");\n\t\t\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\t\tresultType: \"continue\"\n\t\t\t});\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n\nreturn {\n\tresultType : \"pause\"\n};","result":""}},{"id":"function_2","name":"動画撮影","connector":{"inputs":[{"label":"開始"},{"label":"停止"}],"outputs":[{"label":"開始完了"},{"label":"停止完了"}]},"properties":[],"extension":{"initialize":"return {\n runtimeValues : {\n inputIndex : 0,\n\t\toutputIndex:0\n },\n resultType : \"continue\"\n};","receive":"if ( index == 0 ) {\n log( \"開始\" );\n\truntimeValues.inputIndex = 0;\n}\nelse if ( index == 1 ) {\n log( \"撮影停止\" );\n\truntimeValues.inputIndex = 1;\n}","execute":"//Theta Endpoint URL の設定(デフォルトは192.168.1.1:80)\nvar endPointURL = \"http://192.168.1.1:80\"\n\ncheckState(endPointURL);\n\nfunction checkState(_endPointURL) {\n\tajax( {\n\t\turl : _endPointURL + \"/osc/state\",\n\t\ttype : \"post\",\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tcheckCaptureMode(endPointURL);\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(XMLHttpRequest + \" | \" + textStatus + \" | \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t});\n}\n\n//Theta Vの撮影モードがvideoモードになっている確認\nfunction checkCaptureMode(endPointURL) {\n\tvar getOptionsJSONData = {\n\t\tname: \"camera.getOptions\",\n\t\tparameters: {\n optionNames: [\n\t\t\t\t\"captureMode\"\n\t\t\t]\n }\n\t}\n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( getOptionsJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tvar json_data = JSON.stringify(contents);\n\t\t\tvar json_text = JSON.parse(json_data)\n\t\t\tlog(\"checkCaptureMode = \" + json_data);\n\t\t\t\n\t\t\tvar mode = json_text[\"results\"][\"options\"][\"captureMode\"];\n\t\t\t\n\t\t\t\n\t\t\tif(runtimeValues.inputIndex == 0){\n\t\t\t\t//写真モードだったら、動画モードに切り替える\n\t\t\t\tif(mode == \"image\"){\n\t\t\t\t\tsetCaptureMode(endPointURL, \"video\");\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tstartCaptureSession(endPointURL);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if(runtimeValues.inputIndex == 1){\n\t\t\t\tcloseCaptureSession(endPointURL);\t\t\t\n\t\t\t}\n\t\t\t\t\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n\n//Theta Vの撮影モードを変更する\nfunction setCaptureMode(endPointURL, _mode) {\n\tvar getOptionsJSONData = {\n\t\tname: \"camera.setOptions\",\n\t\tparameters: {\n\t\t\toptions: {\n\t\t\t\t captureMode: _mode\n\t\t\t}\n\t\t}\n \t}\t\n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( getOptionsJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tlog(\"動画モードに変更\");\n\t\t\tstartCaptureSession(endPointURL);\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n//Theta の動画の撮影をスタートする\nfunction startCaptureSession(endPointURL) {\n\tvar takePictureJSONData = {\n\t\tname: \"camera.startCapture\",\n\t} \n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( takePictureJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tlog(\"動画撮影スタート\");\n\t\t\t\n\t\t\truntimeValues.outputIndex = 0;\n\t\t\t\n\t\t\tcallbackSuccess({\t\t\n\t\t\t\tresultType: \"continue\"\n\t\t\t});\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\n//動画の撮影を終了する\nfunction closeCaptureSession(endPointURL) {\n\tvar closeSessionJSONData = {\n\t\tname: \"camera.stopCapture\",\n\t} \n\n\tajax( {\n\t\turl : endPointURL + \"/osc/commands/execute\",\n\t\ttype : \"post\",\n\t\tdata : JSON.stringify( closeSessionJSONData),\n\t\tcontentType: \"application/json\",\n\t\tdataType: \"json\",\n\t\ttimeout : 5000,\n\t\tsuccess : function (contents) {\n\t\t\tlog(\"動画撮影ストップ\");\n\t\t\t\n\t\t\truntimeValues.outputIndex = 1;\n\t\t\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\t\tresultType: \"continue\"\n\t\t\t});\n\t\t},\n\t\terror : function (XMLHttpRequest, textStatus, errorThrown) {\n\t\t\tlog(\"Error:\" + textStatus + \" \" + errorThrown);\t\t\n\t\t\tcallbackSuccess({\n\t\t\t\tresultType: \"stop\"\n\t\t\t});\n\t\t}\n\t} );\n}\n\nreturn {\n\tresultType : \"pause\"\n};","result":"return {\n indexes : [ runtimeValues.outputIndex ],\n resultType : \"continue\"\n};"}}]}}