/// <summary> /// Called when the SecondaryFunction receives a new value, in order to update which /// of the outputs exist, and which labels they have. /// </summary> private void updateSecondaryOutputProperties(object sender = null, ValueChangedEventArgs evArgs = null) { if (new List <string> { "Min", "Max", "Sum", "Avg", "StdDev" }. Contains(mSecondaryFunction.Value)) { // Add secondary value output; remove secondary index output mOutput2 = mTypeService.CreateDouble(PortTypes.Number, mSecondaryFunction.Value); mOutputIndex = null; } else if (new List <string> { "MinIndex", "MaxIndex" }. Contains(mSecondaryFunction.Value)) { // Remove secondary value output; add secondary index output mOutput2 = null; mOutputIndex = mTypeService.CreateInt(PortTypes.Integer, mSecondaryFunction.Value); } else { // Remove both secondary outputs mOutput2 = null; mOutputIndex = null; } }
public ModbusClientNode(INodeContext context) { context.ThrowIfNull("context"); ITypeService typeService = context.GetService <ITypeService>(); this.TimeSpan = typeService.CreateInt(PortTypes.Integer, "Abfrageinterval", 60); this.ModbusHost = typeService.CreateString(PortTypes.String, "Modbus TCP Host"); this.ModbusPort = typeService.CreateInt(PortTypes.Integer, "Port", 502); this.ModbusID = typeService.CreateInt(PortTypes.Integer, "Geräte ID", 1); this.ModbusID.MinValue = 1; this.ModbusID.MaxValue = 256; // --------------------------------------------------------------------------------------- // this.ModbusAddress1 = typeService.CreateInt(PortTypes.Integer, "Register Addresse", 1); this.ModbusAddress1.MinValue = 1; this.ModbusAddress1.MaxValue = 65535; this.FunctionCode = typeService.CreateEnum("ModbusFunction", "Funktion", FunctionCodeEnum.VALUES, FunctionCodeEnum.FC_03); this.DataType = typeService.CreateEnum("ModbusDataType", "Datentyp", DataTypeEnum.VALUES, DataTypeEnum.INT32); this.RegisterOrder = typeService.CreateEnum("ModbusRegisterOrder", "Register Reihenfolge", ByteOrderEnum.VALUES, ByteOrderEnum.LOW_HIGH); this.OutputValue1 = typeService.CreateDouble(PortTypes.Number, "Register Wert"); this.ErrorMessage = typeService.CreateString(PortTypes.String, "RAW / Error"); SchedulerService = context.GetService <ISchedulerService>(); }
public Write(INodeContext context) : base(context) { context.ThrowIfNull("context"); ITypeService typeService = context.GetService <ITypeService>(); this.InfluxDbHost = typeService.CreateString(PortTypes.String, "Influx DB host"); this.InfluxDbPort = typeService.CreateInt(PortTypes.Integer, "Influx DB Port", 8086); this.InfluxDbName = typeService.CreateString(PortTypes.String, "Influx DB name"); this.InfluxMeasureName = typeService.CreateString(PortTypes.String, "Measure name"); this.InfluxDbMeasureTags = typeService.CreateString(PortTypes.String, "Measure tags"); this.InfluxDbMeasureFieldName1 = typeService.CreateString(PortTypes.String, "Measure field name 1"); this.InfluxDbMeasureFieldValue1 = typeService.CreateDouble(PortTypes.Float, "Measure value 1"); this.InfluxDbMeasureFieldName2 = typeService.CreateString(PortTypes.String, "Measure field name 2"); this.InfluxDbMeasureFieldValue2 = typeService.CreateDouble(PortTypes.Float, "Measure value 2"); this.ErrorCode = typeService.CreateInt(PortTypes.Integer, "HTTP status-code"); this.ErrorMessage = typeService.CreateString(PortTypes.String, "SMTP Benutzer"); }
/// <summary> /// Called when the SecondaryFunction receives a new value, in order to update which /// of the outputs exist, and which labels they have. /// </summary> private void updateIdleValueType(object sender = null, ValueChangedEventArgs evArgs = null) { if (mIdleValueType.HasValue) { if (PortTypes.Bool == mIdleValueType.Value) { mIdleValue = mTypeService.CreateBool(PortTypes.Bool, "IdleValue"); } else if (PortTypes.Integer == mIdleValueType.Value) { mIdleValue = mTypeService.CreateInt(PortTypes.Integer, "IdleValue"); } else if (PortTypes.Number == mIdleValueType.Value) { mIdleValue = mTypeService.CreateDouble(PortTypes.Number, "IdleValue"); } else if (PortTypes.TimeSpan == mIdleValueType.Value) { mIdleValue = mTypeService.CreateTimeSpan(PortTypes.TimeSpan, "IdleValue"); } else if (PortTypes.Time == mIdleValueType.Value) { mIdleValue = mTypeService.CreateTimeSpan(PortTypes.Time, "IdleValue"); } else if (PortTypes.Date == mIdleValueType.Value) { mIdleValue = mTypeService.CreateDateTime(PortTypes.Date, "IdleValue"); } else if (PortTypes.DateTime == mIdleValueType.Value) { mIdleValue = mTypeService.CreateDateTime(PortTypes.DateTime, "IdleValue"); } else if (PortTypes.String == mIdleValueType.Value) { mIdleValue = mTypeService.CreateString(PortTypes.String, "IdleValue"); } else { mIdleValue = null; } } else { mIdleValue = null; } }
public ModbusClientNode(INodeContext context) { context.ThrowIfNull("context"); ITypeService typeService = context.GetService <ITypeService>(); this.ModbusHost = typeService.CreateString(PortTypes.String, "Modbus TCP Server"); this.ModbusPort = typeService.CreateInt(PortTypes.Integer, "Port", 502); this.ModbusAddress = typeService.CreateInt(PortTypes.Integer, "Modbus Addresse"); this.ModbusAddress.MinValue = 0; this.ModbusAddress.MaxValue = 65535; this.ReadCount = typeService.CreateInt(PortTypes.Integer, "Anzahl bytes"); this.ReadCount.MinValue = 1; this.ReadCount.MaxValue = 2; this.OutputValue = typeService.CreateDouble(PortTypes.Float, "Wert"); this.ErrorMessage = typeService.CreateString(PortTypes.String, "Error"); SchedulerService = context.GetService <ISchedulerService>(); }
/// <summary> /// Initializes a new instance of the <see cref="BasicNode"/> class. /// </summary> /// <param name="context">The node context.</param> public Statistics(INodeContext context) : base(context, INPUT_PREFIX) { context.ThrowIfNull("context"); mTypeService = context.GetService <ITypeService>(); // Initialize the input count. mInputCount = mTypeService.CreateInt(PortTypes.Integer, "InputCount", 2); mInputCount.MinValue = 2; mInputCount.MaxValue = 50; // Initialize inputs using a helper function that grows/shrinks the list of inputs // whenever the input count is changed mInputs = new List <DoubleValueObject>(); ListHelpers.ConnectListToCounter(mInputs, mInputCount, mTypeService.GetValueObjectCreator(PortTypes.Number, INPUT_PREFIX), updateOutputValues); // Initialize the selector for the aggregate function that shall be calculated. mSelectedFunction = mTypeService.CreateEnum("ESelectedFunction", "SelectedFunction", mPriAllowedValues, /* defaultValue = */ "Avg"); // Initialize the primary output mOutput1 = mTypeService.CreateDouble(PortTypes.Number, "Output1"); // Initialize the selector for the secondary function (none by default) that shall // be calculated. string[] secAllowedValues = mAddAllowedValues.Concat(mPriAllowedValues).ToArray(); mSecondaryFunction = mTypeService.CreateEnum("ESecondaryFunction", "SecondaryFunction", secAllowedValues, /* defaultValue = */ "none"); // Update output properties now, and whenever the function selections change updatePrimaryOutputProperties(); updateSecondaryOutputProperties(); mSelectedFunction.ValueSet += updatePrimaryOutputProperties; mSecondaryFunction.ValueSet += updateSecondaryOutputProperties; }
public ModbusClientNode(INodeContext context) { context.ThrowIfNull("context"); ITypeService typeService = context.GetService <ITypeService>(); this.TimeSpan = typeService.CreateInt(PortTypes.Integer, "Restart (Sek.)", 60); this.ModbusHost = typeService.CreateString(PortTypes.String, "Modbus TCP Server"); this.ModbusPort = typeService.CreateInt(PortTypes.Integer, "Port", 502); this.ModbusID = typeService.CreateInt(PortTypes.Integer, "Modbus ID", 3); // --------------------------------------------------------------------------------------- // this.ModbusAddress1 = typeService.CreateInt(PortTypes.Integer, "Modbus Addresse", 0); this.ModbusAddress1.MinValue = 0; this.ModbusAddress1.MaxValue = 65535; this.ReadCount1 = typeService.CreateInt(PortTypes.Integer, "Anzahl words", 2); this.ReadCount1.MinValue = 1; this.ReadCount1.MaxValue = 2; this.OutputValue1 = typeService.CreateDouble(PortTypes.Number, "Register Wert"); this.ErrorMessage = typeService.CreateString(PortTypes.String, "RAW / Error"); SchedulerService = context.GetService <ISchedulerService>(); }