智能家居esp8266对接机智云
依然存在稳定性问题
机智云官网——机智云
一个比较详细的教程——esp8266
一开始采用的是esp12f 可是他太不稳定,总是掉线,机智云的固件我也是刷了无数遍,哎太难了。


我比较懒,走过了太多的弯路。太迷茫又太累。博客很少写教程,只是做个笔记记述一下心路历程。
/**
************************************************************
***********************************************************/
#include <Gizwits.h>
#include <Wire.h>
#include <SoftwareSerial.h>
//#include <PinChangeInt.h> //外部中断
SoftwareSerial mySerial(A2, A3); // A2 -> RX, A3 -> TX
bool varR_open = ;
Gizwits myGizwits;
#define KEY1 6
#define KEY2 7
#define KEY1_SHORT_PRESS 1
#define KEY1_LONG_PRESS 2
#define KEY2_SHORT_PRESS 4
#define KEY2_LONG_PRESS 8
#define NO_KEY 0
#define KEY_LONG_TIMER 3
const int TrigPin = ;
const int EchoPin = ;
float cm;
unsigned long Last_KeyTime = ;
unsigned long gokit_time_s(void)
{
return millis() / ;
}
char gokit_key1down(void)
{
unsigned long keep_time = ;
if (digitalRead(KEY1) == LOW)
{
delay();
if (digitalRead(KEY1) == LOW)
{
keep_time = gokit_time_s();
while (digitalRead(KEY1) == LOW)
{
if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)
{
Last_KeyTime = gokit_time_s();
return KEY1_LONG_PRESS;
}
}
if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
{
return KEY1_SHORT_PRESS;
}
return ;
}
return ;
}
return ;
}
char gokit_key2down(void)
{
int unsigned long keep_time = ;
if (digitalRead(KEY2) == LOW)
{
delay();
if (digitalRead(KEY2) == LOW)
{
keep_time = gokit_time_s();
while (digitalRead(KEY2) == LOW)
{ if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)
{
Last_KeyTime = gokit_time_s();
return KEY2_LONG_PRESS;
}
}
if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
{
return KEY2_SHORT_PRESS;
}
return ;
}
return ;
}
return ;
}
char gokit_keydown(void)
{
char ret = ;
ret |= gokit_key2down();
ret |= gokit_key1down();
return ret;
}
/**
* KEY_Handle
* @param none
* @return none
*/
void KEY_Handle(void)
{
/* Press for over than 3 second is Long Press */
switch (gokit_keydown())
{
case KEY1_SHORT_PRESS:
// mySerial.println(F("KEY1_SHORT_PRESS , Production Test Mode "));
myGizwits.setBindMode(WIFI_PRODUCTION_TEST);
break;
case KEY1_LONG_PRESS:
// mySerial.println(F("KEY1_LONG_PRESS ,Wifi Reset"));
myGizwits.setBindMode(WIFI_RESET_MODE);
break;
case KEY2_SHORT_PRESS:
// mySerial.println(F("KEY2_SHORT_PRESS Soft AP mode"));
myGizwits.setBindMode(WIFI_SOFTAP_MODE);
//Soft AP mode
break;
case KEY2_LONG_PRESS:
// mySerial.println(F("KEY2_LONG_PRESS ,AirLink mode"));
myGizwits.setBindMode(WIFI_AIRLINK_MODE);
digitalWrite(,HIGH);
//AirLink mode
break;
default:
break;
}
}
void ceju()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds();
digitalWrite(TrigPin, HIGH);
delayMicroseconds();
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
mySerial.println(cm);
//Serial.print(cm);
if(cm<)
{
digitalWrite(,LOW);
digitalWrite(,HIGH);
} //Serial.print("cm");
//Serial.println();
}
/**
* Serial Init , Gizwits Init
* @param none
* @return none
*/
void setup() {
// put your setup code here, to run once:
mySerial.begin();
pinMode(KEY1, INPUT_PULLUP);
pinMode(KEY2, INPUT_PULLUP);
pinMode(,OUTPUT);// led
pinMode(,OUTPUT);
pinMode(,INPUT);
//pinMode (10,INPUT); pinMode(,OUTPUT);
pinMode (,OUTPUT);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT); myGizwits.begin();
// mySerial.println("GoKit init OK \n");
//attachPinChangeInterrupt(4,xianwei, CHANGE); //开启外部中断
//attachInterrupt(0,xianwei,FALLING);
}
void xianwei()
{
digitalWrite(,HIGH);
digitalWrite(,LOW);
delay();
digitalWrite(,HIGH);
digitalWrite(,HIGH);
}
/**
* Wifi status printf
* @param none
* @return none
*/
void wifiStatusHandle()
{
if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP))
{
// mySerial.println(F("WIFI_SOFTAP!"));
} if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK))
{
// mySerial.println(F("WIFI_AIRLINK!"));
} if(myGizwits.wifiHasBeenSet(WIFI_STATION))
{
// mySerial.println(F("WIFI_STATION!"));
} if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))
{
//mySerial.println(F("WIFI_CON_ROUTER!"));
} if(myGizwits.wifiHasBeenSet(WIFI_DISCON_ROUTER))
{
// mySerial.println(F("WIFI_DISCON_ROUTER!"));
} if(myGizwits.wifiHasBeenSet(WIFI_CON_M2M))
{
// mySerial.println(F("WIFI_CON_M2M!"));
} if(myGizwits.wifiHasBeenSet(WIFI_DISCON_M2M))
{
// mySerial.println(F("WIFI_DISCON_M2M!"));
}
}
/**
* Arduino loop
* @param none
* @return none
*/
void loop() {
ceju();
if(digitalRead()==LOW)
{
xianwei();
}
bool varR_open = ;
if(myGizwits.hasBeenSet(EVENT_open))
{
myGizwits.read(EVENT_open,&varR_open);
if(varR_open ==){
digitalWrite(,LOW);
digitalWrite(,HIGH); }
else
{
digitalWrite(,HIGH);
digitalWrite(,HIGH);
}
}
bool varR_test = ;
if(myGizwits.hasBeenSet(EVENT_test))
{
myGizwits.read(EVENT_test,&varR_test);
if(varR_test ==){
digitalWrite(,LOW);
}
else
{
digitalWrite(,HIGH);
}
} KEY_Handle();
wifiStatusHandle();
myGizwits.process();
}
智能家居esp8266对接机智云的更多相关文章
- 为智能硬件提供一站式解决方案——机智云GoKit评测
为智能硬件提供一站式解决方案——机智云GoKit评测 2014年12月24日 作者: ladouyu 3 17,414+ 4 EMW3162GoKit开发板STM32F103智能硬件机智云2.0 从物 ...
- 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台
国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...
- 国内物联网平台初探(五) ——机智云IoT物联网云服务平台及智能硬件自助开发平台
平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了 ...
- Android开发SDK接入机智云,智能家居实现APP远程控制多设备
代码地址如下:http://www.demodashi.com/demo/12847.html 一.前言. 此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨 ...
- 用机智云做PWM占空比控制电机,物联网智能家居应用
因为是新申请的博客,所以申请了总想往里面加点东西,所以把我之前在机智云写的帖子复制了过来 (各位抱歉,由于之前上传的文件可能有错误,之前上传的文件PWM不能用,那么我又重新上传了一个文件,这个文件 ...
- ESP8266 智能家居简单实现
本文转自CSDN,地址 https://blog.csdn.net/jsagacity/article/details/78531819 全文如下 : 前段时间,公司利用 ESP8266 这个WiFi ...
- esp8266烧写机智云固件方法
转:http://blog.csdn.net/k7arm/article/details/51925941 =====================以下为我转载的文章================ ...
- Diy智能家居-1.基于esp8266的语音控制系统(开篇)
目录Diy智能家居-1.基于esp8266的语音控制系统(开篇) https://blog.csdn.net/arno1988/article/details/82628589 Diy智能家居-2.基 ...
- 智能家居入门DIY——【一、ESP8266之软串口HTTP请求】
前段时间做了一个激光雕刻,玩的不亦乐乎.对Arduino大感兴趣,于是又入手一块20大洋版,配上买学习套件时的诸多零件——红外发射管.一体化红外接收头.DHT11温湿度传感器.ESP8266等,以及某 ...
随机推荐
- Hive Getting Started补充
配置管理概述 Hive从<install-dir>/conf/hive-default.xml中读取它的默认配置 Hive配置目录的位置可以通过设置HIVE_CONF_DIR环境变量的值来 ...
- 利用appium-1.5.3.dmg安装Appium. doctors时,提示 Could not detect Mac OS X Version from sw_vers output: '10.12'
发生这种错误的原因是因为:appium不支持mac 10.12版本. 解决方法: https://stackoverflow.com/questions/40129794/how-to-fix-err ...
- python并发编程之多线程
一 同步锁 注意: 1线程抢的是GIL锁,GIL锁就是执行权限,拿到权限后才能拿到互斥锁Lock,但是如果发现Lock没有被释放而阻塞,则立即交出拿到的执行权. 2join是等待所有,即整体串行,而 ...
- Visual Studio Code+phpstudy(WampServer、LNMP...)为小白打造PHP开发环境
VS Code是微软近年推出的一款文本编辑器, 相关下载:https://code.visualstudio.com/Download phpstudy是将Apache/Nginx.PHP.MySQ等 ...
- Redis 部署主从哨兵 C#使用,实现自动获取redis缓存 实例2
资料查找https://www.cnblogs.com/tdws/p/5836122.html https://www.cnblogs.com/lori/p/5794454.html private ...
- 2.2 .this的绑定规则
2.this的绑定规则 1.默认绑定 function foo( ) { console.log(this.a); } var a=1; foo(); 在代码中,foo()函数不带任何修饰的引用进行调 ...
- Scala之String
一.前言 大数据领域的Spark.Kafka.Summingbird等都是由Scala语言编写而成,相比Java而言,Scala更精炼.由于笔者从事大数据相关的工作,所以有必要好好学习Scala语言, ...
- 手淘的flexible.js解决手机适配问题
如何使用flexible.js做手机适配 做移动端网页肯定需要做适配,以前都用的fixscreen.js,对比一下,觉得flexible.js更好吧,毕竟是大厂出的东西. 第一步要给页面加在viewp ...
- Struts2+Spring+Hibernate环境搭建
struts-2.3.20 spring-4.1.4 hibernate-4.3.8 slf4j-1.7.10 1.在MySQL中建立数据库 mysql> create database myo ...
- 【JavaScript_DOM 百度搜索框】
今天给大家带来的事一个简单的百度的历史搜索框,大家在搜索东西的时候,百度会自动给你显示你最近搜索过的一些东西,那这个拿js怎么做呢? 我们一起来学习吧 这是一个HTML页面: <!DOCTYPE ...