DIY远程控制开关(tiny6410+LED+yeelink+curl)
2014-02-05 17:31
211 查看
上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊。不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不就很爽,那这怎么做呢。下面就此介绍如何实现远程控制开关。当然笔者家还没有DIY好可以远程控制的空调设备,但那就没法实现了吗?NO,还好,tiny6410开发板有可以控制的led灯,实现了LED灯的远程开关,那么加个继电器远程控制空调,原理类似啊。
DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl) /article/7126717.html
一、目的
DIY一个可以简易的远程控制开关,实现通过web/android/ios/微信进行控制开关打开或者关闭。
二、软硬件环境
硬件:tiny6410+LED+有线网络 or USB wifi
软件:linux+QT/curl/crontab/shell/YeeLink服务
三、LED控制方法
此处直接采用tiny6410自带led驱动和控制方法进行LED控制,方法如下:
四、tiny6410实现定时获取yeelink开关状态
1、按参考资料1方法注册一个开关传感器。
2、根据yeelink的api接口查询开关传感器状态。在tiny6410 linux系统上采用shell脚本进行实现。
六、增加定时运行服务
在crontab服务中加入下面加红的一行, 让脚本每分钟运行一次, 保存退出。
*/1 * * * * /dev/shm/get_led_status_yeelink.sh
七、实现效果
yeelink平台提供了两种方式,一种是arduino/单片机通过直接socket网络连接的办法,连入平台上,保持和服务器的长连接,这种方法控制的实时性相对较强;另外一种办法是arduino作为客户端,定期的向服务器查询传感器(LED)的当前值,如果我们要改变arduino的状态(如点亮LED),只需改变当前传感器的值(其实是发送HTTP的post命令,更新一下当前的设备状态),则arduino在定时周期到的时候,发出(HTTP get)命令来获取当前LED状态的时候,发现最近的值有变化(从0变为1)的时候,则相应的改变驱动LED的IO口状态,从而实习远程控制,这里注意,在arduino板上,如果是触发性的操作(只操作一次),则可以在get数据并操作好后,直接发送POST改变服务器上吗的传感器状态,保证不会在arduino端重复触发。
在此tiny6410上采用方式二:轮询yeelink的tiny6410 LED开关状态,再进行动作,轮询频率是每分钟1次,因此存在最长1分钟的控制延时。以上过程验证OK。
八、参考资料
1、如何用arduino+ethernet shield与yeelink结合5分钟实现web远程家电控制(代码已更新) http://blog.yeelink.net/?p=94
2、《04- Tiny6410 Linux开发指南-20110809.pdf》
DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl) /article/7126717.html
一、目的
DIY一个可以简易的远程控制开关,实现通过web/android/ios/微信进行控制开关打开或者关闭。
二、软硬件环境
硬件:tiny6410+LED+有线网络 or USB wifi
软件:linux+QT/curl/crontab/shell/YeeLink服务
三、LED控制方法
此处直接采用tiny6410自带led驱动和控制方法进行LED控制,方法如下:
四、tiny6410实现定时获取yeelink开关状态
1、按参考资料1方法注册一个开关传感器。
2、根据yeelink的api接口查询开关传感器状态。在tiny6410 linux系统上采用shell脚本进行实现。
#!/bin/sh #在单引号中填入yeelink给你的API KEY YL_ApiKey='xxxxxxxx' YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11624/datapoints upcmd="curl --request GET --header U-ApiKey:$YL_ApiKey --verbose $YL_URL" echo $upcmd | sh > /dev/shm/yeelink_led_status grep -wq \"value\":1 /dev/shm/yeelink_led_status && status=on || status=off echo $status if [ $status = on ]; then /etc/rc.d/init.d/leds start echo "set led on" else /etc/rc.d/init.d/leds stop echo "set led off" fi
六、增加定时运行服务
在crontab服务中加入下面加红的一行, 让脚本每分钟运行一次, 保存退出。
*/1 * * * * /dev/shm/get_led_status_yeelink.sh
七、实现效果
yeelink平台提供了两种方式,一种是arduino/单片机通过直接socket网络连接的办法,连入平台上,保持和服务器的长连接,这种方法控制的实时性相对较强;另外一种办法是arduino作为客户端,定期的向服务器查询传感器(LED)的当前值,如果我们要改变arduino的状态(如点亮LED),只需改变当前传感器的值(其实是发送HTTP的post命令,更新一下当前的设备状态),则arduino在定时周期到的时候,发出(HTTP get)命令来获取当前LED状态的时候,发现最近的值有变化(从0变为1)的时候,则相应的改变驱动LED的IO口状态,从而实习远程控制,这里注意,在arduino板上,如果是触发性的操作(只操作一次),则可以在get数据并操作好后,直接发送POST改变服务器上吗的传感器状态,保证不会在arduino端重复触发。
在此tiny6410上采用方式二:轮询yeelink的tiny6410 LED开关状态,再进行动作,轮询频率是每分钟1次,因此存在最长1分钟的控制延时。以上过程验证OK。
八、参考资料
1、如何用arduino+ethernet shield与yeelink结合5分钟实现web远程家电控制(代码已更新) http://blog.yeelink.net/?p=94
2、《04- Tiny6410 Linux开发指南-20110809.pdf》
相关文章推荐
- 关于编码的一切
- 1061成绩排序(c中qsort,strcmp函数的使用)
- HDU 2138 How many prime numbers
- 处理散列冲突的方法 - 数据结构和算法85
- 紫外线消毒器水处理杀菌的四大优势分析
- JQuery Introduction
- shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such fi
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 对外不要提供Delete方法加强软件的安全性
- [floyd]HDU 1181变形课
- C++回顾之引用
- 孙鑫 VC++深入详解第15课——多线程
- Struts2模型驱动
- SPOJ 345 Mixtures (区间DP&前缀数组)
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)
- Nodejs Native AddOn的编写
- 【C#小知识】C#中一些易混淆概念总结(四)---------解析Console.WriteLine()
- JavaSE学习笔记
- java学习之面试题4
- 充电的几个过程如何控制的
- MySQL服务器状态变量