使用PYQT5连接云服务器远程控制树莓派的GPIO状态[第二部分]
前面介绍了树莓派的环境搭建和程序,这里对云服务器进行介绍
云服务器环境搭建
对云服务器进行搭建,我使用的是腾讯云的。下面介绍腾讯云服务器的环境搭建:
我已经购买好了一个轻量云进入管理界面,注意下面画圈圈的地方,这里有’复制‘和‘登录’按钮。先复制这串代码,然后点击登录。(可能中间还有些需要配置的过程,有问题可以问哦)
登录后就会进入一个新界面,是一个命令行窗口,将复制的内容粘贴进去,就会返回一些重要的内容。
这里复制外网地址在浏览器打开,会有一个账号输入的过程,下面的username:password:就是这个界面的登录密码。这个网站叫做宝塔面板,可以对服务器进行管理的一个面板,首次登录会先安装一些依赖以及程序大家稍安勿躁。
进入宝塔面板先点击网站,然后点击PHP项目创建,域名和根目录根据自己喜欢填写。还有下面FTP和数据库都是根据自己需求添加(数据库需要去软件商店下载哦,这里是用不到数据库的)点击提交完成项目的创建。
然后就是点击左边的文件选项找到正确创建项目的目录。在这里创建一个python程序用来运行云服务器端的程序。(hhhhhh我是取名鬼才)
这里就结束项目的创建了下面对程序进行介绍
云服务器端程序设计
这个程序使用到了Flask 这是一个用 Python 编写的轻量级 Web 应用框架。这里就要安装他在宝塔面板的终端上输入安装Flask的库以及一些依赖。这里安装依赖点击终端进入命令行输入下面代码
pip install Flask
完成安装库和依赖就将程序需要用到的库要先导入一下然后创建了一个 Flask 应用实例在程序开头:
from flask import Flask, request, jsonify
app = Flask(__name__)
分别使用两个函数用于定义两个路由一个接收pyqt端的路由,还有一个函数用于发送路由用于控制树莓派的led的亮灭。
# 初始化LED状态为'off'
led_status = 'off'
@app.route('/control_led', methods=['GET', 'POST'])
def control_led():
# 使用全局变量
global led_status
# 根据请求类型获取LED状态
if request.method == 'GET':
led_status = request.args.get('led_status')
else: # 对于POST请求
led_status = request.form.get('led_status')
# 控制LED状态
if led_status == 'on':
# 实现打开LED的逻辑
print("LED turned ON")
elif led_status == 'off':
# 实现关闭LED的逻辑
print("LED turned OFF")
else:
# 如果LED状态无效,返回错误
return "Invalid LED status", 400
# 如果LED状态变更成功,返回成功信息
return "LED status changed", 200
@app.route('/get_led_status', methods=['GET'])
def get_led_status():
# 返回LED当前状态的JSON
return jsonify({"led_status": led_status})
最后是结束,要注意这个port=0000,是根据自己的端口配置的,你可以设置一个1234
if __name__ == '__main__':
# 运行Flask应用
app.run(host='0.0.0.0', port=0000)
无论设置什么你都要在云端那边设置防火墙通过规则,添加1234的端口,才可以运行。这个端口和前面树莓派哪里的0000也要修改。自己是多少就是多少。ip地址就是云服务器的ip地址。
最后将这些放入到fwq.py就行啦。最后在这个黑框框使用‘ls’和‘cd’还有‘cd …’命令分别是列出这一目录的文件、进入某个文件夹、返回上一文件夹。例如
ls #列出当前目录下的文件
cd www #进入www文件夹中
cd .. #返回上一文件夹中
直到找到fwq.py文件,使用python fwq.py运行程序
服务器端就结束咯。下一节介绍PYQT端设计。