前の記事で紹介したように、ArduinoとFlashairを連携させて、部屋の気温と湿度を外出先からモニタすることができるようになりました。そこで、次の段階として外出先からエアコンのスイッチを押すことを考えました。
GPIOモードを使えない
ちょうどFlashairにはGPIOに対応するピンが備わっているので、これを使ってエアコンのスイッチのオン・オフの動作を行おうと考えました。そこで、Flashair IoT HubからGPIOを早速制御してみたのですが、実行できず失敗になってしまいました。どうやら、ArduinoによってSD.begin()でSDカードを初期化すると、PIOモードにすることができなくなってしまうことが原因のようです。SDカードを初期化しなければいいのですが、それでは計測値をcsvファイルに書き込むことができなくなってしまいます。計測値を記録したcsvファイルをIoT Hubにアップロードすることで気温と湿度をモニタしている現状では、GPIOを使用してスイッチを動作させることはできないということがわかりました。
ファイルを操作できない
そこで、次はIoT Hubからluaスクリプトを実行して、SDカード内にオン・オフの情報をもったファイルを作成することを試しました。既存のテキストファイルにオン・オフという文字列を書き込むことをまず考えましたが、Arudinoでファイルの中身を読み込むとWiFiが落ちるので、却下しました。
ファイルを作成あるいはリネームでオン・オフを表現しようとしましたが、fa.rename()やio.open()を実行してもファイルが作成されなかったり、ファイル名が変更されませんでした。調べたところ、ファイルをアップロードしたりするには、ホスト機器(私の例だとArduino)からのSDカードへの書き込みをストップしないとダメで、一度ストップしたらシステムを再起動するまで再びホスト側からSDカードへ書き込みをすることはできないようです。ということで、ファイル操作を行うこともあきらめざるをえませんでした。
まとめ
FlashairとArduinoを組み合わせて色々なものを遠隔操作しようと考えていましたが、簡単にはいかないようです・・・
もう少し調べてみて、何か別の方法がないか色々と調べてみようと思います。今のところ、共有メモリを使えば実現できないかと考えています。