# 智能家居模拟系统的设计与实现
## 发展背景
随着社会、经济水平的发展,人们对家居品质的要求也越来越高,要求居住环境舒适化、安全化,家居生活人性化、智能化。智能家居是 3C 技术向传统家电产业渗透发展的必然结果。从社会背景的层面来看,近年来信息化的高度进展,通讯的自由化与高层次化、业务量的急速增加与人类对工作环境的安全性、舒适性、效率性要求的提高,造成家居智能化的需求大为增加;此外在科学技术方面,由于计算机控制技术的发展与电子信息通讯技术的成长,促成了智能家居的诞生。现在的中国正迎来一个"数字城市"、"数字社区"建设与发展的热潮,3G 技术和互联网应用对智能家居的发展也起到很重要的推动作用,智能家居的日渐兴起影响到人们生活的方方面面,改变了人们的生活习惯,提高了人们的生活质量,促使家庭实现了生活现代化,给人们的家居生活带来了全新的感受,它必将成为一种发展趋势。
智能家居都是“伪需求”,真正满足用户的不多,目前市场不容乐观。
## 系统选型
### 客户端
Android 移动平台
### 服务器
服务器选用 2410 试验箱。
内置步进电机和普通电机,模拟空调和窗帘,三路 AD/DA 转换设备,模拟采集的光照温度湿度数据。
试验箱搭载 Linux 系统,可以使用 C 语言编程。
## 需求分析
### 安卓客户端
- 在安卓上显示温度(℃)、湿度(%)、光照强度(lux)数据;
- 能设置空调温度、窗帘打开百分比;
- 设置网关的 ip 地址;
### linux 服务器端
- 用 2410 试验箱上三个 AD 通道分别模拟温度、湿度、光照强度;用直流电机的转速模拟空调的温度(温度的 10 倍代表直流电机转速);用步进电机转过的角度模拟窗帘打开的百分比(360 度代表完全打开)。
## 概要设计
通过客户端向服务器发送命令,服务器控制相关设备
### 客户端服务器交互协议
```
方式:http
返回:json
地址: 192.168.1.102:5000
参数与返回:
/get {"temp":12,"humi":34,"light":56}
/kongtiao(25) {"result":"ok"}
/chuanglian(25) {"result":"ok"}
/othercmd {"result":"error"}
```
### 安卓客户端
- 使用 TextView 显示温度(℃)、湿度(%)、光照强度(lux)数据,设置数据有 settext()方法;
- 设置空调温度、窗帘打开百分比、网关的 ip 地址当对应按钮被点击的时候,均从对应的 EditText 控件使用 getText()方法获取出参数拼接到请求 URL 字符串,通过 http 的方式访问该 URL,解析返回的数据,更新到主界面或者弹出提示;
- http 使用了 Hongyang 封装的 OkHttpUtils 库来简化开发;
### linux 服务器端
- 实现一个简易的 Web 服务器,针对请求的不同链接做出不同响应,并返回相应状态。
## 详细设计
### 客户端
- 布局如图所示
![](https://www.writebug.com/myres/static/uploads/2022/1/8/74b618fbf204125054738a2b50cafa28.writebug)
- Android 主要逻辑
```
public class MainActivity extends AppCompatActivity {
TextView tvTemp,tvHumi,tvLight;
EditText etKongtiao,etChuanglian,etSetip;
Button btnKongtiao,btnChuanglian,btnSetip;
String ip = "";
//int i=0;
String url = "";
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTemp = (TextView) findViewById(R.id.tv_temp);
tvHumi = (TextView) findViewById(R.id.tv_humi);
tvLight = (TextView) findViewById(R.id.tv_light);
etKongtiao = (EditText) findViewById(R.id.et_kongtiao);
etChuanglian = (EditText) findViewById(R.id.et_chuanglian);
etSetip = (EditText) findViewById(R.id.et_setip);
btnKongtiao = (Button) findViewById(R.id.btn_kongtiao);
btnChuanglian = (Button) findViewById(R.id.btn_chuanglian);
btnSetip = (Button) findViewById(R.id.btn_setip);
btnKongtiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "你点击了空调设置", Toast.LENGTH_SHORT).show();
//设置空调
String cmdurl = "http://"+ip+":5000/"+"kongtiao("+etKongtiao.getText().toString()+")";
OkHttpUtils
.get()
.url(cmdurl)
.build()
.execute(new StringCallback()
{
@Override
public void onError(Call call, Exception e , int id)
{
e.printStackTrace();
}
@Override
public void onResponse(String response,int id)
{
try {
JSONObject jsonobj = new JSONObject(response);
if (jsonobj.getString("result").toString().equals("ok")){
Toast.makeText(MainActivity.this, "空调设置成功", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
btnChuanglian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//设置窗帘
Toast.makeText(MainActivity.this, "你点击了窗帘设置", Toast.LENGTH_SHORT).show();
String cmdurl = "http://"+ip+":5000/"+"chuanglian("+etChuanglian.getText().toString()+")";
OkHttpUtils
.get()
.url(cmdurl)
.build()
.execute(new StringCallback()
{
@Override
public void onError(Call call, Exception e , int id)
{
e.printStackTrace();
}
@Override
public void onResponse(String response,int id)
{
try {
JSONObject jsonobj = new JSONObject(response);
if (jsonobj.getString("result").toString().equals("ok")){
Toast.makeText(MainActivity.this, "窗帘设置成功", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
btnSetip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//设置ip
Toast.makeText(MainActivity.this, "你点击了ip设置", Toast.LENGTH_SHORT).show();
ip=etSetip.getText().toString();
url = "http://"+ip+":5000/get";
//sendGet();
handler.postDelayed(runnable,1000);//先执行一次
}
});
}
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("111111111111111111111111111111111111111111
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
安卓客户端 在安卓上显示温度(℃)、湿度(%)、光照强度(lux)数据; 能设置空调温度、窗帘打开百分比; 设置网关的 ip 地址; linux 服务器端 用 2410 试验箱上三个 AD 通道分别模拟温度、湿度、光照强度;用直流电机的转速模拟空调的温度(温度的 10 倍代表直流电机转速);用步进电机转过的角度模拟窗帘打开的百分比(360 度代表完全打开)。
资源推荐
资源详情
资源评论
收起资源包目录
100012319-基于Android 智能家居模拟系统的设计与实现.zip (50个子文件)
znjj
gradle.properties 855B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 231B
app
src
androidTest
java
com
example
lf
smarthome
ApplicationTest.java 355B
test
java
com
example
lf
smarthome
ExampleUnitTest.java 317B
main
java
com
example
lf
smarthome
MainActivity.java 7KB
res
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher.png 3KB
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher.png 5KB
values-w820dp
dimens.xml 358B
values
dimens.xml 211B
colors.xml 208B
strings.xml 72B
styles.xml 383B
layout
activity_main.xml 5KB
AndroidManifest.xml 729B
proguard-rules.pro 653B
build.gradle 713B
.gitignore 7B
LICENSE 1KB
gradlew.bat 2KB
安卓客户端界面图.png 12KB
server.c 5KB
服务器端流程图.vsd 88KB
build.gradle 498B
.idea
.name 9B
runConfigurations.xml 564B
libraries
okio_1_8_0.xml 490B
appcompat_v7_24_0_0.xml 755B
support_annotations_24_0_0.xml 501B
okhttp_3_3_1.xml 507B
hamcrest_core_1_3.xml 516B
support_v4_24_0_0.xml 896B
support_vector_drawable_24_0_0.xml 637B
junit_4_12.xml 467B
okhttputils_2_6_2.xml 573B
animated_vector_drawable_24_0_0.xml 642B
misc.xml 2KB
compiler.xml 686B
modules.xml 355B
gradle.xml 827B
encodings.xml 159B
copyright
profiles_settings.xml 74B
服务器端流程图.png 38KB
settings.gradle 15B
gradlew 5KB
.gitignore 465B
README.md 16KB
共 50 条
- 1
资源评论
神仙别闹
- 粉丝: 4137
- 资源: 7484
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 智能笔项目源代码全套技术资料.zip
- 在线考试系统项目源代码全套技术资料.zip
- 高等数学学习资料合集 高等数学(工本)mind
- 西门子V90效率倍增-伺服驱动功能库详解简易循环功能库之Homing-V90PN.mp4
- 自考04741计算机网络原理真题及答案及课件
- 基于STM32芯片开发 安防系统 完整作品
- 4_base.apk.1
- 学生导师双选系统项目源代码全套技术资料.zip
- 自考02318《计算机组成原理》试题及答案 2014-2018及课件
- 图书管理系统,仅供参考
- 数据科学与大数据毕业设计系统项目源代码全套技术资料.zip
- 全国自考02197概率论与数理统计(二)试题及答案2014-2019
- CHGCOLOR压缩包
- 多轮自动红队方法提升大语言模型安全性
- python语言kssp爬虫程序代码XQZQ.txt
- 亲测源码云赏V7.0微信视频打赏系统源码已测试完整无错版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功