【河南省第二届技能大赛-物联网技术】C模块Python开发讲解

news2025/1/21 10:11:51

在这里插入图片描述

文章目录

  • 前言
  • 题目如下
  • 什么是云平台API
  • API调用的基本流程
  • Python实例介绍
  • 依赖库介绍
  • API调用的基本参数
  • 请求返回值
  • requests库
  • PyQt5库
  • 总结
  • 源码链接

前言

这是基于样题进行讲解的文章,因为正式赛题尚未公布和样题类型相似。文章结尾提供了源码和环境链接,读者可以自行下载以进行更深入的学习和优化。

题目如下

在这里插入图片描述

注意:题目中的API链接,是在比赛局域网环境下进行的,在平常练习的时候,用新大陆官方链接即可!

链接:新大陆官网AP接口调用文档

什么是云平台API

云平台API(Application Programming Interface,应用程序编程接口)是一种编程接口,用于不同应用程序之间的通信。在云平台中,API通常用于实现设备数据的读取和控制等功能。用户可以使用API对设备进行远程操作,也可以通过API获取设备的各种传感器数据。

API调用的基本流程

API调用的基本流程如下:

  1. 用户登录云平台账号,获取AccessToken。
  2. 使用AccessToken对设备进行认证。
  3. 调用API获取设备数据。
  4. 对获取的数据进行处理和展示。

Python实例介绍

下面我们以一个Python实例来介绍API调用的各种参数及其意义。该实例中,我们通过API调用获取一个温度传感器和一个风扇传感器的数据,并将数据显示在PyQt5的界面上。

依赖库介绍

在该Python实例中,我们需要使用requests、PyQt5和prettytable三个库。其中,requests用于向云平台发送HTTP请求,PyQt5用于构建图形用户界面。

API调用的基本参数

在该Python实例中,我们需要使用以下API调用的基本参数:

  • login_url:登录API的地址,用于获取AccessToken。
  • login_data:登录API的参数,包括账号、密码和是否记住登录状态等。
  • temp_sensor_url:温度传感器API的地址,用于获取温度传感器数据。
  • fan_sensor_url:风扇传感器API的地址,用于获取风扇传感器数据。
  • token_data:认证API的参数,包括AccessToken。

以上均为自定义参数,可对照源码进行查看

请求返回值

请求成功时,API将返回一个带有相应结果的JSON格式响应体。在请求返回的JSON结果中,"Status"表示请求的执行结果,而"ResultObj"是请求的执行结果数据。解析JSON格式数据即可!

requests库

首先我们来看一下requests库中常用的几个函数。

  1. requests.post(url, data=None, json=None, **kwargs)
    这个函数用于向指定url发送POST请求,并且传递data或者json参数。
    • url:需要发送POST请求的url。

    • data:向服务器发送的表单数据,可以是字典、元组列表或字节序列。

    • json:向服务器发送的json格式数据,可以是python对象或字符串。

    • **kwargs:其他的请求参数,例如headers、timeout等。

  2. requests.get(url, params=None, **kwargs)
    这个函数用于向指定url发送GET请求,并且传递params参数。
    • url:需要发送GET请求的url。

    • params:向服务器发送的查询参数,可以是字典、元组列表或字节序列。

    • **kwargs:其他的请求参数,例如headers、timeout等。

  3. response.json()
    这个函数用于将服务器返回的json格式数据转换为Python对象。如果返回的数据不是json格式,将会抛出异常。
  4. response.status_code
    这个属性用于获取服务器返回的HTTP状态码。

PyQt5库

接下来我们来看一下PyQt5库中常用的几个类和函数。

  1. QApplication
    这个类是所有PyQt5应用程序的主要类。它是用来管理应用程序的控制流程、事件循环和各种对象之间的交互。
  2. QMainWindow
    这个类是用来创建主窗口的。它包含一个菜单栏、工具栏、状态栏和中心部件,也可以包含其他窗口小部件。
  3. uic.loadUi()
    这个函数可以将一个.ui文件加载到一个QWidget或其子类中,用于将设计好的UI界面与代码连接起来。
  4. QTimer
    这个类用于创建一个定时器,可以根据指定的时间间隔定期触发timeout信号。它常常用来更新UI界面的信息。
  5. QWidget
    这个类是Qt GUI程序中所有用户界面的基类。它是所有其他窗口部件的父类,并且可以作为窗口部件的容器。
  6. QObject
    这个类是Qt程序中所有对象的基类,提供了信号和槽机制,用于实现对象之间的通信。

总结

本篇博客中,我们学习了如何使用Python的requests库进行HTTP请求,以及PyQt5库的常用类和函数。通过这个例子,我们可以看到如何将这两个库结合起来,实现一个基于PyQt5的UI界面,用于显示传感器数据。同时,我们还讲解了Python程序中的函数、类、模块等基本概念,以及Python程序的运行机制。

源码链接

链接:百度网盘python源码和环境
提取码:9494

注意:运行代码之前,要搭配对应环境,代码内部的部分参数需要进行对应调正,请仔细阅读!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四面阿里,成功入职阿里测试开发,分享我的真实面试题

闲话少叙 直接上干货 鉴于篇幅所限,这里不放答案,有需要的朋友可以评论区自取 1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 2. 平时工作中是怎么去…

【面试题】你都必须得掌握的vue知识

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 大家好,我是前端贰货道士。最近抽空整理了下我对vue2.x的理解和认知&#…

设计师常用的素材网站有哪个推荐

即时设计资源社区聚集了许多优秀的创作者,分享了大量的优质资源。 目前,社区资源数量已达到10000,包含图标、插画、原型、设计作品等多个素材类别。这些优秀的设计作品降低了设计师思维的成本,成为设计师的宝藏材料网站。 即时设…

ML@sklearn@ML流程Part2@数据划分@KFold折叠交叉验证

文章目录 MLsklearnML流程Part2数据划分KFold折叠交叉验证Model evaluation数据划分sklearn中的模型评估demo K-fold cross-validation🎈K-foldegegeg:KFoldK-fold cross-validation ShuffleSpliteg 小结 Stratified Shuffle Splitegeg demo MLsklearnML流程Part2数…

代码随想录算法训练营第四十四天|完全背包理论基础 、518. 零钱兑换 II 、377. 组合总和 Ⅳ

文章目录 完全背包理论基础518. 零钱兑换 II377. 组合总和 Ⅳ 完全背包理论基础 纯背包问题的特点:每个物品可以无限次拿 与0-1背包唯一不同: 完全背包的物品是可以添加多次的,所以要从小到大去遍历 0-1背包不可以添加多次,需要从…

【C++】类和对象(上篇)

类和对象 面向过程和面向对象初步认识类的引入类的定义命名规范类的访问限定符及封装访问限定符封装 类的作用域类的实例化类的对象大小的计算类成员函数的this指针this指针的引出this指针的特性 面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程&#…

RocketMQ-Producer

消息生产者的代码都在client模块中,相对于RocketMQ来讲,消息生产者就是客户端,也是消息的提供者。 启动流程 代码:DefaultMQProducerImpl#start public void start(final boolean startFactory) throws MQClientException {switc…

轻松掌握消息队列RabbitMQ在SpringAMQP中的实践知识点

1、介绍 spring集成了rabbitmq,可以对rabbitmq先进行安装简单了解。参考我的rabbitmq文章。 2、使用 1、基本消息队列BasicQueue案例 一个消息消费者,上个消息未处理完,队列中的消息将阻塞,导致内存泄漏 1、引入AMQP依赖 2、添…

读书:《科技论文写作与发表教程(第6版)》

科技写作是指以符合标准格式的科技论文形式在科技期刊上陈述原创性的研究。 另外,还有广义上的科技写作。 科技写作的最主要特点是表达清晰。科技写作不需要漂亮的文学修饰,要把信息清楚地传递给读者。 IMRAD格式:Introduction Methods Re…

Redis常见问题整理

一、Redis使用场景相关问题 0. 单机版Redis部署 系统环境:CentOS7 1、下载Redis所需要的镜像 yum install -y gcc tcl2、下载redis安装包 mkdir /soft cd /soft wget https://download.redis.io/releases/redis-6.2.4.tar.gz3、解压缩: tar -xvf redi…

QT-DAY3

实现ui 字体、颜色、保存文件、打开文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//字体按钮对应的槽函数 void Wid…

性能测试技术笔记:如何设计一个压测平台 ?

目录 为什么需要压测平台? 压测平台功能设计思路 压测平台技术实现方案 总结 为什么需要压测平台? 从实际工作场景出发,如果只有一两个人做性能测试工作,那其实没必要开发专门的压测平台,原因如下: 成…

【备战秋招】权限常见面试题

本文的面试题和答案均为本人自己收集,如有错误或者不足,欢迎大家指出 目录 你做过的系统,权限是怎么管理的 Shiro是靠什么做认证和授权的 什么是RBAC模型 如果让你手写一个Web过滤器验证权限,你会怎么写 Shiro的anon和authc都…

锅炉燃烧自动控制系统

串级控制 以外环温度、内环煤气流量为例 重点1 主PID输出0~100需要经过线性转换模块进行转换,转换成与煤气流量相同量纲才能作为副PID的设定值。假设煤气流量量程100000;则副PID设定值如下: secSET mainLMN/100*100000; 重点2…

创造者基金 2023 年 4 月亮点

隆重推出创作者基金的 2023 年 4 月亮点 NFT 系列——一系列令人着迷且令人惊叹的数字资产,让大家为之震撼!该系列的角色令人惊叹,包括阿兹特克酋长、维京战士、残酷的国王、传奇的九尾狐等等,是收藏家和爱好者的必备之物。 无论你…

优化 | 随机原始对偶混合梯度(SPDHG)算法及在图像处理中的应用

论文解读者:陈宇文,胡明杰,史铭伟,赵田田 许多实际问题都可以建模为凸优化问题。相比于直接求解原问题,将问题转化为鞍点问题往往会带来好处。求解鞍点问题的一种常用算法是原对偶混合梯度算法 (PDHG),它在…

ubuntu-server22.04编译Redis7.0.11源码支持TLS

1.克隆redis源码: git clone https://github.com/redis/redis.git 编译前确认已安装GCC11与G++11和cmake及make及pkg-config 安装命令如下: apt install gcc -y apt install g++ -y apt install cmake -y apt install pkg-config 因为要支持TLS所以要安装OPENSSL开发库 ap…

阿里云CPFS与OSS之间数据双向流动机制

随着云上对象存储成本的逐渐降低,越来越多的企业利用阿里云OSS存储他们的大量数据并构建数据湖。现在阿里云文件存储CPFS与对象存储OSS实现了深度集成,客户可以在三十分钟内创建一个高性能CPFS文件系统并链接到他们的OSS bucket。当链接到OSS bucket以后…

实验二 ROS结合OpenCV示例——人脸识别

ROS结合OpenCV示例——人脸识别 一、实验原理&#xff1a;二、实验步骤&#xff1a;<1> 安装opencv 以及串口功能包<2> 测试opencv串口是否安装成功 三、程序分析&#xff1a; 一、实验原理&#xff1a; Opencv库是一个基于BSD许可发行的跨平台开源计算机视觉库&a…

STM32WB55_NUCLEO开发(9)----接收手机数据点亮LED

概述 本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程&#xff0c;并通过与STM32WB配对&#xff0c;向该特征写入一个任意字节&#xff0c;绿色LED会切换。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是NUCLEO-WB55RG 的开发板&#xff1a; 选择芯片…