編集履歴一覧に戻る
iijimaのアイコン画像

iijima が 2021年04月30日12時54分36秒 に編集

コメント無し

本文の変更

目的 夏期や高温時の暖房運転による熱中症を予防する 使い方 電源を入れる 1. webの画面に現在の天気や気温、おすすめのエアコン設定が表示される。 1. エアコンのリモコンにある停止、冷房、暖房、除湿を学習させる 1. 学習は基本的に初回のみ 1. モード切替でリモコンモードにする 1. 画面の好みのボタンを押す 1. 寒ければ冷房は体に良くない、暑ければ暖房は体に良くない、乾燥していれば除湿は良くないといった音声メッセージが流れる 部品 | 部品 | 金額 | |:---:|:---| | obniz 1Y | ¥6,930 | | IRModule | ¥935 | | TypeC対応電源| - | 設計図 ソースコード ```やさしいエアコンリモコン <html lang="jp"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <!--script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous" ></script--> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous" ></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" /> </head> <body> <h3 id="bploading" style="text-align:center;">LOADING...</h3> <div id="OBNIZ_OUTPUT"></div> <br /> <script src="https://unpkg.com/obniz@latest/obniz.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/iothome/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ui/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/clmtrackr.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/emotion_classifier.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/emotionmodel.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/model_pca_20_svm.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/storage/index.js" crossorigin="anonymous" ></script> <script> $("#bploading").text("RUNNING..."); (async function(){ var obniz, mode, iothomekit, crima_icon,temp, humidity, mode_label,recomend_label, disp,message; var button_stop, button_cooler, button_warmer, button_dry, mode_change, surbay, stop, cooler, warmer, dry; obniz = new Obniz('{xxxx-xxxx}');//obnizID await obniz.connectWait(); iothomekit = obniz.wired("IoTHomeKit",{}); /*weather_api*/ //現在の天気データ呼び出し let data = await (await fetch(

-

`http://api.openweathermap.org/data/2.5/weather?q=Tsukuba,JP&lang=ja&appid={your_key}`//weather API

+

`http://api.openweathermap.org/data/2.5/weather?q={ローマ字でお住いの地域名},JP&lang=ja&appid={your_key}`//weather API

)).json(); console.log(data); crima_icon = data.weather[0].icon; var image; humidity = data.main.humidity; image = new ObnizUI.Image('http://openweathermap.org/img/wn/'+crima_icon+'@2x.png', '100px'); temp = Math.round((data.main.temp-273.15)*10)/10; temp_label = new ObnizUI.Label('temp_label'); temp_label.setText(data.weather[0].description+'/気温:'+temp+'℃/湿度:'+humidity+"%"); recomend_label = new ObnizUI.Label('データが取れませんでした。'); if(temp < 20)message = '暖房がおすすめです'; if(temp > 25)message = '冷房がおすすめです'; if(humidity > 60 && temp > 25 && temp < 30)message = '除湿がおすすめです'; if(!message)message="エアコンつけなくてもいいかもね"; recomend_label.setText(message); /***************/ mode_label = new ObnizUI.Label('リモコンモード'); // mode_label.setText('リモコンモード'); disp = new ObnizUI.Label('label'); disp.setText(''); button_stop = new ObnizUI.Button('停止'); button_cooler = new ObnizUI.Button('冷房'); button_warmer = new ObnizUI.Button('暖房'); button_dry = new ObnizUI.Button('除湿'); mode_change = new ObnizUI.Button('モード切替'); stop = await ObnizUI.Util.loadFromStorage('signal_stop'); await ObnizUI.Util.wait(0); cooler = await ObnizUI.Util.loadFromStorage('signal_cooler'); await ObnizUI.Util.wait(0); warmer = await ObnizUI.Util.loadFromStorage('signal_warmer'); await ObnizUI.Util.wait(0); dry = await ObnizUI.Util.loadFromStorage('signal_dry'); await ObnizUI.Util.wait(0); /*どれか一つでも値が取れない場合は学習モードへ*/ if(stop && cooler && warmer && dry) mode = 1; else mode = 0; while (true) { await ObnizUI.Util.wait(0); if (mode_change.isClicked()) { if(mode == 1)mode = 0; else mode = 1; } /*リモコンの信号を学習する*/ if (mode == 0) { //どれが設定されていないか表示*/ mode_label.setText('学習モード'); var not_set; if(!stop)not_set ='【停止】'; if(!cooler)not_set +='【冷房】'; if(!warmer)not_set +='【暖房】'; if(!dry)not_set +='【除湿】'; if(not_set)disp.setText(not_set+'が設定されていません'); if (button_stop.isClicked()) { await ObnizUI.Util.saveToStorage('signal_stop',((await iothomekit.getIrWait()))); stop = await ObnizUI.Util.loadFromStorage('signal_stop'); disp.setText('停止の信号を設定しました'); } if (button_cooler.isClicked()) { await ObnizUI.Util.saveToStorage('signal_cooler',((await iothomekit.getIrWait()))); cooler = await ObnizUI.Util.loadFromStorage('signal_cooler'); disp.setText('冷房の信号を設定しました'); } if (button_warmer.isClicked()) { await ObnizUI.Util.saveToStorage('signal_warmer',((await iothomekit.getIrWait()))); warmer = await ObnizUI.Util.loadFromStorage('signal_warmer'); disp.setText('暖房の信号を設定しました'); } if (button_dry.isClicked()) { await ObnizUI.Util.saveToStorage('signal_dry',((await iothomekit.getIrWait()))); warmer = await ObnizUI.Util.loadFromStorage('signal_dry'); disp.setText('除湿の信号を設定しました'); } } if (mode == 1) { mode_label.setText('リモコンモード'); if (button_stop.isClicked()) { iothomekit.irSend(stop); await _ai.say('停止します'); $("body").css("background-color","rgb(255,255,255)")//停止時は画面を白くする disp.setText('停止中'); } if (button_cooler.isClicked()) { iothomekit.irSend(cooler); await _ai.say('冷房をかけます'); if(temp<20)await _ai.say('気温が20度を下回っています。冷房の運転は体によくありません。'); $("body").css("background-color","rgb(0,0,255)")//冷房使用時は画面を青くする disp.setText('冷房中'); } if (button_warmer.isClicked()) { iothomekit.irSend(warmer); await _ai.say('暖房をかけます'); if(temp>25)await _ai.say('気温が25度を越えています。暖房の運転は体によくありません。'); $("body").css("background-color","rgb(255,0,0)")//暖房使用時は画面を赤くする disp.setText('暖房中'); } if (button_dry.isClicked()) { iothomekit.irSend(warmer); await _ai.say('除湿にします'); if(humidity<50)await _ai.say('湿度が40%を下回っています。乾燥のし過ぎは体によくありません。'); $("body").css("background-color","rgb(238, 247, 111)")//除湿時は画面を黄色くする disp.setText('除湿中'); } } } })(); </script> </body> </html> ```