private List <BaseVariableState> CreateChild(WeatherMapVariableState variable) { List <BaseVariableState> child = new List <BaseVariableState>(); AnalogData info = new AnalogData(); info = variable.Value.Temperature; AnalogVariableState childTemperatura = (AnalogVariableState)CreateVariableChild(null, "Temperature", "Temperature", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null); variable.AddChild(childTemperatura); child.Add(childTemperatura); //info = null; info = variable.Value.Pressure; AnalogVariableState childPressure = (AnalogVariableState)CreateVariableChild(null, "Pressure", "Pressure", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null); variable.AddChild(childPressure); child.Add(childPressure); // info = null; info = variable.Value.MaxTemperature; AnalogVariableState childMaxTemp = (AnalogVariableState)CreateVariableChild(null, "MaxTemperature", "MaxTemperature", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null); variable.AddChild(childMaxTemp); child.Add(childMaxTemp); info = variable.Value.MinTemperature; AnalogVariableState childMinTemp = (AnalogVariableState)CreateVariableChild(null, "MinTemperature", "MinTemperature", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null); variable.AddChild(childMinTemp); child.Add(childMinTemp); BaseVariableState childCity = CreateVariableChild(null, "City", "City", Opc.Ua.VariableTypeIds.BaseVariableType, Opc.Ua.DataTypeIds.String, ValueRanks.Scalar, null, new String(variable.Value.CityName)); variable.AddChild(childCity); child.Add(childCity); return(child); }
/// Creates a new variable. /// </summary> /// <summary> /// Creates a new variable. /// </summary> /// private BaseVariableState CreateVariableChild(NodeState parent, string path, string name, NodeId typeDefinitionId, NodeId dataType, int valueRank, AnalogData valueAnalog, String cityName) { if (cityName == null) { AnalogVariableState variable = new AnalogVariableState(parent); variable.SymbolicName = name; variable.ReferenceTypeId = ReferenceTypes.Organizes; variable.TypeDefinitionId = typeDefinitionId; variable.NodeId = new NodeId(path, NamespaceIndex); variable.BrowseName = new QualifiedName(path, NamespaceIndex); variable.DisplayName = new LocalizedText("en", name); variable.WriteMask = AttributeWriteMask.DisplayName | AttributeWriteMask.Description; variable.UserWriteMask = AttributeWriteMask.DisplayName | AttributeWriteMask.Description; variable.Description = new String("Information about weather for" + variable.SymbolicName.ToString()); variable.DataType = dataType; variable.ValueRank = valueRank; variable.AccessLevel = AccessLevels.CurrentReadOrWrite; variable.UserAccessLevel = AccessLevels.CurrentRead; variable.Historizing = true; variable.Value = valueAnalog; if (variable.Value != null) { variable.StatusCode = StatusCodes.Good; } else { variable.StatusCode = StatusCodes.Bad; } variable.Timestamp = DateTime.UtcNow; if (valueRank == ValueRanks.OneDimension) { variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> { 0 }); } else if (valueRank == ValueRanks.TwoDimensions) { variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> { 0, 0 }); } if (parent != null) { parent.AddChild(variable); } return(variable); } else { BaseVariableState variable = new BaseDataVariableState <String>(parent); variable.SymbolicName = name; variable.ReferenceTypeId = ReferenceTypes.Organizes; variable.TypeDefinitionId = Opc.Ua.VariableTypeIds.BaseVariableType;; variable.NodeId = new NodeId(path, NamespaceIndex); variable.BrowseName = new QualifiedName(path, NamespaceIndex); variable.DisplayName = new LocalizedText("en", name); variable.WriteMask = AttributeWriteMask.DisplayName | AttributeWriteMask.Description; variable.UserWriteMask = AttributeWriteMask.DisplayName | AttributeWriteMask.Description; variable.Description = new String("Information about weather for" + variable.SymbolicName.ToString()); variable.DataType = dataType; variable.ValueRank = valueRank; variable.AccessLevel = AccessLevels.CurrentReadOrWrite; variable.UserAccessLevel = AccessLevels.CurrentRead; variable.Historizing = true; Console.WriteLine(cityName); variable.Value = cityName.ToString(); if (variable.Value != null) { variable.StatusCode = StatusCodes.Good; } else { variable.StatusCode = StatusCodes.Bad; } variable.Timestamp = DateTime.UtcNow; if (valueRank == ValueRanks.OneDimension) { variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> { 0 }); } else if (valueRank == ValueRanks.TwoDimensions) { variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> { 0, 0 }); } if (parent != null) { parent.AddChild(variable); } return(variable); } }