OSScafeで僕は発展途上技術者の石原淳也さんにScratchから他の機器につなげる方法を教えていただいたのでメモしておきます。
方法
- Scratch Xを利用する
- Scratch Xに自作した拡張ファイルを読み込む
- パラメーターをScratch Xで設定する
Scratch X
普通のScratchではなくScratchXであれば、自作の拡張(JS)をいれられる。
下記URLはテキストを読み上げる拡張をしているScratch
クリックするとこのような警告がでるが、自己責任ということを理解したという緑のボタンをクリックする。
これで、他の人がつくったText to Speechという拡張機能を利用したScratchが利用できる。
ScratchXに自分でつくった拡張ファイルを読み込んで利用する方法
「Open Extension URL」の部分をクリックします。
自作(もしくは他作)のExtensionファイルのURLを入力します。
このURLはどこでもよいわけではなく、githubのURLだと読み込んでくれるそうです。
今回は石原さんがScratch XからiPad用のVRアプリにつなげるscratch X用のエクステンションを教えていただきました。
https://champierre.github.io/scratch2arkit/extension/scratch2arkit.js
このURLを先程の「paste URL」にコピペします。
自己責任だということを理解したという緑のボタンを押します。
無事に石原さんが開発した拡張ファイル(Scratch2ARKit)の読み込みができました。
パラメーターをScratchXで設定する
ScratchからDALI-APIを叩く場合、ゲートウェイのIPアドレスを登録することとDALIコマンドを文字列で送ることが必要になります。
以下はScratch内部で値を設定し、WebSocketでデータを送る時のメモです。
石原さんの拡張ファイルはiPadのアプリにScratchからつなげるのですがiPadのipアドレスを入力できるノードと、アプリで挿入するブロックの色の値を入力するノードがあります。
var descriptor = { blocks: [ [' ', locale[lang].set_ip, 'set_ip', ip], [' ', locale[lang].set_cube, 'set_cube', 0.01, 0.01, 0.01], [' ', locale[lang].set_color, 'set_color', 255, 255, 255], [' ', locale[lang].reset, 'reset'] ] };
ノードは上記の部分で作っているようですが、Scratch Xに読み込むノードのjsファイルの書き方は下記の記事で開設されています。
ScratchX の Extension をローカルで開発する環境を整える
iPadアプリへのScratchXからのデータ送信はWebSocketを使ってやっています。以下のコードです。
ext.set_color = function(r, g, b) { if (!connected) { ws = new WebSocket('ws://' + ip + ':3000'); } else { ws.send("set_color:" + r + ":" + g + ":" + b); } ws.onopen = function(){ connected = true; ws.send("set_color:" + r + ":" + g + ":" + b); }; ws.onclose = function(){ connected = false; }; }
以上、石原さんのJSのコードを参照すれば、DALIのゲートウェイにDALIコマンドデータを送れそうな感じです。
まとめ
備忘録として石原さんからきいた内容をメモしました。
次回はこの内容をもとに、Scratch XからDALI-APIを使って設備としての照明を制御する検証をします。
そうすれば、子供のプログラミング用として敷居の低いScratchを使って、現実世界の設備としての照明を制御することができ、DALIの普及を促進できるのではないかと企んでいます。
こちらも参考