文章目录
学习使用云平台记录收集设备数据反馈给用户端,实现物联网与云平台的连接,了解物联网与云平台的关系以及实现流程。
1、设计一个图形用户界面,来实现文本数据或二进制数据(比如图像文件或者音频文件等)的双向传输。
2、将接受的数据展示在图形界面或打开。
3、登陆注册系统
将本地与云平台相连,传输数据和接收数据。通过来自阿里的python第三方库linkkit进行连接。用base64库对接收数据进行编码转码以便传输,这里接收后要将字符串转变为字节流写出。
首次连接设备与云平台时无法正常接入,通过继承重构官方文档给的三方库函数,得以解决实现正常上传。根据官方帮助文档创建消费组订阅但是我将双向传输连接在一个设备的一个订阅中,连接造成冲突,云与设备一直重复上线下线操作,后来想到类似于QQ的登录顶号意识到需要走两条线路进行传输。
思考用户如何将接收到的数据展示在图形界面时,起初我的想法是直接将数据解码展示,但是展现的只是数据的文本信息,并不能将图片展示,所以创建了一个目录用于存放接收到的临时数据,每次连接阿里云都将重置该目录下的文件。且每次传输都会覆盖上次传输的数据。
总体设计分为五大模块:PC端接收和发送、设备端发送与接收、登陆注册。
两端分别连接登陆窗口与收发系统,将云消息暂时存储在本地计算机以显示在图形界面或打开观看,并且在每下次连接时清空暂存信息。
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。
在阿里云平台创建一个初始化产品,并赋予其四大功能如图1所示,后续开发皆需

图 创建产品与定义功能
围绕展开。在此基础上,分别创建两个设备即对应PC端与设备端,以便后续可以进行相互传输如图2所示.

图2 创建两个设备
在规则引擎中选择服务端订阅—>消费组列表—>创建两个消费组(依然是为了能够实现双向传输)—>订阅列表—>创建订阅(如图3-图5所示)

图3 创建订阅

图4 消费组信息

图5 订阅产品信息
至此,阿里云平台设置暂时告一段落
两个端口实现数据相互传输,大致内容相同,只需连接不同的阿里云平台设备即可,所以此后内容主要以设备端开发详细讲解
即用户端,用户可以接收到设备发送的数据,并记录下来。
设备端即用户不可见端,向用户传取数据以便用户可以获知所需要的信息数据。
用户凭据用户注册信息,可以在数据库中找到对应的用户信息以便识别信息,并且为用户提供连通注册界面的按钮,以便存入用户身份方便下次使用。如图6所示

图6 登录界面窗口
用户通过此界面可以向数据库发送创建信息,以获取拥有向PC端发送信息的权力,主要作用为连接数据库,从数据库中查找是否用户名冲突和写入用户身份信息的作用,如图7所示

图7 注册界面
此界面即为我们本次开发的主要窗口界面,主要提供了连通阿里云物联网平台和向PC端发送信息选择功能与数据接收并展示在图形界面的功能如图8所示

图8 传输数据窗口
PC发送数据,设备端收入并显示是如图9和10(打开音频播放软件)所示

图9 接收传输的数据

图10 接收音频
分别通过界面中选择不同类型的数据上传到阿里云平台后,可在云平台中看到数据和PC端本地查看到暂时数据,如图11所示(视频因数据量过大,网速原因上传时间较长,容易造成卡顿,所以此处将接口关闭,如果想到改善方法取消注释即可连通此处接口)

图11 阿里云平台接收信息
PC设备通过下载云平台数据判断文件类型,写入到本地磁盘后,并且在每下词连接阿里云时进行数据清空。如图12所示

图12 本地暂存信息
起初,可以正常连接阿里云平台,但无法将数据如我们预期一般正常传输上去,通过改进判断方式,将字节流数据转为字符串。后续出现获取信息时字符串转字节流数据错误,对字节流进行了base64编码。
但与此同时出现新的问题,base64.b64decode解码只能对4的倍数的字节流进行编码,在外网中找到一个解决方案使用base64.urlsate_b64encode编码会自动进行填充“=”使字节流的长度为4的倍数。
PC和设备端分别打开登陆窗口界面完成登陆。

图1左图为PC窗口,右图为设备窗口
(后续图片皆是如此)

图2 注册窗口界面

图3连接阿里云平台

图4选择向PC发送的数据[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图5 PC端获取到的数据展示在图形界面中
基于python的云平台的接入我是第一次接触,完全从零开始,在此之前并不了解云平台的概念,本次课设又恰巧收考试周影响,做的内容差强人意,但是基本实现了相互传输的功能。寒假在将其修改补进再深入了解一下这个概念。
本次课设的要点在于如何接入云平台,并且理解云平台的概念。运用云平台的传输方式和存储方式大大降低了硬盘的内容空间损耗,并且实现了物联网设备与用户的互通,将实时数据通过网络发送到PC用户端,可以更快的,更便捷的让用户不在时刻为某件事而担忧。物联网云平台强化设备与产品的概念。用户通过订阅和设备发布的形式进行数据交互。将数据上传后的开发便容易的多。
我一开始觉得这个课设并不会多难,但是当真正上手后发现对云平台的陌生使得本应该很快完成的我一误再误,从阅读官方文档到整合官方代码这一点事就耗费掉了我大约两天的时间(期间有考试和复习)。所以目前只实现了三种数据的传输,后续我会完善优化视频数据传输,增加一些输入与反馈功能。
大量的阅读他人的优秀代码对于改进自己的“垃圾堆”有的极其有效的帮助,并且一定要在书写代码时,时时刻刻保持良好习惯,我在此次开发过程中深受其害,只是一个小小的变量名使得我的传输数据和接收数据彻底混乱以致我不得不回退代码以及写完之后不得不进行重构函数。
不得不提一句图形界面的开发尽量避免使用tkinter吧,实在太难开发了……,踩到的坑是一个接一个。不过在此次开发中又新学到许多三方库的搭建和组合使用。
希望能看到这篇文章的同学吸取不良习惯的教训,提前培养好习惯。
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p