예제 #1
0
        public string InitIO(string port)
        {
            var initLogString = $"{Utility.PluginName} MainPlugin InitIo started";

            Console.WriteLine(initLogString);
            _logging.Log(initLogString);
            _config = new MainConfig(_logging, _hs, _iniSettings, _callback, this);
            _config.RegisterConfigs();

            _callback.RegisterEventCB(Enums.HSEvent.VALUE_CHANGE, Utility.PluginName, "");

            _logging.Log($"Done creating configs");
            _iniSettings.IniSettingsChanged += _logging.IniSettingHasChanged;
            _homeSeerHandler = new HomeSeerHandler(_hs, _logging);
            _logging.Log($"Done creating HomeSeerHandler");

            _storageHandler = new StorageHandler(_logging, _iniSettings);
            _logging.Log($"Done creating StorageHandler");

            _triggerHandler = new TriggerHandler(_hs, _callback, _iniSettings, _logging, _collectionFactory, _homeSeerHandler, _storageHandler);
            _logging.Log($"Done creating _triggerHandler ");

            //_callback.RegisterEventCB(Enums.HSEvent.CONFIG_CHANGE, Utility.PluginName, "");
            //Register callback on every event of value change. This is the method to find if this is a value of a device we are following

            _logging.Log($"Done registering callback");
            _logging.Log($"{Utility.PluginName} MainPlugin InitIo Complete");
            return("");
        }
예제 #2
0
        public string Build(DataCurveTriggerSettings triggerSettings, IHomeSeerHandler homeSeerHandler = null)
        {
            var sb = new StringBuilder();

            sb.AppendLine("<table>");

            var floorDropDown = CreateFloorDropdown(triggerSettings.FloorChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId);
            var roomDropdown  = CreateRoomDropdown(triggerSettings.RoomChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId);

            if (!_floorsRomsAndDevices.RoomExists(triggerSettings.RoomChosen))
            {
                triggerSettings.RoomChosen = "";
            }
            if (!_floorsRomsAndDevices.FloorExists(triggerSettings.FloorChosen))
            {
                triggerSettings.FloorChosen = "";
            }
            var deviceDropdown = CreateDeviceDropdown(triggerSettings.FloorChosen, triggerSettings.RoomChosen, triggerSettings.DeviceIdChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId);
            var timePicker     = CreateTimePicker(triggerSettings.TimeSpanChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId, Constants.TimeSpanKey);
            var ascendingDescendingDropdown = CreateAscendingDescendingDropdown(triggerSettings.AscendingOrDescending, triggerSettings.UidString, triggerSettings.UniqueControllerId);

            sb.AppendLine($"<tr><td>A data curve of device values for the device {floorDropDown} {roomDropdown}  {deviceDropdown} has had {ascendingDescendingDropdown} curve for the last {timePicker}</td></tr>");
            //Future computation ui
            sb.AppendLine(CreateChoicesForFutureComputation(triggerSettings));
            sb.AppendLine("</table>");
            return(sb.ToString());
        }
예제 #3
0
        public DataCurveTriggerB(IHSApplication hs, ILogging logging, IHsCollectionFactory collectionFactory,
                                 IHomeSeerHandler homeSeerHandler, IReformatCopiedAction reformatCopiedAction = null,
                                 IDataCurveTriggerUi dataCurveUi = null,
                                 IDataCurveComputationHandlerB dataCurveComputationHandler = null)
        {
            _collectionFactory = collectionFactory;
            _logging           = logging;
            _homeSeerHandler   = homeSeerHandler;
            _hs = hs;
            _dataCurveComputationHandler = dataCurveComputationHandler;
            if (reformatCopiedAction == null)
            {
                _reformatCopiedAction = new ReformatCopiedAction(_logging);
            }

            if (dataCurveUi == null)
            {
                _dataCurveUi = new DataCurveTriggerBUi(_homeSeerHandler, _hs);
            }

            if (_dataCurveComputationHandler == null)
            {
                _dataCurveComputationHandler = new ComputationTriggerBHandler(_logging);
            }
        }
예제 #4
0
        public TriggerHandler(IHSApplication hs, IAppCallbackAPI callback, IIniSettings iniSettings,
                              ILogging logging, IHsCollectionFactory collectionFactory, IHomeSeerHandler homeSeerHandler, IStorageHandler storageHandler)
        {
            _hs                = hs;
            _callback          = callback;
            _iniSettings       = iniSettings;
            _logging           = logging;
            _collectionFactory = collectionFactory;
            _homeSeerHandler   = homeSeerHandler;
            _storageHandler    = storageHandler;
            _logging.LogDebug("Creating trigger types");
            _triggerTypes = CreateTriggerTypes();

            _logging.LogDebug("Starting thread to fetch triggers");
            GetPluginTriggersFromHomeSeerInNewThread();

            _logging.LogDebug("Done init TriggerHandler");
        }
        public string Build(DataCurveTriggerBSettings triggerSettings, IHomeSeerHandler homeSeerHandler = null)
        {
            var sb = new StringBuilder();

            sb.AppendLine("<table>");

            var floorDropDown = CreateFloorDropdown(triggerSettings.FloorChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId);
            var roomDropdown  = CreateRoomDropdown(triggerSettings.RoomChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId);

            if (!_floorsRoomsAndDevices.RoomExists(triggerSettings.RoomChosen))
            {
                triggerSettings.RoomChosen = "";
            }
            if (!_floorsRoomsAndDevices.FloorExists(triggerSettings.FloorChosen))
            {
                triggerSettings.FloorChosen = "";
            }
            var deviceDropdown = CreateDeviceDropdown(triggerSettings.FloorChosen, triggerSettings.RoomChosen, triggerSettings.DeviceIdChosen, triggerSettings.UidString, triggerSettings.UniqueControllerId);
            var ascendingDescendingDropdown = CreateAscendingDescendingDropdown(triggerSettings.AscendingOrDescending, triggerSettings.UidString, triggerSettings.UniqueControllerId);

            var thresholdDefaultText = "";

            if (triggerSettings.ThresholdValue.HasValue)
            {
                thresholdDefaultText = triggerSettings.ThresholdValue.Value.ToString(CultureInfo.CreateSpecificCulture("en-US"));
            }

            var thresholdValueTextbox = CreateJqTextBox(Constants.ThresholdValueKey, thresholdDefaultText, triggerSettings, 3);

            var numberOfLastDataPointsText = "";

            if (triggerSettings.NumberOfLastMeasurements.HasValue)
            {
                numberOfLastDataPointsText = triggerSettings.NumberOfLastMeasurements.Value.ToString(CultureInfo.CreateSpecificCulture("en-US"));
            }

            var numberOfMeasurementsTextBox = CreateJqTextBox(Constants.NumberOfLastMeasurementsKey, numberOfLastDataPointsText, triggerSettings, 3);

            sb.AppendLine($"<tr><td>The threshold value of {thresholdValueTextbox } has been reached for the device {floorDropDown} {roomDropdown}  {deviceDropdown} and it has had {ascendingDescendingDropdown} curve for the {numberOfMeasurementsTextBox} last measurements</td></tr>");
            sb.AppendLine("</table>");
            return(sb.ToString());
        }
예제 #6
0
 public DataCurveTriggerUi(IHomeSeerHandler homeSeerHandler, IHSApplication hs)
 {
     _homeSeerHandler = homeSeerHandler;
     _hs = hs;
     PopulateWithHomeSeerData();
 }
예제 #7
0
        public static ITrigger Get(IHSApplication hs, string triggerType, ILogging logging, ITriggerHandler triggerHandler, IAppCallbackAPI callback, IHsCollectionFactory collectionFactory, IHomeSeerHandler homeSeerHandler)
        {
            switch (triggerType)
            {
            case "DataCurveSeer.TriggerHandling.Triggers.DataCurveTrigger":
                return(new DataCurveTrigger(hs, logging, collectionFactory, homeSeerHandler));

            case "DataCurveSeer.TriggerHandling.Triggers.DataCurveTriggerB.DataCurveTriggerB":
                return(new DataCurveTrigger(hs, logging, collectionFactory, homeSeerHandler));

            default:
                logging.Log($"Could not find any match for {triggerType}. Alert the creator and tell him to check for errors.");
                break;
            }

            return(null);
        }