コード例 #1
0
 public TheSensorMeta(TheSensorMeta sensorMeta)
 {
     SourceType    = sensorMeta.SourceType;
     Units         = sensorMeta.Units;
     SourceUnits   = sensorMeta.SourceUnits;
     RangeMin      = sensorMeta.RangeMin;
     RangeMax      = sensorMeta.RangeMax;
     Description   = sensorMeta.Description;
     FriendlyName  = sensorMeta.FriendlyName;
     SemanticTypes = sensorMeta.SemanticTypes;
     if (sensorMeta.ExtensionData != null)
     {
         ExtensionData = new Dictionary <string, object>(sensorMeta.ExtensionData);
     }
 }
コード例 #2
0
        public TheSensorMeta GetSensorMeta()
        {
            var sensorMetaProp = this.GetProperty(strSensor);
            var rangeMinProp   = sensorMetaProp?.GetProperty(nameof(TheSensorMeta.RangeMin));
            var rangeMaxProp   = sensorMetaProp?.GetProperty(nameof(TheSensorMeta.RangeMax));
            var sensorMeta     = new TheSensorMeta
            {
                SourceType    = TheCommonUtils.CStrNullable(sensorMetaProp?.GetProperty(nameof(TheSensorMeta.SourceType))),
                Units         = TheCommonUtils.CStrNullable(sensorMetaProp?.GetProperty(nameof(TheSensorMeta.Units))),
                SourceUnits   = TheCommonUtils.CStrNullable(sensorMetaProp?.GetProperty(nameof(TheSensorMeta.SourceUnits))),
                RangeMin      = rangeMinProp != null ? (double?)TheCommonUtils.CDbl(rangeMinProp) : null,
                RangeMax      = rangeMaxProp != null ? (double?)TheCommonUtils.CDbl(rangeMaxProp) : null,
                Description   = TheCommonUtils.CStrNullable(sensorMetaProp?.GetProperty(nameof(TheSensorMeta.Description))),
                FriendlyName  = TheCommonUtils.CStrNullable(sensorMetaProp?.GetProperty(nameof(TheSensorMeta.FriendlyName))),
                SemanticTypes = TheCommonUtils.CStrNullable(sensorMetaProp?.GetProperty(nameof(TheSensorMeta.SemanticTypes))),
                ExtensionData = ReadDictionaryFromProperties(sensorMetaProp, TheSensorMeta.KnownProperties),
            };

            return(sensorMeta);
        }
コード例 #3
0
        public void SetSensorMeta(TheSensorMeta value)
        {
            var sensorMetaProp = this.GetProperty(strSensor, true);

            if (!string.IsNullOrEmpty(value.SourceType))
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.SourceType), value.SourceType, ePropertyTypes.TString);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.SourceType));
            }
            if (!string.IsNullOrEmpty(value.Units))
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.Units), value.Units, ePropertyTypes.TString);
            }
            else
            {
                sensorMetaProp.RemovePropertiesStartingWith(nameof(TheSensorMeta.Units));
            }
            if (!string.IsNullOrEmpty(value.SourceUnits))
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.SourceUnits), value.SourceUnits, ePropertyTypes.TString);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.SourceUnits));
            }
            if (value.RangeMin.HasValue)
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.RangeMin), value.RangeMin, ePropertyTypes.TNumber);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.RangeMin));
            }
            if (value.RangeMin.HasValue)
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.RangeMax), value.RangeMax, ePropertyTypes.TNumber);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.RangeMax));
            }
            if (!string.IsNullOrEmpty(value.Description))
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.Description), value.Description, ePropertyTypes.TString);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.Description));
            }
            if (!string.IsNullOrEmpty(value.FriendlyName))
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.FriendlyName), value.FriendlyName, ePropertyTypes.TString);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.FriendlyName));
            }
            if (!string.IsNullOrEmpty(value.SemanticTypes))
            {
                sensorMetaProp.SetProperty(nameof(TheSensorMeta.SemanticTypes), value.SemanticTypes, ePropertyTypes.TString);
            }
            else
            {
                sensorMetaProp.RemoveProperty(nameof(TheSensorMeta.SemanticTypes));
            }
            if (value.ExtensionData != null)
            {
                sensorMetaProp.SetProperties(value.ExtensionData, DateTimeOffset.MinValue);
            }

            var ownerThing = this.OwnerThing.GetBaseThing();

            if (ownerThing != null)
            {
                if (!ownerThing.Capabilities.Contains(eThingCaps.SensorContainer))
                {
                    ownerThing.AddCapability(eThingCaps.SensorContainer);
                }
            }
        }