OS上で動作するLuaプラグインとjavascriptSDKの間でデータのやり取りを行うことができます。
obniz.plugin.send()
obniz.js側からプラグインへバイナリ列を送信します。
// Javascript Example
obniz.plugin.send("obniz.js send data get device?")
obniz.plugin.send([0x00, 0x01, 0x02])
Luaプラグインではon_command()で受信します
function on_command(command)
os.log(command)
end
obniz.plugin.onreceive
プラグイン側から送信されたバイナリ列を受け取ります。
// Javascript Example
obniz.plugin.onreceive = (data) => {
console.log(data);
};
Luaプラグインではcloud.pluginSend()で送信します。
cloud.pluginSend("123");
obniz.plugin.onFrameStart / onFrameEnd
プラグイン側からフレーム情報が送られたときに呼び出されます。
大きなデータを送信する際にデータの区切りを示すのに便利です。onFrameStartではプラグイン側から送信されたframe_idとデータの長さを受け取ることができ、その後大きなデータであれば何度かonreceiveでデータを受信することになります。そしてすべてのデータの受信が完了するとonFrameEndが呼び出されます。
// Javascript Example
obniz.plugin!.onFrameStart = (frame_id, length) => {
console.log(`frame start id=${frame_id} length=${length}`);
}
obniz.plugin!.onFrameEnd = () => {
console.log(`frame ended`);
}
obniz.plugin!.onreceive = (data) => {
console.log(`received=${Buffer.from(data).toString()}`);
};
Luaプラグインでは以下のコマンドでの送信となります。
cloud.pluginSendFrameStart(frame_id, length); -- framing
cloud.pluginSend("123");
cloud.pluginSend("456");
cloud.pluginSend("789");
cloud.pluginSendFrameEnd(); -- framing