我需要帮助排除以下问题。我有一个非常简单的程序发送TCP命令,成功地从我的笔记本电脑发送json数据到我的Yeelight RGB光,但不是来自树莓派。
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();
}
}
我的笔记本电脑上还有一个充当TCPServer的程序,所以我可以看看是否可以向笔记本电脑ip发送和接收相同的消息。
Rpi,笔记本电脑,Yeelight - >所有在同一个网络
我真的迷失了为什么程序在从我的RPI运行时无效。
希望有人可以提供帮助。
答案 0 :(得分:1)
我认为问题在于println功能。 yeelight的开放API声明命令的结尾必须有\r\n
。这是Windows机器上的默认设置(我猜你在笔记本电脑上使用它),但是raspberry pi可能是linux,它仅使用\n
进行换行。而不是println(),手动将\r\n
附加到命令。我相信这会解决你的问题。
供参考:
yeelight API的文档可在此处找到:http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf
在第8页上,它指出“所有消息必须以定义的方式传递
TCP连接上的JSON格式和每条消息都必须以
“\r\n
”“。