<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>2022/12/25 on Yano&#39;s digital garage</title>
    <link>https://www.bravotouring.com/~yano/archives/2022/12/25/</link>
    <description>Recent content in 2022/12/25 on Yano&#39;s digital garage</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 25 Dec 2022 22:33:11 +0900</lastBuildDate>
    <atom:link href="https://www.bravotouring.com/~yano/archives/2022/12/25/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>IRKit改修</title>
      <link>https://www.bravotouring.com/~yano/diary/it/20221225_irkit.htm</link>
      <pubDate>Sun, 25 Dec 2022 22:33:11 +0900</pubDate>
      <guid>https://www.bravotouring.com/~yano/diary/it/20221225_irkit.htm</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20221212_irkit.htm&#34;&gt;先日&lt;/a&gt;、不調が確認された&lt;span class=&#34;Tradename&#34;&gt;IRKit&lt;/span&gt;。&lt;/p&gt;&#xA;&lt;table align=&#34;right&#34; class=&#34;Panorama&#34;&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;img alt=&#34;IRKitのサービスを終了しました。 2022-12-10追記&#34; src=&#34;https://www.bravotouring.com/~yano/images/2022/20221225_irkit.jpg&#34;/&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;PhotoMemo&#34;&gt;&lt;a href=&#34;https://maaash.jp/2022/04/deprecating-irkit/&#34;&gt;IRKitサービス終了しました - maaash.jp&lt;/a&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;症状としては&lt;blockquote&gt;どうやら自動制御系の&lt;span class=&#34;Tradename&#34;&gt;IRKit&lt;/span&gt;の操作ではなく、通常のリモコン操作がトリガーになっているようなので、IR受信→学習で落ちているような印象。&lt;/blockquote&gt;と書いたとおりなのだが、時期的に&lt;a href=&#34;https://maaash.jp/2022/04/deprecating-irkit/&#34;&gt;IRKitサービス終了&lt;/a&gt;と重なることに気づいた。&lt;/p&gt;&#xA;&lt;p&gt;試しに ping しても&lt;blockquote class=&#34;Log&#34;&gt;ping: unknown host deviceapi.getirkit.com&lt;/blockquote&gt;となる。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20220611_irkit.htm&#34;&gt;6月のLAN対応&lt;/a&gt;で適用した&lt;a href=&#34;https://github.com/acourreges/device/tree/settings-led-cloud/firmware&#34;&gt;device/firmware at settings-led-cloud&lt;/a&gt;はコメントに&lt;blockquote&gt;this option: the device won&#39;t send regular polling requests to the cloud server.&lt;/blockquote&gt;と書いてある通り、「irkit_http_loopでAPIサーバに繋がらなくても起動する」ようにした改造版。ブログにも&lt;blockquote cite=&#34;https://maaash.jp/2022/04/deprecating-irkit/&#34;&gt;サーバに接続しているIRKitの数を見てもそれらを通して赤外線信号を送っている人の数を見ても、0ではありませんが、そろそろ良いかな、という頃合いです。&lt;/blockquote&gt;と書かれているとおり、「IR受信→学習結果のアップロード」でもAPIサーバに赤外線信号を送っていて、それが&lt;span class=&#34;Warning&#34;&gt;送信エラー&lt;/span&gt;になった為にRebootしている可能性がある。&lt;/p&gt;&#xA;&lt;p&gt;IRKit.inoを確認したところ、on_ir_receiveからirkit_httpclient_post_messagesを呼んでいるが、それが&lt;span class=&#34;Warning&#34;&gt;送信エラー&lt;/span&gt;時にwifi_hardware_resetが叩いている事がわかったので、on_ir_receiveでirkit_httpclient_post_messagesを呼ばないように改修。&lt;/p&gt;&#xA;&lt;p&gt;config::useCloudControl自体見る必要もなくなったので、当該箇所を#ifdef CLOUD_CONTROLで無効化した&lt;a href=&#34;https://github.com/acourreges/device/tree/settings-led-cloud/firmware&#34;&gt;device/firmware at settings-led-cloud&lt;/a&gt;からの差分は以下の通り。&#xA;&lt;blockquote&gt;&#xA;$ git -b diff&lt;br/&gt;&#xA;diff --git a/firmware/src/IRKit/GSwifi.cpp b/firmware/src/IRKit/GSwifi.cpp&lt;br/&gt;&#xA;index b6ed100..97713bf 100644&lt;br/&gt;&#xA;--- a/firmware/src/IRKit/GSwifi.cpp&lt;br/&gt;&#xA;+++ b/firmware/src/IRKit/GSwifi.cpp&lt;br/&gt;&#xA;@@ -1093,7 +1093,7 @@ int8_t GSwifi::startLimitedAP () {&lt;br/&gt;&#xA;     command(PB(&#34;AT+NSET=192.168.1.1,255.255.255.0,192.168.1.1&#34;,1), GSCOMMANDMODE_NORMAL);&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;     // password area overwritten in factory&lt;br/&gt;&#xA;-    cmd = PB(&#34;AT+WPAPSK=IRKitXXXX,XXXXXXXXXX&#34;,1);&lt;br/&gt;&#xA;+    cmd = PB(&#34;AT+WPAPSK=IRKit41D9,&lt;span class=&#34;Warning&#34;&gt;工場出荷時パスワード&lt;/span&gt;&#34;,1);&lt;br/&gt;&#xA;     strcpy( cmd+10, hostname() );&lt;br/&gt;&#xA;     cmd[19] = &#39;,&#39;;&lt;br/&gt;&#xA;     command(cmd, GSCOMMANDMODE_NORMAL, GS_TIMEOUT_LONG);&lt;br/&gt;&#xA;diff --git a/firmware/src/IRKit/IRKit.ino b/firmware/src/IRKit/IRKit.ino&lt;br/&gt;&#xA;index 2351b59..870532f 100644&lt;br/&gt;&#xA;--- a/firmware/src/IRKit/IRKit.ino&lt;br/&gt;&#xA;+++ b/firmware/src/IRKit/IRKit.ino&lt;br/&gt;&#xA;@@ -234,6 +234,7 @@ void on_ir_receive() {&lt;br/&gt;&#xA;             IRLOG_PRINTLN(&#34;!E31&#34;);&lt;br/&gt;&#xA;             return;&lt;br/&gt;&#xA;         }&lt;br/&gt;&#xA;+#ifdef CLOUD_CONTROL&lt;br/&gt;&#xA;         int8_t cid = &lt;span class=&#34;Warning&#34;&gt;irkit_httpclient_post_messages();&lt;/span&gt;&lt;br/&gt;&#xA;         if (cid &gt;= 0) {&lt;br/&gt;&#xA;             if (config::ledFeedback &lt;= config::LED_QUIET) {&lt;br/&gt;&#xA;@@ -243,6 +244,14 @@ void on_ir_receive() {&lt;br/&gt;&#xA;                 color.off();&lt;br/&gt;&#xA;             }&lt;br/&gt;&#xA;         }&lt;br/&gt;&#xA;+#else // CLOUD_CONTROL&lt;br/&gt;&#xA;+        if (config::ledFeedback &lt;= config::LED_QUIET) {&lt;br/&gt;&#xA;+            FullColorLed::LightMode lightMode = (config::ledFeedback == config::LED_VERBOSE)? FullColorLed::BLINK_THEN_ON : FullColorLed::BLINK_THEN_OFF;&lt;br/&gt;&#xA;+            color.setLedColor( 0, 0, 1, lightMode, 1 ); // received: blue blink for 1sec&lt;br/&gt;&#xA;+        } else {&lt;br/&gt;&#xA;+            color.off();&lt;br/&gt;&#xA;+        }&lt;br/&gt;&#xA;+#endif // CLOUD_CONTROL&lt;br/&gt;&#xA;     }&lt;br/&gt;&#xA; }&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;@@ -315,6 +324,7 @@ void connect() {&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;     if (gs.isListening()) {&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;+#ifdef CLOUD_CONTROL&lt;br/&gt;&#xA;         if (!config::useCloudControl) {&lt;br/&gt;&#xA;             // No WAN access, we don&#39;t need to validate key, we&#39;re ready.&lt;br/&gt;&#xA;             IR_state( IR_IDLE );&lt;br/&gt;&#xA;@@ -332,6 +342,14 @@ void connect() {&lt;br/&gt;&#xA;                 on_irkit_ready();&lt;br/&gt;&#xA;             }&lt;br/&gt;&#xA;         }&lt;br/&gt;&#xA;+#else // CLOUD_CONTROL&lt;br/&gt;&#xA;+        // start mDNS&lt;br/&gt;&#xA;+        gs.setupMDNS();&lt;br/&gt;&#xA;+&lt;br/&gt;&#xA;+        // No WAN access, we don&#39;t need to validate key, we&#39;re ready.&lt;br/&gt;&#xA;+        IR_state( IR_IDLE );&lt;br/&gt;&#xA;+        on_irkit_ready();&lt;br/&gt;&#xA;+#endif // CLOUD_CONTROL&lt;br/&gt;&#xA;     }&lt;br/&gt;&#xA;     else {&lt;br/&gt;&#xA;         keys.dump();&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;diff --git a/firmware/src/IRKit/IRKitHTTPHandler.cpp b/firmware/src/IRKit/IRKitHTTPHandler.cpp&lt;br/&gt;&#xA;index a3dd2ce..69da8e0 100644&lt;br/&gt;&#xA;--- a/firmware/src/IRKit/IRKitHTTPHandler.cpp&lt;br/&gt;&#xA;+++ b/firmware/src/IRKit/IRKitHTTPHandler.cpp&lt;br/&gt;&#xA;@@ -482,6 +482,7 @@ void irkit_http_on_timer() {&lt;br/&gt;&#xA;&lt;br/&gt;&#xA; void irkit_http_loop() {&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;+#ifdef CLOUD_CONTROL&lt;br/&gt;&#xA;     if (!config::useCloudControl) {&lt;br/&gt;&#xA;         // Cloud control is currently disabled. No polling loop.&lt;br/&gt;&#xA;         return;&lt;br/&gt;&#xA;@@ -513,4 +514,7 @@ void irkit_http_loop() {&lt;br/&gt;&#xA;     if (TIMER_FIRED(suspend_polling_timer)) {&lt;br/&gt;&#xA;         TIMER_STOP(suspend_polling_timer);&lt;br/&gt;&#xA;     }&lt;br/&gt;&#xA;+#else // CLOUD_CONTROL&lt;br/&gt;&#xA;+     // Cloud control is currently disabled. No polling loop.&lt;br/&gt;&#xA;+#endif // CLOUD_CONTROL&lt;br/&gt;&#xA; }&lt;br/&gt;&#xA;diff --git a/firmware/src/IRKit/cert.h b/firmware/src/IRKit/cert.h&lt;br/&gt;&#xA;index cf6dcb3..01fc839 100644&lt;br/&gt;&#xA;--- a/firmware/src/IRKit/cert.h&lt;br/&gt;&#xA;+++ b/firmware/src/IRKit/cert.h&lt;br/&gt;&#xA;@@ -20,7 +20,7 @@&lt;br/&gt;&#xA; #include &#34;GSwifi_const.h&#34;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA; // deviceapi.getirkit.com&lt;br/&gt;&#xA;-prog_uchar der[] PROGMEM = {&lt;br/&gt;&#xA;+const char der[] PROGMEM = {&lt;br/&gt;&#xA;     ESCAPE, &#39;W&#39;,&lt;br/&gt;&#xA;     0x30, 0x82, 0x2, 0xed, 0x30, 0x82, 0x2, 0x56,&lt;br/&gt;&#xA;     0xa0, 0x3, 0x2, 0x1, 0x2, 0x2, 0x9, 0x0,&lt;br/&gt;&#xA;diff --git a/firmware/src/IRKit/config.h b/firmware/src/IRKit/config.h&lt;br/&gt;&#xA;index 2888117..89fa3f6 100644&lt;br/&gt;&#xA;--- a/firmware/src/IRKit/config.h&lt;br/&gt;&#xA;+++ b/firmware/src/IRKit/config.h&lt;br/&gt;&#xA;@@ -31,13 +31,13 @@ namespace config {&lt;br/&gt;&#xA;     } LedFeedbackProfile;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;     // Defines what kind of LED profile you want.&lt;br/&gt;&#xA;-    const LedFeedbackProfile ledFeedback = LED_QUIET;&lt;br/&gt;&#xA;+    const LedFeedbackProfile ledFeedback = LED_VERBOSE;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;     // Enables/disables cloud-control through the &#34;deviceapi.getirkit.com&#34; server.&lt;br/&gt;&#xA;     // If you use your IRKit device exclusively over your LAN, you can disable&lt;br/&gt;&#xA;     // this option: the device won&#39;t send regular polling requests to the cloud server.&lt;br/&gt;&#xA;     // This also lets you setup your device without internet access (no need for a valid device key).&lt;br/&gt;&#xA;-    const bool useCloudControl = true;&lt;br/&gt;&#xA;+    const bool useCloudControl = false;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA; }&lt;/blockquote&gt;&#xA;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
