Exemplo n.º 1
0
        public void ToggleDoorEvent(DoorEventBody body)
        {
            var door = _appSettings.DoorSettings.First(_ => _.Id == body.Door);
            var pin  = door.TriggerPin;

            var state = _pinService.CheckPin(pin);

            if (state != (int)body.State)
            {
                string doorVerb = body.State == DoorState.Open ? "Opening" : "Closing";

                _logger.LogInformation(doorVerb + " Door...");
                _pinService.WritePin(pin, GpioPinValue.High);
                // Sleep for 2 sec
                System.Threading.Thread.Sleep(2000);
                _pinService.WritePin(pin, GpioPinValue.Low);
                _logger.LogInformation("Door has been triggered!");
            }
            else
            {
                string doorStateStr = body.State == DoorState.Open ? "Opened" : "Closed";

                _logger.LogInformation("Door is already " + doorStateStr);
            }
        }
        public async Task PerformCheck()
        {
            try
            {
                var doorSettings = _appSettings.DoorSettings;

                foreach (var door in doorSettings)
                {
                    var pinStatus = _pinCheckerService.CheckPin(door.CloseSensorPin);

                    var state = _doorStateService.GetState(door.Id);

                    if (pinStatus != (int)state)
                    {
                        var newState  = (DoorState)pinStatus;
                        var doorEvent = new DoorEventBody
                        {
                            State = newState,
                            Door  = door.Id
                        };
                        await _doorEventService.PostDoorServer(doorEvent);

                        _doorStateService.SetState(door.Id, newState);
                    }
                    // else - ignore same state
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Exception while performing check");
            }
        }
Exemplo n.º 3
0
        public async Task PostDoorServer(DoorEventBody body)
        {
            using (HttpClient client = new HttpClient())
            {
                try
                {
                    var json = JsonConvert.SerializeObject(body,
                                                           new JsonSerializerSettings
                    {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    });
                    var content = new StringContent(json);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    HttpResponseMessage response = await client.PostAsync(_appSettings.DoorEventURL, content);

                    response.EnsureSuccessStatusCode();
                    string responseBody = await response.Content.ReadAsStringAsync();
                }
                catch (HttpRequestException e)
                {
                    _logger.LogError(e, "Error while post data");
                }
            }
        }