Merge pull request #170 from gizmocuz/master
MyMessage.h comments fixed / MockMySensors changes to get it working in 1.5
This commit is contained in:
@@ -58,7 +58,7 @@ typedef enum {
|
||||
S_UV, // Uv sensor, V_UV
|
||||
S_WEIGHT, // Personal scale sensor, V_WEIGHT, V_IMPEDANCE
|
||||
S_POWER, // Power meter, V_WATT, V_KWH
|
||||
S_HEATER, // Header device, V_HVAC_SETPOINT_HEAT, V_HVAC_FLOW_STATE
|
||||
S_HEATER, // Header device, V_HVAC_SETPOINT_HEAT, V_HVAC_FLOW_STATE, V_TEMP
|
||||
S_DISTANCE, // Distance sensor, V_DISTANCE
|
||||
S_LIGHT_LEVEL, // Light level sensor, V_LIGHT_LEVEL (uncalibrated in percentage), V_LEVEL (light level in lux)
|
||||
S_ARDUINO_NODE, // Used (internally) for presenting a non-repeating Arduino node
|
||||
@@ -73,7 +73,7 @@ typedef enum {
|
||||
S_RGB_LIGHT, // RGB light. Send color component data using V_RGB. Also supports V_WATT
|
||||
S_RGBW_LIGHT, // RGB light with an additional White component. Send data using V_RGBW. Also supports V_WATT
|
||||
S_COLOR_SENSOR, // Color sensor, send color information using V_RGB
|
||||
S_HVAC, // Thermostat/HVAC device. V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COLD, V_HVAC_FLOW_STATE, V_HVAC_FLOW_MODE
|
||||
S_HVAC, // Thermostat/HVAC device. V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COLD, V_HVAC_FLOW_STATE, V_HVAC_FLOW_MODE, V_TEMP
|
||||
S_MULTIMETER, // Multimeter device, V_VOLTAGE, V_CURRENT, V_IMPEDANCE
|
||||
S_SPRINKLER, // Sprinkler, V_STATUS (turn on/off), V_TRIPPED (if fire detecting device)
|
||||
S_WATER_LEAK, // Water leak sensor, V_TRIPPED, V_ARMED
|
||||
@@ -84,42 +84,42 @@ typedef enum {
|
||||
|
||||
// Type of sensor data (for set/req/ack messages)
|
||||
typedef enum {
|
||||
V_TEMP, // S_TEMP
|
||||
V_HUM, // S_HUM
|
||||
V_STATUS, // S_LIGHT, S_DIMMER, S_SPRINKLER, S_HVAC, S_HEATER. Used for setting binary (on/off) status. 1=on, 0=off
|
||||
V_TEMP, // S_TEMP. Temperature S_TEMP, S_HEATER, S_HVAC
|
||||
V_HUM, // S_HUM. Humidity
|
||||
V_STATUS, // S_LIGHT, S_DIMMER, S_SPRINKLER, S_HVAC, S_HEATER. Used for setting/reporting binary (on/off) status. 1=on, 0=off
|
||||
V_LIGHT=2, // Same as V_STATUS
|
||||
V_PERCENTAGE, // S_DIMMER. Used for sending a percentage value (0-100).
|
||||
V_PERCENTAGE, // S_DIMMER. Used for sending a percentage value 0-100 (%).
|
||||
V_DIMMER=3, // S_DIMMER. Same as V_PERCENTAGE.
|
||||
V_PRESSURE, // S_BARO
|
||||
V_FORECAST, // S_BARO
|
||||
V_RAIN, // S_RAIN
|
||||
V_RAINRATE, // S_RAIN
|
||||
V_WIND, // S_WIND
|
||||
V_GUST, // S_WIND
|
||||
V_DIRECTION, // S_WIND
|
||||
V_UV, // S_UV
|
||||
V_WEIGHT, // S_WEIGHT
|
||||
V_DISTANCE, // S_DISTANCE
|
||||
V_IMPEDANCE, // S_MULTIMETER, S_WEIGHT
|
||||
V_ARMED, // S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER
|
||||
V_TRIPPED, // S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER (for sprinklers with fire detection)
|
||||
V_WATT, // S_POWER, S_LIGHT, S_DIMMER
|
||||
V_KWH, // S_POWER
|
||||
V_SCENE_ON, // S_SCENE_CONTROLLER
|
||||
V_SCENE_OFF, // S_SCENE_CONTROLLER
|
||||
V_PRESSURE, // S_BARO. Atmospheric Pressure
|
||||
V_FORECAST, // S_BARO. Whether forecast. string of "stable", "sunny", "cloudy", "unstable", "thunderstorm" or "unknown"
|
||||
V_RAIN, // S_RAIN. Amount of rain
|
||||
V_RAINRATE, // S_RAIN. Rate of rain
|
||||
V_WIND, // S_WIND. Wind speed
|
||||
V_GUST, // S_WIND. Gust
|
||||
V_DIRECTION, // S_WIND. Wind direction 0-360 (degrees)
|
||||
V_UV, // S_UV. UV light level
|
||||
V_WEIGHT, // S_WEIGHT. Weight(for scales etc)
|
||||
V_DISTANCE, // S_DISTANCE. Distance
|
||||
V_IMPEDANCE, // S_MULTIMETER, S_WEIGHT. Impedance value
|
||||
V_ARMED, // S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER. Armed status of a security sensor. 1 = Armed, 0 = Bypassed
|
||||
V_TRIPPED, // S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER, S_WATER_LEAK, S_SOUND, S_VIBRATION, S_MOISTURE. Tripped status of a security sensor. 1 = Tripped, 0
|
||||
V_WATT, // S_POWER, S_LIGHT, S_DIMMER, S_RGB, S_RGBW. Watt value for power meters
|
||||
V_KWH, // S_POWER. Accumulated number of KWH for a power meter
|
||||
V_SCENE_ON, // S_SCENE_CONTROLLER. Turn on a scene
|
||||
V_SCENE_OFF, // S_SCENE_CONTROLLER. Turn of a scene
|
||||
V_HEATER, // Deprecated. Use V_HVAC_FLOW_STATE instead.
|
||||
V_HVAC_FLOW_STATE=21, // HVAC flow state ("Off", "HeatOn", "CoolOn", or "AutoChangeOver"). S_HEATER, S_HVAC
|
||||
V_HVAC_SPEED, // HVAC/Heater fan speed ("Min", "Normal", "Max", "Auto")
|
||||
V_LIGHT_LEVEL, // Used for sending light level in uncalibrated percentage. See also V_LEVEL (light level in lux). S_LIGHT_LEVEL
|
||||
V_HVAC_FLOW_STATE=21, // S_HEATER, S_HVAC. HVAC flow state ("Off", "HeatOn", "CoolOn", or "AutoChangeOver")
|
||||
V_HVAC_SPEED, // S_HVAC, S_HEATER. HVAC/Heater fan speed ("Min", "Normal", "Max", "Auto")
|
||||
V_LIGHT_LEVEL, // S_LIGHT_LEVEL. Uncalibrated light level. 0-100%. Use V_LEVEL for light level in lux
|
||||
V_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5,
|
||||
V_UP, // S_COVER
|
||||
V_DOWN, // S_COVER
|
||||
V_STOP, // S_COVER
|
||||
V_IR_SEND, // S_IR
|
||||
V_IR_RECEIVE, // S_IR
|
||||
V_FLOW, // S_WATER
|
||||
V_VOLUME, // S_WATER
|
||||
V_LOCK_STATUS, // S_LOCK
|
||||
V_UP, // S_COVER. Window covering. Up
|
||||
V_DOWN, // S_COVER. Window covering. Down
|
||||
V_STOP, // S_COVER. Window covering. Stop
|
||||
V_IR_SEND, // S_IR. Send out an IR-command
|
||||
V_IR_RECEIVE, // S_IR. This message contains a received IR-command
|
||||
V_FLOW, // S_WATER. Flow of water (in meter)
|
||||
V_VOLUME, // S_WATER. Water volume
|
||||
V_LOCK_STATUS, // S_LOCK. Set or get lock status. 1=Locked, 0=Unlocked
|
||||
V_LEVEL, // S_DUST, S_AIR_QUALITY, S_SOUND (dB), S_VIBRATION (hz), S_LIGHT_LEVEL (lux)
|
||||
V_VOLTAGE, // S_MULTIMETER
|
||||
V_CURRENT, // S_MULTIMETER
|
||||
@@ -128,15 +128,16 @@ typedef enum {
|
||||
// Sent as ASCII hex: RRGGBB (RR=red, GG=green, BB=blue component)
|
||||
V_RGBW, // S_RGBW_LIGHT
|
||||
// Used for sending color information to multi color LED lighting.
|
||||
// Sent as ASCII hex: RRGGBBWW (WW=while component)
|
||||
// Sent as ASCII hex: RRGGBBWW (WW=white component)
|
||||
V_ID, // S_TEMP
|
||||
// Used for sending in sensors hardware ids (i.e. OneWire DS1820b).
|
||||
V_UNIT_PREFIX, // Allows sensors to send in a string representing the
|
||||
// unit prefix to be displayed in GUI, not parsed by controller! E.g. cm, m, km, inch.
|
||||
// Can be used for S_DISTANCE or gas concentration (S_DUST, S_AIR_QUALITY)
|
||||
V_HVAC_SETPOINT_COOL, // HVAC cool setpoint (Integer between 0-100). S_HVAC
|
||||
V_HVAC_SETPOINT_HEAT, // HVAC/Heater setpoint (Integer between 0-100). S_HEATER, S_HVAC
|
||||
V_HVAC_FLOW_MODE, // Flow mode for HVAC ("Auto", "ContinuousOn", "PeriodicOn"). S_HVAC
|
||||
V_UNIT_PREFIX, // S_DUST, S_AIR_QUALITY
|
||||
// Allows sensors to send in a string representing the
|
||||
// unit prefix to be displayed in GUI, not parsed by controller! E.g. cm, m, km, inch.
|
||||
// Can be used for S_DISTANCE or gas concentration
|
||||
V_HVAC_SETPOINT_COOL, // S_HVAC. HVAC cool setpoint (Integer between 0-100)
|
||||
V_HVAC_SETPOINT_HEAT, // S_HEATER, S_HVAC. HVAC/Heater setpoint (Integer between 0-100)
|
||||
V_HVAC_FLOW_MODE, // S_HVAC. Flow mode for HVAC ("Auto", "ContinuousOn", "PeriodicOn")
|
||||
|
||||
} mysensor_data;
|
||||
|
||||
|
||||
@@ -1,47 +1,29 @@
|
||||
/*
|
||||
* MockMySensors
|
||||
* FakeMySensors
|
||||
*
|
||||
* This skecth is intended to crate fake sensors which register and respond to the controller
|
||||
*
|
||||
* Barduino 2015
|
||||
* Barduino, GizMoCuz 2015
|
||||
*/
|
||||
|
||||
#include <MySigningNone.h>
|
||||
#include <MyTransportRFM69.h>
|
||||
#include <MyTransportNRF24.h>
|
||||
#include <MyHwATMega328.h>
|
||||
#include <MySigningAtsha204Soft.h>
|
||||
#include <MySigningAtsha204.h>
|
||||
|
||||
#include <SPI.h>
|
||||
#include <MySensor.h>
|
||||
#include <MyMessage.h>
|
||||
#include <SPI.h>
|
||||
|
||||
#define RADIO_ERROR_LED_PIN 4 // Error led pin
|
||||
#define RADIO_RX_LED_PIN 6 // Receive led pin
|
||||
#define RADIO_TX_LED_PIN 5 // the PCB, on board LED
|
||||
// SPI Pins
|
||||
#define CE_PIN 9
|
||||
#define CS_PIN 10
|
||||
|
||||
// Wait times
|
||||
#define LONG_WAIT 500
|
||||
#define SHORT_WAIT 50
|
||||
|
||||
#define SKETCH_NAME "FakeMySensors "
|
||||
#define SKETCH_VERSION "v0.2"
|
||||
|
||||
// Define Sensors ids
|
||||
/* S_DOOR, S_MOTION, S_SMOKE, S_LIGHT, S_DIMMER, S_COVER, S_TEMP, S_HUM, S_BARO, S_WIND,
|
||||
S_RAIN, S_UV, S_WEIGHT, S_POWER, S_HEATER, S_DISTANCE, S_LIGHT_LEVEL, S_ARDUINO_NODE,
|
||||
S_ARDUINO_REPEATER_NODE, S_LOCK, S_IR, S_WATER, S_AIR_QUALITY, S_CUSTOM, S_DUST,
|
||||
S_SCENE_CONTROLLER
|
||||
*/
|
||||
#define SKETCH_VERSION "v0.3"
|
||||
|
||||
////#define ID_S_ARDUINO_NODE //auto defined in initialization
|
||||
////#define ID_S_ARDUINO_REPEATER_NODE //auto defined in initialization
|
||||
|
||||
// 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_DOOR 1
|
||||
//#define ID_S_DOOR 1
|
||||
//#define ID_S_MOTION 2
|
||||
//#define ID_S_SMOKE 3
|
||||
//#define ID_S_LIGHT 4
|
||||
@@ -51,11 +33,11 @@
|
||||
//#define ID_S_HUM 8
|
||||
//#define ID_S_BARO 9
|
||||
//#define ID_S_WIND 10
|
||||
//#define ID_S_RAIN 11
|
||||
//#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_HEATER 15 <<-- not correctly implemented (1.5 API)
|
||||
//#define ID_S_DISTANCE 16
|
||||
//#define ID_S_LIGHT_LEVEL 17
|
||||
//#define ID_S_LOCK 18
|
||||
@@ -67,29 +49,12 @@
|
||||
//#define ID_S_CUSTOM 24
|
||||
|
||||
// Global Vars
|
||||
unsigned long SLEEP_TIME = 60000; // Sleep time between reads (in milliseconds)
|
||||
unsigned long SLEEP_TIME = 12000; // Sleep time between reads (in milliseconds)
|
||||
boolean metric = true;
|
||||
long randNumber;
|
||||
|
||||
// Instanciate MySersors Gateway
|
||||
MyTransportNRF24 transport(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);
|
||||
//MyTransportRFM69 transport;
|
||||
|
||||
// Message signing driver (signer needed if MY_SIGNING_FEATURE is turned on in MyConfig.h)
|
||||
//MySigningNone signer;
|
||||
//MySigningAtsha204Soft signer;
|
||||
//MySigningAtsha204 signer;
|
||||
|
||||
// Hardware profile
|
||||
MyHwATMega328 hw;
|
||||
|
||||
// Construct MySensors library (signer needed if MY_SIGNING_FEATURE is turned on in MyConfig.h)
|
||||
// To use LEDs blinking, uncomment WITH_LEDS_BLINKING in MyConfig.h
|
||||
#ifdef WITH_LEDS_BLINKING
|
||||
MySensor gw(transport, hw /*, signer*/, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN);
|
||||
#else
|
||||
MySensor gw(transport, hw /*, signer*/);
|
||||
#endif
|
||||
MySensor gw;
|
||||
|
||||
//Instanciate Messages objects
|
||||
|
||||
@@ -161,8 +126,10 @@ MySensor gw(transport, hw /*, signer*/);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
MyMessage msg_S_HEATER_M(ID_S_HEATER,V_HEATER);
|
||||
MyMessage msg_S_HEATER_S(ID_S_HEATER,V_HEATER_SW);
|
||||
float current_set_point=21.5;
|
||||
MyMessage msg_S_HEATER_SP(ID_S_HEATER,V_HVAC_SETPOINT_HEAT);
|
||||
MyMessage msg_S_HEATER_F(ID_S_HEATER,V_HVAC_SETPOINT_HEAT);
|
||||
MyMessage msg_S_HEATER_T(ID_S_HEATER,V_TEMP);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_DISTANCE
|
||||
@@ -188,11 +155,11 @@ MySensor gw(transport, hw /*, signer*/);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_AIR_QUALITY
|
||||
MyMessage msg_S_AIR_QUALITY(ID_S_AIR_QUALITY,V_VAR1);
|
||||
MyMessage msg_S_AIR_QUALITY(ID_S_AIR_QUALITY,V_LEVEL);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_DUST
|
||||
MyMessage msg_S_DUST(ID_S_DUST,V_DUST_LEVEL);
|
||||
MyMessage msg_S_DUST(ID_S_DUST,V_LEVEL);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_SCENE_CONTROLLER
|
||||
@@ -268,13 +235,13 @@ void setup()
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_COVER
|
||||
Serial.println(" S_COVER";
|
||||
Serial.println(" S_COVER");
|
||||
gw.present(ID_S_COVER,S_COVER);
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
|
||||
#ifdef ID_S_TEMP
|
||||
Serial.println(" S_TMEP");
|
||||
Serial.println(" S_TEMP");
|
||||
gw.present(ID_S_TEMP,S_TEMP);
|
||||
gw.wait(SHORT_WAIT);
|
||||
#endif
|
||||
@@ -408,7 +375,7 @@ void loop()
|
||||
gw.wait(LONG_WAIT);
|
||||
|
||||
//Read Sensors
|
||||
#ifdef S_ID_DOOR
|
||||
#ifdef ID_S_DOOR
|
||||
door();
|
||||
#endif
|
||||
|
||||
@@ -519,9 +486,7 @@ void receiveTime(unsigned long controllerTime) {
|
||||
|
||||
}
|
||||
|
||||
//void door(){}
|
||||
|
||||
#ifdef S_ID_DOOR
|
||||
#ifdef ID_S_DOOR
|
||||
void door(){
|
||||
|
||||
Serial.print("Door is: " );
|
||||
@@ -650,7 +615,7 @@ void hum(){
|
||||
void baro(){
|
||||
|
||||
const char *weather[] = {"stable","sunny","cloudy","unstable","thunderstorm","unknown"};
|
||||
long pressure = map(randNumber,1,100,87000,108600);
|
||||
long pressure = map(randNumber,1,100,900,1200);
|
||||
int forecast = map(randNumber,1,100,0,5);
|
||||
|
||||
Serial.print("Atmosferic Pressure is: " );
|
||||
@@ -753,8 +718,9 @@ void power(){
|
||||
|
||||
#ifdef ID_S_HEATER
|
||||
void heater(){
|
||||
int heater_mode = gw.loadState(ID_S_HEATER);
|
||||
bool heater_switch = gw.loadState(ID_S_HEATER+1);
|
||||
int heater_set_point = gw.loadState(ID_S_HEATER);
|
||||
int heater_flow_state = gw.loadState(ID_S_HEATER+1);
|
||||
int heater_temp = gw.loadState(ID_S_HEATER+2);
|
||||
|
||||
Serial.print("Heater mode is: " );
|
||||
|
||||
@@ -781,6 +747,11 @@ void heater(){
|
||||
Serial.println(heater_switch?"On":"Off");
|
||||
|
||||
gw.send(msg_S_HEATER_S.set(heater_switch));
|
||||
|
||||
Serial.print("Heater Temperature is: " );
|
||||
Serial.println(map(randNumber,1,100,0,45));
|
||||
|
||||
gw.send(msg_S_HEATER_T.set(map(randNumber,1,100,0,45)));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3,7 +3,7 @@ Arduino sketch to fake sensor for the MySensors Library
|
||||
|
||||
This skecth is intended to crate fake sensors which register and respond to the controller
|
||||
|
||||
Barduino 2015
|
||||
Barduino, GizMoCuz 2015
|
||||
-----------------
|
||||
|
||||
Comment/Uncomment the sensors you would like to test
|
||||
@@ -12,4 +12,4 @@ Arduino Uno R3 can support about 12 sensors before it runs out of memory.
|
||||
You probably need to turn of the MySensor Lib debug to save some memory
|
||||
|
||||
Nest step will be to remove the read/write to the eprom
|
||||
and extend to support the v1.5 sensors
|
||||
and extend 'ID_S_HEATER' to support the v1.5 API
|
||||
|
||||
Reference in New Issue
Block a user