微信小程序通过外网控制树莓派(ssm做后台)

微信小程序如何控制树莓派,今天我将分享一下我的学习过程。
我是使用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和树莓派硬件
有开发好的毕业设计可直接购买,价格便宜。
扫描下面二维码加微信(非诚勿扰):
在这里插入图片描述

发布了33 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_38978508/article/details/101124212