Example #1
0
        private void controller_UpdateNodeParameter(object sender, UpdateNodeParameterEventArgs upargs)
        {
            string path  = "UnknwonParameter";
            object value = upargs.Value;

            //
            switch (upargs.ParameterType)
            {
            case ParameterType.PARAMETER_WATTS:
                path = ModuleParameters.MODPAR_METER_WATTS;
                break;

            case ParameterType.PARAMETER_BATTERY:
                //
                _raisePropertyChanged(new InterfacePropertyChangedAction()
                {
                    Domain = this.Domain, SourceId = upargs.NodeId.ToString(), SourceType = "ZWave Node", Path = "ZWaveNode.Battery", Value = value
                });
                //
                path = ModuleParameters.MODPAR_STATUS_BATTERY;
                break;

            case ParameterType.PARAMETER_NODE_INFO:
                path = "ZWaveNode.NodeInfo";
                break;

            case ParameterType.PARAMETER_GENERIC:
                path = ModuleParameters.MODPAR_SENSOR_GENERIC;
                break;

            case ParameterType.PARAMETER_ALARM_GENERIC:
                path = ModuleParameters.MODPAR_SENSOR_ALARM_GENERIC;
                break;

            case ParameterType.PARAMETER_ALARM_DOORWINDOW:
                path = ModuleParameters.MODPAR_SENSOR_DOORWINDOW;
                break;

            case ParameterType.PARAMETER_ALARM_TAMPERED:
                path = ModuleParameters.MODPAR_SENSOR_TAMPER;
                break;

            case ParameterType.PARAMETER_TEMPERATURE:
                path = ModuleParameters.MODPAR_SENSOR_TEMPERATURE;
                break;

            case ParameterType.PARAMETER_HUMIDITY:
                path = ModuleParameters.MODPAR_SENSOR_HUMIDITY;
                break;

            case ParameterType.PARAMETER_LUMINANCE:
                path = ModuleParameters.MODPAR_SENSOR_LUMINANCE;
                break;

            case ParameterType.PARAMETER_MOTION:
                path = ModuleParameters.MODPAR_SENSOR_MOTIONDETECT;
                break;

            case ParameterType.PARAMETER_ALARM_SMOKE:
                path = ModuleParameters.MODPAR_SENSOR_ALARM_SMOKE;
                break;

            case ParameterType.PARAMETER_ALARM_CARBONMONOXIDE:
                path = ModuleParameters.MODPAR_SENSOR_ALARM_CARBONMONOXIDE;
                break;

            case ParameterType.PARAMETER_ALARM_CARBONDIOXIDE:
                path = ModuleParameters.MODPAR_SENSOR_ALARM_CARBONDIOXIDE;
                break;

            case ParameterType.PARAMETER_ALARM_HEAT:
                path = ModuleParameters.MODPAR_SENSOR_ALARM_HEAT;
                break;

            case ParameterType.PARAMETER_ALARM_FLOOD:
                path = ModuleParameters.MODPAR_SENSOR_ALARM_FLOOD;
                break;

            case ParameterType.PARAMETER_ZWAVE_MANUFACTURER_SPECIFIC:
                ManufacturerSpecific mf = (ManufacturerSpecific)value;
                path = "ZWaveNode.ManufacturerSpecific";
                //value = mf.ManufacturerId + ":" + mf.TypeId + ":" + mf.ProductId;
                break;

            case ParameterType.PARAMETER_CONFIG:
                path = "ZWaveNode.Variables." + upargs.ParameterId;
                break;

            case ParameterType.PARAMETER_ASSOC:
                switch (upargs.ParameterId)
                {
                //                    case 0:
                //                        path = "ZWaveNode.Associations.Group";
                //                        break;
                case 1:
                    path = "ZWaveNode.Associations.Max";
                    break;

                case 2:
                    path = "ZWaveNode.Associations.Count";
                    break;

                case 3:
                    string gid = value.ToString().Split(':')[0];
                    value = value.ToString().Split(':')[1];
                    path  = "ZWaveNode.Associations." + gid;        // TODO: implement generic group/node association instead of fixed one
                    break;
                }
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_BINARY_COUNT:
                path = "ZWaveNode.MultiInstance.SwitchBinary.Count";
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_MULTILEVEL_COUNT:
                path = "ZWaveNode.MultiInstance.SwitchMultiLevel.Count";
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_BINARY_COUNT:
                path = "ZWaveNode.MultiInstance.SensorBinary.Count";
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_MULTILEVEL_COUNT:
                path = "ZWaveNode.MultiInstance.SensorMultiLevel.Count";
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_BINARY:
                path = "ZWaveNode.MultiInstance.SwitchBinary." + upargs.ParameterId;
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_MULTILEVEL:
                path = "ZWaveNode.MultiInstance.SwitchMultiLevel." + upargs.ParameterId;
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_BINARY:
                path = "ZWaveNode.MultiInstance.SensorBinary." + upargs.ParameterId;
                break;

            case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_MULTILEVEL:
                path = "ZWaveNode.MultiInstance.SensorMultiLevel." + upargs.ParameterId;
                break;

            case ParameterType.PARAMETER_WAKEUP_INTERVAL:
                path = "ZWaveNode.WakeUpInterval";
                break;

            case ParameterType.PARAMETER_WAKEUP_NOTIFY:
                path = "ZWaveNode.WakeUpNotify";
                break;

            case ParameterType.PARAMETER_BASIC:
                //
                _raisePropertyChanged(new InterfacePropertyChangedAction()
                {
                    Domain = this.Domain, SourceId = upargs.NodeId.ToString(), SourceType = "ZWave Node", Path = "ZWaveNode.Basic", Value = value
                });
                //
                double normalizedval = (Math.Round((double)value / 99D, 2));
                if (normalizedval > 1.0)
                {
                    normalizedval = 1.0;                          // binary switches have [0/255], while multilevel switches [0-99]
                }
                if (upargs.ParameterId == 0)
                {
                    path = ModuleParameters.MODPAR_STATUS_LEVEL;
                }
                else
                {
                    path = ModuleParameters.MODPAR_STATUS_LEVEL + "." + upargs.ParameterId;
                }
                value = normalizedval.ToString(System.Globalization.CultureInfo.InvariantCulture);

                break;

            default:
                Console.WriteLine("UNHANDLED PARAMETER CHANGE FROM NODE {0} ====> Param Type: {1} Param Id:{2} Value:{3}", upargs.NodeId, upargs.ParameterType, upargs.ParameterId, value);
                break;
            }
            //string type = upargs.ParameterType.ToString ();
            //
            _raisePropertyChanged(new InterfacePropertyChangedAction()
            {
                Domain = this.Domain, SourceId = upargs.NodeId.ToString(), SourceType = "ZWave Node", Path = path, Value = value
            });
        }
Example #2
0
        private void controller_UpdateNodeParameter(object sender, UpdateNodeParameterEventArgs upargs)
        {
            string path = "UnknwonParameter";
            object value = upargs.Value;
            //
            switch (upargs.ParameterType)
            {
                case ParameterType.PARAMETER_WATTS:
                    path = ModuleParameters.MODPAR_METER_WATTS;
                    break;
                case ParameterType.PARAMETER_BATTERY:
                    //
                    RaisePropertyChanged(new InterfacePropertyChangedAction() { Domain = this.Domain, SourceId = upargs.NodeId.ToString(), SourceType = "ZWave Node", Path = "ZWaveNode.Battery", Value = value });
                    //
                    path = ModuleParameters.MODPAR_STATUS_BATTERY;
                    break;
                case ParameterType.PARAMETER_NODE_INFO:
                    path = "ZWaveNode.NodeInfo";
                    break;
                case ParameterType.PARAMETER_GENERIC:
                    path = ModuleParameters.MODPAR_SENSOR_GENERIC;
                    break;
                case ParameterType.PARAMETER_ALARM_GENERIC:
                    path = ModuleParameters.MODPAR_SENSOR_ALARM_GENERIC;
                    break;
                case ParameterType.PARAMETER_ALARM_DOORWINDOW:
                    path = ModuleParameters.MODPAR_SENSOR_DOORWINDOW;
                    break;
                case ParameterType.PARAMETER_ALARM_TAMPERED:
                    path = ModuleParameters.MODPAR_SENSOR_TAMPER;
                    break;
                case ParameterType.PARAMETER_TEMPERATURE:
                    path = ModuleParameters.MODPAR_SENSOR_TEMPERATURE;
                    break;
                case ParameterType.PARAMETER_HUMIDITY:
                    path = ModuleParameters.MODPAR_SENSOR_HUMIDITY;
                    break;
                case ParameterType.PARAMETER_LUMINANCE:
                    path = ModuleParameters.MODPAR_SENSOR_LUMINANCE;
                    break;
                case ParameterType.PARAMETER_MOTION:
                    path = ModuleParameters.MODPAR_SENSOR_MOTIONDETECT;
                    break;
                case ParameterType.PARAMETER_ALARM_SMOKE:
                    path = ModuleParameters.MODPAR_SENSOR_ALARM_SMOKE;
                    break;
                case ParameterType.PARAMETER_ALARM_CARBONMONOXIDE:
                    path = ModuleParameters.MODPAR_SENSOR_ALARM_CARBONMONOXIDE;
                    break;
                case ParameterType.PARAMETER_ALARM_CARBONDIOXIDE:
                    path = ModuleParameters.MODPAR_SENSOR_ALARM_CARBONDIOXIDE;
                    break;
                case ParameterType.PARAMETER_ALARM_HEAT:
                    path = ModuleParameters.MODPAR_SENSOR_ALARM_HEAT;
                    break;
                case ParameterType.PARAMETER_ALARM_FLOOD:
                    path = ModuleParameters.MODPAR_SENSOR_ALARM_FLOOD;
                    break;
                case ParameterType.PARAMETER_ZWAVE_MANUFACTURER_SPECIFIC:
                    ManufacturerSpecific mf = (ManufacturerSpecific)value;
                    path = "ZWaveNode.ManufacturerSpecific";
                    //value = mf.ManufacturerId + ":" + mf.TypeId + ":" + mf.ProductId;
                    break;
                case ParameterType.PARAMETER_CONFIG:
                    path = "ZWaveNode.Variables." + upargs.ParameterId;
                    break;
                case ParameterType.PARAMETER_ASSOC:
                    switch (upargs.ParameterId)
                    {
                        //                    case 0:
                        //                        path = "ZWaveNode.Associations.Group";
                        //                        break;
                        case 1:
                            path = "ZWaveNode.Associations.Max";
                            break;
                        case 2:
                            path = "ZWaveNode.Associations.Count";
                            break;
                        case 3:
                            string gid = value.ToString().Split(':')[0];
                            value = value.ToString().Split(':')[1];
                            path = "ZWaveNode.Associations." + gid; // TODO: implement generic group/node association instead of fixed one
                            break;
                    }
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_BINARY_COUNT:
                    path = "ZWaveNode.MultiInstance.SwitchBinary.Count";
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_MULTILEVEL_COUNT:
                    path = "ZWaveNode.MultiInstance.SwitchMultiLevel.Count";
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_BINARY_COUNT:
                    path = "ZWaveNode.MultiInstance.SensorBinary.Count";
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_MULTILEVEL_COUNT:
                    path = "ZWaveNode.MultiInstance.SensorMultiLevel.Count";
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_BINARY:
                    path = "ZWaveNode.MultiInstance.SwitchBinary." + upargs.ParameterId;
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SWITCH_MULTILEVEL:
                    path = "ZWaveNode.MultiInstance.SwitchMultiLevel." + upargs.ParameterId;
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_BINARY:
                    path = "ZWaveNode.MultiInstance.SensorBinary." + upargs.ParameterId;
                    break;
                case ParameterType.PARAMETER_MULTIINSTANCE_SENSOR_MULTILEVEL:
                    path = "ZWaveNode.MultiInstance.SensorMultiLevel." + upargs.ParameterId;
                    break;
                case ParameterType.PARAMETER_WAKEUP_INTERVAL:
                    path = "ZWaveNode.WakeUpInterval";
                    break;
                case ParameterType.PARAMETER_WAKEUP_NOTIFY:
                    path = "ZWaveNode.WakeUpNotify";
                    break;
                case ParameterType.PARAMETER_BASIC:
                    //
                    RaisePropertyChanged(new InterfacePropertyChangedAction() { Domain = this.Domain, SourceId = upargs.NodeId.ToString(), SourceType = "ZWave Node", Path = "ZWaveNode.Basic", Value = value });
                    //
                    double normalizedval = (Math.Round((double)value / 99D, 2));
                    if (normalizedval > 1.0) normalizedval = 1.0; // binary switches have [0/255], while multilevel switches [0-99]
                    if (upargs.ParameterId == 0)
                    {
                        path = ModuleParameters.MODPAR_STATUS_LEVEL;
                    }
                    else
                    {
                        path = ModuleParameters.MODPAR_STATUS_LEVEL + "." + upargs.ParameterId;
                    }
                    value = normalizedval.ToString(System.Globalization.CultureInfo.InvariantCulture);

                    break;

                case ParameterType.PARAMETER_FAN_MODE:
                    path = "Thermostat.FanMode";
                    break;
                case ParameterType.PARAMETER_FAN_STATE:
                    path = "Thermostat.FanState";
                    break;
                case ParameterType.PARAMETER_THERMOSTAT_HEATING:
                    path = "Thermostat.Heating";
                    break;
                case ParameterType.PARAMETER_THERMOSTAT_MODE:
                    path = "Thermostat.Mode";
                    break;
                case ParameterType.PARAMETER_THERMOSTAT_OPERATING_STATE:
                    path = "Thermostat.OperatingState";
                    break;
                case ParameterType.PARAMETER_THERMOSTAT_SETBACK:
                    path = "Thermostat.SetBack";
                    break;
                case ParameterType.PARAMETER_THERMOSTAT_SETPOINT:
                    path = "Thermostat.SetPoint";
                    break;

                default:
                    Console.WriteLine("UNHANDLED PARAMETER CHANGE FROM NODE {0} ====> Param Type: {1} Param Id:{2} Value:{3}", upargs.NodeId, upargs.ParameterType, upargs.ParameterId, value);
                    break;
            }
            //string type = upargs.ParameterType.ToString ();
            //
            RaisePropertyChanged(new InterfacePropertyChangedAction() { Domain = this.Domain, SourceId = upargs.NodeId.ToString(), SourceType = "ZWave Node", Path = path, Value = value });
        }