前言

随着经济和科学技术的飞速发展,人民生活水平的不断提高,资源短缺,环境恶化与人口剧增的矛盾却越来越突出,发展设施农业,提高我国农产品的质量和生产效率已经刻不容缓,性能良好的物联网环境监测数据中心系统为发展设施农业提供了良好的技术保障。
本设计说明书根据”昆山现代设施农业科技示范基地”项目建设需要并结合移动通信技术,ZigBee段距离无线技术和Internet网络技术设计了一种基于java和ZigBee技术的物联网环境监测数据系统,该系统能够及时,快捷,准确的抄收温室环境下的相关数据。

传感器实验箱

实验箱分上下两个部分,上半部分有八个模块构成

第一个模块:灯光控制(led灯,呼吸灯等)
第二个模块:环境采集(二氧化碳,温度,湿度,光照强度,紫外钱)
第三个模块:安防控制(烟雾,甲烷,人体红外,火光传感器) 意外防范
第四个模块:环境采集(pm2.5,温湿度)
第五个模块:安防控制(报警灯,报警器,光电开关,窗户开关) 人为防范
第六个模块:车库控制(车库栏杆升降,刷卡,显示读卡信息)
第七个模块:家居控制(窗帘升降,中央空调,风扇控制)
第八个模块:入户门控制(指纹识别,密码输入,读卡,显示读卡信息)


系统结构框架图

数据采集系统自上而下的控制命令传输过程如下:数据采集中心通过http网络向树莓派终端发送相关的控制命令,树莓派接受到控制命令后按照事先定制的协议对其进行解析,解析通过ZigBee网络按照控制命令字执行相应的操作。


模块划分

该系统分为三部分:客户端,服务器,还要后台管理系统。客户端实现环境数据的采集并无线传输,服务器则对客户端上传的数据通过数据库进行保存并实现对多客户的并发服务,后台管理系统主要是将对果园监测到的结果从数据库展示到UI界面,并通过JFree插件,生成柱形图和实时统计图,方便果林管理员于对该地区进行综合分析和考察,适合种植什么,或者是进行其他的项目,这样有利于促进农业的发展,更好提高作物的产量及资源的利用率。具体功能如下:

(1) 客户端具备环境的温度,湿度,二氧化碳,光照强度采集功能。
(2) 客户端具有颗粒物检测功能。
(3) 客户端具有地理信息标识功能(GPS 定位功能)。
(4) 客户端具有无线网络传输功能。
(5) 服务器是基于 TCP 协议的并发服务器,应用多线程编程技术以实现多客户
并发访问功能。
(6) 服务器将接受到的环境数据分批保存到数据库对应的表中
(7) 后台管理系统,管理员登录查看系统分析数据报表


系统设计

应用嵌入式技术与无线网络通信技术相结合,设计了客户机(client)/服务器(server)架构下的物联网数据监测数据中心系统。该系统分为三部分:客户端与服务器,后台管理系统;客户端,即终端通过光照强度、温度传感器、湿度传感器、二氧化物传感器对环境数据进行定时采集,并使用移动无线通信技术将数据上传到服务器,同时为了便于直观的感受区域点的实时环境状信息,应用java技术对环境数据进行封装并上传至服务器,服务器接收相关数据并分批存储到oracle数据库。 该系统可以在大区域内实现长时间的、动态的、区域化的多点检测;同时该系统也可以作为大数据时代下的重要数据来源,通过对相关气象数据进行建模统计,以掌握相关指标的发展趋势,对环境信息发布及预测具有重要的指导意义。


客户端

负责采集温度,湿度,二氧化碳,光照强度产生的数据信息分为5个模块
(1)配置模块
(2)日志模块
(3)采集模块
(4)备份模块
(5)网络模块

服务器端

负责接受数据并且将数据批处理入数据库对应的表中,分为6个模块。
(1)配置模块
(2)日志模块
(3)入库模块
(4)备份模块
(5)网络模块

后台管理系统

(1)管理员登录模块
(2)用户注册模块
(3)数据查询模块
(4)数据统计模块
(5)数据导出模块
(6)数据报表模块


客户端采集模块

负责采集指定文件中的数据(智能家居环境监测系统产生的数据)
需要实现的方法:Collection gather();
采集文件样例:

100|101|2|16|1|3|5854997802|1|1516361335964
100|101|2|256|1|3|001003|1|1516361342493
100|101|2|256|1|3|001003|1|1516361343403

1.了解环境数据值如何转换1.1 温度:((float)value*0.00268127)-46.851.2 湿度:((float)value*0.00190735)-61.3 二氧化碳和光照强度直接16进制转换成10进制2.了解每一行数据的意思2.1 数据中使用的是|进行分割2.2 数据一共分为三种包含 16 的数据 表示温度和湿度数据包含 256 的数据 表示光照强度数据包含1280的数据 表示二氧化碳数据数据分为九个部分第一部分:发送端id 第二部分:树莓派系统id 第三部分:实验箱区域模块id(1-8)第四部分:模块上传感器地址 第五部分:传感器个数第六部分:指令标号(3表示需要接受数据  16表示需要发送数据)
第七部分:数据16进制,需要转换成10进制(如果是16 前两个字节是    温度数据,中间两个字节是湿度数据。如果不是16 前两个字节就是对应的数据)
第八部分:状态标示(默认为1表示成功)
第九部分:采集时间(单位时秒)3.如何读写数据4.如何封装数据5.采集的数据分俩种特殊情况第一种情况数据:一行数据即包含温度和又包含湿度第二种情况数据:数据值有异常6.俩种数据情况怎么处理上面描述的第一种数据:读取一行数据,构建两次Environment对象,分别进行赋值.否则会丢失数据上面描述的第二种数据:读取到错误数据,不允许参与进制转换或者公式转换,否则报错.也可以找到错误数据手动删除(错误数据很少)7.第二次读取数据的时候,如何从第一次读完数据的下一行开始读可以记录一下本次总共读取了多少个字节,下一次可以直接跳过这么多个字节,接着读就可以了8.在读取过程中或者处理过程中,如果出现了异常,需要把数据进行备份9.注意重要信息的日志记录

客户端网络模块

负责把采集好的数据发给服务器
需要实现的方法:void send(Collection c)

 1.如何得到连接服务器的相关信息2.如何得到采集好的数据3.如何把数据发送给服务器4.如果发送数据失败怎么处理5.注意重要信息的日志记录

服务器端网络模块

负责接收客户端传过来的数据
需要实现的方法:Collection revicer();void shutdown();

 1.如何获得服务器启动时候用的相关信息2.如何关闭服务器3.如何接收客户端传过来的信息4.如何处理客户端并发的问题5.接收到数据之后下一步怎么做6.数据的接收或者处理过程备份的问题7.注意重要信息的日志记录

服务器端入库模块

负责接收到的数据插入到数据库中
需要实现的方法:void saveDB(Collection c)

 1.如何获得连接数据库的相关信息2.怎么把数据插入到数据库中3.插入数据时候的效率问题4.什么样的数据对应哪一种表

公共的日志模块

负责记录系统运行过程的一些重要信息
需要实现的方法:

void debug(String msg);
void info(String msg);
void warn(String msg);
void error(String msg);
void fatal(String msg);

 1.怎么来实现日记记录2.了解日志级别3.怎么设置日志的级别4.怎么获得日志对象5.怎么控制日志的格式6.怎么控制日志输出到控制台和指定文件中

公共的备份模块

负责备份一些没有处理完的数据
需要实现的方法:
void store(String filePath, Object obj,boolean append)
Object load(String filePath, boolean del)

 1.如何获得备份文件存放的目录信息2.如何把数据备份到文件3.如何读取文件中的备份数据4.如何实现备份数据时候的追加或者是覆盖5.如何控制读取备份数据后文件是否需要删除

管理员登录模块

负责图形化界面的控制,包括管理员的登录注册,环境数据查询,环境数据统计等功能
需要实现的方法:void login()

1.gui的不同界面如何相互跳转
2.根据日期,环境种类查询的数据如何以图表显示
3.数据日期如何以年月日,小时分钟秒的形式显示
4.数据统计功能如何实现

公共的配置模块

该模块相当于一个工厂,负责产生各个模块对象,读取各个模块所需的信息,并且把信息注入到每个模块中.
需要实现的方法:
Logger getLogger();
BackUP getBackup();
Gather getGather();
Client getClient();
Server getServer();
DBStore getDBStore();

1.怎么获得每个模块的相关信息
2.如何创建每个模块的对象
3.怎么把每个模块需要的数据注入到模块中
4.什么时候可以把自己(配置模块本身)注入到需要的模块中

数据库

有31张表
e_detail_1

e_detail_31


name varchar2(20),
srcId varchar2(5),
dstId varchar2(5),
sersorAddress varchar2(7),
count number(2),
cmd  varchar2(5),
status number(2),
data number(9,4),

每张表对应一个日子,不同的数据需要插入到不同的表里面.例如:1号(不关注年和月)产生的数据,就需要把数据插入到第1张表中,15号产生的数据,就需要插入到第15张表里面.

oracle建表语句

使用PL/SQL建表

BEGINFOR i IN 1..31 LOOPEXECUTE IMMEDIATE'CREATE TABLE t_detail_'||TO_CHAR(i)||'(字段)';END LOOP;END;/使用PL/SQL删除表BEGINFOR i IN 1..31 LOOPEXECUTE IMMEDIATE'DROP TABLE t_detail_'||TO_CHAR(i);END LOOP;END;/

系统运行效果

系统编写环境:Idea+Maven+oracle+传感器+Swing+Socket+Jdbc

  1. 采集的数据

项目下载地址

CSDN:https://download.csdn.net/download/m0_37499059/10479486
Github:https://github.com/chenxingxing6/EMDC
里面带上了,项目概要设计说明书。


总结

本项目从实际的需求与应用出发,将Java技术与ZigBee短距离无线通信技术成功应用在物联网环境数据监测中心项目中。在该系统中树莓派与传感器之间的通讯采用ZigBee短距离无线传输技术,树莓派与客户端采集中心之间的通信采用socket远程数据传输技术,遮阳避免了采用有线方式传输数据时而导致大量布线带来的麻烦。该系统开发成本较低,通用型强使其在低速率小数据量传输方面具有明显的优势,该技术框架在温室大棚中有着广阔的发展与应用空间。

物联网环境监测数据中心-物联网项目开发相关推荐

  1. 物联网环境监测数据中心系统

    该系统主要用于环境数据的采集和读取,整体架构分为硬件部分和软件部分.硬件指的是用来实时采集环境指数的监测设备,软件部分包含处理这些数据的程序和数据库. 硬件部分 环境传感器 温度传感器:采集温度指数 ...

  2. 【嵌入式物联网实战项目】环境监测设备接入涂鸦IoT开发平台

    小熊派物联网开发板接入涂鸦 IoT 开发平台实现植物环境监测 物联网的概念其实十几二十年前就已经有了,随着人工智能,大数据,云计算这些科技的发展,越来越多的物联网项目正式商用落地,比如,共享单车和共享 ...

  3. 助力工业物联网,工业大数据项目介绍及环境构建【一、二】

    文章目录 工业大数据项目介绍及环境构建 01:专栏目标 02:项目背景 03:项目需求 04:业务流程 05:技术选型 06:Docker的介绍 07:Docker的网络 08:Docker的使用 0 ...

  4. 多子系统多业务模块的复杂数据处理——基于指令集物联网操作系统的项目开发实践

    李顺,指令集Java开发工程师, 主要从事物联网业务应用.物联网数据处理等开发工作; 在杭州奥体中心体育场馆数字化.智能化升级改造工程中, 是场馆数据处理模块主要开发人员. 1 项目背景与数据处理挑战 ...

  5. 新书推荐 |《基于区块链的物联网项目开发》

    新书推荐 <基于区块链的物联网项目开发> 点击上图了解及购买 探索物联网架构中分类记账技术的实际实现,研究智能设备的安全最佳实践,了解端到端物联网解决方案的区块链实现. 编辑推荐 将物联网 ...

  6. 《用于物联网的Arduino项目开发:实用案例解析》—— 3.4 小结

    本节书摘来自华章出版社<用于物联网的Arduino项目开发:实用案例解析>一 书中的第3章,第3.4节,作者[美]安德尔·杰韦德(Adeel Javed),更多章节内容可以访问云栖社区&q ...

  7. 物联网项目开发工作笔记0001---物联网项目的开发周期,项目管理,厂家合作

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这里以我现在做的这个物联网项目(公网对讲产品)为例,因为第一次作为项目经理,带着做物联网项目,所以 ...

  8. 基于Arduino、ESP8266的物联网项目开发方案整理、毕业设计(第三波)

    文章目录 1.背景 2.项目整理 2.1 挪威牛栏气体检测 2.1.1 功能介绍 2.1.2 实物图片 2.1.3 视频 2.1.4 源代码 2.2 触摸屏显示称重 2.2.1 功能介绍 2.2.2 ...

  9. 基于Arduino、ESP8266的物联网项目开发方案整理、毕业设计(第一波)

    文章目录 1.背景 2.资料介绍 2.1 Arduino官方认证 2.1.1 开发板类 2.1.2 温湿度传感器 2.1.3 光照度传感器 2.1.4 测距传感器 2.1.5 声音模块 2.1.6 显 ...

最新文章

  1. Azure底层架构的初步分析
  2. 前端性能优化—将CSS文件放在顶部
  3. NIPS 2016上22篇论文的实现汇集
  4. win7设置计算机临时用户,Win7小技巧:用户账户自动登录方法汇总
  5. 计算机网络分层作业,计算机网络作业布置-参考答案
  6. HTML5学习之视频与音频(三)
  7. 程序员为什么要懂物联网?
  8. arguments对象
  9. BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)
  10. Atitit 信息安全体系 资料书籍表 1. 《信息安全原理与技术 2 1.1. 第2章 工具箱: 鉴别、 访问控制与加密 2 1.2. 第3章 程序和编程 漏洞 木马 病毒 3 1.3. We
  11. 17. 装箱、拆箱的最小化
  12. Python:threading(多线程操作)(转载)
  13. java nio oio_NIO,OIO,AIO区别
  14. 科技大佬对人工智能的看法
  15. D200和D2X区别
  16. 【Java】基础36:函数式编程
  17. expected an indented block报错的原因
  18. pyspark系列--统计基础
  19. Prometheus 监控详解
  20. Shell编程实战范例

热门文章

  1. Quasi- likelihood function
  2. 微信局域网测试环境搭建方法
  3. 小红书笔记上精选方法技巧有哪些
  4. 华纳云告知您,企业上云的十大优势
  5. 小米路由器R3原厂BootLoader和eeprom备份
  6. CAD中的标注文字如何沿弧线排列?
  7. 电脑重装系统,如何下载正版win10的iso
  8. STM32运用RS485通信总结
  9. 小程序 订阅消息 wx.requestSubscribeMessage 允许 拒绝 情况的返回 结果
  10. HDMI/DVI设备热插拨检测