微信小程序如何控制树莓派,今天我将分享一下我的学习过程。
我是使用javaweb做后台和树莓派建立的联系。微信小程序肯定不能直接控制树莓派,需要通过向后台发起请求,后台在处理请求同时与树莓派交互。
下面我用一个例子讲解整个过程(控制电灯的开和关):
1:微信小程序发起请求
微信小程序的js的代码:(我这里将后台部署在服务器了,所以请求的URL就是服务器的域名地址)
navigateTo(){
wx.request({
url: 'https://www.lined5530.top/lg/sshlinuxController/jqcontrol',
data: {
com: "python high.py"//给树莓派发送的shell命令,就是linux下的命令
},
success: function (res) {
var me = res.data.mess
console.log(me)
}
})
},
navigateTo1(){
wx.request({
url: 'https://www.lined5530.top/lg/sshlinuxController/jqcontrol',
data: {
com: "python high1.py"
},
success: function (res) {
var me = res.data.mess
console.log(me)
}
})
},
2:Java后台接受参数同时后台向树莓派发送指令:
因为树莓派的系统是linux,我这里使用的jsch.jar包(这是重点,也是建立树莓派与Java交互的基础),通过这个jar包就可以和树莓派进行通信了。如何使用,我下面将附上代码,更详细的大家需要查阅这个jar的api
下面就是Java和树莓派交互的代码:
@RequestMapping("requestdata")
@ResponseBody
public JSONObject requestdata(@RequestParam("com") String command) throws JSchException, IOException {
System.out.println("测试"+command);
//设置登录树莓派的参数
String user="pi";
int port =22;
String host="192.168.0.103";
String password="raspberry";
JSch jsch = new JSch();
//建立连接
Session session = jsch.getSession(user, host, port);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
//远程操作树莓派
channelExec.setCommand(command);
channelExec.setErrStream(System.err);
InputStream in = channelExec.getInputStream();
channelExec.connect();
//读取从树莓派返回的参数
BufferedReader reader = new BufferedReader(new InputStreamReader(in,Charset.forName("utf-8")));
String content = reader.readLine();
System.out.println("温度"+content);
reader.close();
//为了防止堵塞,下面的代码最后有
if(channelExec.isClosed()&&channelExec!=null){
channelExec.disconnect();
}
if(session!=null&&session.isConnected()){
session.disconnect();}
//给微信小程序返回的参数
Map<String,String> map=new HashMap<String,String>();
map.put("mess", content);
JSONObject json=JSONObject.fromObject(map);
channelExec.disconnect();
session.disconnect();
return json;
}
上面的代码可以在本地测试没问题。
但是如果不部署在服务器,树莓派必须进行内网穿透,所以下面进行树莓派的内网穿透:
我是用的ngrok进行的内网穿透:
1:在sunny ngrok进行登录注册
然后选择免费的,进行开通隧道,我用的是tcp协议,所以申请也是tcp协议
进入下面的界面,然后填好参数
点击确定添加,会生成对应的端口和免费的域名,Java的代码会用到,因为你将后台的代码部署到外网了。
外网测试的话,可以这样写Java代码(这是登录参数的就需要这样写了)
2:需要下载sunny ngrok客户端,你可以下载本地,然后再上传树莓派下。
下载客户端(直接搜索sunny ngrok客户端)
下载arm版本
然后通过Winscp上传树莓派下(也可以是其它的工具)
然后进入到客户端目录下,输入./sunny clientid 加上隧道的ID sunny ngrok就启动了
隧道的ID在后台可以查看
这已经实现内网穿透了,你可以直接空过微信小程序控制你的树莓派的了。
承接毕业设计:微信小程序、ssm和树莓派硬件
有开发好的毕业设计可直接购买,价格便宜。
扫描下面二维码加微信(非诚勿扰):