赤外線情報長過ぎ #1

Closed
aiisu opened this Issue Jul 9, 2016 · 5 comments

Comments

Projects
None yet
2 participants
@aiisu

aiisu commented Jul 9, 2016

本当にエラーが起きました。
こういう場合はどうすればよいですか?

@senyoltw

This comment has been minimized.

Show comment
Hide comment
@senyoltw

senyoltw Jul 10, 2016

Owner

赤外線情報が長い場合は以下の対応策があります。

  1. 赤外線を取得するとき、リモコンのボタンを短く押す。
    リモコンから赤外線情報を取得するとき数秒間押しているなら、ボタンを押してすぐに離して下さい。
    そうすることでリモコンは機器に命令する最低限の信号だけ送るはずです。それ以降は無意味な信号の場合が多いです。
  2. 取得した赤外線情報を削る
    リモコンから取得した赤外線情報は後半同じ数字がループしていないでしょうか。先ほど説明したようにリモコンの赤外線情報は不要な場合があるので削って試してみてください。
  3. curlコマンドをシェルスクリプトにしてhomebridge-cmdで叩く
    どうしても無理かつ、irkitをcurlで叩いた時は成功するのであれば、homebridge-cmdにオン、オフのシェルスクリプトを書いて登録して下さい。curlで叩いた時と同条件にてコマンドが実行されるはずなので成功すると思います。
    https://github.com/senyoltw/homebridge-cmd

もし赤外線情報が長い場合に失敗する理由が判明し、プログラムの修正が出来たならば是非Pull Requestをお願いします。

よろしくお願いします。

Owner

senyoltw commented Jul 10, 2016

赤外線情報が長い場合は以下の対応策があります。

  1. 赤外線を取得するとき、リモコンのボタンを短く押す。
    リモコンから赤外線情報を取得するとき数秒間押しているなら、ボタンを押してすぐに離して下さい。
    そうすることでリモコンは機器に命令する最低限の信号だけ送るはずです。それ以降は無意味な信号の場合が多いです。
  2. 取得した赤外線情報を削る
    リモコンから取得した赤外線情報は後半同じ数字がループしていないでしょうか。先ほど説明したようにリモコンの赤外線情報は不要な場合があるので削って試してみてください。
  3. curlコマンドをシェルスクリプトにしてhomebridge-cmdで叩く
    どうしても無理かつ、irkitをcurlで叩いた時は成功するのであれば、homebridge-cmdにオン、オフのシェルスクリプトを書いて登録して下さい。curlで叩いた時と同条件にてコマンドが実行されるはずなので成功すると思います。
    https://github.com/senyoltw/homebridge-cmd

もし赤外線情報が長い場合に失敗する理由が判明し、プログラムの修正が出来たならば是非Pull Requestをお願いします。

よろしくお願いします。

@senyoltw senyoltw closed this Jul 10, 2016

@senyoltw senyoltw reopened this Jul 10, 2016

@aiisu

This comment has been minimized.

Show comment
Hide comment
@aiisu

aiisu Jul 11, 2016

驚いた返事ですね。ご丁寧にありがとうございます。
今の場合は、しばらくおっしゃったhomebridge-cmdを使用しています。それは問題ありません。
僕にとって、赤外線情報はなかなか難しくて時間がかかりますから、一旦やめました。
最近少々忙しくなったので、もし時間があれば改めて試しております。
よろしくお願いします。

aiisu commented Jul 11, 2016

驚いた返事ですね。ご丁寧にありがとうございます。
今の場合は、しばらくおっしゃったhomebridge-cmdを使用しています。それは問題ありません。
僕にとって、赤外線情報はなかなか難しくて時間がかかりますから、一旦やめました。
最近少々忙しくなったので、もし時間があれば改めて試しております。
よろしくお願いします。

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jul 16, 2016

横から失礼します。
curlでは成功するのにこのプログラムだと失敗するので、IRKitの仕様上どうにもできないものではなく、改善策があるだろうと思って、友人の助けを借りていろいろ試行錯誤してみたのですが結局解決はできませんでした。
ですが、もしかすると誰かがこの情報によって解決策を見つけてくださるのではないかという淡い期待を込めて試した内容を記載しておきます。

TCPで待機して受け取ったデータ吐くだけのサーバーを実行して出力を確認(dataの中身は消してあります)すると、

irkit公式サイトにあるcurlを叩いた場合

---------- data start ----------
POST /messages HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.49.0
Accept: */*
X-Requested-With: curl
Content-Length: 1749
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue


---------- data end ------------
---------- data start ----------
{"format":"raw","freq":38,"data":[]}
---------- data end ------------

このプログラムを実行した場合

---------- data start ----------
POST /messages HTTP/1.1
X-Requested-With: curl
host: localhost:8080
content-type: application/x-www-form-urlencoded
content-length: 1749
Connection: close

{"format":"raw","freq":38,"data":[]}
---------- data end ------------

curlではHTTPリクエストがheader部分とbody部分に分割されているが、このスクリプトでは分割されていません。
もしかするとcurlのように分割することで最大受信容量を下回って扱えるようになるのではないか…?という仮定を立てましたが検証できていません。
可能性としては高そうな気がするのですが私にはうまくできませんでした。
丸投げで申し訳ないのですが可能であればどなたか確認してくださると助かります。

ghost commented Jul 16, 2016

横から失礼します。
curlでは成功するのにこのプログラムだと失敗するので、IRKitの仕様上どうにもできないものではなく、改善策があるだろうと思って、友人の助けを借りていろいろ試行錯誤してみたのですが結局解決はできませんでした。
ですが、もしかすると誰かがこの情報によって解決策を見つけてくださるのではないかという淡い期待を込めて試した内容を記載しておきます。

TCPで待機して受け取ったデータ吐くだけのサーバーを実行して出力を確認(dataの中身は消してあります)すると、

irkit公式サイトにあるcurlを叩いた場合

---------- data start ----------
POST /messages HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.49.0
Accept: */*
X-Requested-With: curl
Content-Length: 1749
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue


---------- data end ------------
---------- data start ----------
{"format":"raw","freq":38,"data":[]}
---------- data end ------------

このプログラムを実行した場合

---------- data start ----------
POST /messages HTTP/1.1
X-Requested-With: curl
host: localhost:8080
content-type: application/x-www-form-urlencoded
content-length: 1749
Connection: close

{"format":"raw","freq":38,"data":[]}
---------- data end ------------

curlではHTTPリクエストがheader部分とbody部分に分割されているが、このスクリプトでは分割されていません。
もしかするとcurlのように分割することで最大受信容量を下回って扱えるようになるのではないか…?という仮定を立てましたが検証できていません。
可能性としては高そうな気がするのですが私にはうまくできませんでした。
丸投げで申し訳ないのですが可能であればどなたか確認してくださると助かります。

@senyoltw

This comment has been minimized.

Show comment
Hide comment
@senyoltw

senyoltw Jul 23, 2016

Owner

7862d24

赤外線が長い場合にエラーになるバグに対応しました。
requestモジュールで書くとエラーになってしまうので、nodeのhttpモジュールで通信部分を書き直しました。

よって、今回からconfig.jsonに書く内容が少し変更になります。
"irkit_url": "http://irkitxxxxx.local/messages"
ではなく
"irkit_host": "irkitxxxxx.local"
とirkitのDNS名、もしくはIPアドレス『のみ』記載してください。

また、見つけていないプログラムのミスもあるかもしれないのでnpmjs.comの方のパッケージはしばらく古いバージョンのままにします。
対応版のパッケージをインストールするには次のコマンドでインストールしてください。

sudo npm uninstall -g homebridge-irkit
sudo npm install -g https://github.com/senyoltw/homebridge-irkit.git

1、2週間使ってみて問題なければnpmjs.comの方にも反映させます。

Owner

senyoltw commented Jul 23, 2016

7862d24

赤外線が長い場合にエラーになるバグに対応しました。
requestモジュールで書くとエラーになってしまうので、nodeのhttpモジュールで通信部分を書き直しました。

よって、今回からconfig.jsonに書く内容が少し変更になります。
"irkit_url": "http://irkitxxxxx.local/messages"
ではなく
"irkit_host": "irkitxxxxx.local"
とirkitのDNS名、もしくはIPアドレス『のみ』記載してください。

また、見つけていないプログラムのミスもあるかもしれないのでnpmjs.comの方のパッケージはしばらく古いバージョンのままにします。
対応版のパッケージをインストールするには次のコマンドでインストールしてください。

sudo npm uninstall -g homebridge-irkit
sudo npm install -g https://github.com/senyoltw/homebridge-irkit.git

1、2週間使ってみて問題なければnpmjs.comの方にも反映させます。

@senyoltw

This comment has been minimized.

Show comment
Hide comment
@senyoltw

senyoltw Aug 9, 2016

Owner

npmjs.comのパッケージを更新しました。

sudo npm uninstall -g homebridge-irkit
sudo npm install -g homebridge-irkit

で対応版がインストールできます。

特に問題なければクローズします。

Owner

senyoltw commented Aug 9, 2016

npmjs.comのパッケージを更新しました。

sudo npm uninstall -g homebridge-irkit
sudo npm install -g homebridge-irkit

で対応版がインストールできます。

特に問題なければクローズします。

@senyoltw senyoltw closed this Aug 11, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment