mirror of https://github.com/IoTcat/wIoT.git
parent
f6eb0fd046
commit
87239a8ad3
2 changed files with 248 additions and 161 deletions
@ -1,138 +1,164 @@ |
||||
/* *****************************************************************
|
||||
* this is the code for control unit in living Room |
||||
* this is the code for wIoT TEST purpose |
||||
*
|
||||
* *****************************************************************/ |
||||
|
||||
//declear the moudle is WIFI
|
||||
#define BLINKER_PRINT Serial |
||||
// Set as WIFI mode
|
||||
#define BLINKER_WIFI |
||||
#define BLINKER_PRINT Serial |
||||
|
||||
//include function set
|
||||
// Include Blinker lib
|
||||
#include <Blinker.h> |
||||
|
||||
//define overal var
|
||||
char ssid[] = "yimian-iot"; |
||||
char pswd[] = "1234567890."; |
||||
char auth[] = "2cf87de895ee "; |
||||
// Correspond Pins to Tag
|
||||
#define lightCtl D5 //Control the light
|
||||
#define swiIn D4 // Pins for Check the switch state :: signal In
|
||||
#define swiOut D8 // Pins for Check the switch state :: signal Out
|
||||
|
||||
//announce keyname
|
||||
BlinkerButton Button1("btn-abc"); |
||||
BlinkerButton Button2("btn-on"); |
||||
BlinkerButton Button3("btn-off"); |
||||
// Parameter Define
|
||||
#define SWI_TRY_TIMES 100 |
||||
#define SWI_OK_TIMES 77 |
||||
|
||||
//declear var
|
||||
int swi,swi1 ,i,a,timer,timer1,b,c= 0; |
||||
|
||||
// Set wifi and MQTT config
|
||||
char auth[] = "2cf87de895ee "; |
||||
char ssid[] = "yimian-iot"; |
||||
char pswd[] = "1234567890."; |
||||
|
||||
// load module
|
||||
BlinkerButton lightCtlBtn("btn-light"); |
||||
|
||||
// declare global var
|
||||
int swiStatus=0; |
||||
|
||||
/******** Custom Functions *********/ |
||||
|
||||
//button1-function
|
||||
void button1_callback(const String & state)
|
||||
/*** LightCtl Functions ***/ |
||||
// function for control light :: 0(shutdown),1(open),2(switch)
|
||||
int light_ctl(int cmd) |
||||
{ |
||||
BLINKER_LOG("get button state: ", state); |
||||
if(digitalRead(D5)){ Button1.print("灯正亮!");}else{ Button1.print("灯未亮!");} |
||||
digitalWrite(D5,LOW); |
||||
Button1.print("正在重置!"); |
||||
for(i=10;i>0;i--) |
||||
{ |
||||
Blinker.print(i); |
||||
digitalWrite(D6,LOW);digitalWrite(D13,LOW); |
||||
digitalRead(D6);digitalRead(D13); |
||||
delay(1000); |
||||
} |
||||
a=0; |
||||
Button1.print("重置完成!"); |
||||
timer1=Blinker.time()-249; |
||||
if(digitalRead(D5)){ Button1.print("灯已打开!");}else{ Button1.print("灯已关闭!");} |
||||
if(cmd == 0) |
||||
{ |
||||
digitalWrite(lightCtl, HIGH); |
||||
if(digitalRead(lightCtl) == HIGH) {BLINKER_LOG("Run Funtion light_ctl :: light Shutdown");update_light_btn();return 1;} |
||||
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Shutdown");return 0;} |
||||
} |
||||
if(cmd == 1) |
||||
{ |
||||
digitalWrite(lightCtl, LOW); |
||||
if(digitalRead(lightCtl) == LOW) {BLINKER_LOG("Run Funtion light_ctl :: light Open");update_light_btn();return 1;} |
||||
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Open");return 0;} |
||||
} |
||||
if(cmd == 2) |
||||
{ |
||||
int lightStatus = digitalRead(lightCtl); |
||||
digitalWrite(lightCtl, !lightStatus); |
||||
if(digitalRead(lightCtl) != lightStatus) {BLINKER_LOG("Run Funtion light_ctl :: light Switch");update_light_btn();return 1;} |
||||
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Switch");return 0;} |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
|
||||
//button2-function
|
||||
void button2_callback(const String & state)
|
||||
//function for get light info :: ::return 0(shutdown),1(open)
|
||||
int get_light_status() |
||||
{ |
||||
BLINKER_LOG("get button state: ", state); |
||||
a=1; |
||||
digitalWrite(D5,HIGH); |
||||
if(digitalRead(D5)){ Button1.print("灯已打开!");}else{ Button1.print("灯已关闭!");} |
||||
timer=Blinker.time(); |
||||
if(digitalRead(lightCtl) == HIGH) return 0; |
||||
else if (digitalRead(lightCtl == LOW)) return 1; |
||||
else return -1; |
||||
} |
||||
|
||||
// function for dealing with light error
|
||||
int light_err() |
||||
{ |
||||
BLINKER_LOG("ERROR with LIGHTCTL!!!"); |
||||
} |
||||
|
||||
//button3-function
|
||||
void button3_callback(const String & state)
|
||||
// function for update app button state
|
||||
void update_light_btn() |
||||
{ |
||||
BLINKER_LOG("get button state: ", state); |
||||
a=1; |
||||
digitalWrite(D5,LOW); |
||||
if(digitalRead(D5)){ Button1.print("灯已打开!");}else{ Button1.print("灯已关闭!");} |
||||
timer=Blinker.time(); |
||||
if(digitalRead(lightCtl) == LOW) |
||||
{ |
||||
lightCtlBtn.icon("fas fa-lightbulb"); |
||||
lightCtlBtn.color("#00CD00"); |
||||
lightCtlBtn.text("戳我关灯~","关灯啦~"); |
||||
lightCtlBtn.print("on"); |
||||
} |
||||
else |
||||
{ |
||||
lightCtlBtn.icon("far fa-lightbulb"); |
||||
lightCtlBtn.color("#FF0000"); |
||||
lightCtlBtn.text("戳我开灯~","戳我开灯~"); |
||||
lightCtlBtn.print("off"); |
||||
} |
||||
} |
||||
|
||||
/*** Swi Functions ***/ |
||||
// function for judging swi state :: ::return 0(off),1(on),-1(error)
|
||||
int get_swi_status() |
||||
{ |
||||
int swiCount = 0; |
||||
int swiEff = 0; |
||||
for(swiCount = 0; swiCount < SWI_TRY_TIMES; swiCount++) |
||||
{ |
||||
digitalWrite(swiOut, HIGH); |
||||
if(digitalRead(swiIn) == HIGH) swiEff++; |
||||
digitalWrite(swiOut, LOW); |
||||
if(digitalRead(swiIn) == LOW) swiEff++; |
||||
swiEff--; |
||||
} |
||||
BLINKER_LOG("Parameter in get_swi_status :: swiEff = ",swiEff); |
||||
if(swiEff > SWI_OK_TIMES) return 1; |
||||
else return 0; |
||||
} |
||||
/******** Blinker Attached Function *********/ |
||||
//
|
||||
void lightCtlBtn_callback(const String & state) |
||||
{ |
||||
BLINKER_LOG("lightCtlBtn :: get button state: ", state); |
||||
|
||||
if (state == BLINKER_CMD_BUTTON_TAP) { |
||||
BLINKER_LOG("Button tap!"); |
||||
if(!light_ctl(2)) light_err(); |
||||
} |
||||
else if (state == BLINKER_CMD_ON) { |
||||
BLINKER_LOG("Toggle on!"); |
||||
if(!light_ctl(1)) light_err(); |
||||
} |
||||
else if (state == BLINKER_CMD_OFF) { |
||||
BLINKER_LOG("Toggle off!"); |
||||
if(!light_ctl(0)) light_err(); |
||||
} |
||||
} |
||||
|
||||
//main setup function
|
||||
/******* Arduino Setup Funstion *******/ |
||||
void setup() |
||||
{ |
||||
// Serial ini
|
||||
Serial.begin(115200); |
||||
BLINKER_DEBUG.stream(Serial); |
||||
|
||||
pinMode(D5, OUTPUT); //control the light
|
||||
pinMode(D6, INPUT); //sensor1
|
||||
pinMode(D13, INPUT); //sensor2
|
||||
//D4&D8 are used for checking the switch state
|
||||
pinMode(D4, INPUT); |
||||
pinMode(D8, OUTPUT); |
||||
|
||||
//set the light paraperation
|
||||
digitalWrite(D5, HIGH); |
||||
|
||||
//connect to WIFI
|
||||
Blinker.begin(auth ,ssid, pswd); |
||||
// Pins state declare
|
||||
pinMode(lightCtl, OUTPUT); |
||||
pinMode(swiIn, INPUT); |
||||
pinMode(swiOut, OUTPUT); |
||||
|
||||
//set interrupt
|
||||
Button1.attach(button1_callback); |
||||
Button2.attach(button2_callback); |
||||
Button3.attach(button3_callback); |
||||
} |
||||
// Pins state ini
|
||||
digitalWrite(lightCtl, HIGH); |
||||
|
||||
// swi ini
|
||||
swiStatus = get_swi_status(); |
||||
|
||||
// Blinker ini
|
||||
Blinker.begin(auth, ssid, pswd); |
||||
|
||||
// Blinker attached Functions
|
||||
lightCtlBtn.attach(lightCtlBtn_callback); |
||||
} |
||||
|
||||
//main loop function
|
||||
/******** Arduino Main loop Function********/ |
||||
void loop() { |
||||
// Active Blinker
|
||||
Blinker.run(); |
||||
|
||||
//get time info
|
||||
|
||||
|
||||
//judge the switch state
|
||||
swi1=swi; |
||||
swi=0; |
||||
for(i=0;i<2;i++) |
||||
{ |
||||
//change D8 state
|
||||
digitalWrite(D8,!digitalRead(D8)); |
||||
if(digitalRead(D4)!=digitalRead(D8)){ swi++;} |
||||
} |
||||
|
||||
BLINKER_LOG("get slider value: ", swi); |
||||
if(swi!=swi1){digitalWrite(D5,!digitalRead(D5));a=1;timer=Blinker.time();Blinker.print("已切换至手动控制!");} |
||||
if(timer==(Blinker.time()-300)){a=0;Blinker.print("手动控制结束!");} |
||||
BLINKER_LOG("get slhgggggggggggider value: ",digitalRead(D5) ); |
||||
//get sensor info
|
||||
BLINKER_LOG("get sensor1: ", digitalRead(D13)); |
||||
BLINKER_LOG("get sensor2: ", digitalRead(D6)); |
||||
BLINKER_LOG("a= ", a); |
||||
|
||||
//if people light on
|
||||
if(digitalRead(D6)==1&&digitalRead(D13)==1&&a!=1){ Blinker.print("探测到人"); if(Blinker.hour()<=7||Blinker.hour()>=17){ digitalWrite(D5,HIGH);Blinker.print("灯已打开!");timer1=Blinker.time();}}else{if(a!=1&&timer1==(Blinker.time()-250)){digitalWrite(D5,LOW);Blinker.print("未探测到人,灯已关闭!"); Button1.print("正在重置!"); |
||||
for(i=10;i>0;i--) |
||||
{ |
||||
Blinker.print(i); |
||||
|
||||
digitalRead(D6);digitalRead(D13); |
||||
delay(1000); |
||||
} |
||||
Button1.print("重置完成!");}} |
||||
|
||||
if(swiStatus != get_swi_status()) {light_ctl(2);swiStatus = get_swi_status();} |
||||
} |
||||
|
||||
|
Loading…
Reference in new issue