obniz のスイッチ操作を AirTable に記録するメモ
この記事は プロトアウトスタジオ Advent Calendar 2021 の 24 日目の記事です。
obniz のスイッチ操作を AirTable に記録するメモです。
AirTable
Airtable | Create apps that perfectly fit your team's needs
AirTable は柔軟にデータベースが組むことができ、Google スプレッドシートのように GUI も扱いやすく、何より API が使いやすく 公式の Node.js ライブラリ もあります。
M5Stack もやったので obniz もやりたくなった
https://www.1ft-seabass.jp/memo/2021/10/07/m5stack-airtable-api-connect/
API が使いやすく HTTPS のやり取りさえ作れれば、こちらの記事のように M5Stack からもデータを貯めることができて IoT とも親和性が高そうです。
今回は obniz でやってみます。
Base を作り自分の API key の取得する
https://www.1ft-seabass.jp/memo/2021/05/02/node-red-airtable-firststep/
こちらの記事は Node-RED ですが、実際に API を使うためのデータを貯める Base の作り方や 自分の API key の取得の仕方は書いてあるので、参考にしてください。
- Base ID
- 自分の API key
をメモしておきましょう。

Base については、シンプルに obniz スイッチを操作したときの switch state "none" "push" "left" "right" を ActionName として書き込みます。
なお、設定にはテーブル名も必要です。今回は Table 1 にしているので、これを使います。
Node.js で airtable と obniz を動かす準備
適当なフォルダ obniz-airtable を作って
npm init -y
で npm フォルダとして初期化します。
npm i airtable
AirTable が公式で出している Node.js ライブラリ airtable を npm インストールして準備します。
npm i obniz
そして obniz ライブラリも npm インストールして準備します。
今回のプログラム
app.js として以下のようなプログラムになりました。
const Obniz = require('obniz');
const Airtable = require('airtable');
async function main (){
// AirTable の接続
// <AIRTABLE_API_KEY> に、自分の ApiKey に置き換える
// <AIRTABLE_BASE_ID> に、今回つなぎたい Base の Base ID に置き換える
const base = new Airtable({ apiKey: "<AIRTABLE_API_KEY>" }).base("<AIRTABLE_BASE_ID>");
// <AIRTABLE_TABLE_NAME> に、操作する Table 名に置き換える
const table = base("<AIRTABLE_TABLE_NAME>");
// obniz の接続
// <OBNIZ_ID> に、自分の使う obniz の ID を入力
var obniz = new Obniz("<OBNIZ_ID>");
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print("Hello AirTable!");
// まず起動したと launched を AirTable に記録
const records = await table.create([
{
"fields": {
"ActionName":"launched"
}
}
]);
console.log("launched getId");
console.log(records[0].getId());
obniz.switch.onchange = async function(state) {
if (state === "push") {
obniz.display.clear();
obniz.display.print("push");
// スイッチ操作 push を AirTable に記録
const records = await table.create([
{
"fields": {
"ActionName":"push"
}
}
]);
console.log("push getId");
console.log(records[0].getId());
}
if (state === "right") {
obniz.display.clear();
obniz.display.print("right");
// スイッチ操作 right を AirTable に記録
const records = await table.create([
{
"fields": {
"ActionName":"right"
}
}
]);
console.log("right getId");
console.log(records[0].getId());
}
if (state === "left") {
obniz.display.clear();
obniz.display.print("left");
// スイッチ操作 left を AirTable に記録
const records = await table.create([
{
"fields": {
"ActionName":"left"
}
}
]);
console.log("left getId");
console.log(records[0].getId());
}
}
}
}
main();
以下の、
// <AIRTABLE_API_KEY> に、自分の ApiKey に置き換える
// <AIRTABLE_BASE_ID> に、今回つなぎたい Base の Base ID に置き換える
const base = new Airtable({ apiKey: "<AIRTABLE_API_KEY>" }).base("<AIRTABLE_BASE_ID>");
// <AIRTABLE_TABLE_NAME> に、操作する Table 名に置き換える
const table = base("<AIRTABLE_TABLE_NAME>");
// obniz の接続
// <OBNIZ_ID> に、自分の使う obniz の ID を入力
var obniz = new Obniz("<OBNIZ_ID>");
あたりに、
<AIRTABLE_API_KEY>- AirTable の自分の ApiKey に置き換える
<AIRTABLE_BASE_ID>- AirTable の今回つなぎたい Base の Base ID に置き換える
<AIRTABLE_TABLE_NAME>- 操作する Table 名に置き換える。今回でいえば
Table 1。
- 操作する Table 名に置き換える。今回でいえば
<OBNIZ_ID>- 自分の使う obniz の ID に置き換える
それぞれ、設定を行います。
動かしてみる
ということで、obniz に電源を入れて Wi-Fi に接続されたら、
node app.js
で動かしてみましょう。

obniz が Hello AirTable! と反応します。

AirTable の設定がうまくいっていれば Node.js 側でも、このように起動したときに console.log が表示されて、

AirTable 側に launched が記録されます。

スイッチを押したり左右に操作してみましょう。

Node.js で console.log が表示され、

AirTable 側に push ・ right ・ left のテキストが obniz でスイッチを操作したログとして記録されます!
今回はシンプルにスイッチ操作をやり取りしていますが、これで obniz のセンサー値を記録したり、LINE Bot でやりとりするデータを保持したりと色々な用途に使えそうですね!