网站建设综合实训总结,写一个像wordpress,有备案号的网站是公司的吗,期货网站做模拟1、项目介绍
1.1、项目功能简介
本项目基于elfboard开发板#xff0c;利用qt搭建一个智慧家庭控制中心系统#xff0c;该系统由四个部分组成#xff1a;网络连接 、天气预报、室内环境监测和家具控制中心。网络连接部分的功能是扫描周围的wifi网络并连接#xff0c;天气预…1、项目介绍
1.1、项目功能简介
本项目基于elfboard开发板利用qt搭建一个智慧家庭控制中心系统该系统由四个部分组成网络连接 、天气预报、室内环境监测和家具控制中心。网络连接部分的功能是扫描周围的wifi网络并连接天气预报部分的功能是在网络连接成功后获得某地的天气信息。室内环境监测主要是利用温湿度传感器来监测室内的环境家具控制中心主要是控制led灯和蜂鸣器。
1.2、项目软硬件需求 ELF1开发板一块 wifi 触摸屏 qt 注册获取天气接口 实况天气接口API开发指南 未来一天天气预报api - 天气API
2、项目功能
2.1、网络连接
网络连接部分的ui如图所示
本项目使用wpa_supplicant工具连接wifi该工具是elfborad开发板的操作系统自带的。
该部分的核心代码如下 扫描附近的wifi然后将数据存储到wifiname.txt文件中核心代码如下。 system(killall wpa_suppicant); qDebug()killall wpa_suppicant; system(rm -rf /var/run/wpa_supplicant); qDebug() rm /var/run/wpa_supplicant; QThread::msleep(1000); system(killall udhcpc); qDebug() killall udhcpc; QThread::msleep(1000); system(wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B); qDebug() wpa_supplicant; QThread::msleep(1000); system(killall wpa_cli); QThread::msleep(1000); system(wpa_cli -i wlan0 scan); QThread::msleep(1000); system(wpa_cli -i wlan0 scan_results ./wifilist); QThread::msleep(1000); system(cat wifilist |awk -F\t {print $5} wifiname.txt); 该部分的代码的作用是读取wifiname.txt文件然后将信息更新到ui中。 while (j12) { j; str in.readLine(); qDebug()str; if(str.isEmpty()) { str ; } switch (j-1) { case 1:ui-Wlan1-setVisible(true); ui-Wlan1-setText(str); break; case 2:ui-Wlan2-setVisible(true); ui-Wlan2-setText(str); break; case 3:ui-Wlan3-setVisible(true); ui-Wlan3-setText(str); break; case 4:ui-Wlan4-setVisible(true); ui-Wlan4-setText(str); break; case 5:ui-Wlan5-setVisible(true); ui-Wlan5-setText(str); break; case 6:ui-Wlan6-setVisible(true); ui-Wlan6-setText(str); break; case 7:ui-Wlan7-setVisible(true); ui-Wlan7-setText(str); break; case 8:ui-Wlan8-setVisible(true); ui-Wlan8-setText(str); break; case 9:ui-Wlan9-setVisible(true); ui-Wlan9-setText(str); break; case 10:ui-Wlan10-setVisible(true); ui-Wlan10-setText(str); break; case 11:ui-Wlan11-setVisible(true); ui-Wlan11-setText(str); break; case 12:ui-Wlan12-setVisible(true); ui-Wlan12-setText(str); break; default:break; } } 该部分代码的作用是在用户选择好连接的wifi并输入密码后连接wifi。 char set_ssid[64]; char set_password[64]; char select_wlan[64]; if (ui-wifimima-text().isEmpty()) { QMessageBox::warning(this,tr(Connect information), tr(密码不能为空)); } else { int i get_i(); sprintf(set_ssid,wpa_cli -i wlan0 set_network %d ssid \%s\,i,wifiName.toLatin1().data()); sprintf(set_password, wpa_cli -i wlan0 set_network %d psk \%s\ ,i,ui-wifimima-text().toLatin1().data()); qDebug() set_password; sprintf(select_wlan, wpa_cli -i wlan0 select_network %d ,i); system(set_ssid); system(set_password); system(wpa_cli -i wlan0 list_network); system(select_wlan); system(udhcpc -i wlan0 -B);
2.2、天气预报
该页面的ui如图所示
2.2.1、准备工作
在实况天气接口API开发指南 未来一天天气预报api - 天气API网站注册注册好后可以看到如下信息每个邮箱号有3000次的免费的请求机会
我使用的是v61接口https://tianqiapi.com/index/doc?versionv61该接口下的天气信息的json格式如下所示 { cityid:101271201, #城市编号 date:2020-07-15, week:星期三, update_time:10:15, #更新时间 city:内江, #城市名称 cityEn:neijiang, country:中国, countryEn:China, wea:阴, #实时天气情况 wea_img:yin, tem:25, #实时温度 tem1:29, #高温 tem2:23, #低温 win:西风, #风向 win_speed:2级, #风力等级 win_meter:小于12km/h, #风速 humidity:97%, #湿度 visibility:24.22km, #能见度 pressure:961, #气压 uvIndex:3, #紫外线等级 uvDescription: 中等,#紫外线描述 air:15, #空气质量 air_pm25:8, #pm2.5 air_level:优, air_tips:空气很好可以外出活动呼吸新鲜空气拥抱大自然, rain_pcpn:2.5,#降雨量2.5mm alarm:{ alarm_type:暴雨, #预警类型 alarm_level:橙色, #预警等级 alarm_content:内江市气象台7月15日5时23分发布第16号暴雨橙色预警信号: 预计我市市中区部分地方3小时降雨量将达50毫米以上并伴有雷电和阵性大风请加强防范强降水、雷电和大风等带来的危害。 预警信息来源国家预警信息发布中心 #预警描述 }, aqi:{ #空气质量指数详情 air:15, air_level:优, air_tips:空气很好可以外出活动呼吸新鲜空气拥抱大自然, pm25:8, pm25_desc:优, pm10:10, pm10_desc:优, o3:47, o3_desc:优, no2:12, no2_desc:优, so2:8, so2_desc:优, co: 1, co_desc: 优, kouzhao:无需戴口罩, waichu:适宜外出, yundong:适宜运动, kaichuang:适宜开窗, jinghuaqi:关闭净化器, cityid:101271201, city:内江, cityEn:neijiang, country:中国, countryEn:China } }
2.2.2、请求数据
请求天气数据的代码如下所示appid后面的数字和appsecret是在注册时网站给的密匙。 char quest_array[256] http://v1.yiketianqi.com/api?unescape1versionv61appid19311841appsecretnAGo24xicity; QNetworkRequest quest; sprintf(quest_array, %s%s, quest_array, cityStr.toUtf8().data()); quest.setUrl(QUrl(quest_array)); quest.setHeader(QNetworkRequest::UserAgentHeader, RT-Thread ART); manager-get(quest); /*发送get网络请求*/
我们在发送完请求信息后会获得回复信息信息是json格式我们只需要解析该json数据就行。主要代码如下所示。 QJsonDocument json_recv QJsonDocument::fromJson(all.toUtf8(), err);//解析json对象 if (!json_recv.isNull() err.error QJsonParseError::NoError) { QJsonObject object json_recv.object(); QStringList keys object.keys(); foreach (const QString key,keys){ qDebug() Key: key; } QString weather_type object.value(wea).toString(); qDebug()weather_type :weather_type; QString tuijian object.value(air_tips).toString(); qDebug()tuijian: tuijian; QString low object.value(tem2).toString(); qDebug()low :low; QString high object.value(tem1).toString(); QString wendu low.mid(low.length() - 4, 4) ~ high.mid(high.length() - 4, 4); qDebug()wendu: wendu; QString strength object.value(win_speed).toString(); qDebug()strength: strength; strength.remove(0, 8); strength.remove(strength.length() - 2, 2); QString fengli object.value(win).toString() strength; QString ziwaixian object.value(uvIndex).toString(); qDebug()ziwaixian :ziwaixian; QString kongqizhiliang object.value(air).toString(); qDebug()kongqizhiliang :kongqizhiliang; ui-label_weather_2-setText(weather_type); ui-label_temperature_2-setText(wendu); ui-label_wind_2-setText(fengli); ui-label_kongqizhiliang-setText(kongqizhiliang); ui-label_uv-setText(ziwaixian); ui-label_recommend_2-setText(tuijian); }
2.3、室内环境监测
该部分的ui如图所示
该部分的代码比较简单主要是新建立一个线程然后不停的读取传感器的信息然后将相关的信息展示即可。核心代码如下 void CollentdataThread::run() { int fd aht20_init(); emit send(temp,hum); while (1) { /*read temp data*/ aht20_read(fd); emit send(temp,hum); sleep(2); } }
2.4、家具控制中心
该部分的ui如图所示
该部分主要是利用为了充分的展示开发板上的硬件而制作我们假设3个led灯就是我们家里的灯蜂鸣器可以假设为报警器。本身而言没什么。
3、软件编译
开发板的qt应用教程对如何在elfboard开发板上编译qt程序有详细的介绍在此我就不多做介绍了。我只想强调一点的是在使用arm-gcc编译完成后的可执行文件是不能在我们x86的电脑上运行的如图所示。我们需要先在电脑上调试我们软件成功之后再使用arm-gcc编译然后移植到开发板上。
4、项目总结
本项目制作了一个智慧家庭的app该app充分的利用了开发板自带的wifiled灯温湿度传感器蜂鸣器等硬件同时也考虑连接wifi后可以访问网络的特性制作了一个天气页面该页面可以获得不同地区的天气情况。