当前位置: 首页 > news >正文

一个最小的物联网系统设计方案及源码(一)——系统组成

关于物联网

物联网(Internet of Things,缩写IOT)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。

物联网一般为无线网,由于每个人周围的设备可以达到一千至五千个,所以物联网可能要包含500万亿至一千万亿个物体,在物联网上,每个人都可以应用电子标签将真实的物体上网联结,在物联网上都可以查找出它们的具体位置。通过物联网可以用中心计算机对机器、设备、人员进行集中管理、控制,也可以对家庭设备、汽车进行遥控,以及搜寻位置、防止物品被盗等各种应用。

简单的来说 Internet是一个由计算机组成的网络,那么物联网就是一个由物体(Things)组成的网络,只不过其依赖于Internet,是Internet的一部分。

最小物联网系统

这个也就是我们要讨论的主题了,我们要做的最小物联网系统其实也就相当于是一个平台。我们可以上传我们各种物体的信息,同时给予这些物体一些属性,我们也可以通过网络来控制这些物体,而他们之间也可以相互控制。因此,我们需要给他们提供一个网络,这就是RESTful的由来。

所以我们也稍微了解一下RESTful吧。

RESTful

REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。

我们的世界是由资源来组成的,一个物体也就相当于是一个资源,以这种方式来构建我们的物联网系统,在目前来说是再好不过的一个方案了。

REST架构就是希望能够统一这一类的Hypermedia Controls, 赋予他们标准的, 高度可扩展的标准语义及表现形式, 使得甚至无人工干预的机器与机器间的通用交互协议边的可能.

这个也就是我们的目的了,物联网最后的核心就是使物体与物体之间的交互成为可能。

那么,这里也就解释了为什么我们要用RESTful来做这个最小系统的原因了。

最小系统中的RESTful

例如,一个简单的例子, 列举所有物体状态,

GET http://localhost/athome

呈现某一特定状态,

GET http://localhost/athome/1/

剩下的部分这里就不多说了,多说无益,可以自己谷歌去。

接着我们要讨论的就是系统框架

系统框架

IOT Struct

为什么是Raspberry PI

Raspberry Pi在这里只是充当了数据的发送和接收,虽然我们可以直接将Raspberry PI作为控制的对象,但是将这个从中剥离来讲清楚系统的结构会更加简单。从而,可以让我们把核心注意力聚焦在要解决的问题上,也就是数据传送,每个部分都可以简单地从系统剥离出来,用另外的事物来替换。

为什么是Arduino

这个问题的答案和上面是一样的,只是因为有些搞物联网是从软件过来的,对于他们来说去理解端口的难道可能有点大。所以,我们在简化系统设计的同时,也把系统的代码简化了。因为Arduino足够的简单,我们可以关心问题的本质,而不是如何去编程。

为什么是Ajax

至于什么是Ajax,

AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。

这里的目的只是在于演示如何运用这些数据,使它具有他应有的价值,而不在于技术本身。当然ajax不是必需的,如果你需要的只是用来控制这个灯。

为什么是Laravel

只是因为个人喜爱,你也可以用Ruby On Rails来搭建这样一个功能,或者是Java。只不过PHP在我的服务器上运行得挺不错的,而且我又不需要重新去写配置那些配置。 同时Laravel可以简单的开发我们所需要的功能,换句话说他是PHP世界的Ruby On Rails。

相关文章:

  • 实验8:游标和存储过程
  • 使用ansible命令部署k8s集群
  • 独立完成软件的功能的测试(3)
  • 界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(下)
  • 【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-设置输入设备
  • CMakeLists.txt与package.xml依赖项比较
  • 概率论之 证明 正态分布的上a 分位点的对称的性质
  • 网络安全——基于Snort的入侵检测实验
  • Spring boot注解
  • YOLOv8改进 | 2023主干篇 | 利用RT-DETR特征提取网络PPHGNetV2改进YOLOv8(超级轻量化精度更高)
  • SpringBoot系列之基于Jedis实现分布式锁
  • 基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(二)
  • class类实现operator==重载
  • 【LeetCode】28. 找出字符串中第一个匹配项的下标 【字符串单模匹配:KMP算法】
  • 【Hadoop_04】HDFS的API操作与读写流程
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【个人向】《HTTP图解》阅后小结
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • android图片蒙层
  • CODING 缺陷管理功能正式开始公测
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Fundebug计费标准解释:事件数是如何定义的?
  • JavaScript 奇技淫巧
  • Javascript基础之Array数组API
  • Joomla 2.x, 3.x useful code cheatsheet
  • python 学习笔记 - Queue Pipes,进程间通讯
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Yeoman_Bower_Grunt
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 机器学习学习笔记一
  • 聊聊redis的数据结构的应用
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​什么是bug?bug的源头在哪里?
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #传输# #传输数据判断#
  • #控制台大学课堂点名问题_课堂随机点名
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (1) caustics\
  • (4)事件处理——(7)简单事件(Simple events)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)springcloud实战之config配置中心
  • (过滤器)Filter和(监听器)listener
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)【Hibernate总结系列】使用举例
  • (转)ORM
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 使用ajax控件后如何调用前端脚本