Exemplo n.º 1
0
        public override bool Init()
        {
            if (mIsInitCalled)
            {
                return(false);
            }
            mIsInitCalled = true;

            MyBaseThing.LastMessage = "Device Ready";
            MyBaseThing.StatusLevel = 0;
            IsConnected             = false;

            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(MyBaseThing.Address), cdeT = ePropertyTypes.TString, Required = true, Description = "", Generalize = true
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(MyBaseThing.FriendlyName), cdeT = ePropertyTypes.TString, Description = ""
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(Interval), cdeT = ePropertyTypes.TNumber, DefaultValue = 1000, RangeMin = 100, Description = "Time interval at which to poll the sensor for values"
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(CustomPort), cdeT = ePropertyTypes.TNumber, DefaultValue = 502, Description = ""
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(SlaveAddress), cdeT = ePropertyTypes.TNumber, DefaultValue = 1, Description = ""
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(AutoConnect), cdeT = ePropertyTypes.TBoolean, DefaultValue = false, Description = ""
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(KeepOpen), cdeT = ePropertyTypes.TBoolean, DefaultValue = true, Description = ""
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(Offset), cdeT = ePropertyTypes.TNumber, Description = ""
            });
            MyBaseThing.DeclareConfigProperty(new TheThing.TheConfigurationProperty {
                Name = nameof(ConnectionType), cdeT = ePropertyTypes.TNumber, DefaultValue = 3, Description = "Read Coils:1, Read Input:2, Holding Registers:3, Input Register:4, Read Multiple Register:23"
            });

            MyModFieldStore                          = new TheStorageMirror <FieldMapping>(TheCDEngines.MyIStorageService);
            MyModFieldStore.IsRAMStore               = true;
            MyModFieldStore.IsCachePersistent        = true;
            MyModFieldStore.IsStoreIntervalInSeconds = true;
            if (string.IsNullOrEmpty(MyBaseThing.ID))
            {
                MyBaseThing.ID = Guid.NewGuid().ToString();
                if (MyDevice != null && !string.IsNullOrEmpty(MyDevice.Id))
                {
                    MyBaseThing.ID = MyDevice.Id;
                }
                if (GetProperty("CustomPort", false) == null)
                {
                    TheThing.SetSafePropertyNumber(MyBaseThing, "CustomPort", 502);
                }
                if (GetProperty("SlaveAddress", false) == null)
                {
                    TheThing.SetSafePropertyNumber(MyBaseThing, "SlaveAddress", 1);
                }
                Interval = 1000;
            }
            MyModFieldStore.CacheTableName = $"MBFLDS{MyBaseThing.ID}";
            MyModFieldStore.RegisterEvent(eStoreEvents.StoreReady, sinkStoreReady);
            MyModFieldStore.RegisterEvent(eStoreEvents.UpdateRequested, sinkUpdated);
            MyModFieldStore.RegisterEvent(eStoreEvents.Inserted, sinkUpdated);
            MyModFieldStore.InitializeStore(true, false);
            return(false);
        }