上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊。不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不就很爽,那这怎么做呢。下面就此介绍如何实现远程控制开关。当然笔者家还没有DIY好可以远程控制的空调设备,但那就没法实现了吗?NO,还好,tiny6410开发板有可以控制的led灯,实现了LED灯的远程开关,那么加个继电器远程控制空调,原理类似啊。

 
DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl) http://www.cnblogs.com/IDoIUnderstand/p/3537858.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》

DIY远程控制开关(tiny6410+LED+yeelink+curl)的更多相关文章

  1. DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)

    春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了.貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计 ...

  2. DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)

    看到有博客上采用motion搭建移动图像监测系统,感觉很强大,但大多缺少远程监测能力,大多局限于局域网.OK,笔者手头刚好有一个30W像素的USB摄像头,那么借用yeelink服务,也来DIY一把,哈 ...

  3. 远程读取URL 建议用curl代替file_get_contents

    初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了, ...

  4. php下载远程图片方法总结(curl手动解析header)curl跳转问题解决

    常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...

  5. Tiny6410 LED字符设备驱动

    1.查看用户手册 led1.led2.led3.led4 连接的分别是 GPK4.GPK5.GPK6.GPK7 2.查询6410芯片手册 下面还需要3个步骤: 1.设置GPIO为OUTPUT. 将GP ...

  6. 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  7. PHP下通过file_get_contents\curl的方法实现获取远程网页内容(别忘了还有PhpRPC)

    [php]PHP中file_get_contents()与file_put_contents()函数细节详解 php函数file_get_contents(一) 案例: 早在2010年时候遇到过这样的 ...

  8. php file_get_contents与curl性能比较

    1.fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存.但是CURL会自动对DNS信息进行缓存.对同一域名下的网页或者图片的请求只需要一次DNS ...

  9. [转]PHP中fopen,file_get_contents,curl的区别

    1.       fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存.但是CURL会自动对DNS信息进行缓存.对同一域名下的网页或者图片的请求只 ...

随机推荐

  1. thinkcmf安装教程与目录结构详解 快速上手版

    最近接了一个建站项目,要求用thinkcmf来搭建,ytkah在想php都大致一样吧,快速地下载安装包,可是!怎么安装呢?没看到安装指引文件或目录,查看了安装说明public目录做为网站根目录,入口文 ...

  2. 利用CombineFileInputFormat把netflix data set 导入到Hbase里

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xiewenbo/article/details/25637931 package com.mr.te ...

  3. OOP理解

    https://www.cnblogs.com/xiaosongluffy/p/5072501.html OOP是面向对象编程,有几大基础特性.抽象,封装,继承,多态 1:抽象:将世界上的具体事物提取 ...

  4. Selenium之Chrome浏览器的启动

    1.下载Chromedriver.exe文件放至需要的目录中: 2.编写代码 import org.openqa.selenium.WebDriver; import org.openqa.selen ...

  5. php composer使用过程

    1.安装composer curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/compos ...

  6. hdu5107 线段树

    hdu 5107 这题说的是给了一个二维的 平面, 平面内有30000个点每个点都有自己的高度,然后又30000次的查询,每次查询给的是(X,Y,K), 要求出set(x,y){x,y|x<=X ...

  7. Java 强引用、软引用、弱引用、幻象引用有什么区别

    1)引用出现的根源 引用出现的根源是由于GC内存回收的基本原理.GC回收本质上是回收对象.目前比较流行的回收算法是可达性分析算法.从GC roots开始安装一定的逻辑判断一个对象是否可达,不可达的话就 ...

  8. Apache配置WSGI

    Apache配置WSGI 什么是WSGI WSGI被称作web服务器网关接口,在笔者看来其实是基于CGI标准针对Python语言做了一些改进,其主要功能是规范了web 服务器与Pythonj应用程序之 ...

  9. springboot+mybatis项目自动生成

    springboot_data_access_demo基于rapid,根据自定义模版生成的基于mybatis+mysql的数据库访问示例项目.简单配置数据库信息,配置不同的生成策略生成可以直接运行访问 ...

  10. 20145221 《Java程序设计》实验报告五:网络编程及安全

    20145221 <Java程序设计>实验报告五:网络编程及安全 实验要求 掌握Socket程序的编写 运行TCP代码包,结对进行,一人服务器,一人客户端 掌握密码技术的使用 利用加解密代 ...