洗濯機と乾燥機1台ずつに設置したセンサーBOXは、一定以上の電流が流れていればLow、以下ならHighの電圧を出力する単純な構造になっています。これは、使用しているセンサーが磁気を検知するとLowになるタイプなためで、信号用のGPIOをプルアップの設定にして使用しています。洗濯機や乾燥機は電源を入れた時から終わるまで常に一定以上の電流が流れ続けないため、機械が動作中のセンサーBOXの出力はLowとHighを繰り返しています。試行錯誤をしてみましたが、結局最終的に落ち着いた方法は一番単純なタイムアウト方式でした。センサーBOXの出力がLow(ON)になったら開始と判定して、一定時間High(OFF)のままの状態が続いたら終了と判定するようにしています。コマンドライン引数プログラム構造を単純化させるため、センサーBOX毎に同一のセンサーアプリを動かすようにしました。固有の情報はコマンドライン引数で次のように与えます。タイムアウト分数ビルIDとフロアIDとマシンIDはクラウドへのリクエストに使用する情報です。電源ピン番号と信号ピン番号は繋いだセンサーBOX用で、センサーは消費電流が少ないので電源ピン番号のGPIOをHighにして電源として利用しています。タイムアウト分数は終了判定用で、このシェアハウスでは洗濯機の場合は8分、乾燥機の場合は1分に設定しています。クラウドへのリクエストセンサーアプリが開始と判定したときと、タイムアウトして終了と判定したときにクラウドに開始か終了のリクエストを送信しています。開始と判定したときのリクエストhttps://HEROKU_URL/ビルID/フロアID/マシンID/1/終了と判定したときのリクエストhttps://HEROKU_URL/ビルID/フロアID/マシンID/0/リクエストを送信する関数では、ネットワーク障害などでリクエストに失敗したときのためにリトライを行うようにしています。今はリクエストに失敗すると6秒待ってから再送信する動作を10回繰り返して、それでも送信できなかった場合はログにエラーを記録するようにしています。Reminderを導入してみたい!興味がある!という方は、プロフィール欄のメールアドレスにお問い合わせください。miniの粗悪品に注意!ESP8266月別アーカイブはてなブログをはじめよう!IntellectualCuriosityさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。