예제 #1
0
        private async Task CheckTraffic(CarLocated message)
        {
            _logger.Information($"received a CheckTraffic message{message}");
            JObject trafficCheckedjson = await _googleController.GetCurrentTravelTime(message.Latitude, message.Longitude);

            _logger.Information("Sending TrafficChecked message");
            var currentTrafficTime = (int)trafficCheckedjson["routes"][0]["legs"][0]["duration_in_traffic"]["value"];
            var defaultTrafficTime = (int)trafficCheckedjson["routes"][0]["legs"][0]["duration"]["value"];

            var trafficChecked = new TrafficChecked(currentTrafficTime, defaultTrafficTime);
            var @event         = new Message <TrafficChecked>(trafficChecked);

            _rabbitMQClient.SendMessage(_exchangeName, @event);
            _logger.Information("Message send");
        }
예제 #2
0
        public void Start()
        {
            _logger.Information("Starting app");
            var lastChecked = _currentTime.AddMinutes(-6);

            while (true)
            {
                _checkDelay = GetTimeSpanFromString(_config["CheckDelay"]);
                _logger.Information($"Check every {_checkDelay} minutes");
                if (_currentTime.DayOfWeek != DayOfWeek.Sunday &&
                    _currentTime.DayOfWeek != DayOfWeek.Saturday &&
                    ActiveMorningHours(_currentTime.TimeOfDay) &&
                    lastChecked.AddMinutes(5) < _currentTime)
                {
                    _logger.Information($"Now checking");
                    var message = new Message <StartHomeAutomation>(new StartHomeAutomation());
                    _rabbitMQClient.SendMessage(_exchangeName, message);
                }
                else
                {
                    _logger.Information("No need to check, checking again in 5 minutes");
                }
                Thread.Sleep(_checkDelay);
                _currentTime = DateTime.Now;
            }
        }
예제 #3
0
        private void Handle(WeatherChecked message)
        {
            _logger.Information($"Received a TrafficChecked message{message}");
            Message <HeaterStarted> @event;

            if (message.Temperature < 14 &&
                HeaterRunLastHour())
            {
                AsyncHelper.RunSync(() => _volvoClient.StartHeatherAsync());
                _lastHeatherRun = DateTime.Now;
                _logger.Information($"Heater Started");
                @event = new Message <HeaterStarted>(new HeaterStarted(true, message.Temperature));
            }
            else
            {
                _logger.Information($"No need to start heater: temp = {message.Temperature} last heater start {_lastHeatherRun}");
                @event = new Message <HeaterStarted>(new HeaterStarted(false, message.Temperature));
            }
            _logger.Information("Sending HeaterStarted message");
            _rabbitMQClient.SendMessage(_exchangeName, @event);
            _logger.Information("Message send");
        }