Пример #1
0
        ///<summary>
        /// Retrieves the SensorType field
        /// Comment: Indicates which sensor the calibration is for</summary>
        /// <returns>Returns nullable SensorType enum representing the SensorType field</returns>
        public SensorType?GetSensorType()
        {
            object     obj   = GetFieldValue(0, 0, Fit.SubfieldIndexMainField);
            SensorType?value = obj == null ? (SensorType?)null : (SensorType)obj;

            return(value);
        }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SmartAttribute"/> class.
 /// </summary>
 /// <param name="identifier">The SMART identifier of the attribute.</param>
 /// <param name="name">The name of the attribute.</param>
 /// <param name="rawValueConversion">A delegate for converting the raw byte
 /// array into a value (or null to use the attribute value).</param>
 /// <param name="sensorType">Type of the sensor or null if no sensor is to
 /// be created.</param>
 /// <param name="sensorChannel">If there exists more than one attribute with
 /// the same sensor channel and type, then a sensor is created only for the
 /// first attribute.</param>
 public SmartAttribute(byte identifier, string name,
                       RawValueConversion rawValueConversion, SensorType?sensorType,
                       int sensorChannel)
 {
     this.Identifier         = identifier;
     this.Name               = name;
     this.rawValueConversion = rawValueConversion;
     this.SensorType         = sensorType;
     this.SensorChannel      = sensorChannel;
 }
Пример #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SmartAttribute" /> class.
 /// </summary>
 /// <param name="identifier">The SMART identifier of the attribute.</param>
 /// <param name="name">The name of the attribute.</param>
 /// <param name="rawValueConversion">
 /// A delegate for converting the raw byte
 /// array into a value (or null to use the attribute value).
 /// </param>
 /// <param name="sensorType">
 /// Type of the sensor or null if no sensor is to
 /// be created.
 /// </param>
 /// <param name="sensorChannel">
 /// If there exists more than one attribute with
 /// the same sensor channel and type, then a sensor is created only for the
 /// first attribute.
 /// </param>
 /// <param name="sensorName">
 /// The name to be used for the sensor, or null if
 /// no sensor is created.
 /// </param>
 /// <param name="defaultHiddenSensor">True to hide the sensor initially.</param>
 /// <param name="parameterDescriptions">
 /// Description for the parameters of the sensor
 /// (or null).
 /// </param>
 public SmartAttribute(byte identifier, string name, RawValueConversion rawValueConversion, SensorType?sensorType, int sensorChannel, string sensorName, bool defaultHiddenSensor = false, ParameterDescription[] parameterDescriptions = null)
 {
     Identifier            = identifier;
     Name                  = name;
     _rawValueConversion   = rawValueConversion;
     SensorType            = sensorType;
     SensorChannel         = sensorChannel;
     SensorName            = sensorName;
     DefaultHiddenSensor   = defaultHiddenSensor;
     ParameterDescriptions = parameterDescriptions;
 }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SmartAttribute"/> class.
 /// </summary>
 /// <param name="identifier">The SMART identifier of the attribute.</param>
 /// <param name="name">The name of the attribute.</param>
 /// <param name="rawValueConversion">A delegate for converting the raw byte
 /// array into a value (or null to use the attribute value).</param>
 /// <param name="sensorType">Type of the sensor or null if no sensor is to
 /// be created.</param>
 /// <param name="sensorChannel">If there exists more than one attribute with
 /// the same sensor channel and type, then a sensor is created only for the
 /// first attribute.</param>
 /// <param name="defaultHiddenSensor">True to hide the sensor initially.</param>
 public SmartAttribute(byte identifier, string name,
                       RawValueConversion rawValueConversion, SensorType?sensorType,
                       int sensorChannel, bool defaultHiddenSensor = false)
 {
     this.Identifier          = identifier;
     this.Name                = name;
     this.rawValueConversion  = rawValueConversion;
     this.SensorType          = sensorType;
     this.SensorChannel       = sensorChannel;
     this.DefaultHiddenSensor = defaultHiddenSensor;
 }
Пример #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SmartAttribute"/> class.
 /// </summary>
 /// <param name="identifier">The SMART identifier of the attribute.</param>
 /// <param name="name">The name of the attribute.</param>
 /// <param name="rawValueConversion">A delegate for converting the raw byte
 /// array into a value (or null to use the attribute value).</param>
 /// <param name="sensorType">Type of the sensor or null if no sensor is to
 /// be created.</param>
 /// <param name="sensorChannel">If there exists more than one attribute with
 /// the same sensor channel and type, then a sensor is created only for the
 /// first attribute.</param>
 /// <param name="defaultHiddenSensor">True to hide the sensor initially.</param>
 /// <param name="parameterDescriptions">Description for the parameters of the sensor
 /// (or null).</param>
 public SmartAttribute(byte identifier, string name,
                       RawValueConversion rawValueConversion, SensorType?sensorType,
                       int sensorChannel, bool defaultHiddenSensor,
                       ParameterDescription[] parameterDescriptions)
 {
     this.Identifier            = identifier;
     this.Name                  = name;
     this.rawValueConversion    = rawValueConversion;
     this.SensorType            = sensorType;
     this.SensorChannel         = sensorChannel;
     this.DefaultHiddenSensor   = defaultHiddenSensor;
     this.ParameterDescriptions = parameterDescriptions;
 }
Пример #6
0
        public ApiResult <string> Save(int Value, string SensorId, SensorType?sensorType)
        {
            SensorMeasurement obj = new SensorMeasurement {
                Vrijednost = Value,
                Date       = DateTime.Now,
                SensorId   = SensorId,
                SensorType = sensorType
            };

            _db.SensorMeasurement.Add(obj);
            _db.SaveChanges();

            return(ApiResult <string> .OK(null));
        }
Пример #7
0
        /// <summary>
        /// Gets a formated string from a collection of <see cref="IHardware"/>
        /// </summary>
        /// <param name="ihardware"></param>
        private void RenderHardware(IEnumerable <IHardware> ihardware)
        {
            foreach (var hardware in ihardware)
            {
                hardware.Update();

                if (hardware.HardwareType == HardwareType.HDD)
                {
                    HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, string.Format("col-sm-12 col-md-12 col-lg-6 col-xl-4 hardware_{0}", hardware.HardwareType.ToString().ToLower()));
                    HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);
                }
                else
                {
                    HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "col-sm-12");
                    HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);
                }
                HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "well text-center");
                HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                if (HardwareIcon.ContainsKey(hardware.HardwareType))
                {
                    if (HardwareIcon.ContainsKey(hardware.HardwareType))
                    {
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.H1);
                        HtmlWriter.RenderTag(HtmlTextWriterTag.I, HtmlTextWriterAttribute.Class, HardwareIcon[hardware.HardwareType], string.Empty);
                        HtmlWriter.RenderEndTag();
                    }
                }

                HtmlWriter.RenderTag(HtmlTextWriterTag.H2, hardware.HardwareType.ToString());
                HtmlWriter.RenderTag(HtmlTextWriterTag.H3, hardware.Name);
                HtmlWriter.RenderTag(HtmlTextWriterTag.P, "&nbsp;");

                SensorType?lastSensorType = null;
                HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "row");
                HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);
                foreach (var sensor in hardware.Sensors)
                {
                    if (hardware.Sensors.Length > 3 && lastSensorType.HasValue &&
                        lastSensorType.Value != sensor.SensorType)
                    {
                        HtmlWriter.RenderEndTag(); // </div>
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Div, HtmlTextWriterAttribute.Class, "clearfix", string.Empty);
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "row");
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);
                    }
                    lastSensorType = sensor.SensorType;
                    if (hardware.HardwareType == HardwareType.HDD)
                    {
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "col-sm-6");
                    }
                    else
                    {
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "col-sm-4 col-md-3 col-lg-2");
                    }

                    HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);
                    HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "well");
                    HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                    if (SensorIcon.ContainsKey(sensor.SensorType))
                    {
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.H1);
                        HtmlWriter.RenderTag(HtmlTextWriterTag.I, HtmlTextWriterAttribute.Class, SensorIcon[sensor.SensorType], string.Empty);
                        HtmlWriter.RenderEndTag();
                    }

                    HtmlWriter.Write("{0} {1} = <strong>{2}{3}</strong>",
                                     sensor.Name,
                                     sensor.Name.Contains(sensor.SensorType.ToString()) ? string.Empty : sensor.SensorType.ToString(),
                                     sensor.Value.HasValue ? sensor.Value.Value.ToString("#.##") : "no value",
                                     SensorUnit[sensor.SensorType]);

                    // Print a progress bar for some sensor types.
                    if (sensor.Value.HasValue && (sensor.SensorType == SensorType.Temperature || sensor.SensorType == SensorType.Load || sensor.SensorType == SensorType.Control))
                    {
                        HtmlWriter.RenderTag(HtmlTextWriterTag.P, string.Empty);
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "progress");
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                        string progressbarType;
                        if (sensor.Value >= 80)
                        {
                            progressbarType = "danger";
                        }
                        else if (sensor.Value >= 65)
                        {
                            progressbarType = "warning";
                        }
                        else if (sensor.Value >= 50)
                        {
                            progressbarType = "info";
                        }
                        else
                        {
                            progressbarType = "success";
                        }
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "progress-bar");
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, string.Format("progress-bar-{0}", progressbarType));
                        HtmlWriter.AddAttribute("role", "progressbar");
                        HtmlWriter.AddAttribute("aria-valuenow", ((int)sensor.Value).ToString());
                        HtmlWriter.AddAttribute("aria-valuemin", "0");
                        HtmlWriter.AddAttribute("aria-valuemax", "100");
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Style, string.Format("width:{0}%", (int)sensor.Value));
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                        HtmlWriter.RenderTag(HtmlTextWriterTag.Strong, string.Format("{0}{1}", sensor.Value.Value.ToString("#.##"), SensorUnit[sensor.SensorType]));
                        HtmlWriter.RenderEndTag(); // </div>
                        HtmlWriter.RenderEndTag(); // </div>
                    }

                    HtmlWriter.RenderEndTag(); // </div>
                    HtmlWriter.RenderEndTag(); // </div>
                }

                RenderHardware(hardware.SubHardware);

                if (hardware.HardwareType == HardwareType.HDD && SystemHelper.IsWindows && Managers.HardwareManager.DiskManager.Count > 0)
                {
                    var disk = Managers.HardwareManager.DiskManager[hardware.Name];
                    if (!ReferenceEquals(disk, null))
                    {
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "col-sm-12 text-left");
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Div);

                        // Disk Info
                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, TABLE_CLASS);
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Table);

                        HtmlWriter.RenderTag(HtmlTextWriterTag.Caption, HtmlTextWriterAttribute.Class, "text-center", "<h3>Information</h3>");

                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Thead);
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Tr);

                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Property");
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Value");

                        HtmlWriter.RenderEndTag(); // </tr>
                        HtmlWriter.RenderEndTag(); // </thead>
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Tbody);

                        var props = disk.GetType().GetProperties();
                        foreach (var propertyInfo in props)
                        {
                            if (propertyInfo.Name.Equals("Attributes"))
                            {
                                continue;
                            }
                            HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, propertyInfo.Name);
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, propertyInfo.GetValue(disk).ToString());
                            HtmlWriter.RenderEndTag();
                        }

                        HtmlWriter.RenderEndTag(); // </tbody>
                        HtmlWriter.RenderEndTag(); // </table>


                        // Disk SMART


                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, TABLE_CLASS);
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Table);

                        HtmlWriter.RenderTag(HtmlTextWriterTag.Caption, HtmlTextWriterAttribute.Class, "text-center", "<h3>S.M.A.R.T.</h3>");

                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Thead);
                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Tr);

                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Attribute");
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Current");
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Worst");
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Threshold");
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, "Raw");
                        HtmlWriter.RenderTag(HtmlTextWriterTag.Th, HtmlTextWriterAttribute.Class, "text-center", "Status");

                        HtmlWriter.RenderEndTag(); // </tr>
                        HtmlWriter.RenderEndTag(); // </thead>

                        HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Tbody);

                        foreach (var attribute in disk.Attributes)
                        {
                            if (!attribute.Value.HasData)
                            {
                                continue;
                            }

                            if (!attribute.Value.IsOK)
                            {
                                HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "danger");
                            }
                            else
                            {
                                if (attribute.Value.Threshold > 0 && !attribute.Value.AttributeName.Contains("time"))
                                {
                                    if (attribute.Value.Raw > 0)
                                    {
                                        if (attribute.Value.Raw >= attribute.Value.Threshold)
                                        {
                                            HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "danger");
                                        }
                                        else
                                        {
                                            HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "warning");
                                        }
                                    }
                                }
                                else
                                {
                                    if (attribute.Value.IsCritical && attribute.Value.Raw > 0)
                                    {
                                        HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "warning");
                                    }
                                }
                            }

                            HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, (attribute.Value.IsCritical ? "<span class=\"text-danger\">*</span> " : String.Empty) + attribute.Value.AttributeName);
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, attribute.Value.Current.ToString());
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, attribute.Value.Worst.ToString());
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, attribute.Value.Threshold.ToString());
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Td, attribute.Value.Raw.ToString());

                            HtmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "text-center isok");
                            HtmlWriter.AddAttribute("data-order", Convert.ToByte(attribute.Value.IsOK).ToString());
                            HtmlWriter.RenderBeginTag(HtmlTextWriterTag.Td);
                            HtmlWriter.Write(attribute.Value.IsOK
                                ? "<span class=\"glyphicon glyphicon-ok text-success\"></span>"
                                : "<span class=\"glyphicon glyphicon-remove text-error\"></span>");
                            HtmlWriter.RenderEndTag();

                            HtmlWriter.RenderEndTag();
                        }

                        HtmlWriter.RenderEndTag(); // </tbody>
                        HtmlWriter.RenderEndTag(); // </table>

                        HtmlWriter.RenderTag(HtmlTextWriterTag.P, "<span class=\"text-danger\">*</span> Potential indicators of imminent electromechanical failure.");

                        if (disk.Status.Equals("Pred Fail"))
                        {
                            HtmlWriter.RenderTag(HtmlTextWriterTag.Div, HtmlTextWriterAttribute.Class, "alert alert-danger", "<strong>This drive is failing and/or in bad condition! Consider making a backup of whole disk or your critical data and replace this disk.<br>" +
                                                 "If the health keeps declining you will not be able to recover the disk at some point.</strong>");
                        }

                        HtmlWriter.RenderEndTag(); // </div>
                    }
                }

                HtmlWriter.RenderEndTag(); // </div>
                HtmlWriter.RenderEndTag(); // </div>
                HtmlWriter.RenderEndTag(); // </div>
            }
        }
Пример #8
0
        public void SetSensorType(SensorType? sensorType)
        {
            if (this.sensorType == sensorType) return;
            if (sensorType < 0 || sensorType > Enum.GetValues(typeof(SensorType)).Cast<SensorType>().Max())
            { throw new ArgumentOutOfRangeException("This exception occurs when the serial port does not have time to write the data"); }

            this.sensorType = sensorType;

            switch (sensorType)
            {
                case SerialGateway.SensorType.S_DOOR:
                    AddOrUpdateData(SensorDataType.V_TRIPPED, "0");
                    //AddOrUpdateData(SensorDataType.V_ARMED, "0");
                    break;
                case SerialGateway.SensorType.S_MOTION:
                    break;
                case SerialGateway.SensorType.S_SMOKE:
                    break;
                case SerialGateway.SensorType.S_LIGHT:
                    AddOrUpdateData(SensorDataType.V_STATUS, "0");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SerialGateway.SensorType.S_DIMMER:
                    //AddOrUpdateData(SensorDataType.V_STATUS, "0");
                    AddOrUpdateData(SensorDataType.V_DIMMER, "0");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SerialGateway.SensorType.S_COVER:
                    break;
                case SerialGateway.SensorType.S_TEMP:
                    break;
                case SerialGateway.SensorType.S_HUM:
                    break;
                case SerialGateway.SensorType.S_BARO:
                    break;
                case SerialGateway.SensorType.S_WIND:
                    break;
                case SerialGateway.SensorType.S_RAIN:
                    break;
                case SerialGateway.SensorType.S_UV:
                    break;
                case SerialGateway.SensorType.S_WEIGHT:
                    break;
                case SerialGateway.SensorType.S_POWER:
                    break;
                case SerialGateway.SensorType.S_HEATER:
                    break;
                case SerialGateway.SensorType.S_DISTANCE:
                    break;
                case SerialGateway.SensorType.S_LIGHT_LEVEL:
                    break;
                case SerialGateway.SensorType.S_ARDUINO_NODE:
                    break;
                case SerialGateway.SensorType.S_ARDUINO_REPEATER_NODE:
                    break;
                case SerialGateway.SensorType.S_LOCK:
                    break;
                case SerialGateway.SensorType.S_IR:
                    AddOrUpdateData(SensorDataType.V_IR_SEND, "");
                    break;
                case SerialGateway.SensorType.S_WATER:
                    break;
                case SerialGateway.SensorType.S_AIR_QUALITY:
                    break;
                case SerialGateway.SensorType.S_CUSTOM:
                    break;
                case SerialGateway.SensorType.S_DUST:
                    break;
                case SerialGateway.SensorType.S_SCENE_CONTROLLER:
                    break;
                case SerialGateway.SensorType.S_RGB_LIGHT:
                    AddOrUpdateData(SensorDataType.V_RGB, "000000");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SerialGateway.SensorType.S_RGBW_LIGHT:
                    AddOrUpdateData(SensorDataType.V_RGBW, "00000000");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SerialGateway.SensorType.S_COLOR_SENSOR:
                    break;
                case SerialGateway.SensorType.S_HVAC:
                    break;
                case SerialGateway.SensorType.S_MULTIMETER:
                    break;
                case SerialGateway.SensorType.S_SPRINKLER:
                    break;
                case SerialGateway.SensorType.S_WATER_LEAK:
                    break;
                case SerialGateway.SensorType.S_SOUND:
                    break;
                case SerialGateway.SensorType.S_VIBRATION:
                    break;
                case SerialGateway.SensorType.S_MOISTURE:
                    break;
            }
        }
Пример #9
0
        public static string GetSimpleSensorType(SensorType?sensorType)
        {
            switch (sensorType)
            {
            case SensorType.S_DOOR:
                return("Door");

            case SensorType.S_MOTION:
                return("Motion");

            case SensorType.S_SMOKE:
                return("Smoke");

            case SensorType.S_BINARY:
                return("Binary");

            case SensorType.S_DIMMER:
                return("Dimmer");

            case SensorType.S_COVER:
                return("Cover");

            case SensorType.S_TEMP:
                return("Temp");

            case SensorType.S_HUM:
                return("Humidity");

            case SensorType.S_BARO:
                return("Baro");

            case SensorType.S_WIND:
                return("Wind");

            case SensorType.S_RAIN:
                return("Rain");

            case SensorType.S_UV:
                return("UV");

            case SensorType.S_WEIGHT:
                return("Weight");

            case SensorType.S_POWER:
                return("Power");

            case SensorType.S_HEATER:
                return("Heater");

            case SensorType.S_DISTANCE:
                return("Distance");

            case SensorType.S_LIGHT_LEVEL:
                return("Light Level");

            case SensorType.S_ARDUINO_NODE:
                return("Simple node");

            case SensorType.S_ARDUINO_REPEATER_NODE:
                return("Repeater node");

            case SensorType.S_LOCK:
                return("Lock");

            case SensorType.S_IR:
                return("IR");

            case SensorType.S_WATER:
                return("Water");

            case SensorType.S_AIR_QUALITY:
                return("Air");

            case SensorType.S_CUSTOM:
                return("Custom");

            case SensorType.S_DUST:
                return("Dust");

            case SensorType.S_SCENE_CONTROLLER:
                return("Scene controller");

            case SensorType.S_RGB_LIGHT:
                return("RGB Light");

            case SensorType.S_RGBW_LIGHT:
                return("RGMW Light");

            case SensorType.S_COLOR_SENSOR:
                return("Color");

            case SensorType.S_HVAC:
                return("HRAC");

            case SensorType.S_MULTIMETER:
                return("Multimiter");

            case SensorType.S_SPRINKLER:
                return("Sprinkler");

            case SensorType.S_WATER_LEAK:
                return("Water leak");

            case SensorType.S_SOUND:
                return("Sound");

            case SensorType.S_VIBRATION:
                return("Vibration");

            case SensorType.S_MOISTURE:
                return("Moisture");
            }

            return("Unknown");
        }
Пример #10
0
        public void SetSensorType(SensorType? sensorType)
        {
            if (this.sensorType==sensorType) return;

            this.sensorType = sensorType;

            switch (sensorType)
            {
                case SensorType.S_DOOR:
                    AddOrUpdateData(SensorDataType.V_TRIPPED, "0");
                    //AddOrUpdateData(SensorDataType.V_ARMED, "0");
                    break;
                case SensorType.S_MOTION:
                    break;
                case SensorType.S_SMOKE:
                    break;
                case SensorType.S_LIGHT:
                    AddOrUpdateData(SensorDataType.V_STATUS, "0");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SensorType.S_DIMMER:
                    AddOrUpdateData(SensorDataType.V_STATUS, "0");
                    AddOrUpdateData(SensorDataType.V_DIMMER, "0");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SensorType.S_COVER:
                    break;
                case SensorType.S_TEMP:
                    break;
                case SensorType.S_HUM:
                    break;
                case SensorType.S_BARO:
                    break;
                case SensorType.S_WIND:
                    break;
                case SensorType.S_RAIN:
                    break;
                case SensorType.S_UV:
                    break;
                case SensorType.S_WEIGHT:
                    break;
                case SensorType.S_POWER:
                    break;
                case SensorType.S_HEATER:
                    break;
                case SensorType.S_DISTANCE:
                    break;
                case SensorType.S_LIGHT_LEVEL:
                    break;
                case SensorType.S_ARDUINO_NODE:
                    break;
                case SensorType.S_ARDUINO_REPEATER_NODE:
                    break;
                case SensorType.S_LOCK:
                    break;
                case SensorType.S_IR:
                    AddOrUpdateData(SensorDataType.V_IR_SEND, "");
                    break;
                case SensorType.S_WATER:
                    break;
                case SensorType.S_AIR_QUALITY:
                    break;
                case SensorType.S_CUSTOM:
                    break;
                case SensorType.S_DUST:
                    break;
                case SensorType.S_SCENE_CONTROLLER:
                    break;
                case SensorType.S_RGB_LIGHT:
                    AddOrUpdateData(SensorDataType.V_RGB, "000000");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SensorType.S_RGBW_LIGHT:
                    AddOrUpdateData(SensorDataType.V_RGBW, "00000000");
                    //AddOrUpdateData(SensorDataType.V_WATT, "0");
                    break;
                case SensorType.S_COLOR_SENSOR:
                    break;
                case SensorType.S_HVAC:
                    break;
                case SensorType.S_MULTIMETER:
                    break;
                case SensorType.S_SPRINKLER:
                    break;
                case SensorType.S_WATER_LEAK:
                    break;
                case SensorType.S_SOUND:
                    break;
                case SensorType.S_VIBRATION:
                    break;
                case SensorType.S_MOISTURE:
                    break;
                case null:
                    break;
                default:
                    throw new ArgumentOutOfRangeException(nameof(sensorType), sensorType, null);
            }
        }
Пример #11
0
        protected virtual IWebResponse GetResponse(ref string address, string function)
        {
            switch (function)
            {
            case nameof(XmlFunction.TableData):
            case nameof(XmlFunction.HistoricData):
                return(GetTableResponse(address, function, false));

            case nameof(CommandFunction.Pause):
            case nameof(CommandFunction.PauseObjectFor):
                return(new BasicResponse("<a data-placement=\"bottom\" title=\"Resume\" href=\"#\" onclick=\"var self=this; _Prtg.objectTools.pauseObject.call(this,'1234',1);return false;\"><i class=\"icon-play icon-dark\"></i></a>"));

            case nameof(HtmlFunction.ChannelEdit):
                var components = UrlUtilities.CrackUrl(address);

                if (components["channel"] != "99")
                {
                    return(new ChannelResponse(new ChannelItem()));
                }
                return(new BasicResponse(string.Empty));

            case nameof(CommandFunction.DuplicateObject):
                address = "https://prtg.example.com/public/login.htm?loginurl=/object.htm?id=9999&errormsg=";
                return(new BasicResponse(string.Empty));

            case nameof(HtmlFunction.EditSettings):
                return(new BasicResponse(string.Empty));

            case nameof(JsonFunction.GetStatus):
                return(new ServerStatusResponse(new ServerStatusItem()));

            case nameof(JsonFunction.Triggers):
                return(new TriggerOverviewResponse());

            case nameof(JsonFunction.SensorTypes):
                return(new SensorTypeResponse());

            case nameof(HtmlFunction.ObjectData):
                return(GetObjectDataResponse(address));

            case nameof(XmlFunction.GetObjectProperty):
            case nameof(XmlFunction.GetObjectStatus):
                return(GetRawObjectProperty(address));

            case nameof(CommandFunction.AddSensor2):
                newSensorType = UrlUtilities.CrackUrl(address)["sensortype"].ToEnum <SensorType>();
                address       = "http://prtg.example.com/controls/addsensor3.htm?id=9999&tmpid=2";
                return(new BasicResponse(string.Empty));

            case nameof(HtmlFunction.EditNotification):
                return(new NotificationActionResponse(new NotificationActionItem()));

            case nameof(JsonFunction.GetAddSensorProgress):
                var progress = hitCount[function] % 2 == 0 ? 100 : 50;

                return(new BasicResponse($"{{\"progress\":\"{progress}\",\"targeturl\":\" /addsensor4.htm?id=4251&tmpid=119\"}}"));

            case nameof(HtmlFunction.AddSensor4):
                return(GetSensorTargetResponse());

            case nameof(XmlFunction.GetTreeNodeStats):
                return(new SensorTotalsResponse(new SensorTotalsItem()));

            case nameof(JsonFunction.GeoLocator):
                return(new GeoLocatorResponse());

            case nameof(CommandFunction.AcknowledgeAlarm):
            case nameof(CommandFunction.AddSensor5):
            case nameof(CommandFunction.AddDevice2):
            case nameof(CommandFunction.AddGroup2):
            case nameof(CommandFunction.ClearCache):
            case nameof(CommandFunction.DeleteObject):
            case nameof(HtmlFunction.RemoveSubObject):
            case nameof(CommandFunction.DiscoverNow):
            case nameof(CommandFunction.LoadLookups):
            case nameof(CommandFunction.MoveObjectNow):
            case nameof(CommandFunction.ProbeState):
            case nameof(CommandFunction.RecalcCache):
            case nameof(CommandFunction.Rename):
            case nameof(CommandFunction.RestartServer):
            case nameof(CommandFunction.RestartProbes):
            case nameof(CommandFunction.ReloadFileLists):
            case nameof(CommandFunction.SaveNow):
            case nameof(CommandFunction.ScanNow):
            case nameof(CommandFunction.SetPosition):
            case nameof(CommandFunction.Simulate):
            case nameof(CommandFunction.SortSubObjects):
            case nameof(CommandFunction.SysInfoCheckNow):
                return(new BasicResponse(string.Empty));

            default:
                throw GetUnknownFunctionException(function);
            }
        }
Пример #12
0
        public void SetSensorType(SensorType? sensorType)
        {
            if (this.type == sensorType) return;
            if (sensorType < 0 || sensorType > Enum.GetValues(typeof (SensorType)).Cast<SensorType>().Max())
            {
                Console.WriteLine("This exception occurs when the serial port does not have time to write the data");
                throw new ArgumentOutOfRangeException("This exception occurs when the serial port does not have time to write the data");
            }

            this.type = sensorType;

            switch (sensorType)
            {
                case SensorType.S_DOOR:
                    dataType = SensorDataType.V_TRIPPED;
                    break;
                case SensorType.S_MOTION:
                    dataType = SensorDataType.V_TRIPPED;
                    break;
                case SensorType.S_SMOKE:
                    dataType = SensorDataType.V_TRIPPED;
                    break;
                case SensorType.S_BINARY:
                    dataType = SensorDataType.V_STATUS;
                    break;
                case SensorType.S_DIMMER:
                    dataType = SensorDataType.V_DIMMER;
                    break;
                case SensorType.S_COVER:
                    dataType = SensorDataType.V_PERCENTAGE;
                    break;
                case SensorType.S_TEMP:
                    dataType = SensorDataType.V_TEMP;
                    break;
                case SensorType.S_HUM:
                    dataType = SensorDataType.V_HUM;
                    break;
                case SensorType.S_BARO:
                    dataType = SensorDataType.V_PRESSURE;
                    break;
                case SensorType.S_WIND:
                    dataType = SensorDataType.V_WIND;
                    break;
                case SensorType.S_RAIN:
                    dataType = SensorDataType.V_RAIN;
                    break;
                case SensorType.S_UV:
                    dataType = SensorDataType.V_UV;
                    break;
                case SensorType.S_WEIGHT:
                    dataType = SensorDataType.V_WEIGHT;
                    break;
                case SensorType.S_POWER:
                    dataType = SensorDataType.V_WATT;
                    break;
                case SensorType.S_HEATER:
                    dataType = SensorDataType.V_TEMP;
                    break;
                case SensorType.S_DISTANCE:
                    dataType = SensorDataType.V_DISTANCE;
                    break;
                case SensorType.S_LIGHT_LEVEL:
                    dataType = SensorDataType.V_LIGHT_LEVEL;
                    break;
                case SensorType.S_ARDUINO_NODE:
                    dataType = null;
                    break;
                case SensorType.S_ARDUINO_REPEATER_NODE:
                    dataType = null;
                    break;
                case SensorType.S_LOCK:
                    dataType = SensorDataType.V_LOCK_STATUS;
                    break;
                case SensorType.S_IR:
                    dataType = SensorDataType.V_IR_SEND;
                    break;
                case SensorType.S_WATER:
                    dataType = SensorDataType.V_VOLUME;
                    break;
                case SensorType.S_AIR_QUALITY:
                    dataType = SensorDataType.V_LEVEL;
                    break;
                case SensorType.S_CUSTOM:
                    dataType = null;
                    break;
                case SensorType.S_DUST:
                    dataType = SensorDataType.V_LEVEL;
                    break;
                case SensorType.S_SCENE_CONTROLLER:
                    dataType = SensorDataType.V_SCENE_ON;
                    break;
                case SensorType.S_RGB_LIGHT:
                    dataType = SensorDataType.V_RGB;
                    break;
                case SensorType.S_RGBW_LIGHT:
                    dataType = SensorDataType.V_RGBW;
                    break;
                case SensorType.S_COLOR_SENSOR:
                    dataType = SensorDataType.V_RGB;
                    break;
                case SensorType.S_HVAC:
                    dataType = SensorDataType.V_HVAC_SETPOINT_HEAT;
                    break;
                case SensorType.S_MULTIMETER:
                    dataType = SensorDataType.V_VOLTAGE;
                    break;
                case SensorType.S_SPRINKLER:
                    dataType = SensorDataType.V_STATUS;
                    break;
                case SensorType.S_WATER_LEAK:
                    dataType = SensorDataType.V_TRIPPED;
                    break;
                case SensorType.S_SOUND:
                    dataType = SensorDataType.V_LEVEL;
                    break;
                case SensorType.S_VIBRATION:
                    dataType = SensorDataType.V_LEVEL;
                    break;
                case SensorType.S_MOISTURE:
                    dataType = SensorDataType.V_LEVEL;
                    break;
            }
        }
		/// <summary>
		/// Read the intensity of the reflected light
		/// </summary>
		public int Read()
		{
			int value = 0;
			switch (mode)
			{
			    case (SensorMode)ColorMode.Ambient:
			        value = GetRead();
			        break;
			   	case (SensorMode)ColorMode.Color:
			        value = GetRaw();
			        if(type == null)
			        	type = this.GetSensorType();
			        if(type == SensorType.NXTColor){
			        	NXT.Color nxtColor = (NXT.Color) value;
			        	switch(nxtColor){
			        		case MonoBrick.NXT.Color.Black:
			        			value = (int) Color.Black;
			        			break;
			        		case MonoBrick.NXT.Color.Blue:
			        			value = (int) Color.Blue;
			        			break;
			        		case MonoBrick.NXT.Color.Green:
			        			value = (int) Color.Green;
			        			break;
			        		case MonoBrick.NXT.Color.Red:
			        			value = (int) Color.Red;
			        			break;
			        		case MonoBrick.NXT.Color.White:
			        			value = (int) Color.White;
			        			break;
			        		case MonoBrick.NXT.Color.Yellow:
			        			value = (int) Color.Yellow;
			        			break;
			        	}
			        }
			        break;
			   	case (SensorMode)ColorMode.Reflection:
			        value = GetRead();
			        break;
			   	case (SensorMode)ColorMode.Raw:
			        if(type == null)
			        	type = this.GetSensorType();
			        if(type == SensorType.NXTColor){
			        	if( ((ColorMode)mode) == ColorMode.Raw){
			        		SetMode(SensorMode.Mode5);
			        	}
			        }
			        value = GetRaw();
			        break;
			   	default:
			   		value = GetRaw();
			   		break;
			}
			return value;			
		}
Пример #14
0
 public SmartAttribute(byte identifier, string name,
                       RawValueConversion rawValueConversion, SensorType?sensorType, int sensorChannel) :
     this(identifier, name, rawValueConversion, sensorType, sensorChannel, false, null)
 {
 }
Пример #15
0
 public SmartAttribute(byte identifier, string name,
                       RawValueConversion rawValueConversion, SensorType?sensorType,
                       int sensorChannel, bool defaultHiddenSensor) :
     this(identifier, name, rawValueConversion, sensorType, sensorChannel, defaultHiddenSensor, null)
 {
 }
Пример #16
0
 /// <summary>
 /// Set SensorType field
 /// Comment: Indicates which sensor the calibration is for</summary>
 /// <param name="sensorType_">Nullable field value to be set</param>
 public void SetSensorType(SensorType?sensorType_)
 {
     SetFieldValue(0, 0, sensorType_, Fit.SubfieldIndexMainField);
 }
Пример #17
0
        /// <summary>
        /// Read the intensity of the reflected light
        /// </summary>
        public int Read()
        {
            int value = 0;

            switch (mode)
            {
            case (SensorMode)ColorMode.Ambient:
                value = GetRead();
                break;

            case (SensorMode)ColorMode.Color:
                value = GetRaw();
                if (type == null)
                {
                    type = this.GetSensorType();
                }
                if (type == SensorType.NXTColor)
                {
                    NXT.Color nxtColor = (NXT.Color)value;
                    switch (nxtColor)
                    {
                    case MonoBrick.NXT.Color.Black:
                        value = (int)Color.Black;
                        break;

                    case MonoBrick.NXT.Color.Blue:
                        value = (int)Color.Blue;
                        break;

                    case MonoBrick.NXT.Color.Green:
                        value = (int)Color.Green;
                        break;

                    case MonoBrick.NXT.Color.Red:
                        value = (int)Color.Red;
                        break;

                    case MonoBrick.NXT.Color.White:
                        value = (int)Color.White;
                        break;

                    case MonoBrick.NXT.Color.Yellow:
                        value = (int)Color.Yellow;
                        break;
                    }
                }
                break;

            case (SensorMode)ColorMode.Reflection:
                value = GetRead();
                break;

            case (SensorMode)ColorMode.Raw:
                if (type == null)
                {
                    type = this.GetSensorType();
                }
                if (type == SensorType.NXTColor)
                {
                    if (((ColorMode)mode) == ColorMode.Raw)
                    {
                        SetMode(SensorMode.Mode5);
                    }
                }
                value = GetRaw();
                break;

            default:
                value = GetRaw();
                break;
            }
            return(value);
        }