nearly WIFIduino All clear

master
hhCandy 5 years ago
parent 101ec23550
commit 3a582ad1b2
  1. 278
      dinnerRoomCtl/dinnerRoomCtl.ino
  2. 7
      hallCtl/hallCtl.ino
  3. 281
      kitchenCtl/kitchenCtl.ino
  4. 20
      livingRoomCtl/livingRoomCtl.ino
  5. 8
      livingRoomSnsr/livingRoomSnsr.ino
  6. 234
      server/getData.js
  7. 39
      server/wIoT.php

@ -8,13 +8,18 @@
#define WIFI_PASSWD "1234567890."
// Pins Log ID
#define W_DEVICE_ID ""
#define W_LIGHT_ID "dd"
#define W_SWI_ID ""
#define W_DEVICE_ID "3"
#define W_LIGHT_ID "L3"
#define W_SWI_ID "S3"
#define W_TEMP_ID ""
#define W_HUM_ID ""
#define W_BUZ_ID ""
#define W_R1_ID ""
#define W_TEL_ID ""
#define W_R1_ID "R13"
#define W_R2_ID "R14"
#define W_R3_ID "R15"
#define W_R4_ID "R16"
#define W_LED_ID "ll4"
// Set as WIFI mode
@ -24,13 +29,28 @@
// Include Blinker lib
#include <Blinker.h>
// 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
#define swiIn D1 // Pins for Check the switch state :: signal In
#define swiOut D2 // Pins for Check the switch state :: signal Out
#define rSnsr1 D6 // Pins for searching people
#define rSnsr2 D13 // Pins for searching people
#define rSnsr3 D11
#define rSnsr4 D12
#define led D0
// Parameter Define
// Parameter Define
#define SWI_TRY_TIMES 300
#define SWI_ACTION_DELAY 30
#define UDOOR_OPEN_DELAY_TIME 800
#define LED_BLINK_FREQUENCY 10
#define LED_WARNING_FREQUENCY 800
#define MIN_DIRECT_CHANGE_TIME 10000
#define NO_PEOPLE_DELAY 28000
#define SHUTDOWN_LIGHT_DELAY 10000
#define ICE_TIME 300000
#define OFFLINE_TIME_LIMIT 15000
// Set wifi and MQTT config
@ -41,10 +61,24 @@ char pswd[] = WIFI_PASSWD;
// load module
BlinkerButton wIoT("wIoT");
BlinkerButton lightCtlBtn("btn-light");
BlinkerButton ledBtn("led");
BlinkerButton wledBtn("w-light");
// declare global var
int swiStatus=0;
int swiStatus = 0;
int uDoorTelStatus = 0;
int rSnsr1Status,rSnsr2Status,rSnsr3Status,rSnsr4Status = 0;
int isPeople = 0;
int noPeople = 0;
int hallDir = 0;
int PeopleChangeTime = 0;
int ledStatus = -1;
int Mode = 0;
int Ice = 0;
int IceTime = 0;
int LastCnnctTime = 0;
int Alert = 0;
/******** Custom Functions *********/
@ -55,7 +89,7 @@ int light_ctl(int cmd)
if(cmd == 0)
{
digitalWrite(lightCtl, HIGH);
if(digitalRead(lightCtl) == HIGH) {BLINKER_LOG("Run Funtion light_ctl :: light Shutdown");update_light_btn();return 1;}
if(digitalRead(lightCtl) == HIGH) {BLINKER_LOG("Run Funtion light_ctl :: light Shutdown");update_light_btn();/*Blinker.delay(SHUTDOWN_LIGHT_DELAY);*/return 1;}
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Shutdown");return 0;}
}
if(cmd == 1)
@ -68,12 +102,13 @@ int light_ctl(int cmd)
{
int lightStatus = digitalRead(lightCtl);
digitalWrite(lightCtl, !lightStatus);
if(digitalRead(lightCtl) != lightStatus) {BLINKER_LOG("Run Funtion light_ctl :: light Switch");update_light_btn();return 1;}
if(digitalRead(lightCtl) != lightStatus) {BLINKER_LOG("Run Funtion light_ctl :: light Switch");update_light_btn();ice_set();return 1;}
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Switch");return 0;}
}
return 0;
}
//function for get light info :: ::return 0(shutdown),1(open)
int get_light_status()
{
@ -128,6 +163,170 @@ int get_swi_status()
else if(swiEff == 0) return 0;
else return swiStatus;
}
/*** rSnsr functions ***/
//
int is_People()
{
int rCnt=0;
int change=0;
int t_rSnsr1Status,t_rSnsr2Status,t_rSnsr3Status,t_rSnsr4Status = 0;
t_rSnsr1Status = digitalRead(rSnsr1);
t_rSnsr2Status = digitalRead(rSnsr2);
t_rSnsr3Status = digitalRead(rSnsr3);
t_rSnsr4Status = digitalRead(rSnsr4);
if(t_rSnsr1Status == HIGH) {if(rSnsr1Status != t_rSnsr1Status)change=1;rCnt++;}
else if(rSnsr1Status != t_rSnsr1Status)change=1;
if(t_rSnsr2Status == HIGH) {if(rSnsr2Status != t_rSnsr2Status)change=1;rCnt++;}
else if(rSnsr2Status != t_rSnsr2Status)change=1;
if(t_rSnsr3Status == HIGH) {if(rSnsr3Status != t_rSnsr3Status)change=1;rCnt++;}
else if(rSnsr3Status != t_rSnsr3Status)change=1;
if(t_rSnsr4Status == HIGH) {if(rSnsr4Status != t_rSnsr4Status)change=1;rCnt++;}
else if(rSnsr4Status != t_rSnsr4Status)change=1;
rSnsr1Status = t_rSnsr1Status;
rSnsr2Status = t_rSnsr2Status;
rSnsr3Status = t_rSnsr3Status;
rSnsr4Status = t_rSnsr4Status;
if(change) rSnsr_data();
if(rCnt >= 1) return 1;
else return 0;
}
int no_People()
{
if(!rSnsr1Status && !rSnsr2Status && !rSnsr3Status && !rSnsr4Status && PeopleChangeTime < millis()-NO_PEOPLE_DELAY) return 1;
else return 0;
}
void rSnsr_data()
{
//static int t_ice = 0;
/*if(rSnsr1Status == HIGH) txtR1.print("r1","有人经过");
else txtR1.print("r1","无人");
if(rSnsr2Status == HIGH) txtR2.print("r2","有人经过");
else txtR2.print("r2","无人");
if(rSnsr3Status == HIGH) txtR3.print("r3","有人经过");
else txtR3.print("r3","无人");
if(rSnsr4Status == HIGH) txtR4.print("r4","有人经过");
else txtR4.print("r4","无人");
if((rSnsr1Status+rSnsr2Status+rSnsr3Status+rSnsr4Status>=2)&&(rSnsr1Status&&rSnsr2Status)&&(rSnsr3Status||rSnsr4Status)) {if(t_ice < millis()-MIN_DIRECT_CHANGE_TIME || hallDir == 1){txtDir.print("方向","");hallDir=1;t_ice=millis();}}
else if((rSnsr1Status+rSnsr2Status+rSnsr3Status+rSnsr4Status>=2)&&(rSnsr1Status||rSnsr2Status)&&(rSnsr3Status&&rSnsr4Status)) {if(t_ice < millis()-MIN_DIRECT_CHANGE_TIME || hallDir == -1){txtDir.print("方向","");hallDir=-1;t_ice=millis();}}
else if(!rSnsr1Status&&rSnsr2Status&&!rSnsr3Status&&rSnsr4Status) {txtDir.print("方向","未知");hallDir=0;}
else hallDir=0;*/
PeopleChangeTime = millis();
ice_refresh();
}
/*** led functions ***/
// function for control led :: 0(shutdown),1(open)
int led_ctl(int cmd)
{
if(cmd == 0 && ledStatus == 0)
{
digitalWrite(led, LOW);
if(digitalRead(led) == LOW) {BLINKER_LOG("Run Funtion led_ctl :: led Shutdown");return 1;}
else {BLINKER_LOG("ERROR in Funtion led_ctl :: when led Shutdown");return 0;}
}
if(cmd == 1 && ledStatus == 0)
{
digitalWrite(led, HIGH);
if(digitalRead(led) == HIGH) {BLINKER_LOG("Run Funtion led_ctl :: led Open");ledStatus=1;return 1;}
else {BLINKER_LOG("ERROR in Funtion led_ctl :: when led Open");return 0;}
}
return 0;
}
void led_blink()
{
if(is_People())
if(ledStatus == 1)
{analogWrite(led, (millis()/LED_BLINK_FREQUENCY)%255);}
}
void led_warning()
{
if(ledStatus == -1)
if(millis()%LED_WARNING_FREQUENCY>LED_WARNING_FREQUENCY/2) digitalWrite(led, HIGH);
else digitalWrite(led, LOW);
}
void led_core()
{
led_blink();
led_warning();
if(Mode==1&&ledStatus!=-1) ledStatus = 0;
if(Mode==0&&ledStatus !=-1) ledStatus = 1;
}
/*** ICE function ***/
void ice_core()
{
static int t_ice=0;
if(Ice==1&&t_ice==0)
{
IceTime = millis();
t_ice=1;
}
if(Ice == 0)
t_ice=0;
if(Ice==1&&millis()>IceTime+ICE_TIME)
{
Ice=0;
t_ice=0;
light_ctl(0);
}
}
void ice_set()
{
Ice = 1;
IceTime = millis();
}
void ice_remove()
{
Ice =0;
}
void ice_refresh()
{
IceTime = millis();
}
/******** wIoT Functions **************/
void wlight_ctl(int cmd)
{
if(cmd == 0)
{
if(Mode == 0&&Ice == 0) light_ctl(0);
if(Mode == 1&&Ice == 0) {light_ctl(0);led_ctl(0);}
}
if(cmd == 1)
{
if(Mode == 0&& Ice == 0) light_ctl(1);
if(Mode == 1&& Ice == 0) {light_ctl(0);led_ctl(1);}
}
}
void wconnect_status()
{
static int former=0;
if(millis()>LastCnnctTime+OFFLINE_TIME_LIMIT) {former=ledStatus;ledStatus = -1;}
else if(ledStatus == -1&&former!=-1)ledStatus=former;
else ledStatus=1;
}
/******** Blinker Attached Function *********/
//
void lightCtlBtn_callback(const String & state)
@ -148,6 +347,20 @@ void lightCtlBtn_callback(const String & state)
}
}
void ledBtn_callback(const String & state)
{
if (state == BLINKER_CMD_ON) digitalWrite(led, HIGH);
if (state == BLINKER_CMD_OFF) digitalWrite(led, LOW);
if (state == BLINKER_CMD_BUTTON_TAP) digitalWrite(led, !digitalRead(led));
}
void wledBtn_callback(const String & state)
{
if (state == "1") wlight_ctl(1);
if (state == "0") wlight_ctl(0);
}
/******* Heartbeat Function ********/
// Heartbeat for Blinker app
void heartbeat_app()
@ -158,7 +371,19 @@ void heartbeat_app()
// Heartbeat for wIoT
void heartbeat(const String & state)
{
Blinker.print(W_LIGHT_ID,"jj");
Blinker.print("wIoT",1);
Blinker.print("ice3",Ice);
Blinker.print("mode3",Mode);
Blinker.print(W_LIGHT_ID,!digitalRead(lightCtl));
Blinker.print(W_SWI_ID,get_swi_status());
Blinker.print(W_R1_ID,digitalRead(rSnsr1));
Blinker.print(W_R2_ID,digitalRead(rSnsr2));
Blinker.print(W_R3_ID,digitalRead(rSnsr3));
Blinker.print(W_R4_ID,digitalRead(rSnsr4));
Blinker.print(W_LED_ID,ledStatus);
if(state=="1") Mode=1;
else if(state=="0") Mode=0;
LastCnnctTime = millis();
}
/******* Arduino Setup Funstion *******/
@ -172,12 +397,25 @@ void setup()
pinMode(lightCtl, OUTPUT);
pinMode(swiIn, INPUT);
pinMode(swiOut, OUTPUT);
pinMode(rSnsr1, INPUT);
pinMode(rSnsr2, INPUT);
pinMode(rSnsr3, INPUT);
pinMode(rSnsr4, INPUT);
pinMode(led, OUTPUT);
// Pins state ini
digitalWrite(lightCtl, HIGH);
// swi ini
swiStatus = get_swi_status();
// rSnsr ini
rSnsr1Status = digitalRead(rSnsr1);
rSnsr2Status = digitalRead(rSnsr2);
rSnsr3Status = digitalRead(rSnsr3);
rSnsr4Status = digitalRead(rSnsr4);
// Blinker ini
Blinker.begin(auth, ssid, pswd);
@ -185,6 +423,9 @@ void setup()
// Blinker attached Functions
wIoT.attach(heartbeat);
lightCtlBtn.attach(lightCtlBtn_callback);
ledBtn.attach(ledBtn_callback);
wledBtn.attach(wledBtn_callback);
// Blinker attached Heartbeat
Blinker.attachHeartbeat(heartbeat_app);
@ -195,6 +436,17 @@ void loop() {
// Active Blinker
Blinker.run();
if(swiStatus != get_swi_status()) {Blinker.delay(200);if(swiStatus != get_swi_status()){light_ctl(2);swiStatus = get_swi_status();}}
// Ice
ice_core();
// wIoT connection check
wconnect_status();
// Switch Ctl
if(swiStatus != get_swi_status()) {Blinker.delay(SWI_ACTION_DELAY);if(swiStatus != get_swi_status()){light_ctl(2);swiStatus = get_swi_status();}}
// led
led_core();
}

@ -18,7 +18,7 @@
#define W_R2_ID "R2"
#define W_R3_ID "R3"
#define W_R4_ID "R4"
#define W_LED_ID "l1"
#define W_LED_ID "ll1"
#define W_BUZ_ID ""
@ -421,11 +421,12 @@ void heartbeat_app()
void heartbeat(const String & state)
{
Blinker.print("wIoT",1);
Blinker.print("ice",Ice);
Blinker.print("mode",Mode);
Blinker.print("ice2",Ice);
Blinker.print("mode2",Mode);
Blinker.print(W_LIGHT_ID,digitalRead(lightCtl));
Blinker.print(W_SWI_ID,get_swi_status());
Blinker.print(W_TEL_ID,digitalRead(uDoorTel));
Blinker.print("To",digitalRead(uDoorOpenPin));
Blinker.print(W_R1_ID,digitalRead(rSnsr1));
Blinker.print(W_R2_ID,digitalRead(rSnsr2));
Blinker.print(W_R3_ID,digitalRead(rSnsr3));

@ -1,20 +1,27 @@
/* *****************************************************************
* this is the code for control unit in dinner
* this is the code for control unit in kitchen
*
* *****************************************************************/
//dangerous pins :: D12,D10,D9
// MQTT auth code and WIFI
#define MQTT_AUTH_CODE "ca8c82dc98b6"
#define WIFI_SSID "yimian-iot"
#define WIFI_PASSWD "1234567890."
// Pins Log ID
#define W_DEVICE_ID ""
#define W_LIGHT_ID "dd"
#define W_SWI_ID ""
#define W_DEVICE_ID "4"
#define W_LIGHT_ID "L4"
#define W_SWI_ID "S4"
#define W_TEMP_ID ""
#define W_HUM_ID ""
#define W_BUZ_ID ""
#define W_R1_ID ""
#define W_TEL_ID ""
#define W_R1_ID "R17"
#define W_R2_ID "R18"
#define W_R3_ID "R19"
#define W_R4_ID "R20"
#define W_LED_ID "ll5"
#define W_LS_ID "Ls3"
// Set as WIFI mode
@ -24,13 +31,29 @@
// Include Blinker lib
#include <Blinker.h>
// 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
#define swiIn D1 // Pins for Check the switch state :: signal In
#define swiOut D2 // Pins for Check the switch state :: signal Out
#define rSnsr1 D6 // Pins for searching people
#define rSnsr2 D13 // Pins for searching people
#define rSnsr3 D11
#define rSnsr4 D4
#define led D0
#define lightSnsr A0 //detect the light
// Parameter Define
// Parameter Define
#define SWI_TRY_TIMES 300
#define SWI_ACTION_DELAY 30
#define UDOOR_OPEN_DELAY_TIME 800
#define LED_BLINK_FREQUENCY 10
#define LED_WARNING_FREQUENCY 800
#define MIN_DIRECT_CHANGE_TIME 10000
#define NO_PEOPLE_DELAY 28000
#define SHUTDOWN_LIGHT_DELAY 10000
#define ICE_TIME 300000
#define OFFLINE_TIME_LIMIT 15000
// Set wifi and MQTT config
@ -41,10 +64,23 @@ char pswd[] = WIFI_PASSWD;
// load module
BlinkerButton wIoT("wIoT");
BlinkerButton lightCtlBtn("btn-light");
BlinkerButton ledBtn("led");
BlinkerButton wledBtn("w-light");
// declare global var
int swiStatus=0;
int swiStatus = 0;
int uDoorTelStatus = 0;
int rSnsr1Status,rSnsr2Status,rSnsr3Status,rSnsr4Status = 0;
int isPeople = 0;
int noPeople = 0;
int hallDir = 0;
int PeopleChangeTime = 0;
int ledStatus = -1;
int Mode = 0;
int Ice = 0;
int IceTime = 0;
int LastCnnctTime = 0;
/******** Custom Functions *********/
@ -55,7 +91,7 @@ int light_ctl(int cmd)
if(cmd == 0)
{
digitalWrite(lightCtl, HIGH);
if(digitalRead(lightCtl) == HIGH) {BLINKER_LOG("Run Funtion light_ctl :: light Shutdown");update_light_btn();return 1;}
if(digitalRead(lightCtl) == HIGH) {BLINKER_LOG("Run Funtion light_ctl :: light Shutdown");update_light_btn();/*Blinker.delay(SHUTDOWN_LIGHT_DELAY);*/return 1;}
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Shutdown");return 0;}
}
if(cmd == 1)
@ -68,12 +104,13 @@ int light_ctl(int cmd)
{
int lightStatus = digitalRead(lightCtl);
digitalWrite(lightCtl, !lightStatus);
if(digitalRead(lightCtl) != lightStatus) {BLINKER_LOG("Run Funtion light_ctl :: light Switch");update_light_btn();return 1;}
if(digitalRead(lightCtl) != lightStatus) {BLINKER_LOG("Run Funtion light_ctl :: light Switch");update_light_btn();ice_set();return 1;}
else {BLINKER_LOG("ERROR in Funtion light_ctl :: when light Switch");return 0;}
}
return 0;
}
//function for get light info :: ::return 0(shutdown),1(open)
int get_light_status()
{
@ -128,6 +165,170 @@ int get_swi_status()
else if(swiEff == 0) return 0;
else return swiStatus;
}
/*** rSnsr functions ***/
//
int is_People()
{
int rCnt=0;
int change=0;
int t_rSnsr1Status,t_rSnsr2Status,t_rSnsr3Status,t_rSnsr4Status = 0;
t_rSnsr1Status = digitalRead(rSnsr1);
t_rSnsr2Status = digitalRead(rSnsr2);
t_rSnsr3Status = digitalRead(rSnsr3);
t_rSnsr4Status = digitalRead(rSnsr4);
if(t_rSnsr1Status == HIGH) {if(rSnsr1Status != t_rSnsr1Status)change=1;rCnt++;}
else if(rSnsr1Status != t_rSnsr1Status)change=1;
if(t_rSnsr2Status == HIGH) {if(rSnsr2Status != t_rSnsr2Status)change=1;rCnt++;}
else if(rSnsr2Status != t_rSnsr2Status)change=1;
if(t_rSnsr3Status == HIGH) {if(rSnsr3Status != t_rSnsr3Status)change=1;rCnt++;}
else if(rSnsr3Status != t_rSnsr3Status)change=1;
if(t_rSnsr4Status == HIGH) {if(rSnsr4Status != t_rSnsr4Status)change=1;rCnt++;}
else if(rSnsr4Status != t_rSnsr4Status)change=1;
rSnsr1Status = t_rSnsr1Status;
rSnsr2Status = t_rSnsr2Status;
rSnsr3Status = t_rSnsr3Status;
rSnsr4Status = t_rSnsr4Status;
if(change) rSnsr_data();
if(rCnt >= 1) return 1;
else return 0;
}
int no_People()
{
if(!rSnsr1Status && !rSnsr2Status && !rSnsr3Status && !rSnsr4Status && PeopleChangeTime < millis()-NO_PEOPLE_DELAY) return 1;
else return 0;
}
void rSnsr_data()
{
//static int t_ice = 0;
/*if(rSnsr1Status == HIGH) txtR1.print("r1","有人经过");
else txtR1.print("r1","无人");
if(rSnsr2Status == HIGH) txtR2.print("r2","有人经过");
else txtR2.print("r2","无人");
if(rSnsr3Status == HIGH) txtR3.print("r3","有人经过");
else txtR3.print("r3","无人");
if(rSnsr4Status == HIGH) txtR4.print("r4","有人经过");
else txtR4.print("r4","无人");
if((rSnsr1Status+rSnsr2Status+rSnsr3Status+rSnsr4Status>=2)&&(rSnsr1Status&&rSnsr2Status)&&(rSnsr3Status||rSnsr4Status)) {if(t_ice < millis()-MIN_DIRECT_CHANGE_TIME || hallDir == 1){txtDir.print("方向","");hallDir=1;t_ice=millis();}}
else if((rSnsr1Status+rSnsr2Status+rSnsr3Status+rSnsr4Status>=2)&&(rSnsr1Status||rSnsr2Status)&&(rSnsr3Status&&rSnsr4Status)) {if(t_ice < millis()-MIN_DIRECT_CHANGE_TIME || hallDir == -1){txtDir.print("方向","");hallDir=-1;t_ice=millis();}}
else if(!rSnsr1Status&&rSnsr2Status&&!rSnsr3Status&&rSnsr4Status) {txtDir.print("方向","未知");hallDir=0;}
else hallDir=0;*/
PeopleChangeTime = millis();
ice_refresh();
}
/*** led functions ***/
// function for control led :: 0(shutdown),1(open)
int led_ctl(int cmd)
{
if(cmd == 0 && ledStatus == 0)
{
digitalWrite(led, LOW);
if(digitalRead(led) == LOW) {BLINKER_LOG("Run Funtion led_ctl :: led Shutdown");return 1;}
else {BLINKER_LOG("ERROR in Funtion led_ctl :: when led Shutdown");return 0;}
}
if(cmd == 1 && ledStatus == 0)
{
digitalWrite(led, HIGH);
if(digitalRead(led) == HIGH) {BLINKER_LOG("Run Funtion led_ctl :: led Open");ledStatus=1;return 1;}
else {BLINKER_LOG("ERROR in Funtion led_ctl :: when led Open");return 0;}
}
return 0;
}
void led_blink()
{
if(is_People())
if(ledStatus == 1)
{analogWrite(led, (millis()/LED_BLINK_FREQUENCY)%255);}
}
void led_warning()
{
if(ledStatus == -1)
if(millis()%LED_WARNING_FREQUENCY>LED_WARNING_FREQUENCY/2) digitalWrite(led, HIGH);
else digitalWrite(led, LOW);
}
void led_core()
{
led_blink();
led_warning();
if(Mode==1&&ledStatus!=-1) ledStatus = 0;
if(Mode==0&&ledStatus !=-1) ledStatus = 1;
}
/*** ICE function ***/
void ice_core()
{
static int t_ice=0;
if(Ice==1&&t_ice==0)
{
IceTime = millis();
t_ice=1;
}
if(Ice == 0)
t_ice=0;
if(Ice==1&&millis()>IceTime+ICE_TIME)
{
Ice=0;
t_ice=0;
light_ctl(0);
}
}
void ice_set()
{
Ice = 1;
IceTime = millis();
}
void ice_remove()
{
Ice =0;
}
void ice_refresh()
{
IceTime = millis();
}
/******** wIoT Functions **************/
void wlight_ctl(int cmd)
{
if(cmd == 0)
{
if(Mode == 0&&Ice == 0) light_ctl(0);
if(Mode == 1&&Ice == 0) {light_ctl(0);led_ctl(0);}
}
if(cmd == 1)
{
if(Mode == 0&& Ice == 0) light_ctl(1);
if(Mode == 1&& Ice == 0) {light_ctl(0);led_ctl(1);}
}
}
void wconnect_status()
{
static int former=0;
if(millis()>LastCnnctTime+OFFLINE_TIME_LIMIT) {former=ledStatus;ledStatus = -1;}
else if(ledStatus == -1&&former!=-1)ledStatus=former;
else ledStatus=1;
}
/******** Blinker Attached Function *********/
//
void lightCtlBtn_callback(const String & state)
@ -148,6 +349,20 @@ void lightCtlBtn_callback(const String & state)
}
}
void ledBtn_callback(const String & state)
{
if (state == BLINKER_CMD_ON) digitalWrite(led, HIGH);
if (state == BLINKER_CMD_OFF) digitalWrite(led, LOW);
if (state == BLINKER_CMD_BUTTON_TAP) digitalWrite(led, !digitalRead(led));
}
void wledBtn_callback(const String & state)
{
if (state == "1") wlight_ctl(1);
if (state == "0") wlight_ctl(0);
}
/******* Heartbeat Function ********/
// Heartbeat for Blinker app
void heartbeat_app()
@ -158,7 +373,20 @@ void heartbeat_app()
// Heartbeat for wIoT
void heartbeat(const String & state)
{
Blinker.print(W_LIGHT_ID,"jj");
Blinker.print("wIoT",1);
Blinker.print("ice4",Ice);
Blinker.print("mode4",Mode);
Blinker.print(W_LIGHT_ID,!digitalRead(lightCtl));
Blinker.print(W_SWI_ID,get_swi_status());
Blinker.print(W_R1_ID,digitalRead(rSnsr1));
Blinker.print(W_R2_ID,digitalRead(rSnsr2));
Blinker.print(W_R3_ID,digitalRead(rSnsr3));
Blinker.print(W_R4_ID,digitalRead(rSnsr4));
Blinker.print(W_LS_ID,analogRead(lightSnsr));
Blinker.print(W_LED_ID,ledStatus);
if(state=="1") Mode=1;
else if(state=="0") Mode=0;
LastCnnctTime = millis();
}
/******* Arduino Setup Funstion *******/
@ -172,12 +400,25 @@ void setup()
pinMode(lightCtl, OUTPUT);
pinMode(swiIn, INPUT);
pinMode(swiOut, OUTPUT);
pinMode(rSnsr1, INPUT);
pinMode(rSnsr2, INPUT);
pinMode(rSnsr3, INPUT);
pinMode(rSnsr4, INPUT);
pinMode(led, OUTPUT);
pinMode(lightSnsr, INPUT);
// Pins state ini
digitalWrite(lightCtl, HIGH);
// swi ini
swiStatus = get_swi_status();
// rSnsr ini
rSnsr1Status = digitalRead(rSnsr1);
rSnsr2Status = digitalRead(rSnsr2);
rSnsr3Status = digitalRead(rSnsr3);
rSnsr4Status = digitalRead(rSnsr4);
// Blinker ini
Blinker.begin(auth, ssid, pswd);
@ -185,6 +426,8 @@ void setup()
// Blinker attached Functions
wIoT.attach(heartbeat);
lightCtlBtn.attach(lightCtlBtn_callback);
ledBtn.attach(ledBtn_callback);
wledBtn.attach(wledBtn_callback);
// Blinker attached Heartbeat
Blinker.attachHeartbeat(heartbeat_app);
@ -195,6 +438,16 @@ void loop() {
// Active Blinker
Blinker.run();
if(swiStatus != get_swi_status()) {Blinker.delay(200);if(swiStatus != get_swi_status()){light_ctl(2);swiStatus = get_swi_status();}}
// Ice
ice_core();
// wIoT connection check
wconnect_status();
// Switch Ctl
if(swiStatus != get_swi_status()) {Blinker.delay(SWI_ACTION_DELAY);if(swiStatus != get_swi_status()){light_ctl(2);swiStatus = get_swi_status();}}
// led
led_core();
}

@ -1,5 +1,5 @@
/* *****************************************************************
* this is the code for wIoT TEST purpose
/* *****************************************************************
* this is the code for wIoT liveingRoomCtl purpose
*
* *****************************************************************/
// MQTT auth code
@ -18,9 +18,9 @@
#define W_R2_ID "R10"
#define W_R3_ID "R11"
#define W_R4_ID "R12"
#define W_LED_ID "l3"
#define W_LED_ID "ll3"
#define W_BUZ_ID "B2"
#define W_LS_ID "Ls1"
#define W_LS_ID "Ls2"
@ -34,15 +34,15 @@
// 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
#define swiIn D1 // Pins for Check the switch state :: signal In
#define swiOut D2 // Pins for Check the switch state :: signal Out
#define rSnsr1 D6 // Pins for searching people
#define rSnsr2 D13 // Pins for searching people
#define rSnsr3 D11
#define rSnsr4 D12
#define led D0
#define lightSnsr A0 //detect the light
#define Buz D10 // Pins for buzz
#define Buz D4 // Pins for buzz
// Parameter Define
#define SWI_TRY_TIMES 300
@ -388,9 +388,9 @@ void heartbeat_app()
void heartbeat(const String & state)
{
Blinker.print("wIoT",1);
Blinker.print("ice",Ice);
Blinker.print("mode",Mode);
Blinker.print(W_LIGHT_ID,digitalRead(lightCtl));
Blinker.print("ice5",Ice);
Blinker.print("mode5",Mode);
Blinker.print(W_LIGHT_ID,!digitalRead(lightCtl));
Blinker.print(W_SWI_ID,get_swi_status());
Blinker.print(W_R1_ID,digitalRead(rSnsr1));
Blinker.print(W_R2_ID,digitalRead(rSnsr2));

@ -18,7 +18,7 @@
#define W_R2_ID "R6"
#define W_R3_ID "R7"
#define W_R4_ID "R8"
#define W_LED_ID "l2"
#define W_LED_ID "ll2"
#define W_BUZ_ID "B1"
#define W_LS_ID "Ls1"
#define W_SH_ID "Sh1" //Shake Snsr
@ -38,9 +38,9 @@
#define rSnsr1 D6 // Pins for searching people
#define rSnsr2 D13 // Pins for searching people
#define rSnsr3 D4
#define rSnsr4 D11
#define rSnsr4 D2
#define Shake D9 // Pins for detect shake
#define led D5
#define led D0
#define TempSnsr A0 // Temp Detector
// Parameter Define
@ -231,7 +231,7 @@ void walert_callback(const String & state)
void heartbeat(const String & state)
{
Blinker.print("wIoT",1);
Blinker.print("mode",Mode);
Blinker.print("mode6",Mode);
Blinker.print(W_R1_ID,digitalRead(rSnsr1));
Blinker.print(W_R2_ID,digitalRead(rSnsr2));
Blinker.print(W_R3_ID,digitalRead(rSnsr3));

@ -7,68 +7,236 @@ const {document} = (new JSDOM('<!doctype html><html><body></body></html>')).wind
global.document = document;
const window = document.defaultView;
const $ = require('jquery')(window);
var cnt_open=0;
var cnt_send=0;
var cnt_recv=0;
function logic(obj)
var hallCtlObj = new Object;
var livingRmSnsrObj = new Object;
var livingRmCtlObj = new Object;
var cnt_open_hall=0;
var cnt_send_hall=0;
var cnt_recv_hall=0;
function rec_hall(obj)
{
if(obj.R1+obj.R2+obj.R3+obj.R4>=2&&obj.L1==0)socket.send('{"w-light":1}');
else if(obj.L1==1&&obj.R1+obj.R2+obj.R3+obj.R4==0)socket.send('{"w-light":0}');
$.post("http://127.0.0.1/wIoT.php",obj);
cnt_recv++;
hallCtlObj=obj;
console.log('Client received a message',hallCtlObj);
//$.post("http://127.0.0.1/wIoT.php",obj,function(msg){console.log(msg)});
cnt_recv_hall++;
}
var socket = new WebSocket('ws://192.168.3.102:81');
socket_open();
socket.onmessage = function(event) {
console.log('Client received a message',event.data);
var socket_hall = new WebSocket('ws://192.168.3.102:81');
socket_open_hall();
socket_hall.onmessage = function(event) {
var obj = eval('(' + event.data + ')');
if(obj.wIoT == 1) {
logic(obj);
rec_hall(obj);
}
};
function socket_open(){
if(socket.readyState ==3 ){
socket = new WebSocket('ws://192.168.3.102:81');
socket.onopen = function(event) {}
socket.onmessage = function(event) {
cnt_recv=cnt_send;
function socket_open_hall(){
if(socket_hall.readyState ==3 ){
socket_hall = new WebSocket('ws://192.168.3.102:81');
socket_hall.onopen = function(event) {}
socket_hall.onmessage = function(event) {
cnt_recv_hall=cnt_send_hall;
console.log('Client received a message',event.data);
var obj = eval('(' + event.data + ')');
if(obj.wIoT == 1) {
logic(obj);
rec_hall(obj);
}
};
}
else{
socket.onopen = function(event) {}
socket_hall.onopen = function(event) {}
}
cnt_open++;console.log('cnt_open ',cnt_open);
setTimeout(socket_open,15000);
cnt_open_hall++;console.log('cnt_open_hall ',cnt_open_hall);
setTimeout(socket_open_hall,15000);
}
function hallCtlData(){
if(socket.readyState ==1)
if(socket_hall.readyState ==1)
{
if(cnt_send_hall>cnt_recv_hall+30)
socket_open_hall();
else
{
socket_hall.send('{"wIoT":}');
cnt_send_hall++;console.log('cnt_send_hall ',cnt_send_hall);
}
}
else
{console.log('waiting connection');cnt_open_hall++;}
if(cnt_send_hall>800||cnt_open_hall>1000) socket_hall.close();
};
// 监听Socket的关闭
socket_hall.onclose = function(event) {
console.log('Client notified socket has closed');
socket_open_hall();
};
setInterval(hallCtlData,400);
var cnt_open_ls=0;
var cnt_send_ls=0;
var cnt_recv_ls=0;
function rec_ls(obj)
{
livingRmSnsrObj=obj;
console.log('Client received a message',livingRmSnsrObj);
//$.post("http://127.0.0.1/wIoT.php",obj,function(msg){console.log(msg)});
cnt_recv_ls++;
}
var socket_ls = new WebSocket('ws://192.168.3.106:81');
socket_open_ls();
socket_ls.onmessage = function(event) {
var obj = eval('(' + event.data + ')');
if(obj.wIoT == 1) {
rec_ls(obj);
}
};
function socket_open_ls(){
if(socket_ls.readyState ==3 ){
socket_ls = new WebSocket('ws://192.168.3.106:81');
socket_ls.onopen = function(event) {}
socket_ls.onmessage = function(event) {
cnt_recv_ls=cnt_send_ls;
console.log('Client received a message',event.data);
var obj = eval('(' + event.data + ')');
if(obj.wIoT == 1) {
rec_ls(obj);
}
};
}
else{
socket_ls.onopen = function(event) {}
}
cnt_open_ls++;console.log('cnt_open_ls ',cnt_open_ls);
setTimeout(socket_open_ls,15000);
}
function lsCtlData(){
if(socket_ls.readyState ==1)
{
if(cnt_send_ls>cnt_recv_ls+30)
socket_open_ls();
else
{
socket_ls.send('{"wIoT":}');
cnt_send_ls++;console.log('cnt_send_ls ',cnt_send_ls);
}
}
else
{console.log('waiting connection');cnt_open_ls++;}
if(cnt_send_ls>800||cnt_open_ls>1000) socket_ls.close();
};
// 监听Socket的关闭
socket_ls.onclose = function(event) {
console.log('Client notified socket has closed');
socket_open_ls();
};
setInterval(lsCtlData,400);
var cnt_open_lc=0;
var cnt_send_lc=0;
var cnt_recv_lc=0;
function rec_lc(obj)
{
livingRmCtlObj=obj;
console.log('Client received a message',livingRmCtlObj);
//$.post("http://127.0.0.1/wIoT.php",obj,function(msg){console.log(msg)});
cnt_recv_lc++;
}
var socket_lc = new WebSocket('ws://192.168.3.105:81');
socket_open_lc();
socket_lc.onmessage = function(event) {
var obj = eval('(' + event.data + ')');
if(obj.wIoT == 1) {
rec_lc(obj);
}
};
function socket_open_lc(){
if(socket_lc.readyState ==3 ){
socket_lc = new WebSocket('ws://192.168.3.105:81');
socket_lc.onopen = function(event) {}
socket_lc.onmessage = function(event) {
cnt_recv_lc=cnt_send_lc;
console.log('Client received a message',event.data);
var obj = eval('(' + event.data + ')');
if(obj.wIoT == 1) {
rec_lc(obj);
}
};
}
else{
socket_lc.onopen = function(event) {}
}
cnt_open_lc++;console.log('cnt_open_lc ',cnt_open_lc);
setTimeout(socket_open_lc,15000);
}
function lcCtlData(){
if(socket_lc.readyState ==1)
{
if(cnt_send>cnt_recv+30)
socket_open();
if(cnt_send_lc>cnt_recv_lc+30)
socket_open_lc();
else
{
socket.send('{"wIoT":}');
cnt_send++;console.log('cnt_send ',cnt_send);
socket_lc.send('{"wIoT":}');
cnt_send_lc++;console.log('cnt_send_lc ',cnt_send_lc);
}
}
else
{console.log('waiting connection');cnt_open++;}
if(cnt_send>800||cnt_open>1000) socket.close();
{console.log('waiting connection');cnt_open_lc++;}
if(cnt_send_lc>800||cnt_open_lc>1000) socket_lc.close();
};
// 监听Socket的关闭
socket.onclose = function(event) {
socket_lc.onclose = function(event) {
console.log('Client notified socket has closed');
socket_open();
socket_open_lc();
};
setInterval(hallCtlData,400);
setInterval(lcCtlData,400);
var cnt_livingRmNoPeople=0;
var cnt_hallNoPeople=0;
function log()
{
var obj=new Object;
Object.assign(obj, hallCtlObj);
Object.assign(obj, livingRmSnsrObj);
Object.assign(obj, livingRmCtlObj);
console.log(obj);
$.post("http://127.0.0.1/wIoT.php",obj,function(msg){console.log(msg)});
if(obj.R5+obj.R6+obj.R7+obj.R9+obj.R10+obj.R11+obj.R12>1&&obj.L2==1) socket_lc.send('{"w-light":1}');
if(obj.R5+obj.R6+obj.R7+obj.R9+obj.R10+obj.R11+obj.R12==0) cnt_livingRmNoPeople++;
else cnt_livingRmNoPeople=0;
if(cnt_livingRmNoPeople>1000) {socket_lc.send('{"w-light":0}');cnt_livingRmNoPeople=0;}
if(obj.R1+obj.R2+obj.R3+obj.R5>1&&obj.L1==0) socket_hall.send('{"w-light":1}');
if(obj.R1+obj.R2+obj.R3+obj.R4+obj.R5==0) cnt_hallNoPeople++;
else cnt_hallNoPeople=0;
if(cnt_hallNoPeople>40)
{
socket_hall.send('{"w-light":0}');
cnt_hallNoPeople=0;
}
}
setInterval(log,500);

@ -2,15 +2,50 @@
header('Access-Control-Allow-Origin:*');
include './functions.php';
$mode2=$_REQUEST['mode2'];
$mode5=$_REQUEST['mode5'];
$mode6=$_REQUEST['mode6'];
$ice2=$_REQUEST['ice2'];
$ice5=$_REQUEST['ice5'];
$L1=$_REQUEST['L1'];
$L2=$_REQUEST['L2'];
$S1=$_REQUEST['S1'];
$S2=$_REQUEST['S2'];
$T=$_REQUEST['T'];
$To=$_REQUEST['To'];
$R1=$_REQUEST['R1'];
$R2=$_REQUEST['R2'];
$R3=$_REQUEST['R3'];
$R4=$_REQUEST['R4'];
$l1=$_REQUEST['l1'];
$R5=$_REQUEST['R5'];
$R6=$_REQUEST['R6'];
$R7=$_REQUEST['R7'];
$R8=$_REQUEST['R8'];
$R9=$_REQUEST['R9'];
$R10=$_REQUEST['R10'];
$R11=$_REQUEST['R11'];
$R12=$_REQUEST['R12'];
$ll1=$_REQUEST['ll1'];
$ll2=$_REQUEST['ll2'];
$ll3=$_REQUEST['ll3'];
$Ls1=$_REQUEST['Ls1'];
$Ls2=$_REQUEST['Ls2'];
$B1=$_REQUEST['B1'];
$B2=$_REQUEST['B2'];
$Sh1=$_REQUEST['Sh1'];
$Tp1=$_REQUEST['Tp1'];
$conn=db__connect();
db__pushData($conn,"hallCtl",array("time"=>millis(),"L"=>$L1,"S"=>$S1,"T"=>$T,"R1"=>$R1,"R2"=>$R2,"R3"=>$R3,"R4"=>$R4,"l1"=>$l1));
db__pushData($conn,"wIoT_Data",array("time"=>millis(),"mode2"=>$mode2,"mode5"=>$mode5,"mode6"=>$mode6,"ice2"=>$ice2,"ice5"=>$ice5,"L1"=>$L1,"L2"=>$L2,"S1"=>$S1,"S2"=>$S2,"T"=>$T,"Top"=>$To,"R1"=>$R1,"R2"=>$R2,"R3"=>$R3,"R4"=>$R4,"R5"=>$R5,"R6"=>$R6,"R7"=>$R7,"R8"=>$R8,"R9"=>$R9,"R10"=>$R10,"R11"=>$R11,"R12"=>$R12,"ll1"=>$ll1,"ll2"=>$ll2,"ll3"=>$ll3,"Ls1"=>$Ls1,"Ls2"=>$Ls2,"B1"=>$B1,"B2"=>$B2,"Sh1"=>$Sh1,"Tp1"=>$Tp1));

Loading…
Cancel
Save