2017-04-24 1 views
2

次のトラブルシューティングに役立つ必要があります。私は本当にシンプルなプログラムをTCPコマンドを送信して、私のラップトップからイエローのRGB光にjsonデータを送信しますが、ラズベリーパイからは送信しません。TCP JSONコマンドが届かない

import java.io.*; 
import java.net.*; 

class TCPClient 
{ 
     public static void main(String args[]) throws Exception 
     { 
       String modifiedSentence; 
       Socket clientSocket = new Socket(args[0], 55443); 
       DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
       PrintWriter printWriterw = new PrintWriter(outToServer); 
       BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
       String command = "{\"id\":1,\"method\":\"set_rgb\",\"params\":[13631232, \"smooth\", 500]}"; 
       printWriterw.println(command); 
       printWriterw.flush(); 
       modifiedSentence = inFromServer.readLine(); 
       System.out.println("FROM SERVER: " + modifiedSentence); 
       clientSocket.close(); 
     } 
} 

また、私は私のラップトップのIPに同じメッセージを送信および受信することができる場合ので、私は見ることができます私のラップトップ上のTCPServerのとして動作するプログラムを持っています。

RPI、ラップトップ、Yeelight - >すべて同じネットワーク内

  • Yeelight IPadressのラップトップ上のプログラム上で実行 - Yeelight IPadressにRPI上のプログラム以上>成功
  • 実行 - >は、応答を待って続けて、タイムアウト。
  • Yeelight IPadressのラップトップ上のプログラム上で実行 - ラップトップIPadressにRPI上のプログラム以上>成功
  • 実行 - ノートパソコンのローカルホストへのラップトップ上のプログラム上の>成功(JSONが到着した場合だけチェック)
  • 実行 - >成功受け取りますメッセージはまったく同じです。
  • yeelight IP +ポートにJSONを送信するためにRPIでTelnetを使用して - >成功...

本当に失わイム私のRPIから実行しているときに、プログラムが動作していない理由について。

誰かが助けてくれることを願っています。

答えて

1

私はこの問題がprintln関数にあると考えています。 yeelight用のオープンAPIでは、コマンドの末尾には\r\nが必要です。これは、あなたのラップトップで使用していると思われるWindowsマシンではデフォルトですが、ラズベリーパイはおそらく\nという改行を行うLinuxでしょう。 println()の代わりに手動で\r\nをコマンドに追加します。私はこれがあなたの問題を解決すると信じています。

yeelight APIについて

ドキュメントがここに発見された:参考

http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdfそれはすべてのメッセージは、TCP接続上で定義された JSON形式で配信されなければならないと、個々のメッセージがでなければならない」と述べ、8ページの

"\r\n"で終了しました。 "

+0

ちょうどこの小さなホビープロジェクトを続けました。ありがとう、これは解決策でした!今私のエネルギー消費量はRGBの光の値になっています! – Snuur

関連する問題