46yomu が 2021年05月11日17時54分55秒 に編集
初版
タイトルの変更
冷蔵庫の食材在庫量の定期通知装置
タグの変更
obniz
冷蔵庫
メール送信
メイン画像の変更
本文の変更
1. デモ動画 [冷蔵庫の食材在庫量の定期通知装置](https://youtu.be/AxmmwP0bPNw) 1. 概要 冷蔵庫の扉に冷蔵庫の中にあるもの(在庫)を表示させ、それを毎日決まった時間にメールで送信し、食材の在庫量を通知する装置 1. 作成した理由 職場の近くに、安いスーパーがあるので、何か買うものがあるのかを毎回妻にLINEで聞いているが、冷蔵庫にある食材の量をトグルスイッチの3状態を入力として切り替え、フルカラーLEDで表示し、冷蔵庫の扉を開けずとも分かり、外出先でも、毎日、その情報がメールで得られて買い物リストとしても使えると考えた。 1. 装置の動き あらかじめ、よく食べる物のリスト(卵、ヨーグルト、葉物野菜、根菜、豆腐など)を作り、リストの横にトグルスイッチとフルカラーLEDを備え付ける。 トグルスイッチで、LEDが青色、緑色、赤色とLEDの色が切り替わり、青色だと冷蔵庫にまだある、緑色だともう少し、赤色だと無いことを意味し、冷蔵庫を開けずとも、中にあるものの状況が分かるようにする。 そして、毎日16:15に、食材在庫量をメールで、通知する。 1. 部品表 | 部品名 | 型番 | メーカー名 | 個数 | |:---:|:---:|:---:|:---:| | obniz Board Y1 | obniz009 | obniz | 1| | フルカラーLED | NESM026DT-RGB-R-T | 日亜化学工業 | 4 | | トグルスイッチ | 2UD3-T1-A1-M2-R-E | Linkman | 4 | | 抵抗330Ω | - | - | 16 | | 抵抗220Ω | - | - | 4 | | ユニバーサル基板 | ICB-293V | サンハヤト | 1 | 1. 設計図 ![キャプションを入力できます](https://camo.elchika.com/e811618e67fee7329d1be6d097f18267f062f7de/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31643238303130372d663332352d346662302d386165332d3361303033656362356238372f65356338623065332d326662352d346131612d386564332d613430323039396138626130/) ※トグルスイッチはON(1-3)-OFF(3)-ON(2-3)の接続となります。 ※obnizの入力1~4の電圧は、RGBのダイオードのVfの電圧が異なることにより、 3色の点灯状態をAD変換で判別します。 1. ソースコード ```obniz:冷蔵庫の食材在庫量の定期通知装置 <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script> <script src="https://smtpjs.com/v3/smtp.js"></script> </head> <body> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); // obniz id var obniz, state, egg, soy_milk, leaf, yogurt; //冷蔵庫にあるものリスト 値格納用 var message1; //メールで送る文章格納用 state =0; egg =0; soy_milk=0; leaf=0; yogurt=0; obniz.onconnect = async function() { //トグルスイッチの2端子の電圧をADで取り込み、物がある(LED 青点灯)/もう少し(LED 緑点灯)/ない(LDE 赤点灯)のどの状態かを判別する function read_ad_input(ad_val) { let level; if(ad_val > 0.45){ //電圧0.45V以上 : ない(LDE 赤点灯) level = "無かよ😫"; } else{ if(ad_val > 0.25){ //電圧0.25V~0.45V : もう少し(LED 緑点灯) level = "少ししかなか😧"; } else{ //電圧0.25V以下 : 物がある(LED 青点灯) level = "あるばい😊"; } } return level; //判定した結果のメール文章を返す(福岡市在住のため、博多弁にしとっと) } obniz.display.print("冷蔵庫"); obniz.display.print("残り状態取得"); await obniz.wait(2000); //トグルスイッチの2端子の電圧をADで取り込み値を格納する egg = (await obniz.ad1.getWait()); // 卵の残り状態取得 soy_milk = (await obniz.ad2.getWait()); //豆乳の残り状態取得 leaf = (await obniz.ad3.getWait()); //葉物野菜の残り状態取得 yogurt = (await obniz.ad4.getWait()); //ヨーグルトの残り状態取得 //メールで送信する文章の作成 message1 = "卵 : " + read_ad_input(egg) +'\r\n' + "豆乳 : " + read_ad_input(soy_milk) + '\r\n' + "葉物:" + read_ad_input(leaf) + '\r\n' + "ヨーグルト:" + read_ad_input(yogurt) + '\r\n'; await obniz.wait(2000); obniz.display.clear(); obniz.display.print("メール送信完了"); obniz.display.print(""); Email.send({ Host : "**********", //SMTPアドレス Username : "**********@gmail.com", //送信元メールアドレス Password : "**********", //送信元メールのパスワード To : '**********@**********', //送信先メールアドレス From : "**********@gmail.com", // Subject : "冷蔵庫からお知らせ", //メールの件名 Body : message1 //メールの文章 }).then( // message => alert(message1) ); await obniz.wait(2000); obniz.display.clear(); obniz.display.print("送信しました"); obniz.display.print(""); //obniz.display.print(message1); await obniz.wait(2000); if(typeof done === "function") { done(); } } </script> </body> </html> ``` 1. obnizのアプリ設定 毎日定期的に冷蔵庫の食材在庫量をメールで送信するため、obnizのアプリ設定をした。 ![キャプションを入力できます](https://camo.elchika.com/0bbc3c3fed1e75819c20c4bcbf018117b747dcfe/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31643238303130372d663332352d346662302d386165332d3361303033656362356238372f37363161303361392d623834332d343130372d393937312d323433656538353938363966/) 1. 参考 メール送信のために、SmtpJS.comを使用しました。 [SmtpJS.com](https://smtpjs.com/)