Merge pull request #197 from barduinor/development
Merge w/ Gizmocuz; Implement S_COVER, S_IR, S_SCENE
This commit is contained in:
@@ -42,36 +42,49 @@
|
||||
// Some of these ID's have not been updated for v1.5. Uncommenting too many of them
|
||||
// will make the sketch too large for a pro mini's memory so it's probably best to try
|
||||
// one at a time.
|
||||
//#define ID_S_ARMED 0 // dummy to controll armed stated for several sensors
|
||||
//#define ID_S_DOOR 1
|
||||
//#define ID_S_MOTION 2
|
||||
//#define ID_S_SMOKE 3
|
||||
//#define ID_S_LIGHT 4
|
||||
//#define ID_S_DIMMER 5
|
||||
//#define ID_S_COVER 6
|
||||
//#define ID_S_TEMP 7
|
||||
//#define ID_S_HUM 8
|
||||
//#define ID_S_BARO 9
|
||||
//#define ID_S_WIND 10
|
||||
//#define ID_S_RAIN 11
|
||||
//#define ID_S_UV 12
|
||||
//#define ID_S_WEIGHT 13
|
||||
//#define ID_S_POWER 14
|
||||
//#define ID_S_HEATER 15
|
||||
//#define ID_S_DISTANCE 16
|
||||
//#define ID_S_LIGHT_LEVEL 17
|
||||
//#define ID_S_LOCK 18
|
||||
//#define ID_S_IR 19
|
||||
//#define ID_S_WATER 20
|
||||
//#define ID_S_AIR_QUALITY 21
|
||||
//#define ID_S_DUST 22
|
||||
//#define ID_S_SCENE_CONTROLLER 23
|
||||
#define ID_S_MOISTURE 24
|
||||
|
||||
//#define ID_S_CUSTOM 99
|
||||
#define ID_S_ARMED 0 // dummy to controll armed stated for several sensors
|
||||
#define ID_S_DOOR 1
|
||||
//#define ID_S_MOTION 2
|
||||
//#define ID_S_SMOKE 3
|
||||
//#define ID_S_LIGHT 4
|
||||
//#define ID_S_DIMMER 5
|
||||
//#define ID_S_COVER 6
|
||||
//#define ID_S_TEMP 7
|
||||
//#define ID_S_HUM 8
|
||||
//#define ID_S_BARO 9
|
||||
//#define ID_S_WIND 10
|
||||
//#define ID_S_RAIN 11
|
||||
//#define ID_S_UV 12
|
||||
//#define ID_S_WEIGHT 13
|
||||
//#define ID_S_POWER 14
|
||||
//#define ID_S_HEATER 15
|
||||
//#define ID_S_DISTANCE 16
|
||||
//#define ID_S_LIGHT_LEVEL 17
|
||||
//#define ID_S_LOCK 18
|
||||
//#define ID_S_IR 19
|
||||
//#define ID_S_WATER 20
|
||||
//#define ID_S_AIR_QUALITY 21
|
||||
//#define ID_S_DUST 22
|
||||
//#define ID_S_SCENE_CONTROLLER 23
|
||||
//// Lib 1.5 sensors
|
||||
//#define ID_S_RGB_LIGHT 24
|
||||
//#define ID_S_RGBW_LIGHT 25
|
||||
//#define ID_S_COLOR_SENSOR 26
|
||||
//#define ID_S_HVAC 27
|
||||
//#define ID_S_MULTIMETER 28
|
||||
//#define ID_S_SPRINKLER 29
|
||||
//#define ID_S_WATER_LEAK 30
|
||||
//#define ID_S_SOUND 31
|
||||
//#define ID_S_VIBRATION 32
|
||||
//#define ID_S_MOISTURE 33
|
||||
//
|
||||
//#define ID_S_CUSTOM 99
|
||||
|
||||
|
||||
|
||||
// Global Vars
|
||||
unsigned long SLEEP_TIME = 300000; // Sleep time between reads (in milliseconds)
|
||||
unsigned long SLEEP_TIME = 900000; // Sleep time between reads (in milliseconds)
|
||||
boolean metric = true;
|
||||
long randNumber;
|
||||
|
||||
@@ -132,7 +145,8 @@ MyHwATMega328 hw;
|
||||
MyMessage msg_S_COVER_U(ID_S_COVER,V_UP);
|
||||
MyMessage msg_S_COVER_D(ID_S_COVER,V_DOWN);
|
||||
MyMessage msg_S_COVER_S(ID_S_COVER,V_STOP);
|
||||
const char* coverVal = "V_STOP"; //compiler warnings
|
||||
MyMessage msg_S_COVER_V(ID_S_COVER,V_VAR1);
|
||||
int coverState=0; //0=Stop; 1=up; -1=down
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_TEMP
|
||||
@@ -170,20 +184,31 @@ MyHwATMega328 hw;
|
||||
#ifdef ID_S_POWER
|
||||
MyMessage msg_S_POWER_W(ID_S_POWER,V_WATT);
|
||||
MyMessage msg_S_POWER_K(ID_S_POWER,V_KWH);
|
||||
// MyMessage msg_S_POWER_I(ID_S_POWER,V_IMPEDANCE);
|
||||
// MyMessage msg_S_POWER_V(ID_S_POWER,V_VOLTAGE);
|
||||
// MyMessage msg_S_POWER_C(ID_S_POWER,V_CURRENT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HEATER //V_HVAC_SETPOINT_HEAT, V_HVAC_FLOW_STATE, V_TEMP, V_STATUS
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
|
||||
//////// REVIEW IMPLEMENTATION ////////////
|
||||
|
||||
MyMessage msg_S_HEATER_SET_POINT(ID_S_HEATER,V_HVAC_SETPOINT_HEAT); // HVAC/Heater setpoint (Integer between 0-100). S_HEATER, S_HVAC
|
||||
MyMessage msg_S_HEATER_FLOW_STATE(ID_S_HEATER,V_HVAC_FLOW_STATE); // Mode of header. One of "Off", "HeatOn", "CoolOn", or "AutoChangeOver" // S_HVAC, S_HEATER
|
||||
|
||||
//MyMessage msg_S_HEATER_STATUS(ID_S_HEATER,V_STATUS);
|
||||
//MyMessage msg_S_HEATER_TEMP(ID_S_HEATER,V_TEMP);
|
||||
|
||||
float heater_setpoint=21.5;
|
||||
float heater_temp=23.5;
|
||||
bool heater_status=false;
|
||||
String heater_flow_state = "Off";
|
||||
MyMessage msg_S_HEATER_SETPOINT(ID_S_HEATER,V_HVAC_SETPOINT_HEAT);
|
||||
MyMessage msg_S_HEATER_STATUS(ID_S_HEATER,V_STATUS);
|
||||
MyMessage msg_S_HEATER_TEMP(ID_S_HEATER,V_TEMP);
|
||||
MyMessage msg_S_HEATER_FLOWSTATE(ID_S_HEATER,V_HVAC_FLOW_STATE);
|
||||
String heater_flow_state="Off";
|
||||
|
||||
// float heater_temp=23.5;
|
||||
// bool heater_status=false;
|
||||
|
||||
|
||||
// V_TEMP // Temperature
|
||||
// V_STATUS // Binary status. 0=off 1=on
|
||||
// V_HVAC_FLOW_STATE // Mode of header. One of "Off", "HeatOn", "CoolOn", or "AutoChangeOver"
|
||||
// V_HVAC_SPEED // HVAC/Heater fan speed ("Min", "Normal", "Max", "Auto")
|
||||
// V_HVAC_SETPOINT_HEAT // HVAC/Heater setpoint
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_DISTANCE
|
||||
@@ -202,7 +227,7 @@ MyHwATMega328 hw;
|
||||
#ifdef ID_S_IR
|
||||
MyMessage msg_S_IR_S(ID_S_IR,V_IR_SEND);
|
||||
MyMessage msg_S_IR_R(ID_S_IR,V_IR_RECEIVE);
|
||||
const char* irVal = "";
|
||||
long irVal = 0;
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_WATER
|
||||
@@ -224,17 +249,91 @@ MyHwATMega328 hw;
|
||||
// not sure if scene controller sends int or chars
|
||||
// betting on ints as Touch Display Scen by Hek // compiler warnings
|
||||
char *scenes[] = {
|
||||
"All off",
|
||||
"Good Morning",
|
||||
"Clean Up!",
|
||||
"All Lights Off",
|
||||
"Music On/Off"
|
||||
(char *)"Good Morning",
|
||||
(char *)"Clean Up!",
|
||||
(char *)"All Lights Off",
|
||||
(char *)"Music On/Off"
|
||||
};
|
||||
|
||||
int sceneVal=0;
|
||||
int sceneValPrevious=0;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGB_LIGHT
|
||||
MyMessage msg_S_RGB_LIGHT_V_RGB(ID_S_RGB_LIGHT,V_RGB);
|
||||
MyMessage msg_S_RGB_LIGHT_V_WATT(ID_S_RGB_LIGHT,V_WATT);
|
||||
String rgbState="000000";
|
||||
//RGB light V_RGB, V_WATT
|
||||
//RGB value transmitted as ASCII hex string (I.e "ff0000" for red)
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGBW_LIGHT
|
||||
MyMessage msg_S_RGBW_LIGHT_V_RGBW(ID_S_RGBW_LIGHT,V_RGBW);
|
||||
MyMessage msg_S_RGBW_LIGHT_V_WATT(ID_S_RGBW_LIGHT,V_WATT);
|
||||
String rgbwState="00000000";
|
||||
//RGBW light (with separate white component) V_RGBW, V_WATT
|
||||
//RGBW value transmitted as ASCII hex string (I.e "ff0000ff" for red + full white) S_RGBW_LIGHT
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COLOR_SENSOR
|
||||
MyMessage msg_S_COLOR_SENSOR_V_RGB(ID_S_COLOR_SENSOR,V_RGB);
|
||||
//Color sensor V_RGB
|
||||
//RGB value transmitted as ASCII hex string (I.e "ff0000" for red) S_RGB_LIGHT, S_COLOR_SENSOR
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
MyMessage msg_S_HVAC_V_HVAC_SETPOINT_HEAT(ID_S_HVAC,V_HVAC_SETPOINT_HEAT);
|
||||
MyMessage msg_S_HVAC_V_HVAC_SETPOINT_COOL(ID_S_HVAC,V_HVAC_SETPOINT_COOL);
|
||||
MyMessage msg_S_HVAC_V_HVAC_FLOW_STATET(ID_S_HVAC,V_HVAC_FLOW_STATE);
|
||||
MyMessage msg_S_HVAC_V_HVAC_FLOW_MODE(ID_S_HVAC,V_HVAC_FLOW_MODE);
|
||||
MyMessage msg_S_HVAC_V_HVAC_SPEED(ID_S_HVAC,V_HVAC_SPEED);
|
||||
|
||||
float hvac_SetPointHeat = 16.5;
|
||||
float hvac_SetPointCool = 25.5;
|
||||
String hvac_FlowState = "AutoChangeOver";
|
||||
String hvac_FlowMode = "Auto";
|
||||
String hvac_Speed = "Normal";
|
||||
|
||||
//Thermostat/HVAC device
|
||||
//V_HVAC_SETPOINT_HEAT, // HVAC/Heater setpoint
|
||||
//V_HVAC_SETPOINT_COOL, // HVAC cold setpoint
|
||||
//V_HVAC_FLOW_STATE, // Mode of header. One of "Off", "HeatOn", "CoolOn", or "AutoChangeOver"
|
||||
//V_HVAC_FLOW_MODE, // Flow mode for HVAC ("Auto", "ContinuousOn", "PeriodicOn")
|
||||
//V_HVAC_SPEED // HVAC/Heater fan speed ("Min", "Normal", "Max", "Auto")
|
||||
|
||||
// NOT IMPLEMENTED YET
|
||||
//V_TEMP // Temperature
|
||||
//V_STATUS // Binary status. 0=off 1=on
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MULTIMETER
|
||||
MyMessage msg_S_MULTIMETER_V_IMPEDANCE(ID_S_MULTIMETER,V_IMPEDANCE);
|
||||
MyMessage msg_S_MULTIMETER_V_VOLTAGE(ID_S_MULTIMETER,V_VOLTAGE);
|
||||
MyMessage msg_S_MULTIMETER_V_CURRENT(ID_S_MULTIMETER,V_CURRENT);
|
||||
|
||||
// Multimeter device V_VOLTAGE, V_CURRENT, V_IMPEDANCE
|
||||
// V_IMPEDANCE 14 Impedance value
|
||||
// V_VOLTAGE 38 Voltage level
|
||||
// V_CURRENT 39 Current level
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SPRINKLER
|
||||
// S_SPRINKLER 31 Sprinkler device V_STATUS (turn on/off), V_TRIPPED (if fire detecting device)
|
||||
// V_STATUS 2 Binary status. 0=off 1=on
|
||||
// V_ARMED 15 Armed status of a security sensor. 1=Armed, 0=Bypassed
|
||||
// V_TRIPPED 16 Tripped status of a security sensor. 1=Tripped, 0=Untripped
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_WATER_LEAK
|
||||
#endif
|
||||
#ifdef ID_S_SOUND
|
||||
#endif
|
||||
#ifdef ID_S_VIBRATION
|
||||
#endif
|
||||
#ifdef ID_S_MOISTURE
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MOISTURE
|
||||
MyMessage msg_S_MOISTURE(ID_S_MOISTURE,V_LEVEL);
|
||||
#endif
|
||||
@@ -284,151 +383,192 @@ void setup()
|
||||
|
||||
#ifdef ID_S_DOOR
|
||||
Serial.println(" S_DOOR");
|
||||
gw.present(ID_S_DOOR,S_DOOR);
|
||||
gw.present(ID_S_DOOR,S_DOOR,"Outside Door");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MOTION
|
||||
Serial.println(" S_MOTION");
|
||||
gw.present(ID_S_MOTION,S_MOTION);
|
||||
gw.present(ID_S_MOTION,S_MOTION,"Outside Motion");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SMOKE
|
||||
Serial.println(" S_SMOKE");
|
||||
gw.present(ID_S_SMOKE,S_SMOKE);
|
||||
gw.present(ID_S_SMOKE,S_SMOKE,"Kitchen Smoke");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_LIGHT
|
||||
Serial.println(" S_LIGHT");
|
||||
gw.present(ID_S_LIGHT,S_LIGHT);
|
||||
gw.present(ID_S_LIGHT,S_LIGHT,"Hall Light");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_DIMMER
|
||||
Serial.println(" S_DIMMER");
|
||||
gw.present(ID_S_DIMMER,S_DIMMER);
|
||||
gw.present(ID_S_DIMMER,S_DIMMER,"Living room dimmer");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COVER
|
||||
Serial.println(" S_COVER");
|
||||
gw.present(ID_S_COVER,S_COVER);
|
||||
gw.present(ID_S_COVER,S_COVER,"Window cover");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_TEMP
|
||||
Serial.println(" S_TEMP");
|
||||
gw.present(ID_S_TEMP,S_TEMP);
|
||||
gw.present(ID_S_TEMP,S_TEMP,"House Temperarue");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HUM
|
||||
Serial.println(" S_HUM");
|
||||
gw.present(ID_S_HUM,S_HUM);
|
||||
gw.present(ID_S_HUM,S_HUM,"Current Humidity");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_BARO
|
||||
Serial.println(" S_BARO");
|
||||
gw.present(ID_S_BARO,S_BARO);
|
||||
gw.present(ID_S_BARO,S_BARO," Air pressure");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_WIND
|
||||
Serial.println(" S_WIND");
|
||||
gw.present(ID_S_WIND,S_WIND);
|
||||
gw.present(ID_S_WIND,S_WIND,"Wind Station");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RAIN
|
||||
Serial.println(" S_RAIN");
|
||||
gw.present(ID_S_RAIN,S_RAIN);
|
||||
gw.present(ID_S_RAIN,S_RAIN,"Rain Station");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_UV
|
||||
Serial.println(" S_UV");
|
||||
gw.present(ID_S_UV,S_UV);
|
||||
gw.present(ID_S_UV,S_UV,"Ultra Violet");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_WEIGHT
|
||||
Serial.println(" S_WEIGHT");
|
||||
gw.present(ID_S_WEIGHT,S_WEIGHT);
|
||||
gw.present(ID_S_WEIGHT,S_WEIGHT,"Outdoor Scale");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_POWER
|
||||
Serial.println(" S_POWER");
|
||||
gw.present(ID_S_POWER,S_POWER);
|
||||
gw.present(ID_S_POWER,S_POWER,"Power Metric");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
Serial.println(" S_HEATER");
|
||||
gw.present(ID_S_HEATER,S_HEATER);
|
||||
gw.present(ID_S_HEATER,S_HEATER,"Garage Heater");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_DISTANCE
|
||||
Serial.println(" S_DISTANCE");
|
||||
gw.present(ID_S_DISTANCE,S_DISTANCE);
|
||||
gw.present(ID_S_DISTANCE,S_DISTANCE,"Distance Measure");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_LIGHT_LEVEL
|
||||
Serial.println(" S_LIGHT_LEVEL");
|
||||
gw.present(ID_S_LIGHT_LEVEL,S_LIGHT_LEVEL);
|
||||
gw.present(ID_S_LIGHT_LEVEL,S_LIGHT_LEVEL,"Outside Light Level");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_LOCK
|
||||
Serial.println(" S_LOCK");
|
||||
gw.present(ID_S_LOCK,S_LOCK);
|
||||
gw.present(ID_S_LOCK,S_LOCK,"Front Door Lock");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_IR
|
||||
Serial.println(" S_IR");
|
||||
gw.present(ID_S_IR,S_IR);
|
||||
gw.present(ID_S_IR,S_IR,"Univeral Command");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_WATER
|
||||
Serial.println(" S_WATER");
|
||||
gw.present(ID_S_WATER,S_WATER);
|
||||
gw.present(ID_S_WATER,S_WATER,"Water Level");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_AIR_QUALITY
|
||||
Serial.println(" S_AIR_QUALITY");
|
||||
gw.present(ID_S_AIR_QUALITY,S_AIR_QUALITY);
|
||||
gw.present(ID_S_AIR_QUALITY,S_AIR_QUALITY,"Air Station");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_DUST
|
||||
Serial.println(" S_DUST");
|
||||
gw.present(ID_S_DUST,S_DUST);
|
||||
gw.present(ID_S_DUST,S_DUST,"Dust Level");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SCENE_CONTROLLER
|
||||
Serial.println(" S_SCENE_CONTROLLER");
|
||||
gw.present(ID_S_SCENE_CONTROLLER,S_SCENE_CONTROLLER);
|
||||
gw.present(ID_S_SCENE_CONTROLLER,S_SCENE_CONTROLLER,"Scene Controller");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGB_LIGHT
|
||||
Serial.println(" RGB_LIGHT");
|
||||
gw.present(ID_S_RGB_LIGHT,S_RGB_LIGHT,"Mood Light");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGBW_LIGHT
|
||||
Serial.println(" RGBW_LIGHT");
|
||||
gw.present(ID_S_RGBW_LIGHT,S_RGBW_LIGHT,"Mood Light 2");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COLOR_SENSOR
|
||||
Serial.println(" COLOR_SENSOR");
|
||||
gw.present(ID_S_COLOR_SENSOR,S_COLOR_SENSOR,"Hall Painting");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
Serial.println(" HVAC");
|
||||
gw.present(ID_S_HVAC,S_HVAC,"HVAC");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MULTIMETER
|
||||
Serial.println(" MULTIMETER");
|
||||
gw.present(ID_S_MULTIMETER,S_MULTIMETER,"Electric Staion");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SPRINKLER
|
||||
#endif
|
||||
#ifdef ID_S_WATER_LEAK
|
||||
#endif
|
||||
#ifdef ID_S_SOUND
|
||||
#endif
|
||||
#ifdef ID_S_VIBRATION
|
||||
#endif
|
||||
#ifdef ID_S_MOISTURE
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MOISTURE
|
||||
Serial.println(" S_MOISTURE");
|
||||
gw.present(ID_S_MOISTURE,S_MOISTURE);
|
||||
gw.present(ID_S_MOISTURE,S_MOISTURE,"Basement Sensor");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_CUSTOM
|
||||
Serial.println(" S_CUSTOM");
|
||||
gw.present(ID_S_CUSTOM,S_CUSTOM);
|
||||
gw.present(ID_S_CUSTOM,S_CUSTOM,"Other Stuff");
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
@@ -551,6 +691,37 @@ void loop()
|
||||
scene();
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGB_LIGHT
|
||||
rgbLight();
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGBW_LIGHT
|
||||
rgbwLight();
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COLOR_SENSOR
|
||||
color();
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
hvac();
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MULTIMETER
|
||||
multimeter();
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SPRINKLER
|
||||
#endif
|
||||
#ifdef ID_S_WATER_LEAK
|
||||
#endif
|
||||
#ifdef ID_S_SOUND
|
||||
#endif
|
||||
#ifdef ID_S_VIBRATION
|
||||
#endif
|
||||
#ifdef ID_S_MOISTURE
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MOISTURE
|
||||
moisture();
|
||||
#endif
|
||||
@@ -666,17 +837,17 @@ void cover(){
|
||||
|
||||
Serial.print("Cover is : " );
|
||||
|
||||
if (coverVal == "V_UP"){
|
||||
if (coverState == 1){
|
||||
Serial.println("Opening");
|
||||
gw.send(msg_S_COVER_U.set(V_UP));
|
||||
}else if (coverVal == "V_DOWN"){
|
||||
gw.send(msg_S_COVER_U.set(1));
|
||||
}else if (coverState == -1){
|
||||
Serial.println("Closing");
|
||||
gw.send(msg_S_COVER_D.set(V_DOWN));
|
||||
gw.send(msg_S_COVER_D.set(0));
|
||||
}else{
|
||||
Serial.println("Idle");
|
||||
gw.send(msg_S_COVER_S.set(V_STOP));
|
||||
gw.send(msg_S_COVER_S.set(-1));
|
||||
}
|
||||
|
||||
gw.send(msg_S_COVER_V.set(coverState));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -780,50 +951,38 @@ void weight(){
|
||||
void power(){
|
||||
|
||||
Serial.print("Watt is: " );
|
||||
Serial.println(map(randNumber,1,100,0,150));
|
||||
|
||||
Serial.println(map(randNumber,1,100,0,150));
|
||||
gw.send(msg_S_POWER_W.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
Serial.print("KWH is: " );
|
||||
Serial.println(map(randNumber,1,100,0,150));
|
||||
|
||||
Serial.println(map(randNumber,1,100,0,150));
|
||||
gw.send(msg_S_POWER_K.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
// Serial.print("Impedance is: " );
|
||||
// Serial.println(map(randNumber,1,100,0,150));
|
||||
//
|
||||
// gw.send(msg_S_POWER_I.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
// Serial.print("Voltage is: " );
|
||||
// Serial.println(map(randNumber,1,100,0,150));
|
||||
//
|
||||
// gw.send(msg_S_POWER_V.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
// Serial.print("Current is: " );
|
||||
// Serial.println(map(randNumber,1,100,0,150));
|
||||
//
|
||||
// gw.send(msg_S_POWER_C.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
void heater(){
|
||||
// float heater_setpoint=21.5;
|
||||
// float heater_temp=23.5;
|
||||
// bool heater_status=false;
|
||||
// String heatState="Off";
|
||||
|
||||
Serial.print("Heater flow state is: " );
|
||||
Serial.println(heater_flow_state);
|
||||
gw.send(msg_S_HEATER_FLOWSTATE.set(heater_flow_state.c_str()));
|
||||
gw.send(msg_S_HEATER_FLOW_STATE.set(heater_flow_state.c_str()));
|
||||
|
||||
Serial.print("Heater on/off is: " );
|
||||
Serial.println((heater_status==true)?"On":"Off");
|
||||
gw.send(msg_S_HEATER_STATUS.set(heater_status));
|
||||
// Serial.print("Heater on/off is: " );
|
||||
// Serial.println((heater_status==true)?"On":"Off");
|
||||
// gw.send(msg_S_HEATER_STATUS.set(heater_status));
|
||||
|
||||
Serial.print("Heater Temperature is: " );
|
||||
Serial.println(heater_temp,1);
|
||||
gw.send(msg_S_HEATER_TEMP.set(heater_temp,1));
|
||||
// Serial.print("Heater Temperature is: " );
|
||||
// Serial.println(heater_temp,1);
|
||||
// gw.send(msg_S_HEATER_TEMP.set(heater_temp,1));
|
||||
|
||||
Serial.print("Heater Setpoint: " );
|
||||
Serial.println(heater_setpoint,1);
|
||||
gw.send(msg_S_HEATER_SETPOINT.set(heater_setpoint,1));
|
||||
gw.send(msg_S_HEATER_SET_POINT.set(heater_setpoint,1));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -866,6 +1025,7 @@ void ir(){
|
||||
Serial.println(irVal);
|
||||
|
||||
gw.send(msg_S_IR_S.set(irVal));
|
||||
gw.send(msg_S_IR_R.set(irVal));
|
||||
|
||||
}
|
||||
#endif
|
||||
@@ -923,6 +1083,115 @@ void scene(){
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGB_LIGHT
|
||||
void rgbLight(){
|
||||
|
||||
Serial.print("RGB Light state is: " );
|
||||
Serial.println(rgbState);
|
||||
gw.send(msg_S_RGB_LIGHT_V_RGB.set(rgbState.c_str()));
|
||||
|
||||
Serial.print("RGB Light Watt is: " );
|
||||
Serial.println(map(randNumber,1,100,0,150));
|
||||
gw.send(msg_S_RGB_LIGHT_V_WATT.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGBW_LIGHT
|
||||
void rgbwLight(){
|
||||
|
||||
Serial.print("RGBW Light state is: " );
|
||||
Serial.println(rgbwState);
|
||||
gw.send(msg_S_RGBW_LIGHT_V_RGBW.set(rgbwState.c_str()));
|
||||
|
||||
Serial.print("RGBW Light Watt is: " );
|
||||
Serial.println(map(randNumber,1,100,0,150));
|
||||
gw.send(msg_S_RGBW_LIGHT_V_WATT.set(map(randNumber,1,100,0,150)));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COLOR_SENSOR
|
||||
void color(){
|
||||
String colorState;
|
||||
|
||||
String red = String(random(0,256),HEX);
|
||||
String green = String(random(0,256),HEX);
|
||||
String blue = String(random(0,256),HEX);
|
||||
|
||||
colorState=String(red + green + blue);
|
||||
|
||||
Serial.print("Color state is: " );
|
||||
Serial.println(colorState);
|
||||
gw.send(msg_S_COLOR_SENSOR_V_RGB.set(colorState.c_str()));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
void hvac(){
|
||||
|
||||
// float hvac_SetPointHeat = 16.5;
|
||||
// float hvac_SetPointCool = 25.5;
|
||||
// String hvac_FlowState = "AutoChangeOver";
|
||||
// String hvac_FlowMode = "Auto";
|
||||
// String hvac_Speed = "Normal";
|
||||
|
||||
Serial.print("HVAC Set Point Heat is: " );
|
||||
Serial.println(hvac_SetPointHeat);
|
||||
gw.send(msg_S_HVAC_V_HVAC_SETPOINT_HEAT.set(hvac_SetPointHeat,1));
|
||||
|
||||
Serial.print("HVAC Set Point Cool is: " );
|
||||
Serial.println(hvac_SetPointCool);
|
||||
gw.send(msg_S_HVAC_V_HVAC_SETPOINT_COOL.set(hvac_SetPointCool,1));
|
||||
|
||||
Serial.print("HVAC Flow State is: " );
|
||||
Serial.println(hvac_FlowState);
|
||||
gw.send(msg_S_HVAC_V_HVAC_FLOW_STATET.set(hvac_FlowState.c_str()));
|
||||
|
||||
Serial.print("HVAC Flow Mode is: " );
|
||||
Serial.println(hvac_FlowMode);
|
||||
gw.send(msg_S_HVAC_V_HVAC_FLOW_MODE.set(hvac_FlowMode.c_str()));
|
||||
|
||||
Serial.print("HVAC Speed is: " );
|
||||
Serial.println(hvac_Speed);
|
||||
gw.send(msg_S_HVAC_V_HVAC_SPEED.set(hvac_Speed.c_str()));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MULTIMETER
|
||||
void multimeter(){
|
||||
int impedance=map(randNumber,1,100,0,15000);
|
||||
int volt=map(randNumber,1,100,0,380);
|
||||
int amps=map(randNumber,1,100,0,16);
|
||||
|
||||
Serial.print("Impedance is: " );
|
||||
Serial.println(impedance);
|
||||
gw.send(msg_S_MULTIMETER_V_IMPEDANCE.set(impedance));
|
||||
|
||||
Serial.print("Voltage is: " );
|
||||
Serial.println(volt);
|
||||
gw.send(msg_S_MULTIMETER_V_VOLTAGE.set(volt));
|
||||
|
||||
Serial.print("Current is: " );
|
||||
Serial.println(amps);
|
||||
gw.send(msg_S_MULTIMETER_V_CURRENT.set(amps));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SPRINKLER
|
||||
#endif
|
||||
#ifdef ID_S_WATER_LEAK
|
||||
#endif
|
||||
#ifdef ID_S_SOUND
|
||||
#endif
|
||||
#ifdef ID_S_VIBRATION
|
||||
#endif
|
||||
#ifdef ID_S_MOISTURE
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_MOISTURE
|
||||
void moisture(){
|
||||
|
||||
@@ -958,20 +1227,42 @@ void incomingMessage(const MyMessage &message) {
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println((isArmed ? "Armed":"Disarmed" ));
|
||||
door();//temp ack for door
|
||||
#ifdef ID_S_DOOR
|
||||
door();//temp ack for door
|
||||
#endif
|
||||
#ifdef ID_S_MOTION
|
||||
motion();//temp ack
|
||||
#endif
|
||||
#ifdef ID_S_SMOKE
|
||||
smoke();//temp ack
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
||||
case V_STATUS: // V_LIGHT:
|
||||
#ifdef ID_S_LIGHT
|
||||
case V_LIGHT:
|
||||
if(message.sensor==ID_S_LIGHT){
|
||||
isLightOn = message.getBool();
|
||||
Serial.print("Incoming change for ID_S_LIGHT:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println((isLightOn ? "On":"Off"));
|
||||
light(); // temp ack
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
// #ifdef ID_S_HEATER
|
||||
// if(message.sensor == ID_S_HEATER){
|
||||
// heater_status = message.getBool();
|
||||
// Serial.print("Incoming change for ID_S_HEATER:");
|
||||
// Serial.print(message.sensor);
|
||||
// Serial.print(", New status: ");
|
||||
// Serial.println(heater_status);
|
||||
// heater();//temp ack
|
||||
// }
|
||||
// #endif
|
||||
break;
|
||||
|
||||
|
||||
#ifdef ID_S_DIMMER
|
||||
case V_DIMMER:
|
||||
@@ -984,58 +1275,90 @@ void incomingMessage(const MyMessage &message) {
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(message.getInt());
|
||||
dimmer();// temp ack
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COVER
|
||||
case V_UP:
|
||||
coverVal="V_UP";
|
||||
coverState=1;
|
||||
Serial.print("Incoming change for ID_S_COVER:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println("V_UP");
|
||||
cover(); // temp ack
|
||||
break;
|
||||
|
||||
case V_DOWN:
|
||||
coverVal="V_DOWN";
|
||||
coverState=-1;
|
||||
Serial.print("Incoming change for ID_S_COVER:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println("V_DOWN");
|
||||
cover(); //temp ack
|
||||
break;
|
||||
|
||||
case V_STOP:
|
||||
coverVal="V_STOP";
|
||||
coverState=0;
|
||||
Serial.print("Incoming change for ID_S_COVER:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println("V_STOP");
|
||||
cover(); //temp ack
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
|
||||
case V_HVAC_SETPOINT_HEAT:
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
if(message.sensor == ID_S_HEATER){
|
||||
heater_setpoint=message.getFloat();
|
||||
|
||||
Serial.print("Incoming set point for ID_S_HEATER:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
heater_setpoint=message.getFloat();
|
||||
Serial.println(heater_setpoint,1);
|
||||
break;
|
||||
case V_STATUS:
|
||||
Serial.print("Incoming change for ID_S_HEATER:");
|
||||
heater();//temp ack
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
if(message.sensor == ID_S_HVAC){
|
||||
hvac_SetPointHeat=message.getFloat();
|
||||
Serial.print("Incoming set point for ID_S_HVAC:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
heater_status = message.getBool();
|
||||
Serial.println(heater_status);
|
||||
Serial.println(hvac_SetPointHeat,1);
|
||||
hvac();//temp ack
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case V_HVAC_FLOW_STATE:
|
||||
#ifdef ID_S_HEATER
|
||||
if(message.sensor == ID_S_HEATER){
|
||||
heater_flow_state=message.getString();
|
||||
Serial.print("Incoming flow state change for ID_S_HEATER:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
heater_flow_state=message.getString();
|
||||
Serial.println(heater_flow_state);
|
||||
heater();//temp ack
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
if(message.sensor == ID_S_HVAC){
|
||||
hvac_FlowState=message.getString();
|
||||
|
||||
Serial.print("Incoming set point for ID_S_HVAC:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(hvac_FlowState);
|
||||
hvac();//temp ack
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_LOCK
|
||||
case V_LOCK_STATUS:
|
||||
@@ -1049,12 +1372,21 @@ void incomingMessage(const MyMessage &message) {
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_IR
|
||||
case V_IR_RECEIVE:
|
||||
irVal = message.getString();
|
||||
case V_IR_SEND:
|
||||
irVal = message.getLong();
|
||||
Serial.print("Incoming change for ID_S_IR:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(irVal);
|
||||
ir(); // temp ack
|
||||
break;
|
||||
case V_IR_RECEIVE:
|
||||
irVal = message.getLong();
|
||||
Serial.print("Incoming change for ID_S_IR:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(irVal);
|
||||
ir(); // temp ack
|
||||
break;
|
||||
#endif
|
||||
|
||||
@@ -1066,7 +1398,7 @@ void incomingMessage(const MyMessage &message) {
|
||||
Serial.print(", New status: ");
|
||||
Serial.print(scenes[sceneVal]);
|
||||
Serial.println(" On");
|
||||
scene();
|
||||
scene();// temp ack
|
||||
break;
|
||||
case V_SCENE_OFF:
|
||||
sceneVal = message.getInt();
|
||||
@@ -1075,10 +1407,71 @@ void incomingMessage(const MyMessage &message) {
|
||||
Serial.print(", New status: ");
|
||||
Serial.print(scenes[sceneVal]);
|
||||
Serial.println(" Off");
|
||||
scene();
|
||||
scene();// temp ack
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef ID_S_RGB_LIGHT
|
||||
case V_RGB:
|
||||
rgbState=message.getString();
|
||||
Serial.print("Incoming flow state change for ID_S_RGB_LIGHT:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(rgbState);
|
||||
rgbLight(); // temp ack
|
||||
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_RGBW_LIGHT
|
||||
case V_RGBW:
|
||||
rgbwState=message.getString();
|
||||
Serial.print("Incoming flow state change for ID_S_RGBW_LIGHT:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(rgbwState);
|
||||
rgbwLight();
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HVAC
|
||||
// hvac_SetPointHeat
|
||||
// hvac_SetPointCool
|
||||
// hvac_FlowState
|
||||
// hvac_FlowMode
|
||||
// hvac_Speed
|
||||
|
||||
case V_HVAC_SETPOINT_COOL:
|
||||
hvac_SetPointCool=message.getFloat();
|
||||
|
||||
Serial.print("Incoming set point for ID_S_HVAC:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(hvac_SetPointCool,1);
|
||||
hvac();//temp ack
|
||||
break;
|
||||
|
||||
case V_HVAC_FLOW_MODE:
|
||||
hvac_Speed=message.getString();
|
||||
|
||||
Serial.print("Incoming set point for ID_S_HVAC:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(hvac_Speed);
|
||||
hvac();//temp ack
|
||||
break;
|
||||
|
||||
case V_HVAC_SPEED:
|
||||
hvac_FlowMode=message.getString();
|
||||
|
||||
Serial.print("Incoming set point for ID_S_HVAC:");
|
||||
Serial.print(message.sensor);
|
||||
Serial.print(", New status: ");
|
||||
Serial.println(hvac_FlowMode);
|
||||
hvac();//temp ack
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
Serial.print("Unknown/UnImplemented message type: ");
|
||||
Serial.println(message.type);
|
||||
|
||||
@@ -17,7 +17,23 @@ With a Mega you can have them all
|
||||
Changes Log
|
||||
-----------------
|
||||
|
||||
2015-09-07
|
||||
Five more sensors
|
||||
S_RGB_LIGHT
|
||||
S_RGBW_LIGHT
|
||||
S_COLOR_SENSOR
|
||||
S_HVAC
|
||||
S_MULTIMETER
|
||||
Consolidated HVAC and HEATER incoming message
|
||||
|
||||
2015-09-06
|
||||
|
||||
Merge with Gizmocuz (implementation of S_HEATER & S_MOISTURE
|
||||
Implementation of S_COVER, S_IR, S_SCENE_CONTROLLER
|
||||
|
||||
|
||||
2015-08-19
|
||||
|
||||
Removed the load/save to eeprom
|
||||
Touched the heater sensor
|
||||
Created a pseudo sensor to handle the V_ARMED message.
|
||||
|
||||
Reference in New Issue
Block a user