php做物联网

物联网分为两方面环境监测和设备控制;环境监测方面主要通过传感器获得数据。 传感器大都会采用RS485通讯,可以通过转接头连接电脑上进行调试。
也可以连接DTU,通过TCP/UDP协议或者mqtt协议将数据连接到TCP服务器或者MQTT服务器上;
而设备控制也可以通过协议发送指令给控制设备,控制设备根据指令执行相应的操作。

1.选择环境

php+linux+Nginx+mysql+influxdb
php 是基础环境,可以选择框架开发,我采用的是laravel;
linux 是服务器环境,服务器由于面向的是传感器数据的采集,所以写入的量会比读出的量,在选择配置是针对业务量进行选择;
nginx 是一个高性能的HTTP和反向代理web服务器,并发量大时要比Apache要更合适;
influxdb是时序数据库,将传感器数据存放到influxdb(时序数据库)中;
mysql是关系型数据,将基础信息及其他非时序类的数据存放在mysql中;
emq是mqtt协议的服务器,用了进行数据的中转;
swoole 在mqtt中可以用swoole做客户端订阅者,在tcp协议中构建tcp服务器方便传感器的请求;

2.认清协议

mqtt协议
MQTT是一种基于发布/订阅模式的轻量级通讯协议,该协议构建于TCP/IP协议上,其分为发布者和订阅者;发布者根据主题发布消息,订阅者可以根据订阅主题来进行数据的交互。
tcp协议
可以长连接和短连接,长连接是客户端请求服务器并建立连接,然后定时上报数据,建立长连接服务器可以对连接的客户端发送命令。短连接是连接服务器上报完数据后自行断开。
由于都是和硬件做交互,上述基本上要用到位运算已经16进制2进制类似的进制转换。

3.数据库

传感器类数据存储目前大都会采用时序数据库 ,时序数据库的有点就是存入和读取的速度快,缺点是修改数据这样的操作会很慢。
而一般时序数据库的设计模式就是,分为短期有效数据表和长期有效的数据表,短期的精确到几秒,然后有效时间是一个月或者几个月。长期的精确到小时,有效数据可以是永久,这样既能满足数据的有效利用,也能减轻存储的压力。
然后普通数据内容存在mysql中,方便增删改查的操作,同时量也不会很大也不会有很多的压力。

oss:图片视频等文件专门存在oss中,减轻服务器的存储压力,同时在网站读取图片时,也对读取有很大的帮助,流量大时针对性的扩展oss的配置。

4.视频的连接

如果用海康的产品。目前简单的分两种模式,一种是用萤石云,其对pc端配置后可以直接引入;另一种是对接到阿里云的视频中心,然后再从阿里云中将视频获取到。海康针对PHP没有现成的sdk,直接去连接还需要再做研究

5.数据的展示

大数据屏幕中的图表用些ECharts这样的图表库,地图上针对需求引入百度或者高德的js。

新增思路
当面对小型项目时(总数据量不会超过千万),也可以用redis实现队列,将最新的数据存入到队列中和mysql数据库,队列先进先出,这样查询实时数据和最近历史数据时(少量)直接请求redis,当需要查询历史数据时再请求mysql查询,这样既保证数据实时性,又降低成本。

three.js:基于WebGLD的3D模型库,网页3D模型制作常用技术,很多数据大屏的项目上都用。

你可能感兴趣的:(物联网,php,物联网,服务器)