示例#1
0
        public void Update(IDeviceState state, bool fromDatabase = false)
        {
            //TODO: update more properties?

            if (!fromDatabase)
            {
                if (Name == null && state.Name != null)
                {
                    Name = state.Name;
                }

                if ((Type == null || Type.Equals(DeviceType.Unknown)) && state.Type != null)
                {
                    Type = state.Type;
                }
            }

            Location = (state.Location == null) ? null : new Location(state.Location.GetParts());

            IsConnected   = state.IsConnected;
            CurrentAction = state.CurrentAction;

            BinarySwitch.Update(state.BinarySwitchState ?? ReadOnlyBinarySwitchSwitchState.Blank());
            MultilevelSwitch.Update(state.MultilevelSwitchState ?? ReadOnlyMultilevelSwitchState.Blank());
            ColorSwitch.Update(state.ColorSwitchState ?? ReadOnlyColorSwitchState.Blank());
            BinarySensor.Update(state.BinarySensorState ?? ReadOnlyBinarySensorState.Blank());
            PowerSensor.Update(state.PowerSensorState ?? ReadOnlyMultilevelSensorState <IPower> .Blank());
            TemperatureSensor.Update(state.TemperatureSensorState ?? ReadOnlyMultilevelSensorState <ITemperature> .Blank());
            HumiditySensor.Update(state.HumiditySensorState ?? ReadOnlyMultilevelSensorState <IHumidity> .Blank());
            IlluminanceSensor.Update(state.IlluminanceSensorState ?? ReadOnlyMultilevelSensorState <IIlluminance> .Blank());
            Thermostat.Update(state.ThermostatState ?? ReadOnlyThermostatState.Blank());
        }
                /// <summary>
                /// Add a new binary sensor
                /// </summary>
                public IBinarySensor AddNewBinarySensor()
                {
                    var item = new BinarySensor();

                    Add(item);
                    return(item);
                }
示例#3
0
    /// <summary>
    /// Identifies the class/type of the device and returns it.
    /// </summary>
    /// <param name="plantTag">Plant tag</param>
    /// <param name="module">Name of the module in plant</param>
    /// <param name="istIds">Mapping of opc ua node id's</param>
    /// <returns></returns>
    public Device Validator(string plantTag, string module, IstOPCUANodeIds istIds)
    {
        Device local;

        switch (plantTag[0].ToString())
        {
        case "P":
            switch (plantTag)
            {
            case "PIC":
                local = new Device(plantTag);
                break;

            case "PROP_V":
                local = new Device(plantTag);
                break;

            default:
                local = new Pump(plantTag);
                break;
            }
            break;

        case "V":
            // Valve modeld in opc ua
            if (istIds.TagToNodeId[module].ContainsKey(plantTag))
            {
                // RelayValve
                if (istIds.TagToNodeId[module][plantTag].Core.Contains("#"))
                {
                    local = new RelayValve(plantTag);
                }
                else                     // Normal valve
                {
                    local = new Valve(plantTag);
                }
            }
            else                 // only modeld in Linked Data
                                 // Handventil. Achtung codedopplung.
            {
                local = new HandValve(plantTag);
            }
            break;

        case "F":
            // TODO: Fix device typ
            local = new Device(plantTag);
            break;

        case "L":
            // TODO: NIcht eindeutig ob binär oder linear
            local = new BinarySensor(plantTag);
            break;

        case "R":
            local = new Mixer(plantTag);
            break;

        case "T":
            local = new TemperatureSensor(plantTag);
            break;

        case "B":
            local = new Tank(plantTag);
            break;

        case "W":
            // Spechial case: WT
            if (plantTag [1].ToString() == "T")
            {
                local = new DeviceGUI(plantTag);
            }
            else
            {
                local = new Device(plantTag);
            }
            break;

        default:
            local = new Device(plantTag);
            break;
        }
        return(local);
    }