YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-03-20 (水)


[一語一絵/IT系]

IRKit再改修 / 2022-12-31 (土)

最近auひかり方面のルーターASUS RT-AX3000からDHCPでアドレスが降ってこないケースが目立つようになってきたので、年明けのルーター交換を視野にIR受信結果のアップロードを首絞めしたIRKitのWiFi接続先も変えておこうかな、とRESETスイッチを長押ししてファクトリーリセット

IRKitのサービスを終了しました。 2022-12-10追記
[External]IRKitサービス終了しました - maaash.jp

…したところ、iPhoneアプリからのWiFi接続設定を行っても"インターネットに接続してください"と表示されて、何度やっても設定できなくなった。

「しまったー、ここでも[External]IRKitサービス終了が効いているのか…」と思ったが"あとの祭り"というやつだ。

大晦日夕方の失態に軽く焦りつつ、どうしたもんかと[External]Device HTTP APIを眺めたところ、curlで"POST /wifi"すれば設定できるという事はわかった。

ただ、SSIDなどをシリアライズするのもちょっと面倒なので、それならファームウェアを直接書き換える方が早いかも?と思ってIRKit.inoを確認したところ、connect関数の

309     if (keys.isWifiCredentialsSet()) {
310         if (config::ledFeedback < config::LED_OFF) {
311             color.setLedColor( 0, 1, 0, FullColorLed::BLINK_THEN_ON ); // green blink: connecting
312         }
313
314         gs.join(keys.getSecurity(),
315                 keys.getSSID(),
316                 keys.getPassword());
315     }
あたりのgs.joinでWiFi接続しているのが確認できたので、単刀直入にgs.joinの引数をハードコードしてしまおうかと思ったのだが、isWifiCredentialsSetなどkeysクラスの実装を眺めてみるとそれだけでは済まないような気がしてきた。

代わりにkeys.set関数でSSIDなどをEEPROMに書き込む方向で試行錯誤してみたところ、これでも問題無くWiFi接続できたので、結局RESETスイッチ長押し契機のlong_pressed関数でkeys.setするように改修。

[External]device/firmware at settings-led-cloudからの差分は以下の通り。

$ git -b diff
diff --git a/firmware/src/IRKit/IRKit.ino b/firmware/src/IRKit/IRKit.ino
index 2351b59..81a6614 100644
--- a/firmware/src/IRKit/IRKit.ino
+++ b/firmware/src/IRKit/IRKit.ino
@@ -169,6 +169,12 @@ void long_pressed() {
     color.setLedColor( 1, 0, 0, FullColorLed::ALWAYS_ON ); // red: error

     keys.clear();
+#ifndef CLOUD_CONTROL
+    keys.set(GSSECURITY_WPA2_PSK,
+             PB("SSID",1),
+             PB("PASSWORD",2));
+/*  keys.setKey(P("5284CF0D43994784897ECAB3D9935498")); */
+#endif // CLOUD_CONTROL
     keys.save();
     software_reset();
}

年越し前にミスを帳消しにできて良かった。

【参照】
●Eleclog. https://eleclog.quitsq.com/
ミニマルなIRKitクローンを作ってiOSから家電を制御する 2016年9月20日
●AkiCart https://aki.prioris.jp/
ESP-WROOM-02でミニマルなIRKitクローンを作る
●IRKit http://getirkit.com/
Device HTTP API
Internet HTTP API
●maaash.jp https://maaash.jp/
IRKit Internet HTTP APIと販売開始に向けて 2014年1月
IRKitリリース!そして再入荷予定について 2014年1月
IRKitの脆弱性とファームウェアアップデートのお願い 2015年9月
Nature RemoのKickstarterを開始しました 2016年5月
IRKitサービス終了(そろそろ) 2022年4月23日 【2022年12月10日追記】
●ICT備忘録 http://category7.blog.fc2.com/
IRKit の LEDの光 と Cloud Serverへのアクセス をオフにしてみた。 2015年8月15日
●GitHub https://github.com/
IRKit
irkit/device: Infrared-WiFi-HTTP bidirectional proxy device
acourreges/device: Infrared-WiFi-HTTP bidirectional proxy device
●Wikipedia https://ja.wikipedia.org/wiki/
Arduino
マルチキャストDNS
Bonjour