さて、課題2にチャレンジ。
こちらを参考に、自分でもトライ。C言語は、遠い昔に触っていたけど、C++は具体的には触っておらず...今から、参考書を開いて修得して...そこから、やっと Lチカ じゃ、流石に大変すぎる。ありがたいことに、上記のブログで、C++のソースにフルでコメントをつけてくれているので、まぁ雰囲気はわかる。じゃ、実際にやってみて、C++は使いながら修得できるか?
Arudino IDEから、ライブラリである HomeSpan を導入。現在は 2.1.2 で、無事にインストール完了。
Arudino IDEに、ブログのコードをコピペしてとりあえず、コンパイル...で、エラー。「Compilation error redefinition of void setup ()」あんだって?ウェブで調べると、「setup()」が再定義されているから怒られているらしい。そんなバカな...あ、最初の Lチカ とは別に動かしたかったから、Aruduino IDE上に新しいタブを作ってソースをコピペしたけど、これがダメらしい。
で、コンパイル...成功かと思いきや、またもエラー。次は、具体的なメッセージをメモし忘れたけど、コードが大きすぎて入らないけど...みたいな。サンプルは数行のソースなんだけど、実際には Apple Home Kit のためのライブラリである HomeSpan がインクルードされているので、ダメっぽい。で、これもよくある事態のようで、解決策は IDEの ツール > PartitionScheme を HugeApp に変更する(最初は、一番上のデフォルトだったかな)。
さぁ、うまくいってくれ...「Compilation error: 'static void* SpanService::operator new(size_t)' is inaccessible within this context」たはー、上手くいかねぇな。ブログのコードは、Serviceクラスを継承して、LEDをオン/オフするクラスを新しく定義しているんだけど、その新しいクラスから、親クラスのメソッドにアクセスできないってことらしい。で、ウェブの知恵を参考に、クラス定義を
class LEDtester : Service::LightBulb ...
から、
class LEDtester : public Service::LightBulb ...
に変更すると...うまくいった!! 勝手に public にしちゃっていいのかわかってないけど...。で、Aruduino IDEのシリアルモニタに、ポート番号とボーレート(なんだか、懐かしいな)を設定してあげると、WiFiの設定ができるようになってる。ESP32のWiFi機能を使って、部屋のWiFi環境をスキャンして、適切なSSIDを選んで、パスワードを入れてあげたら、通信できるようになったみたい。さらに「S <code>」コマンドで、iPhone上のHomeアプリとペアリングするための8桁の数字コードを設定する。設定に成功すると、シリアルモニタ上に、「X-HM://hogehoge」といったURLがでるので、これを
のようなアプリを経由してQRコードにしてあげると、iPhoneのHomeアプリから簡単に登録ができる。iPhoneで単に Lチカ できるだけなんだけど、とても満足のいく課題でした。
