トイレの電気を消さないから娘にブチ切れられたのでobniz使って回避した話

## 娘にブチ切れられた
私はトイレの電気が消せない病気に罹ってるのかというくらいトイレの電気を消し忘れる。トイレに限ってだ。トイレの電気確認ってあんなちっさい窓で確認するんやろ？気づかんって:unamused:

ある日、娘が電気毛布の電源を切り忘れてたので「コンセントから抜いたら？」と指摘したら


**「じゃあトイレの電気を消さないママはブレーカー落とせ！！」**

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/da5e1c79-19f4-f756-7814-9c873a825a00.jpeg"width=50%>

ぐうの音もでず、すごすごと娘の部屋を退散。

**それはそう！**

全力でそれはそう。トイレの電気を消せない病気に罹ってるからね。
そんなこと娘には関係ない。
昔からトイレの電気を~~消さない~~消せない私に娘ふたりが四苦八苦していた。そう何年も戦ってくれていたのだ。
そして毎回彼女たちは惨敗していた。人生の「諦める」を母のトイレの電気で身に着けたのである。
トイレのドアに **「トイレの電気は消しましょう」** と貼られたこともある。張り紙は目に入らないんだよ。


## いよいよ何かしなくては！！

さすがに娘にブチ切れられると傷つく。だって女の子だもん。

そんなときにコチラを見つけました！

https://qiita.com/Ichiros_malt/items/bff24b1c964e854be9ec

同じ悩みを抱えている人がいるんだなぁとしみじみ。

力技でスイッチまで消している。脱帽だ👒

配線と力技すぎるのでもう少しスマートにしたいなぁ・・・
音鳴らせばいいんじゃないか！？
ブザーが鳴れば私も気づく！！

## そうだ！音鳴らそう！！
手元にいい感じにobnizがあるじゃないか！！
さっきの方もobniz使ってたし作ってみよう！

## 準備したもの
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/44e6dcb2-3edc-698b-3c36-115f65421615.png"width=30% alt="Obniz Board 1Y">
Obniz Board 1Y

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/27784f41-5bce-2f70-954a-f60e9159594b.png"width=30% alt="圧電スピーカー">
圧電スピーカー

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/bbc19044-eed9-7578-0fe1-f562c72f1ecf.png"width=30%>
左：照度センサー（CdSセル）　右：抵抗
ぐにゃぐにゃなのは私が戦った後だから

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/ab07cb6f-b344-f6ae-5074-00d5f385a284.png"width=30% alt="圧電スピーカー">
左：ミニブレッドボード　右：ブレッドボード・ジャンパーワイヤ

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/25a4be1e-3d20-fe2c-74b8-1eb048965022.png"width=30% alt="老眼鏡">
老眼鏡
もうおばさんは眼鏡なしでobnizの数字が見えないんだよ:eyeglasses:

## コード
```.js
const obniz = new Obniz("YOUR_OBNIZ_ID"); // Obniz_IDに自分のIDを入れます

obniz.onconnect = async function () {

  // 照度センサーの設定
  obniz.io0.output(true);  // io0電圧を5Vに（電源＋）
  obniz.io2.output(false); // io2電圧を0Vに（電源−）

  // スピーカーを利用
  const speaker = obniz.wired("Speaker", { gnd: 9, signal: 11 });

  // obnizディスプレイ（初期表示）
  obniz.display.clear();
  obniz.display.print('obniz Ready');

  let lightDetected = false;

  obniz.ad1.start((voltage) => {
    // 照度センサーの値が変わるたびに実行される
    console.log(`changed to ${voltage} v`);
    obniz.display.clear();
    obniz.display.print(`Light level: ${voltage} v`);

    // 照度が一定以上の場合
    if (voltage > 0.2 ) { // 2.5Vは例としてのしきい値
      if (!lightDetected) {
        lightDetected = true;
        // 30秒後に音を鳴らす
        setTimeout(() => {
          speaker.play(440); // 440Hzの音を鳴らす
          setTimeout(() => {
            speaker.stop();
          }, 3000); // 3秒間音を鳴らす
        }, 30000); // 30秒後に実行
      }
    } else {
      lightDetected = false;
    }
  });
}
```

30秒後に音をに鳴らすようにしているのは、トイレ実行中も電気がついているから。
用をたしている時に鳴っていたら落ち着かないので、終わってしばらくして鳴るようにしている。
人によってはこの秒数は変更できるけど、大の時はなり続けるからスマホで制御しよう。

## 接続図
![IMG_6748.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784193/20b23a76-db5b-3f37-670e-55ae5a8d38a3.png)

接続に関してはかなり悩んだ末、こちらのサイトを参考にさせていただきました！
ゆうやけこやけ萌え♡

https://qiita.com/PmanRabbit/items/371b2efebb7134efec9e

ちなヤクの私も東京音頭を流すようになろとう知らない人に誓った。

## 完成
<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">トイレの電気を消し忘れたらブザーがなるよ！<br>これで電気の消し忘れしないね！<a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/obniz?src=hash&amp;ref_src=twsrc%5Etfw">#obniz</a> <a href="https://t.co/TG4AEMh4TO">pic.twitter.com/TG4AEMh4TO</a></p>&mdash; のりまき (@n0rimaki_san) <a href="https://twitter.com/n0rimaki_san/status/1800367411977162807?ref_src=twsrc%5Etfw">June 11, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 結果と今後の展望
私の作業部屋がトイレから近いのもありブザーがよく聞こえる。
そう。聞こえるってことは消し忘れているってことだ。
音がなって消している私をみて娘は笑って許してくれた。
とても便利:heart_eyes:

ところどころに「ちなヤク」感を出しているのは私がちなヤクだからだ。
前述したように、ブザーでなく東京音頭を鳴らせるようになりたい。

今は電気がついて30秒後に鳴るので30秒過ぎたらイチイチ止めないといけない。
トイレの電気は消さないのに、用を足したら必ずトイレの蓋は閉めるので、距離センサーでトイレの蓋が閉まって、尚且つトイレの電気がついてたら東京音頭を鳴らせる設定にしたい。