续上篇教程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,输入注册码就可以登陆了!
输入图上信息确定,密码是: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等无线模块。
然后就可以低成本的完成:入室防盗、手机开门、窗帘开窗、电灯开关、无线插座、红外摇控、空气检测、温度调控等功能咯。
06
2019
05
WIFI作品DIY教程06-《openwrt后台程序》控制mysql、串口通信等
作者:mohongmao | 分类:WIFI作品DIY | 浏览:33566 | 评论:1
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
评论列表: