obnizのサーバーレスイベントでは全角スペースに注意

obnizのオンラインエディタで実行できたJavaScriptが、サーバーレスイベントでは実行しない!?原因は全角スペースの可能性があります。

サーバーレスイベントでハマる

obnizのリポジトリでWebApp(HTMLとJavaScript)を作成してみました。

オンラインエディタでプログラミングをするのは初めてです。

エラーもリアルタイムで警告が出て、思ったより便利なものでした。

さて、このWebAppをサーバーレスイベントに登録すると・・・なぜか実行しません。

オンラインエディタ上ではエラー警告もなく、実行したら正しく動作します。

エラーログは”SyntaxError”。単純な記述ミスのはずです。

原因は全角スペース

ログにはエラー行数が見つかりません。少しずつコードを削っていき、エラーの個所を特定することにしました。

たどり着いた行には、変数代入で全角スペースが入っていました。

※別の行の変数が問題でしたが、分かりにくいのでobnizの変数を掲載しています。

「=」の後ろに全角スペースが入っています。オンラインエディタに全角スペースを可視化する機能は実装されていなかったようです。

全角スペースは仕様上OK?

JavaScriptで全角スペースは仕様(ECMAScript 5.1)上、利用可能となりました。あえて全角スペースを使う人はいないと思いますが・・・

仕様上OKなので、Chromeブラウザで実行していた時は、エラーが起きません。

しかし、obnizのサーバーレスイベントで実行するとエラーになってしまうようです。

もし、サーバーレスイベントでSyntaxErrorが発生した場合は、コードの全角スペースを検索すると、解決できるかもしれません。

手まりをスプレータイプのニスで固める

以前、手まりを地を水性ウレタンニスで固める方法を書きました。しかし、ガチガチに固まって針が通りにくく、刺しゅうする際、指が痛くなります。スプレータイプのニスを使うことで問題は改善しました。

小さい手まりはほどけやすい

小さい手まりを作る時、糸が少しズレただけでほどけてしまうことがあります。

そこでニスで固めることにしました。

私の場合は光沢がある糸で手まりを作るので、ニスで光沢がでても影響ありません。※ナチュラルな風合いの手まりを作る場合はおすすめできません。

水性ウレタンニスだと硬くなり変色

家にあった木に使う水性ウレタンニスを塗りました。

赤色の糸が、想像以上にどす黒くなります。

また、硬いので針が通りにくく、刺しゅうをするときに指が痛くなります。

水性だから、薄めて使えば良かった・・・?

紙に使えるスプレーニスが簡単

こちらは、同じ赤い糸に紙用のスプレーニスをかけたものです。

ニスが奥までしみこまないので変色が少なく、硬くなりすぎることもありません。手まり作りには適しているようです。

塗料用の透明カップの中でスプレーを噴射すると、はけもいらなく簡単です。

手まりの地割を3Dプリンターで正確に

手まりを装飾するとき、まず最初に地割(糸で分割)をします。均等に地割ができないと、手まりの模様が崩れます。昔はメジャーで測っていましたが、今は3Dプリンターで地割専用器を作り、利用しています。

難しい地割のパターンがある

マイナーな情報ですが、手まりの地割は4等分、8等分、16等分以外は難しいです。

ケーキを分割するのと同じで、目感覚で分けやすいのは4、8、16等分。

奇数の地割は特に難しく、さらに手まりが小さいほど、1mmの誤差でも影響が大きくなります。

上の写真は2㎝の手まりで、9等分の地割。正攻法で地割は難しいと思います。

被せる地割専用器

正確に地割をするため、地割専用器を3Dプリントしました。

手まりの上下から被せて、全体を包みます。

上の写真は10等分のもので、サイズや地割の数ごとに使い分けています。

赤道と呼ばれる手まりの円周に、しるしの待ち針を刺していきます。

北極・南極の位置には、縫い針を刺します。待ち針を刺してしまうと地割専用器が外れません。

ちなみに黒くて見えにくいのですが、針を刺すところには穴が空いおり、その穴を通して針を刺せば、正確に地割ができる仕組みです。

地割専用器を外す

北半球、南半球、それぞれ地割専用器を外します。

精度の高い、目印を刺すことができました。

これで10等分が簡単にできます。

昔、おばあちゃんに地割の仕方を教わりました。

おばあちゃんほどの技術が私にはないので、最新テクノロジーを使ってカバーします。

 

IoT体重計で自動記録ダイエット

IoT体重計を使って、体重と体脂肪率を自動でスプレッドシートに記録しています。3か月記録すると体重が順調に減っていることが分かります。データを見るとモチベーションにもつながります。

データを見ることは大切!

私は健康診断を何年も受けずに、体重を見ないまま生きてきました。

3か月前、ふと体重計にのると・・・故障か!?と思うほど、自分の想像していた体重からかけ離れています。

目を背けてはいけません。

日々、自分の体重を記録して、現実と向き合うことが大切です。

たしかレコーディングダイエットという、体重を記録するだけでやせられる手法があったと思います。(※これは勘違いで、食べたものを記録する手法です。)

毎日体重を記録して、やせることを決意しました。

IoT体重計で自動記録する

毎日体重を手動で記録する自信はなかったので、IoT体重計で自動記録します。

Withings「Body +」という体重計。

体重を測ると、スマホの専用アプリで勝手に記録してくれます。

私の場合はアプリ以外にも、スプレッドシートに書き込むようにしています。

自動記録でもモチベーションになる

スプレッドシートのグラフを見ると、おおむね直線で体重が毎月1kgずつ減っていくのが分かります。

毎日の体重データが蓄積され、変化を見れるとモチベーションにつながります。

人にもよると思いますが、私の場合は体重を自分で書き込まなくても、自動記録でダイエットに成功しているようです。

食事を減らしていますが、無理はしていないので、リバウンドは心配もないでしょう。

高校生の時の体重を目標に、ダイエットを続けます。

JavaScriptとサーボモーターで物を吊り上げる

サーボモーターで物を吊り上げる電子工作に挑戦します。〇cm上げるには、何度サーボモーターを動かせばよいでしょうか?JavaScriptを使えるマイコン(obniz)を想定し、JavaScriptで計算してみます。

電子工作で物を吊り上げ/吊り下げ

180度サーボモーターを使って、手まりを正確な距離で吊り下げたくなりました。

設計を考えましょう。

支点を2つ作り、下の図のようにサーボモーターを配置します。

サーボモーターで糸を引く距離をxとし、この距離が長くなると、手まりはxの距離だけ吊り上がります。

引っ張られる糸xを底辺として、サーボモーターの軸が頂点となる二等辺三角形を想像してみます。

サーボホーンの長さyを測かることで、サーボモーターを動かす角度bが計算できるようになります。

直接角度bは計算できないと思うので、二等辺三角形の高さhと、角度aを先に計算する必要があるはずです。(数学は詳しくなく、自信はないですが・・・)

JavaScriptで角度計算

例えば3cm手まりを引き上げたいとします。

サーボホーンの長さが2cmだった時、下記のJavaScriptの変数xに3、yに2を代入すると計算できます。

答え b=97.2。

サーボモーターが0度が初期値として、サーボモータを97.2度動かすと、3cm手まりが引き上がるでしょう。

まだ空論のため、実際に組み立てて期待通りに動くが検証してみます。

Wi-Fi中継器でobnizの接続を改善

昨日作った手まり時報が、大幅に時間がズレてしまいます。原因はWi-Fi接続の失敗だったため、Wi-Fi中継器導入で解決しました。自宅の電波が弱い時の参考に。

58分遅れる時報

1時間おきに、パソコンディスプレイの前に手まりがぶら下がり、休憩タイミングを伝える時報です。obnizで開発しています。

obniz Boardの挙動は、

  1. sleep(約1時間 次のX時00分まで)
  2. 起動
  3. Wi-Fi接続
  4. 時報動作

という流れです。

しかし、3. Wi-Fi接続の成否で、大幅に時刻が遅れます。

遅い時は58分間、Wi-Fi接続に失敗し、もはや時報の意味をなしていません。

Wi-Fi中継器導入

Wi-Fi電波が安定して届かないことが問題のようなので、中継器を導入します。

TP-Link RE650が、家にありました。

やはり、中継器導入後、時報は安定動作しています。

なお、中継器にobnizが接続されているかは、TP-Linkのアプリから確認できます。

「espressif」がobnizのようでした。ESP32開発ボードを販売している会社の名前のようです。

obnizのWi-Fi接続が、中継器を経由することで、安定して動作することを確認しました。

休憩を伝える手まり時報

パソコンで仕事中、1時間おきに手まりがぶら下がり、ディスプレイを遮ります。仕事の小休憩のタイミングを伝えてくれます。

仕事の効率を上げるには小休憩

定期的に小休憩をはさんで仕事に取り組んだ方が、効率が上がるとよく見聞きします。

パソコンで仕事をしていると、時計は常時表示されており、決まった時間に休憩を取ればよいのですが・・・ついつい長時間、働き続けてしまいます。

視界に邪魔なものをぶら下げよう

休憩を促す時報を作りましょう。

スマホのアラームで良いと思ったのですが、オンライン会議中に鳴ってしまうことがあり、静かな時報が望ましいです。

そこで、手まりをディスプレイの上にぶら下げて、休憩の合図を伝えることにしました。

視界に邪魔なものが入れば、嫌でも気づくでしょう。

obnizで手まり時報を構築

いつも通り、手軽なobnizで構築します。

obniz Board 1Yにサーボモーターをつなぎ、サーボホーンに手まりをぶら下げます。

開発者コンソールのリポジトリにアクセスし、WebApp(HTML)を新規作成します。

アクセスレベルは公開、非公開、どちらでも良いです。

ファイル名を今回は「temari-timer」として、下記のコードを登録します。

サーボモーターを動かし、1時間(X時00分のとき)までスリープするプログラムです。

obniz Boardが目覚めるたびにプログラム実行

続いてサーバーレスイベント画面に遷移します。

新規作成でイベントを追加します。

1.トリガーは「obniz Hardware Event」
obniz IDを選択し、Eventは「online」を選択します。

2. 実行するアプリケーションで、先ほどリポジトリに登録した「temari-timer.html」を選択します。

これを作成すれば、obniz Boardがスリープから目覚めるたびに、プログラムが実行されるようになります。

1時間おきに時報が起動し、またスリープする省電力な仕組みとなりました。

 

実用的かはさておき、obnizのスリープとサーバーレスイベントの勉強にはなったと思います。

ガラステーブルは売れない可能性が高い

大塚家具で買ったガラステーブルをリサイクルショップに売ろうと思い、車で走り回りました。結局売れずに、自治体の粗大ごみとして処分することに。ガラステーブルを売るのは難しく、買う前によく検討すればよかったです。

古いけどほぼ未使用

昔、私の個人的な好みで、リビングに置くガラステーブルを買いました。

しかし、動きの激しい男の子のいる家庭で、ガラステーブルを買うのは愚かな選択です。

危ないのでほとんど使わず、物置部屋にしまいました。

約10年経ち、男の子が4人に増え、より激しい家庭状況になりました。

もはやガラステーブルをリビングに戻す機会はないと悟り、売却を決めます。

ほぼ使わないで処分されるテーブルの運命が悲しすぎて、新しい家族に出会えるよう、リサイクルショップに売ることにしました。

ガラステーブルを車に積みます。

ガラステーブルの買取は難しい

ガラステーブルは扱いが大変で、買い取れないことが多いようです。

3つのリサイクルショップに行き、鑑定してもらうと・・・

「ガラスがしっかり固定されていないテーブルは、展示中にお客様がケガをする可能性があるので買い取れません。」「ガラスの運搬が難しくて、買い取れません。」

と、いった理由で、引き取ってもらうこともできませんでした。

自治体の粗大ごみ回収へ

結局、ガラステーブルは、自治体の粗大ごみ回収に出しました。

今後使う可能性のないものを、家に置いても空間を圧迫するデメリットしかないでしょう。

家庭環境にもよりますが、ガラステーブルは置くのも売るのも難しいので、買う前に十分検討した方がよいです。

デスクで水耕栽培 ベビーリーフ収穫

デスクでベビーリーフを水耕栽培して19日目。ついに収穫して食べることにしました。新鮮・無農薬のベビーリーフ。美しい緑が皿を彩ります。

デスクの片隅で水耕栽培

デスクでベビーリーフの水耕栽培をしながら、人間用のLEDと植物用のLEDでの成長の違いを比較していました。

十分育ち、収穫の時です。

収穫したばかりの新鮮ベビーリーフ

キッチンでベビーリーフを収穫します。

スーパーで並んでいるものと違い、収穫して即食べられ、新鮮です。

少し愛着がわいてしまいましたが、一思いにちぎっていきます。

収穫量は植物用LEDの方が多い

やはり植物用LEDで育てたベビーリーフの方が、収穫量が多かったです。

ただし、日焼けしたような跡があり、美しくないところもありました。光が強すぎた(近すぎた)のかもしれません。

人間用LEDで育てたベビーリーフは緑が少し薄いものの、傷みがなく上品な緑に見えます。

食べ比べても分からない

私の味覚は当てにならず、妻に食べ比べをお願いしました。

しかし、怖がって食べませんでした。

農薬を使っても、新鮮じゃなくても、スーパーの野菜の方が良いらしいです。

・・・納得はできないが、分からないこともない。

結局私と四男だけが食べました。

四男が「おいしい」と言ってくれたのが救いです。

私が食べ比べても、味の差が分かりません。ただ、緑色の美しさはスーパーで買うものより鮮やかに見え、色どりとしては申し分なかったです。

LEDの違いを見る デスクで水耕栽培(17日目)

デスクでベビーリーフを水耕栽培して17日目。もう十分食べられるサイズになりました。使用するLEDの比較実験をしていたところ、やっぱり植物用LEDの育ちが良いという結論に至りました。

人間用LED VS 植物用LED

木で仕切りを作り、ベビーリーフに当てる光を変え、成長の差を見ています。

人間用LEDと、植物用LEDで比べています。

一番左は北側の窓で育てているベビーリーフ。これは論外です。

中央が人間用LEDのベビーリーフ。背が高く育っていましたが、葉の重さに耐えられず、傾いています。

・・・ということは、光が足らず、茎が伸びすぎてしまったと考えられます。

一番右が植物用LEDのベビーリーフ。健康的な太さで元気です。

わざわざ植物専用のLEDなんて不要かと思っていましたが、植物に成長に良い光を提供してくれていたようです。

光があまり入らないところでベビーリーフの水耕栽培をするなら、しっかり植物用のLEDを使った方が良いでしょう。

次回、食べます。