wr703n刷openwrt智能控制--控制mysql、串口通信等

我们已经成功在openwrt建立一个php+mysql服务器(等同于现在的云端:不过也是个php+mysql)。

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

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




 

新建一个数据库。

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


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


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

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 ;


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


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


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

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

 
上传到openwrt





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

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



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



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

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

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

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

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



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

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




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



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

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数据库,让所有数据互动起来)
 
在/mnt/sda1/www/cgi-bin里的znckgbrun就是python脚本,记得给他设置权限:属性-》都打勾。


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


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


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

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


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

 
解压文件后,运行arduino,如上图。

 
选择file->examples->znck007->zwifi_serialtest



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


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





 
点击编译,等待完成编译。

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


二、安装arduino刷写软件(可以在openwrt刷写arduino代码)
 
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文件路径!
 
killall -9 python
killall -9 python

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


第七部分:实现自动启动脚本(重启就会自动启动,无必人为的全自动后台运行)
 
使用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
}

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


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


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

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


完成了这一步,那么家居网关的概念就出来了,我们再ZIGBEE、Nrf24l01、挂蓝牙、315等无线模块。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值