请选择 进入手机版 | 继续访问电脑版

智能创客,中国最大的极客空间,智能平台,免费教学,视频教程,手把手教你创造儿时梦想!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 22800|回复: 23

WIFI作品DIY教程06-《openwrt后台程序》控制mysql、串口通信等

  [复制链接]

110

主题

396

帖子

2319

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2319
QQ
发表于 2014-11-2 16:25:58 | 显示全部楼层 |阅读模式
续上篇教程WIFI作品DIY教程05-《家居服务器》web server(php+mysql+uhttpd)
我们已经成功在openwrt建立一个php+mysql服务器(等同于现在的云端:不过也是个php+mysql)。

那么有了web服务器还是不够的,我们需要写一个后台程序,不断将传感器或控制器的数据进行添加、更新、获取、删除等。
这样我们才能通过php连接mysql数据库显示各种数据出来,然后编写APP或网页或IOS客户端。然后就可以手机远程控制了哦!


我们需要的配件:Z WIFI核心板USB扩展板SD卡arduino扩展板

第一部分:创建MYSQL数据库表(存储各种数据和命令)
一、下载navicat for mysql软件
下载地址:
http://pan.baidu.com/s/1eQgUZM6(里面有破解key)
运行navicat.exe,输入注册码就可以登陆了!
173908uh6fy2500hhtyoyo.jpg
输入图上信息确定,密码是:znck007(之前安装mysql设置的)




173908aq14xwnfstticuvf.jpg

新建一个数据库。

210.jpg
数据库名称,编码,确定就新建了znckapi数据库。


220.jpg
然后我们再建表来存储数据,点击“新建查询”是来执行sql语句。


230.jpg
直接复制下面的代码,然后执行。

CREATE TABLE IF NOT EXISTS `api_worklist` (
  `id` int(16) unsigned NOT NULL AUTO_INCREMENT,
  `type` int(2) NOT NULL COMMENT '1网设2上传3定时',
  `uid` int(8) NOT NULL,
  `sid` varchar(3) NOT NULL,
  `nid` varchar(3) NOT NULL,
  `data` varchar(32) NOT NULL,
  `note` varchar(64) NOT NULL,
  `status` int(2) NOT NULL COMMENT '1成功2失败3超次数4超15分',
  `time` datetime NOT NULL,
  `ip` varchar(16) NOT NULL,
  `num` int(2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `uid` (`uid`),
  KEY `time` (`time`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


240.jpg
刷新一下,表就出现了,双击可以查看表数据了哦!


第二部分:上传web网站文件(完全开源哦)
winscp文件上传软件
http://pan.baidu.com/s/1qW0nhNI


网站文件和后台程序http://pan.baidu.com/s/1i3pGVcD
下载运行winscp,然后解压www里的文件上传到openwrt
170755xhcqp88xy3woc8yi.jpg

170755hwm5yyttnz7o9n9u.jpg
选择root,然后双击mnt/sda1/www目前进入SD卡的www目录,没有则右击新建www。

100759zsfg1cgjrggcqxgy.jpg
上传到openwrt





第三部分:编写PHP网页(网页操作MYSQL数据库,并显示出来)

310.jpg
我们先看一下编写PHP的界面,用来测试MYSQL的读取、写入、更新、删除等操作。
PHP又是一门语言哦,不会照我们写的学习就好!



320.jpg
在winscp里打开/mnt/sda1/www/znck007的mysqltest.php文件。



330.jpg
先选择编码utf-8,则否会乱码。
我们会看到:
if( $_GET['mode']=="select")//获取数据库记录

if( $_GET['mode']=="insert") //插入数据

if( $_GET['mode']=="update") //更新数据

if( $_GET['mode']=="delete") //删除数据

点击网页的按钮,就是在执行这些代码哦!



340.jpg
填写操作数据、说明、当前状态,添加后就可以在MYSQL数据库里保存了。
数据库一般保存:
模块类型(如001代表网关、2代表温度等类型,由你自己定义代表什么)
模块编号(如002代表同类型的第二个模块等,也由你自己定义)
操作数据(一般0代码关闭,1代表开灯,1-255代表从1升到255等,也由你定义)
当前状态:(如我们定义:0未处理 1成功 2失败 3超过失败几次等)

这些字段数据对应我们无线传输的{ck00x00x000000}等,是一样的道理。
{ck}是代表我们的标示,00x是模块类型,00x是模块编号,后面就是操作数据咯。




350.jpg
在/mnt/sda1/www/znck007还有个重要的文件就是:conn.php
它是连接MYSQL的,需要设置主机、用户名、密码、数据库名,mysqltest.php引用它才连接到数据库!



第四部分:Python安装(强大的脚本,集成很多类库操作非常简单)
将python安装到sd卡。
110.jpg

mkdir -p /mnt/sda1/python/ (新建软件包目录)
echo dest pythondisk /mnt/sda1/python/ >> /etc/opkg.conf (修改opgk配置文件)
opkg --dest pythondisk install python (将python安装到U盘)
ln -s /mnt/sda1/python/usr/bin/python /usr/bin/python (为python创建快捷方式,如省略此步,需键入 /mnt/sda1/python/usr/bin/python 才能启动python)

opkg --dest pythondisk install pyserial  (安装串口通信类)
opkg --dest pythondisk install python-mysql(安装mysql操作类)


第五部分:编写Python程序(串口通信、读写更删MYSQL数据库,让所有数据互动起来)
510.jpg
在/mnt/sda1/www/cgi-bin里的znckgbrun就是python脚本,记得给他设置权限:属性-》都打勾。


520.jpg
脚本的原理:
1、连接arduino串口,并时时获取数据。
2、当发现有数据则写入mysql(一般用来保存传感器数据)。
3、每一秒获取mysql未处理的数据(一般为网页/app等插入的命令数据)
4、如果有未处理数据,则串口发送到Arduino。
之后我们在家居网关,就可以在Arduino上处理命令然后通过zigbee、nrf24l01、315等无线控制整个家里了。


530.jpg
输入测试脚本是否运行成功
python /mnt/sda1/www/cgi-bin/znckbgrun


541.jpg
如果有相同信息输出,没有提示错误退出,那么说明脚本正常运行了!
关闭请先按Ctrl+Z,然后输入
killall -9 python
killall -9 python

输入二次回车确保完全关闭python


第六部分:编写Arduino扩展板程序和Python串口通信(利用arduino编译生成hex,再刷写到Z WIFI的arduino扩展板)
一、编译hex文件
下载serialtest源代码
http://pan.baidu.com/s/1kT855PH

134832i7ntntv4dqxvt7z7.jpg
解压文件后,运行arduino,如上图。

410.png
选择file->examples->znck007->zwifi_serialtest



094655hcs8djcos82olo2y.jpg 再选择我们的板znck007 arduino Core+ (Atmega644PA@16M,5V)


094656bioqo0a6a7w7z07c.jpg
选择Com口(单独使用usb连接电脑编译时需要选择,否则可以不选)。





420.jpg
点击编译,等待完成编译。

在build的文件夹下找到zwifi_serialtest.cpp.hex文件,再用Winscp上传到openwrt的www目录里。


二、安装arduino刷写软件(可以在openwrt刷写arduino代码)
430.jpg
opkg update

opkg install avrdude

avrdude -p m644p -c arduino -b 115200 -P /dev/ttyUSB0 -C /etc/avrdude.conf -U flash:w:/www/zwifi_mq_2.cpp.hex
然后实行这个命令就可以刷写Arduino代码了。其中/www/zwifi_mq_2.cpp.hex可以改成你的hex文件路径!
133906h5r22z35p30zmg24.jpg
killall -9 python
killall -9 python

先关闭之前的python(防止多次同时运行),
再次运行python /mnt/sda1/www/cgi-bin/znckbgrun,在界面上是没有任何输出是正常的。它会获取到arduino发来的串口数据并保存到数据库了。


第七部分:实现自动启动脚本(重启就会自动启动,无必人为的全自动后台运行)
610.jpg
使用winscp上传znckserver文件到/etc/init.d
这个文件的脚本是(实现在开机启动和停止的代码):
#!/bin/sh /etc/rc.common
# Copyright (C) 2013 OpenWrt.org


START=99
start() {
python /mnt/sda1/www/cgi-bin/znckbgrun &
}
stop() {
killall -9 python
}

620.jpg
上传后,必须给文件权限,一般我们全打上勾。


630.jpg
输入以下命令开机启动,和马上运行吧!
/etc/init.d/znckserver enable
/etc/init.d/znckserver start


如果要停止,请参考以下代码
/etc/init.d/znckserver disable 禁止启动时自动运行

/etc/init.d/znckserver stop 停止znckserver:


完成了这一步,那么家居网关的概念就出来了,我们再ZIGBEE、Nrf24l01、挂蓝牙、315等无线模块。
然后就可以低成本的完成:入室防盗、手机开门、窗帘开窗、电灯开关、无线插座、红外摇控、空气检测、温度调控等功能咯。




《WIFI作品DIY教程系列》
WIFI作品DIY教程01-《wifi开发板》介绍和联网等配置教程
WIFI作品DIY教程02-《openwrt摄像头》3D外壳和diy介绍
WIFI作品DIY教程03-《WIFI音响/MP3播放器/电台》
WIFI作品DIY教程04-《WIFI烟雾煤气报警器》
WIFI作品DIY教程05-《家居服务器》web server(php+mysql+uhttpd)
WIFI作品DIY教程06-《openwrt后台程序》控制mysql、串口通信等
WIFI作品DIY教程07-《wifi家居网关》家居控制中心zigbee/nrf24l01等
WIFI作品DIY教程08-《智能开关》电灯开关、插座(nrf24l01/zigbee)
WIFI作品DIY教程09-《人体红外检测》安防入侵报警功能
WIFI作品DIY教程10-《温湿传感器》DS18B20、DHT11应用。


《Arduino开源智能家居DIY教程系列》
Arduino开源智能家居《花絮1》zigbee小底板DIY成功
Arduino开源智能家居《认识Zigbee》zigbee功能和自组网介绍
Arduino开源智能家居《zigbee开发板》手机/按键点亮LED
Arduino开源智能家居01《网关》升级版网关正式教程(zigbee)
Arduino开源智能家居02《温湿传感器》什么样温湿度才适居
Arduino开源智能家居03《开发板套件》学习zigbee家居-性价比高
Arduino开源智能家居04《插座开关》手机控制:网扇、空调...
Arduino开源智能家居05《红外线》手机红外线控制电器


《百元智能家居DIY教程系列》
《智能家居网关》DIY制作图文教程01-百元智能家居系列
《智能温湿度》DIY制作图文教程02-百元智能家居系列
《智能插座》DIY制作图文教程03-百元智能家居系列
《智能电灯开关》DIY制作图文教程04-百元智能家居系列
《手机红外线》DIY制作图文教程05-百元智能家居系列
关注@智能创客  微信:znck007(打造DIY创客平台)

085804zhqg9z3ggq0y36sn.png









回复

使用道具 举报

0

主题

6

帖子

99

积分

注册会员

Rank: 2

积分
99
QQ
发表于 2014-11-24 20:37:24 | 显示全部楼层
衷心感謝版主昨天(星期天)整天在 QQ上的技術支援: 有問必答, 且耐心解釋, 再加上截圖, 一直到晚上23:40止。
真心說一句, 做 technical support 做到這个份上, 連自己也覺得過意不去 !!! 真心感激, 絕對支持版主不斷出 DIY 的雄文!!
回复 支持 1 反对 0

使用道具 举报

110

主题

396

帖子

2319

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2319
QQ
 楼主| 发表于 2014-11-24 22:44:18 | 显示全部楼层
fmanthon 发表于 2014-11-24 20:37
衷心感謝版主昨天(星期天)整天在 QQ上的技術支援: 有問必答, 且耐心解釋, 再加上截圖, 一直到晚上23:40止。 ...

嗯嗯,加油,一起加油。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2015-5-23 23:09:25 | 显示全部楼层
本帖最后由 创客帝国 于 2015-7-24 10:33 编辑

- -.......










回复

使用道具 举报

1

主题

25

帖子

63

积分

注册会员

Rank: 2

积分
63
发表于 2015-10-5 14:53:33 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

22

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2015-10-6 13:34:37 | 显示全部楼层
努力学习中
回复 支持 反对

使用道具 举报

1

主题

16

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2015-10-17 07:55:36 来自手机 | 显示全部楼层
不错,学习了
回复 支持 反对

使用道具 举报

0

主题

17

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2015-10-28 16:12:27 | 显示全部楼层
顶~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

0

主题

152

帖子

384

积分

禁止发言

积分
384
发表于 2015-10-29 08:27:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

32

帖子

184

积分

注册会员

Rank: 2

积分
184
发表于 2015-11-17 12:42:04 | 显示全部楼层
php要好耐心,一点不能看错,包括符号
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|手机版|智能创客 ( 桂ICP备14000828号

GMT+8, 2019-1-16 14:30 , Processed in 0.049240 second(s), 17 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表