基于嵌入式的智能家居控制板
随着科技的不断进步,物联网技术得到了突飞猛进的发展。智能家居是物联网技术的典型应用领域之一。智能家居系统将独立家用电器、安防设备连接成一个具有思想的整体,实现家居设备的智能管理和远程监控。
本项目系统设计与实现使用Keil、vscode和qt三种集成开发工具实现代码的编写与调试。家居设备之间的数据通信采用TCP/IP网络协议,保证数据传输稳定可靠。使用嵌入式平台作为核心控制器能够提高整个系统的稳定性,数据传输采用TCP/IP协议能够很好解决目前一些系统中存在的数据传输不稳定问题。基于嵌入式的方式能够降低智能家居系统的成本,大大降低市场中由于智能家居价格较高无法普及现象,使智能家居能够走入普通百姓家中。
关键字:智能家居系统,嵌入式技术,qt
十二、资源获取链接:毕设&大创&项目&竞赛-基于嵌入式的智能家居控制板演示效果.zip资源-CSDN文库
2019年以来,随着科学的进步,人工智能行业也是飞速的发展,而以人工智能为基础的智能家居也是年年创下新高。人工智能“大跃进”后,会真正攻陷人类的家庭,智能家居届时也许会被称之为“AI家居”。人类正在逐步失去耐心,从社会运作到家庭生活,都将需要各种设备来承载“短平快”的需求。当“AI家居”的智商与能力足以成为这种载体时,新一代网络打破信息孤岛,大数据也将有效信息加以利用,届时人类的生活将会呈现出质的变化。从目前的智能语音“全面入侵”智能家居设备来看,这将是耶和华的真理。2022年智能家居行业该如何发展?——人工智能+物联网。
从2000年智能家居行业被提出开始,近22年来的智能家居行业,每年都有不同的角色参与进来,许多都是极具时代特征的新角色,其主要集中在感知、判断、动作三个控制逻辑层面,多年来,产业链各阵营都在努力实现多设备互联的集中控制化,目前产业链中的各模块已然齐全,芯片、解决方案、产品、集成安装、云等一应俱全,各角色定位划分非常清晰。所以说,目前整个智能家居产业链的纵向阶段已经完成,在全面控制的当下也代表着传统智能化升级、万物互联,日新月异的智能化历史规律,已经将智能家居推向基于AI技术的AIOT新时代。
因此智能家居项目是一个具有极大潜力的项目,并且值得我们深入挖掘与研究,在项目的开发中,不仅能够提升个人的专业知识水平,更能够使我们了解当前行业发展的水平,在实践中创新、在实践中进步。
智能家居嵌入式系统控制,它利用先进的计算机技术、嵌入式系统技术、网络通信技术和传感器技术等,将家中的各种设备(照明系统、环境控制系统、安防系统、智能家电等)有机地连接到一起。通过手机或网页控制家中各种设备,为大家的生活带来很多便利。
火警、烟警、有毒气体泄露报警。门阀控功能:水、煤气等电动阀的通/断控制。室内空气温度、湿度等的自动调节功能。洗衣机、热水器等各类家用电器开/关控制。声音和光电报警,远程控制及报警等。智能家居嵌入式系统控制,让用户采用更方便的手段来管理家庭设备,比如,通过无线遥控器、电话、互联或者语音识别控制家用设备,根据场景设定设备动作,使多个设备形成联动。智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的状态互动运行,从而在最大程度上给用户提供高效、便利、舒适与安全的居住环境和工作环境。
中国的市场,随着新企业的不断加入,竞争变得更加激烈,同时消费者需求的多样化和个性化,使得任何一个新进入该行业的企业所面临的市场广阔而又复杂。中东部地区比较发达,人们观念比较先进。而西北部就相对落后。而中端市场没有明显的特点,虽然品牌较多,但是没有较突出的优势。至于消费群体来说,人们的理念越来越先进,个性也越来越鲜明。现在的大学生即将成为将来社会的主导力量,是消费群体中不可忽视的主导者。
技术含量高、运行稳定性好,满足顾客的需求,另外,通讯系统、增值服务的推广和销售面对的大多是重点大客户,而智能家居控制的销售却要面对为数众多、千差万别的消费者。
随着科技的发展和社会的进步,人们走进了智能化的生活,扫码支付、网上购物、呼叫快车等技术手段都得到了广泛的应用,人们的衣食住行都越来越方便快捷。智能家居作为人们生活智能化的重要代表,近年来得到了迅猛发展,从扫地机器人、智能洗碗机、智能冰箱等智能机器,到智能照明、智能感知、网络通信、家庭影音等智能系统,智能家居覆盖了人们的日常生活。
所以,如果说年轻人追求时尚,便捷的生活方式。老年人则是,智能家居则是刚性需求。毕竟老年人行动不便,更需要高科技的辅助。智能联网设备使家更安全,使日常生活更轻松。
嵌入式智能家居控制板通过无线, WIFI,局域网的方式,控制家用电器控制,家庭安防控制,家庭监视监测控制,家庭信息控制,栋(户)门口机可视对讲,家庭娱乐控制,家庭环境控制等。同时也可以通过APP远程控制嵌入式智能家居控制板,来控制家居各种电器及相关设备场景监控。手机终端也可以通过远程浏览WAP网页,来控制家居各种电器及相关设备场景监控。
(1)投入和目前,嵌入式智能家居控制板通过无线, WIFI,局域网的方式,可控制家用电器,家庭环境控制等控制。下一阶段,将增加其他功能,家庭安防系统,家庭娱乐环境等系统。
(2)嵌入式智能家居控制板已完全可以在手机app界面进行控制,未发生其他情况。下一阶段,将完善手机app的界面,及功能,将其他功能添加进去。
(3)嵌入式智能家居控制板在网页端的控制已初步形成,未来一段时间将继续完善网页的界面视图,添加与手机app相同的功能,更好的让客户操作简单,简单明了。
(1)本项目在服务器上选择部署在阿里云服务器,使用epoll多线程的服务端编程与http协议,将STM32单片机,APP,网页控制连接上服务器,从而实现远程数据通信与控制,使人们能够无视距离的限制来查看并控制自己的家居,搭载了语音信息交互,使得用户可以在家里更方便地操作家居,查看当前的天气,温湿度,网络时间等情况,人脸识别功能的加入,提高了控制板的智能化,当客人或者用户没带钥匙时,可以通过人脸信息打开大门,通过K210的深度学习神经网络,增加了数据的可信度,放置误识别导致的错误。
(2)电路集成化思路的加入,使得智能家居控制系统板减少了杜邦线的使用,增加了电路的稳定性与可靠性。通过将多种智能控制方式集于一体 ,实现智能管理与控制,真正让用户真切感知到智能家居的强大,感受到人工智能时代智能化对人们日常生活提供的便利。
(1)手机app搭载基于阿里云服务器,基于epoll多线程编程,通过QT开发APP上位机。
(2)控制面板服务器基于http协议实现数据传输,通过AD软件将STM32最小系统板,温度传感器,火焰传感器,湿度传感器,ESP8266,无源蜂鸣器等模块集成在一块PCB板上。
(3)网页控制,通过连接http通信协议的服务器实现的web的网络通信,利用Visual Studio 软件编写web代码。
采用无线wifi模块,控制家用电器,智能灯控开关,自动窗帘控制器,无线通用报警盒,无线紧 急按钮,智能调光开关等。利用嵌入Linux操作系统,采用linux2.6.21内核,支持多种网络应用。处理器采用,S3C6410X是基于ARM1176JZF-S核地用于手持、移动等终端设备的通用处理器。Internet 远程TCP/IP控制技术,采用了国际通用标准TCP/IP协议。B/S工作模式下,用户只需在客户端装有通用的浏览器,就可以向网络上的某一WEB服务器提出请求。WEB服务器对用户身份进行验证后,接受用户的请求,执行相应的扩展应用程序与数据库服务器进行连接,数据库服务器接收WEB服务器对数据操作请求后,实现用户对数据查询、更改、更新等功能,把运行结果提交给WEB服务器。WEB服务器利用HTTP协议把运行结果通过主页形式传到客户端,客户机接收传来的主页文件,并把它显示在WEB浏览器上。手机app,采用Internet 远程TCP/IP控制技术,采用了国际通用标准TCP/IP协议。B/S工作模式下,用户手机客服端便可以控制。
- #include "stm32f4xx.h"
- #include "./usart/bsp_debug_usart.h"
- #include "./adc/bsp_adc.h"
- #include "./led/bsp_led.h"
- #include
- #include "bsp_general_tim.h"
- #include "obj_fire.h"
- #include "obj_dht11.h"
- #include "./systick/bsp_SysTick.h"
- #include "obj_esp8266.h"
- #include "string.h"
- #include "obj_door.h"
- extern int TData[7];
-
- // ADC转换的电压值通过MDA方式传到SRAM
- extern __IO uint16_t ADC_ConvertedValue[RHEOSTAT_NOFCHANEL];
-
- // 局部变量,用于保存转换计算后 的电压值
- float ADC_ConvertedValueLocal[RHEOSTAT_NOFCHANEL]={0};
- int tran;
- char Stq[7]="\0";
- extern uint8_t DataBuf[5];
- int dk=0,jud=0;
- int zt=0;
- extern char js;
- int connect_statue = 0; //0为未连接 1为连上树莓派 2为连上天气 3为连上时间
- char Datax[40]="\0",tqx[15]="\0";
- char sdu[5]="\0";
- void send_sd(int x){
- printf("n0.val=%d\xff\xff\xff",x);
- sdu[0] = '%';
- sdu[1] = '\0';
- sdu[2] = '\0';
- sdu[3] = '\0';
- sdu[4] = '\0';
- if(x<10){
- sdu[0]=x+48;
- sdu[1]='%';
- }
- else if(x <100){
- sdu[0]=(x/10)+48;
- sdu[1]=(x%10)+48;
- sdu[2]='%';
- }
- else{
- sdu[0]=(x/100)+48;
- sdu[1]=(x%100/10)+48;
- sdu[2]=(x%10)+48;
- sdu[3]='%';
- }
- Usart_SendString(ESP8266_USART,sdu);
- }
- int main(void)
- {
- int book,i;
- SysTick_Init(0);
- /*初始化USART 配置模式为 115200 8-N-1,中断接收*/
- Debug_USART_Config();
- ESP8266_USART_Config();
- HMI_USART_Config();
- LED_GPIO_Config();
- TIMx_Configuration();
- FIRE_GPIO_Config();
- DHT11_GPIO_Config();
- DOOR_Configuration();
-
- LED_RGBOFF
-
- // while(1){
- // book = get_dht11_data();
- // if(book ==1){
- // printf("温度:%d 湿度:%d ",DataBuf[2],DataBuf[0]);
- // }
- // else{
- // printf("no\n");
- // }
- // printf("MQ-6=%d 火焰=%d\n",read_mq(),read_fire());
- // delay_ms(1500);
- // }
- // Usart_SendString(DEBUG_USART,"Test Start\n");
- delay_ms(200);
- // tran = 0;
- // connect_time();
- // delay_ms(500);
- //Usart_SendByte(DEBUG_USART,'1');
- tran = 0;
- connect_tq();
- delay_ms(500);
- while(tran == 0);
- tran = 0;
- connect_smp();
- delay_ms(1200);
-
- //Usart_SendByte(DEBUG_USART,'3'); //连接树莓派
- // for(i=0;i<25;i++){
- // Usart_SendByte(DEBUG_USART,Datax[i]);
- // }
- // Usart_SendByte(DEBUG_USART,'\n');
- // for(i=0;i<5;i++){
- // Usart_SendByte(DEBUG_USART,tqx[i]);
- // }
- Usart_SendByte(DEBUG_USART,'\n');
- // Data_trans();
- // printf("n2.val=%d\xff\xff\xff",TData[2]);
- // printf("n3.val=%d\xff\xff\xff",TData[0]);
- // printf("n4.val=%d\xff\xff\xff",TData[1]);
- // printf("n5.val=%d\xff\xff\xff",TData[3]);
- // printf("n6.val=%d\xff\xff\xff",TData[4]);
- // printf("ts=%d\xff\xff\xff",TData[5]);
- delay_ms(50);
- printf("t31.txt=\"已连接\"\xff\xff\xff");
- delay_ms(50);
- while(1){
-
- book = get_dht11_data();
- if(book ==1){
- send_sd(DataBuf[0]);//发送湿度
- delay_ms(500);
- Send_Temp();//发送温度
- }
- //connect_smp();
- delay_ms(500);
- get_tq();
- if(strcmp(Stq,"Sun") == 0||strcmp(Stq,"Cle") ||strcmp(Stq,"Lig") == 0){
- Usart_SendString(ESP8266_USART,"Q");
- Usart_SendString(HMI_USART,"t18.txt=\"晴天\"\xff\xff\xff");
- }
- else if(strcmp(Stq,"Clo") == 0){
- Usart_SendString(ESP8266_USART,"D");
- Usart_SendString(HMI_USART,"t18.txt=\"多云\"\xff\xff\xff");
- }
- else if(strcmp(Stq,"Sno") == 0){
- Usart_SendString(ESP8266_USART,"X");
- Usart_SendString(HMI_USART,"t18.txt=\"雪天\"\xff\xff\xff");
- }
- else if(strcmp(Stq,"Rai") == 0){
- Usart_SendString(ESP8266_USART,"Y");
- Usart_SendString(HMI_USART,"t18.txt=\"雨天\"\xff\xff\xff");
- } //发送天气情况
- delay_ms(500);
- if(read_fire() == 1){
- Usart_SendString(ESP8266_USART,"O");
- TIM_SetCompare2(GENERAL_TIM, 79);
- Usart_SendString(HMI_USART,"t20.txt=\"危险\"\xff\xff\xff");
- }
- else if(read_fire() == 0){
- Usart_SendString(ESP8266_USART,"N");
- TIM_SetCompare2(GENERAL_TIM, 0);
- Usart_SendString(HMI_USART,"t20.txt=\"安全\"\xff\xff\xff");
-
- }
- delay_ms(500);
- Data_trans(); //时间转换
- Usart_SendString(ESP8266_USART,"y\n");
- }
- while(1);
- }
-
-
-
- /*********************************************END OF FILE**********************/
-
- #include "widget.h"
- #include "ui_widget.h"
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include "widget.h"
- #include
- #include
-
- #include
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
-
- this->setWindowIcon(QIcon(":/res/favicon.ico"));
-
- ui->setupUi(this);
- QPixmap icon1(":/res/favicon.ico");
- ui->pushButton->setIcon(icon1);
-
-
- this->setFixedSize(this->width(), this->height());
- qDebug()<<this->width()<<' '<<this->height();
- setWindowTitle("你好慧生活");
- m = new QWidget();
- m->setWindowIcon(QIcon(":/res/favicon.ico"));
-
- QPixmap *pax = new QPixmap(":/picture/gtx.jpg");
- ui->label->setScaledContents(true);
- ui->label->setPixmap(*pax);
-
- QPixmap *pax1 = new QPixmap(":/picture/xbmu.jpg");
- ui->label_9->setScaledContents(true);
- ui->label_9->setPixmap(*pax1);
-
- QPixmap *pax2 = new QPixmap(":/picture/DZSJ.jpg");
- ui->label_11->setScaledContents(true);
- ui->label_11->setPixmap(*pax2);
-
-
- ui->radioButton_2->setChecked(true);
- ui->radioButton_4->setChecked(true);
- ui->radioButton_6->setChecked(true);
- ui->radioButton_8->setChecked(true);
- ui->radioButton_9->setChecked(true);
-
- tcpsocket = new QTcpSocket();
-
-
- //服务器ip地址
- tcpsocket ->connectToHost("124.223.213.54",987);
- connect(tcpsocket,&QTcpSocket::connected,[=](){
- tcpsocket->write("w\n");
- });
- connect(tcpsocket,&QTcpSocket::readyRead,[=](){
- QByteArray arry = tcpsocket->readAll();
- qDebug()<
- if(strcmp(arry,"L0")==0){
- ui->radioButton->setChecked(true);
- }
- else if(strcmp(arry,"L1")==0){
- ui->radioButton_2->setChecked(true);
- }
- if(strcmp(arry,"L2")==0){
- ui->radioButton_3->setChecked(true);
- }
- else if(strcmp(arry,"L3")==0){
- ui->radioButton_4->setChecked(true);
- }
- if(strcmp(arry,"L4")==0){
- ui->radioButton_5->setChecked(true);
- }
- else if(strcmp(arry,"L5")==0){
- ui->radioButton_6->setChecked(true);
- }
- if(strcmp(arry,"L6")==0){
- ui->radioButton_7->setChecked(true);
- }
- else if(strcmp(arry,"L7")==0){
- ui->radioButton_8->setChecked(true);
- }
- else if(strcmp(arry,"f0")==0){
- ui->radioButton_9->setChecked(true);
- }
- else if(strcmp(arry,"f1")==0){
- ui->radioButton_10->setChecked(true);
- }
- else if(strcmp(arry,"f2")==0){
- ui->radioButton_11->setChecked(true);
- }
- else if(strcmp(arry,"f3")==0){
- ui->radioButton_12->setChecked(true);
- }
-
-
-
-
- //火灾警报
- if(strcmp(arry,"O")==0){
- Fire_Data->setText("危险");
- }
- else if(strcmp(arry,"N")==0){
- Fire_Data->setText("安全");
- }
-
- //湿度检测
- if(strcmp(arry,"0%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"1%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"2%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"3%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"4%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"5%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"6%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"7%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"8%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"9%")==0){
- DHT_Data->setText(arry);
- }
- if(strcmp(arry,"10%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"11%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"12%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"13%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"14%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"15%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"16%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"17%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"18%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"19%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"20%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"21%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"22%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"23%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"24%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"25%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"26%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"27%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"28%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"29%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"30%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"31%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"32%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"33%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"34%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"35%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"36%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"37%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"38%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"39%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"40%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"41%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"42%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"43%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"44%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"45%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"46%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"47%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"48%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"49%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"50%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"51%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"52%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"53%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"54%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"55%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"56%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"57%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"58%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"59%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"60%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"61%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"62%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"63%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"64%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"65%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"66%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"67%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"68%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"69%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"70%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"71%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"72%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"73%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"74%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"75%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"76%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"77%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"78%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"79%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"80%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"81%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"82%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"83%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"84%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"85%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"86%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"87%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"88%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"89%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"90%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"91%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"92%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"93%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"94%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"95%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"96%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"97%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"98%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"99%")==0){
- DHT_Data->setText(arry);
- }
- else if(strcmp(arry,"100%")==0){
- DHT_Data->setText(arry);
- }
-
- //天气检测
- if(strcmp(arry,"Q")==0){
- Sun_Data->setText("晴天");
- }
- else if(strcmp(arry,"Y")==0){
- Sun_Data->setText("雨天");
- }
- else if(strcmp(arry,"D")==0){
- Sun_Data->setText("多云");
- }
- else if(strcmp(arry,"X")==0){
- Sun_Data->setText("雪天");
- }
- //温度检测
- if(strcmp(arry,"-13")==0){
- Tempature_Data->setText("-13°");
- }
- if(strcmp(arry,"-12")==0){
- Tempature_Data->setText("-12°");
- }
- if(strcmp(arry,"-11")==0){
- Tempature_Data->setText("-11°");
- }
- if(strcmp(arry,"-10")==0){
- Tempature_Data->setText("-10°");
- }
- if(strcmp(arry,"-9")==0){
- Tempature_Data->setText("-9°");
- }
- if(strcmp(arry,"-8")==0){
- Tempature_Data->setText("-8°");
- }
- if(strcmp(arry,"-7")==0){
- Tempature_Data->setText("-7°");
- }
- if(strcmp(arry,"-6")==0){
- Tempature_Data->setText("-6°");
- }
- if(strcmp(arry,"-5")==0){
- Tempature_Data->setText("-5°");
- }
- if(strcmp(arry,"-4")==0){
- Tempature_Data->setText("-4°");
- }
- if(strcmp(arry,"-3")==0){
- Tempature_Data->setText("-3°");
- }
- if(strcmp(arry,"-2")==0){
- Tempature_Data->setText("-2°");
- }
- if(strcmp(arry,"-1")==0){
- Tempature_Data->setText("-1°");
- }
- if(strcmp(arry,"0")==0){
- Tempature_Data->setText("0°");
- }
- else if(strcmp(arry,"1")==0){
- Tempature_Data->setText("1°");
- }
- else if(strcmp(arry,"2")==0){
- Tempature_Data->setText("2°");
- }
- else if(strcmp(arry,"3")==0){
- Tempature_Data->setText("3°");
- }
- else if(strcmp(arry,"4")==0){
- Tempature_Data->setText("4°");
- }
- else if(strcmp(arry,"5")==0){
- Tempature_Data->setText("5°");
- }
- else if(strcmp(arry,"6")==0){
- Tempature_Data->setText("6°");
- }
- else if(strcmp(arry,"7")==0){
- Tempature_Data->setText("7°");
- }
- else if(strcmp(arry,"8")==0){
- Tempature_Data->setText("8°");
- }
- else if(strcmp(arry,"9")==0){
- Tempature_Data->setText("9°");
- }
- else if(strcmp(arry,"10")==0){
- Tempature_Data->setText("10°");
- }
- else if(strcmp(arry,"11")==0){
- Tempature_Data->setText("11°");
- }
- else if(strcmp(arry,"12")==0){
- Tempature_Data->setText("12°");
- }
- else if(strcmp(arry,"13")==0){
- Tempature_Data->setText("13°");
- }
- else if(strcmp(arry,"14")==0){
- Tempature_Data->setText("14°");
- }
- else if(strcmp(arry,"15")==0){
- Tempature_Data->setText("15°");
- }
- else if(strcmp(arry,"16")==0){
- Tempature_Data->setText("16°");
- }
- else if(strcmp(arry,"17")==0){
- Tempature_Data->setText("17°");
- }
- else if(strcmp(arry,"18")==0){
- Tempature_Data->setText("18°");
- }
- else if(strcmp(arry,"19")==0){
- Tempature_Data->setText("19°");
- }
- else if(strcmp(arry,"20")==0){
- Tempature_Data->setText("20°");
- }
- else if(strcmp(arry,"21")==0){
- Tempature_Data->setText("21°");
- }
- else if(strcmp(arry,"22")==0){
- Tempature_Data->setText("22°");
- }
- else if(strcmp(arry,"23")==0){
- Tempature_Data->setText("23°");
- }
- else if(strcmp(arry,"24")==0){
- Tempature_Data->setText("24°");
- }
- else if(strcmp(arry,"25")==0){
- Tempature_Data->setText("25°");
- }
- else if(strcmp(arry,"26")==0){
- Tempature_Data->setText("26°");
- }
- else if(strcmp(arry,"27")==0){
- Tempature_Data->setText("27°");
- }
- else if(strcmp(arry,"28")==0){
- Tempature_Data->setText("28°");
- }
- else if(strcmp(arry,"29")==0){
- Tempature_Data->setText("29°");
- }
- else if(strcmp(arry,"30")==0){
- Tempature_Data->setText("30°");
- }
- else if(strcmp(arry,"31")==0){
- Tempature_Data->setText("31°");
- }
- else if(strcmp(arry,"32")==0){
- Tempature_Data->setText("32°");
- }
- else if(strcmp(arry,"33")==0){
- Tempature_Data->setText("33°");
- }
- else if(strcmp(arry,"34")==0){
- Tempature_Data->setText("34°");
- }
- else if(strcmp(arry,"35")==0){
- Tempature_Data->setText("35°");
- }
- else if(strcmp(arry,"36")==0){
- Tempature_Data->setText("36°");
- }
- else if(strcmp(arry,"37")==0){
- Tempature_Data->setText("37°");
- }
- else if(strcmp(arry,"38")==0){
- Tempature_Data->setText("38°");
- }
- else if(strcmp(arry,"39")==0){
- Tempature_Data->setText("39°");
- }
- else if(strcmp(arry,"40")==0){
- Tempature_Data->setText("40°");
- }
- else if(strcmp(arry,"41")==0){
- Tempature_Data->setText("41°");
- }
- else if(strcmp(arry,"42")==0){
- Tempature_Data->setText("42°");
- }
- else if(strcmp(arry,"43")==0){
- Tempature_Data->setText("43°");
- }
- else if(strcmp(arry,"44")==0){
- Tempature_Data->setText("44°");
- }
- else if(strcmp(arry,"45")==0){
- Tempature_Data->setText("45°");
- }
- });
- m->hide();
- Environment();
- }
- void Widget:: Environment(){
-
-
- m->setFixedSize(1006, 1050);
- m->setWindowTitle("慧生活");
-
-
- Tempature_Text = new QLabel(m);
- Tempature_Data = new QLabel(m);
- Sun_Text = new QLabel(m);
- Sun_Data = new QLabel(m);
- Gas_Text = new QLabel(m);
- Gas_Data = new QLabel(m);
- DHT_Text = new QLabel(m);
- DHT_Data = new QLabel(m);
- Fire_Text = new QLabel(m);
- Fire_Data = new QLabel(m);
- Title = new QLabel(m);
- Picture = new QLabel(m);
- Test = new QLabel(m);
- XBMU = new QLabel(m);
- DZSJ = new QLabel(m);
- Next = new QCommandLinkButton("控制面板",m);
-
- Show_DHT();
- Show_picture();
- Show_Title();
- Show_Sun();
- Show_Tempature();
- Show_Fire();
-
-
- Next->setGeometry(830,700,170,71);
- Next->show();
- connect(Next,&QCommandLinkButton::clicked,[=](){
- this->show();
- m->hide();
- });
- }
-
-
-
- //qt图片路径
- void Widget::Show_picture(){
- QPixmap *pax1 = new QPixmap(":/picture/gtx.jpg");
- Picture->setScaledContents(true);
- Picture->setPixmap(*pax1);
- Picture->resize(430,430);
- Picture->move(600,190);
-
- QPixmap *pax2 = new QPixmap(":/picture/xbmu.jpg");
- XBMU->setScaledContents(true);
- XBMU->setPixmap(*pax2);
- XBMU->resize(100,100);
- XBMU->move(100,40);
-
- QPixmap *pax3 = new QPixmap(":/picture/DZSJ.jpg");
- DZSJ->setScaledContents(true);
- DZSJ->setPixmap(*pax3);
- DZSJ->resize(181,101);
- DZSJ->move(820,40);
-
-
-
- }
- void Widget::paintEvent(QPaintEvent *){
-
- QPainter painter(this);
- QPixmap pix;
- pix.load(":/picture/beijing.jpg");
- painter.drawPixmap(0,0,this->width(),this->height(),pix);
-
- }
-
-
- void Widget::Show_Title(){
- Title->setAlignment(Qt::AlignHCenter); //设置label属性
- Title->setText("智慧生活"); //设置label内容
- QFont Title_font ("黑体", 22, 30);
- Title->setGeometry(120,30,801,90);
- Title->setFont(Title_font);
- Title->show();
- }
-
- void Widget::Show_Tempature(){
- Tempature_Text->setAlignment(Qt::AlignHCenter); //设置label属性
- Tempature_Text->setText("温度大小:"); //设置label内容
- QFont Tempature_font ("楷体", 15, 0);
- Tempature_Text->setGeometry(40,200,251,61);
- Tempature_Text->setFont(Tempature_font);
- Tempature_Text->show();
-
- Tempature_Data->setAlignment(Qt::AlignHCenter); //设置label属性
- Tempature_Data->setText("27°"); //设置label内容
- QFont Tempature_Data_font ("楷体", 15, 0);
- Tempature_Data->setGeometry(270,210,251,61);
- Tempature_Data->setFont(Tempature_Data_font);
- Tempature_Data->show();
- }
- void Widget::Show_Sun(){
- Sun_Text->setAlignment(Qt::AlignHCenter); //设置label属性
- Sun_Text->setText("天气情况:"); //设置label内容
- QFont Sun_font ("楷体", 15, 0);
- Sun_Text->setGeometry(40,330,251,61);
- Sun_Text->setFont(Sun_font);
- Sun_Text->show();
-
- Sun_Data->setAlignment(Qt::AlignHCenter); //设置label属性
- Sun_Data->setText("晴天"); //设置label内容
- QFont Sun_Data_font ("楷体", 15, 0);
- Sun_Data->setGeometry(270,330,251,61);
- Sun_Data->setFont(Sun_Data_font);
- Sun_Data->show();
- }
- void Widget::Show_Fire(){
- Fire_Text->setAlignment(Qt::AlignHCenter); //设置label属性
- Fire_Text->setText("火灾警报:"); //设置label内容
- QFont Fire_font ("楷体", 15, 0);
- Fire_Text->setGeometry(40,460,251,61);
- Fire_Text->setFont(Fire_font);
- Fire_Text->show();
-
- Fire_Data->setAlignment(Qt::AlignHCenter); //设置label属性
- Fire_Data->setText("安全"); //设置label内容
- QFont Fire_Data_font ("楷体", 15, 0);
- Fire_Data->setGeometry(270,460,251,61);
- Fire_Data->setFont(Fire_Data_font);
- }
- void Widget::Show_DHT(){
- DHT_Text->setAlignment(Qt::AlignHCenter); //设置label属性
- DHT_Text->setText("湿度大小:"); //设置label内容
- QFont DHT_font ("楷体", 15, 0);
- DHT_Text->setGeometry(40,590,251,61);
- DHT_Text->setFont(DHT_font);
- DHT_Text->show();
-
- DHT_Data->setAlignment(Qt::AlignHCenter); //设置label属性
- DHT_Data->setText("44%"); //设置label内容
- QFont DHT_Data_font ("楷体", 15, 0);
- DHT_Data->setGeometry(270,600,251,61);
- DHT_Data->setFont(DHT_Data_font);
- DHT_Data->show();
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
- void Widget::closeEvent(QCloseEvent* ){
- tcpsocket->write("close");
-
- //服务器ip地址
- tcpsocket ->connectToHost("124.223.213.54",987);
- }
-
- void Widget::on_radioButton_clicked()
- {
- tcpsocket->write("1");
- }
-
- void Widget::on_radioButton_2_clicked()
- {
- tcpsocket->write("2");
- }
-
- void Widget::on_radioButton_3_clicked()
- {
- tcpsocket->write("3");
- }
-
- void Widget::on_radioButton_4_clicked()
- {
- tcpsocket->write("4");
- }
-
- void Widget::on_radioButton_5_clicked()
- {
- tcpsocket->write("5");
- }
-
- void Widget::on_radioButton_6_clicked()
- {
- tcpsocket->write("6");
- }
-
- void Widget::on_radioButton_7_clicked()
- {
- tcpsocket->write("7");
- }
-
- void Widget::on_radioButton_8_clicked()
- {
- tcpsocket->write("8");
- }
-
-
- void Widget::on_radioButton_9_clicked()
- {
- tcpsocket->write("a");
- }
-
- void Widget::on_radioButton_10_clicked()
- {
- tcpsocket->write("b");
- }
-
- void Widget::on_radioButton_11_clicked()
- {
- tcpsocket->write("c");
- }
-
- void Widget::on_radioButton_12_clicked()
- {
- tcpsocket->write("d");
- }
-
- void Widget::on_commandLinkButton_clicked()
- {
- m->show();
- this->hide();
- }
-
- void Widget::on_pushButton_clicked()
- {
- tcpsocket->write("close");
- tcpsocket ->connectToHost("124.223.213.54",987);
- }
3.5 web服务器端源代码
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #define MAXSIZE 2048
- #include
- /*w\n是app,y\n是树莓派,1是树莓派,2是客户端,3是web*/
- int mgq=1;
- //int ti_web_fd[10];
- //int flag[5];
- struct xxx{
- int ti_fd;
- int status;
- }sock[10];
- struct xx{
- int bed_light;
- int yc_light;
- int kt_light;
- int ct_light;
- int fs_speed;
- int ct_door;
- }home;
-
- void send_index(int cfd)
- {
- int ret;
- char buf[4094]="\0";
- char name[100]="你好贾维斯";
- sprintf(buf,"
%s ",name);