2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-09 13:45:33 +00:00

MYSENSORS: add new constants (merge pullrequest from Kolbi)

git-svn-id: https://svn.fhem.de/fhem/trunk@9341 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
ntruchsess 2015-10-02 14:55:54 +00:00
parent d631b94e19
commit 888704d115
3 changed files with 116 additions and 57 deletions

View File

@ -342,7 +342,7 @@ sub onInternalMsg($$) {
}
last;
};
$type == I_STARTUP_COMPLETE and do {
$type == I_GATEWAY_READY and do {
readingsSingleUpdate($hash,'connection','startup complete',1);
GP_ForallClients($hash,sub {
my $client = shift;

View File

@ -83,47 +83,59 @@ BEGIN {
};
my %static_types = (
S_DOOR => { receives => [], sends => [V_TRIPPED] }, # BinarySwitchSensor
S_MOTION => { receives => [], sends => [V_TRIPPED] }, # MotionSensor
S_SMOKE => { receives => [], sends => [] }, # Not used so far
S_LIGHT => { receives => [V_LIGHT], sends => [V_LIGHT] }, # BinarySwitchSensor
S_DIMMER => { receives => [V_LIGHT,V_DIMMER], sends => [V_LIGHT,V_DIMMER] }, # DimmableLEDActuator
S_COVER => { receives => [V_DIMMER,V_UP,V_DOWN,V_STOP], sends => [V_DIMMER] }, # ServoActuator
S_TEMP => { receives => [], sends => [V_TEMP] }, # DallasTemperatureSensor
S_HUM => { receives => [], sends => [V_HUM] }, # HumiditySensor
S_BARO => { receives => [], sends => [V_PRESSURE,V_FORECAST] },
S_WIND => { receives => [], sends => [V_WIND,V_GUST,V_DIRECTION] }, # Not used so far
S_RAIN => { receives => [], sends => [V_RAIN,V_RAINRATE] }, # Not used so far
S_UV => { receives => [], sends => [V_UV] }, # UVSensor
S_WEIGHT => { receives => [], sends => [V_WEIGHT] }, # Not used so far
S_POWER => { receives => [V_VAR1], sends => [V_WATT,V_KWH,V_VAR1] }, # EnergyMeterPulseSensor
S_HEATER => { receives => [], sends => [V_HEATER,V_HEATER_SW] }, # Not used so far
S_DISTANCE => { receives => [], sends => [V_DISTANCE] }, # DistanceSensor
S_LIGHT_LEVEL => { receives => [], sends => [V_LIGHT_LEVEL] }, # LightSensor
S_ARDUINO_NODE => { receives => [], sends => [] }, # Not used so far
S_ARDUINO_REPEATER_NODE => { receives => [], sends => [] }, # Not used so far
S_LOCK => { receives => [V_LOCK_STATUS], sends => [V_LOCK_STATUS] }, #R FIDLockSensor
S_IR => { receives => [V_IR_SEND], sends => [V_IR_RECEIVE] }, # Not used so far
S_WATER => { receives => [V_VAR1], sends => [V_FLOW,V_VOLUME,V_VAR1] }, # WaterMeterPulseSensor
S_AIR_QUALITY => { receives => [], sends => [V_VAR1] }, # AirQualitySensor
S_CUSTOM => { receives => [], sends => [V_VAR1,V_VAR2,V_VAR3] }, # Not used so far
S_DUST => { receives => [], sends => [V_DUST_LEVEL] }, # Not used so far
S_SCENE_CONTROLLER => { receives => [], sends => [V_SCENE_ON,V_SCENE_OFF] }, # TouchDisplaySceneControllerDisplaySensor
S_DOOR => { receives => [], sends => [V_TRIPPED,V_ARMED] }, # Door and window sensors
S_MOTION => { receives => [], sends => [V_TRIPPED,V_ARMED] }, # MotionSensor
S_SMOKE => { receives => [], sends => [V_TRIPPED,V_ARMED] }, # Smoke sensor
S_LIGHT => { receives => [V_STATUS,V_WATT], sends => [V_STATUS,V_WATT] }, # Light Actuator (on/off)
S_BINARY => { receives => [V_STATUS,V_WATT], sends => [V_STATUS,V_WATT] }, # Binary device (on/off), Alias for S_LIGHT
S_DIMMER => { receives => [V_STATUS,V_PERCENTAGE,V_WATT], sends => [V_STATUS,V_PERCENTAGE,V_WATT] }, # Dimmable device of some kind
S_COVER => { receives => [V_UP,V_DOWN,V_STOP,V_PERCENTAGE], sends => [V_PERCENTAGE] }, # Window covers or shades
S_TEMP => { receives => [], sends => [V_TEMP,V_ID] }, # Temperature sensor
S_HUM => { receives => [], sends => [V_HUM] }, # Humidity sensor
S_BARO => { receives => [], sends => [V_PRESSURE,V_FORECAST] }, # Barometer sensor (Pressure)
S_WIND => { receives => [], sends => [V_WIND,V_GUST] }, # Wind sensor
S_RAIN => { receives => [], sends => [V_RAIN,V_RAINRATE] }, # Rain sensor
S_UV => { receives => [], sends => [V_UV] }, # UV Sensor
S_WEIGHT => { receives => [], sends => [V_WEIGHT,V_IMPEDANCE] }, # Weight sensor for scales etc.
S_POWER => { receives => [], sends => [V_WATT,V_KWH] }, # Power measuring device, like power meters
S_HEATER => { receives => [], sends => [V_HVAC_SETPOINT_HEAT,V_HVAC_FLOW_STATE,V_TEMP] }, # Heater device
S_DISTANCE => { receives => [], sends => [V_DISTANCE,V_UNIT_PREFIX] }, # Distance sensor
S_LIGHT_LEVEL => { receives => [], sends => [V_LIGHT_LEVEL,V_LEVEL] }, # Light sensor
S_ARDUINO_NODE => { receives => [], sends => [] }, # Arduino node device
S_ARDUINO_REPEATER_NODE => { receives => [], sends => [] }, # Arduino repeating node device
S_LOCK => { receives => [V_LOCK_STATUS], sends => [V_LOCK_STATUS] }, # Lock device
S_IR => { receives => [V_IR_SEND], sends => [V_IR_RECEIVE] }, # Ir sender/receiver device
S_WATER => { receives => [], sends => [V_FLOW,V_VOLUME,] }, # Water meter
S_AIR_QUALITY => { receives => [], sends => [V_LEVEL,V_UNIT_PREFIX] }, # Air quality sensor e.g. MQ-2
S_CUSTOM => { receives => [], sends => [V_VAR1,V_VAR2,V_VAR3,V_VAR4,V_VAR5] }, # Use this for custom sensors where no other fits.
S_DUST => { receives => [], sends => [V_LEVEL,V_UNIT_PREFIX] }, # Dust level sensor
S_SCENE_CONTROLLER => { receives => [], sends => [V_SCENE_ON,V_SCENE_OFF] }, # Scene controller device
S_RGB_LIGHT => { receives => [V_RGB,V_WATT], sends => [V_RGB,V_WATT] }, # RGB light
S_RGBW_LIGHT => { receives => [V_RGBW,V_WATT], sends => [V_RGBW,V_WATT] }, # RGBW light (with separate white component)
S_COLOR_SENSOR => { receives => [V_RGB], sends => [V_RGB] }, # Color sensor
S_HVAC => { receives => [], sends => [V_HVAC_SETPOINT_HEAT,V_HVAC_SETPOINT_COOL,V_HVAC_FLOW_STATE,V_HVAC_FLOW_MODE,V_HVAC_SPEED] }, # Thermostat/HVAC device
S_MULTIMETER => { receives => [], sends => [V_VOLTAGE,V_CURRENT,V_IMPEDANCE] }, # Multimeter device
S_SPRINKLER => { receives => [], sends => [V_STATUS,V_TRIPPED] }, # Sprinkler device
S_WATER_LEAK => { receives => [], sends => [V_TRIPPED,V_ARMED] }, # Water leak sensor
S_SOUND => { receives => [], sends => [V_LEVEL,V_TRIPPED,V_ARMED] }, # Sound sensor
S_VIBRATION => { receives => [], sends => [V_LEVEL,V_TRIPPED,V_ARMED] }, # Vibration sensor
S_MOISTURE => { receives => [], sends => [V_LEVEL,V_TRIPPED,V_ARMED] }, # Moisture sensor
);
my %static_mappings = (
V_TEMP => { type => "temperature" },
V_HUM => { type => "humidity" },
V_STATUS => { type => "status", val => { 0 => 'off', 1 => 'on' }},
#V_LIGHT => { type => "switch", val => { 0 => 'off', 1 => 'on' }}, # Deprecated
V_PERCENTAGE => { type => "percentage", range => { min => 0, step => 1, max => 100 }},
#V_DIMMER => { type => "dimmer", range => { min => 0, step => 1, max => 100 }}, # Deprecated
V_PRESSURE => { type => "pressure" },
V_LIGHT_LEVEL => { type => "brightness" },
V_LIGHT => { type => "switch", val => { 0 => 'off', 1 => 'on' }},
V_DIMMER => { type => "dimmer", range => { min => 0, step => 1, max => 100 }},
V_FORECAST => { type => "forecast", val => { # PressureSensor, DP/Dt explanation
0 => 'stable', # 0 = "Stable Weather Pattern"
1 => 'slow rising', # 1 = "Slowly rising Good Weather", "Clear/Sunny "
2 => 'slow falling', # 2 = "Slowly falling L-Pressure ", "Cloudy/Rain "
3 => 'quick rising', # 3 = "Quickly rising H-Press", "Not Stable"
4 => 'quick falling',# 4 = "Quickly falling L-Press", "Thunderstorm"
1 => 'sunny', # 1 = "Slowly rising Good Weather", "Clear/Sunny "
2 => 'cloudy', # 2 = "Slowly falling L-Pressure ", "Cloudy/Rain "
3 => 'unstable', # 3 = "Quickly rising H-Press", "Not Stable"
4 => 'thunderstorm',# 4 = "Quickly falling L-Press", "Thunderstorm"
5 => 'unknown' }}, # 5 = "Unknown (More Time needed)
V_RAIN => { type => "rain" },
V_RAINRATE => { type => "rainrate" },
@ -134,14 +146,15 @@ my %static_mappings = (
V_WEIGHT => { type => "weight" },
V_DISTANCE => { type => "distance" },
V_IMPEDANCE => { type => "impedance" },
V_ARMED => { type => "armed" },
V_ARMED => { type => "armed", val => { 0 => 'off', 1 => 'on' }},
V_TRIPPED => { type => "tripped", val => { 0 => 'off', 1 => 'on' }},
V_WATT => { type => "power" },
V_KWH => { type => "energy" },
V_SCENE_ON => { type => "button_on" },
V_SCENE_OFF => { type => "button_off" },
V_HEATER => { type => "heater" },
V_HEATER_SW => { type => "heater_sw" },
V_HVAC_FLOW_STATE => { type => "hvacflowstate" },
V_HVAC_SPEED => { type => "hvacspeed" },
V_LIGHT_LEVEL => { type => "brightness", range => { min => 0, step => 1, max => 100 }},
V_VAR1 => { type => "value1" },
V_VAR2 => { type => "value2" },
V_VAR3 => { type => "value3" },
@ -155,9 +168,16 @@ my %static_mappings = (
V_FLOW => { type => "flow" },
V_VOLUME => { type => "volume" },
V_LOCK_STATUS => { type => "lockstatus", val => { 0 => 'off', 1 => 'on' }},
V_DUST_LEVEL => { type => "dustlevel" },
V_LEVEL => { type => "level" },
V_VOLTAGE => { type => "voltage" },
V_CURRENT => { type => "current" },
V_RGB => { type => "rgb" },
V_RGBW => { type => "rgbw" },
V_ID => { type => "id" },
V_UNIT_PREFIX => { type => "unitprefix" },
V_HVAC_SETPOINT_COOL => { type => "hvacsetpointcool" },
V_HVAC_SETPOINT_HEAT => { type => "hvacsetpointheat" },
V_HVAC_FLOW_MODE => { type => "hvacflowmode" },
);
sub Define($$) {
@ -484,11 +504,11 @@ sub onInternalMessage($$) {
}
last;
};
$type == I_PING and do {
$type == I_FIND_PARENT and do {
$hash->{$typeStr} = $msg->{payload};
last;
};
$type == I_PING_ACK and do {
$type == I_FIND_PARENT_RESPONSE and do {
$hash->{$typeStr} = $msg->{payload};
last;
};
@ -513,6 +533,22 @@ sub onInternalMessage($$) {
$hash->{$typeStr} = $msg->{payload};
last;
};
$type == I_GATEWAY_READY and do {
$hash->{$typeStr} = $msg->{payload};
last;
};
$type == I_REQUEST_SIGNING and do {
$hash->{$typeStr} = $msg->{payload};
last;
};
$type == I_GET_NONCE and do {
$hash->{$typeStr} = $msg->{payload};
last;
};
$type == I_GET_NONCE_RESPONSE and do {
$hash->{$typeStr} = $msg->{payload};
last;
};
}
}

View File

@ -21,8 +21,8 @@ sub commandToStr($) {
use constant {
V_TEMP => 0,
V_HUM => 1,
V_LIGHT => 2,
V_DIMMER => 3,
V_STATUS => 2,
V_PERCENTAGE => 3,
V_PRESSURE => 4,
V_FORECAST => 5,
V_RAIN => 6,
@ -40,8 +40,8 @@ use constant {
V_KWH => 18,
V_SCENE_ON => 19,
V_SCENE_OFF => 20,
V_HEATER => 21,
V_HEATER_SW => 22,
V_HVAC_FLOW_STATE => 21,
V_HVAC_SPEED => 22,
V_LIGHT_LEVEL => 23,
V_VAR1 => 24,
V_VAR2 => 25,
@ -56,17 +56,24 @@ use constant {
V_FLOW => 34,
V_VOLUME => 35,
V_LOCK_STATUS => 36,
V_DUST_LEVEL => 37,
V_VOLTAGE => 38,
V_LEVEL => 37,
V_VOLTAGE => 38,
V_CURRENT => 39,
V_RGB => 40,
V_RGBW => 41,
V_ID => 42,
V_UNIT_PREFIX => 43,
V_HVAC_SETPOINT_COOL => 44,
V_HVAC_SETPOINT_HEAT => 45,
V_HVAC_FLOW_MODE => 46,
};
use constant variableTypes => qw{ V_TEMP V_HUM V_LIGHT V_DIMMER V_PRESSURE V_FORECAST V_RAIN
use constant variableTypes => qw{ V_TEMP V_HUM V_STATUS V_PERCENTAGE V_PRESSURE V_FORECAST V_RAIN
V_RAINRATE V_WIND V_GUST V_DIRECTION V_UV V_WEIGHT V_DISTANCE
V_IMPEDANCE V_ARMED V_TRIPPED V_WATT V_KWH V_SCENE_ON V_SCENE_OFF
V_HEATER V_HEATER_SW V_LIGHT_LEVEL V_VAR1 V_VAR2 V_VAR3 V_VAR4 V_VAR5
V_HVAC_FLOW_STATE V_HVAC_SPEED V_LIGHT_LEVEL V_VAR1 V_VAR2 V_VAR3 V_VAR4 V_VAR5
V_UP V_DOWN V_STOP V_IR_SEND V_IR_RECEIVE V_FLOW V_VOLUME V_LOCK_STATUS
V_DUST_LEVEL V_VOLTAGE V_CURRENT};
V_LEVEL V_VOLTAGE V_CURRENT V_RGB V_RGBW V_ID V_UNIT_PREFIX V_HVAC_SETPOINT_COOL V_HVAC_SETPOINT_HEAT V_HVAC_FLOW_MODE};
sub variableTypeToStr($) {
(variableTypes)[shift];
@ -86,20 +93,23 @@ use constant {
I_ID_RESPONSE => 4,
I_INCLUSION_MODE => 5,
I_CONFIG => 6,
I_PING => 7,
I_PING_ACK => 8,
I_FIND_PARENT => 7,
I_FIND_PARENT_RESPONSE => 8,
I_LOG_MESSAGE => 9,
I_CHILDREN => 10,
I_SKETCH_NAME => 11,
I_SKETCH_VERSION => 12,
I_REBOOT => 13,
I_STARTUP_COMPLETE => 14.
I_GATEWAY_READY => 14,
I_REQUEST_SIGNING => 15,
I_GET_NONCE => 16,
I_GET_NONCE_RESPONSE => 17.
};
use constant internalMessageTypes => qw{ I_BATTERY_LEVEL I_TIME I_VERSION I_ID_REQUEST I_ID_RESPONSE
I_INCLUSION_MODE I_CONFIG I_PING I_PING_ACK
I_INCLUSION_MODE I_CONFIG I_FIND_PARENT I_FIND_PARENT_RESPONSE
I_LOG_MESSAGE I_CHILDREN I_SKETCH_NAME I_SKETCH_VERSION
I_REBOOT I_STARTUP_COMPLETE };
I_REBOOT I_GATEWAY_READY I_REQUEST_SIGNING I_GET_NONCE I_GET_NONCE_RESPONSE };
sub internalMessageTypeToStr($) {
(internalMessageTypes)[shift];
@ -111,6 +121,7 @@ use constant {
S_MOTION => 1,
S_SMOKE => 2,
S_LIGHT => 3,
S_BINARY => 3,
S_DIMMER => 4,
S_COVER => 5,
S_TEMP => 6,
@ -133,11 +144,23 @@ use constant {
S_CUSTOM => 23,
S_DUST => 24,
S_SCENE_CONTROLLER => 25,
S_RGB_LIGHT => 26,
S_RGBW_LIGHT => 27,
S_COLOR_SENSOR => 28,
S_HVAC => 29,
S_MULTIMETER => 30,
S_SPRINKLER => 31,
S_WATER_LEAK => 32,
S_SOUND => 33,
S_VIBRATION => 34,
S_MOISTURE => 35,
};
use constant sensorTypes => qw{ S_DOOR S_MOTION S_SMOKE S_LIGHT S_DIMMER S_COVER S_TEMP S_HUM S_BARO S_WIND
use constant sensorTypes => qw{ S_DOOR S_MOTION S_SMOKE S_LIGHT S_BINARY 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 };
S_ARDUINO_REPEATER_NODE S_LOCK S_IR S_WATER S_AIR_QUALITY S_CUSTOM S_DUST S_SCENE_CONTROLLER
S_RGB_LIGHT S_RGBW_LIGHT S_COLOR_SENSOR S_HVAC S_MULTIMETER S_SPRINKLER S_WATER_LEAK S_SOUND S_VIBRATION
S_MOISTURE};
sub sensorTypeToStr($) {
(sensorTypes)[shift];
@ -236,4 +259,4 @@ use Exporter ('import');
%EXPORT_TAGS = (all => [@EXPORT_OK]);
1;
1;