1.在宅勤務で集中しすぎる問題
2020年春にコロナ禍が始まり、3年が経過する。
コロナ禍をきっかけに在宅勤務がスタートし、週3日在宅・週2日出勤の生活に慣れてきた。
ただ、1点なかなか解決しない問題がある。
在宅勤務だとたまに集中しすぎてしまうことがあるのだ。
集中することはいいことだ。しかし、集中しすぎることは逆に体に良くない。
まばたきの回数が減ってドライアイになるし、同じ姿勢が続くと肩や腰が痛くなる。
学生時代は時間割が決まっており、強制的に休憩時間が取れたうえ適
度に集中状態を管理できていた気がする。
しかし、社会人である以上、自分自身で管理しなければいけない。
在宅勤務中にチャイムを鳴らすことで学校っぽくなり
うまく集中状態を管理できるのではないだろうか。
また、後々どういうときに集中しすぎるのか分析するために、
タイマーを利用したことを記録するためにLINE botにメッセージを送付することとした。
2.作成したかったもの
作成したタイマーは以下のとおり。
①obnizのスイッチを押す
②タイマー開始のLEDが光る
③タイマー開始のチャイムが鳴る
④25分計測
⑤タイマー終了のチャイムが鳴る
⑥タイマーを使用したことをLINE botにメッセージを送る
3.成果物
1.動画
スイッチを押したらチャイムを鳴らすところは成功したけど、そのあとLINE botにメッセージが送られない。なぜだ?#protoout #linedc #obniz #初心者 pic.twitter.com/xoJleycq7x
— きく (@AYE7WvdouqRwaNp) October 30, 2022
2.Node-REDの構成
obnizのスイッチが押されたら、obniz functionでチャイムが鳴る設定とした。
その後、LINE botにメッセージを送信する
[{"id":"d3915e317c9317dc","type":"obniz-function","z":"6bdd95107d414e70","obniz":"3d79e9e625d01588","name":"","code":"obniz.display.clear(); // 画面を消去\r\nif (msg.payload === 'push') {\r\n obniz.display.print('start');\r\n // 赤: rgbled.rgb(255, 0, 0);\r\n // 緑: rgbled.rgb(0, 255, 0);\r\n // 青: rgbled.rgb(0, 0, 255);\r\n \r\n obnizParts.WS2811.rgb(0, 255, 0);\r\n await obniz.wait(300); // led ON for 0.3sec.\r\n obnizParts.WS2811.rgb(0, 0, 0)\r\n await obniz.wait(150)\r\n \r\n obnizParts.WS2811.rgb(0, 255, 0);\r\n await obniz.wait(300); // led ON for 0.3sec.\r\n obnizParts.WS2811.rgb(0, 0, 0)\r\n await obniz.wait(150)\r\n \r\n obnizParts.WS2811.rgb(0, 255, 0);\r\n await obniz.wait(300); // led ON for 0.3sec.\r\n obnizParts.WS2811.rgb(0, 0, 0)\r\n await obniz.wait(150)\r\n \r\n obniz.display.clear(); // 画面を消去\r\n \r\n //前半\r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(880.000);//ラ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n\r\n obnizParts.Speaker.play(783.991);//ソ\r\n await obniz.wait(500)\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n\r\n obnizParts.Speaker.play(523.251);//ド\r\n await obniz.wait(1000);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200); \r\n \r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(783.991);//ソ\r\n await obniz.wait(500)\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(880.000);//ラ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(1000);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200);\r\n \r\n //後半\r\n obnizParts.Speaker.play(880.000);//ラ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(783.991);//ソ\r\n await obniz.wait(500)\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n\r\n obnizParts.Speaker.play(523.251);//ド\r\n await obniz.wait(1000);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(523.251);//ド\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(783.991);//ソ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop(); \r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(880.00);//ラ\r\n await obniz.wait(500);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200);\r\n \r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(1000);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200); \r\n \r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(1500);\r\n obnizParts.Speaker.stop();\r\n await obniz.wait(200); \r\n \r\n await obniz.wait(2000);//ミリ秒単位で設定\r\n\r\n obniz.display.print('in the middle');\r\n\r\n await obniz.wait(2000);//ミリ秒単位で設定\r\n \r\n obniz.display.clear(); // 画面を消去\r\n obniz.display.print('end')\r\n\r\n obnizParts.Speaker.play(698.456);//ファ\r\n await obniz.wait(1500);\r\n obnizParts.Speaker.stop()\r\n}else{\r\n \r\n}\r\n ","x":560,"y":280,"wires":[["2d34fabe4924b628"]]},{"id":"3b8da1d70e26bb22","type":"obniz-repeat","z":"6bdd95107d414e70","obniz":"3d79e9e625d01588","name":"","interval":"100","code":"msg.payload = await obniz.switch.getWait();\r\n\r\nreturn msg;","x":350,"y":280,"wires":[["d3915e317c9317dc"]]},{"id":"2d34fabe4924b628","type":"delay","z":"6bdd95107d414e70","name":"","pauseType":"delay","timeout":"50","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":740,"y":280,"wires":[["e3b23d7e32ba40f2"]]},{"id":"0fc020120f5cba20","type":"BloadcastMessage","z":"6bdd95107d414e70","name":"","x":890,"y":360,"wires":[[]]},{"id":"e3b23d7e32ba40f2","type":"template","z":"6bdd95107d414e70","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"timer end","output":"str","x":900,"y":280,"wires":[["0fc020120f5cba20"]]},{"id":"3d79e9e625d01588","type":"obniz","obnizId":"9999-9999","deviceType":"obnizboard1y","name":"","accessToken":"","code":""}]
※動作確認のため、25分計測せず2秒で終了する設定としている
※タイマーの感覚を25分の理由は ポモドーロテクニックをもとに設定した
wikipedhia ポモドーロテクニック
・obnizの初期化コード
obniz.display.clear(); // 画面を消去
obnizParts.Speaker = obniz.wired("Speaker",{ signal:0, gnd:1 });
obnizParts.WS2811 = obniz.wired('WS2811', { gnd:3, vcc:4, din:5 });
obnizParts.WS2811.rgb(0, 0, 0)
3.使用した技術
obniz
Node-RED
LINE bot
4.まとめ
obnizを使って家を学校ぽくするチャイムは作成してみた。
スピーカーを使ってチャイムを鳴らすところまで上手く作成することができた。
学生時代の条件反射が残っているのか、チャイムを聞くと気が引き締まる感じがする。
ただ、LINE botへのメッセージ送信で躓いてしまった。
アドバイスをいただいてノードを一つ追加したが、上手く反応してくれなかった。
おそらく、何かの設定が誤っているだろうと推測しているが、原因を解明するには至らなかった。
もう少し、LINE botやobnizの知識を習得してから再チャレンジしたい。