Пример #1
0
 internal void StartIceAge(TemperatureEvent evt, int cooldown)
 {
     if (!onCd)
     {
         StartTemperatureEvent(WorldTempChangeType.ICE_AGE, evt, cooldown);
     }
 }
Пример #2
0
 public WorldTemp(float normalTemp, MapGenerator gen)
 {
     NormalTemp          = normalTemp;
     tempEvent           = new TemperatureEvent();
     m_gen               = gen;
     gen.IterationEvent += OnIteration;
 }
Пример #3
0
        public List <TemperatureEvent> AnalyseNewData(RoadAndAirTempData data)
        {
            List <TemperatureEvent> events = new List <TemperatureEvent>();

            events.AddRange(CheckExtreme(data, DataInfluenced.RoadTemperature));
            events.AddRange(CheckExtreme(data, DataInfluenced.AirTemperature));

            if (LasKnownValues.ContainsKey(data.StationName))
            {
                Temperatures temps = LasKnownValues[data.StationName];

                TemperatureEvent Event = CheckSudden(data, DataInfluenced.RoadTemperature, temps.RoadTemp);
                if (Event != null)
                {
                    events.Add(Event);
                }

                Event = CheckSudden(data, DataInfluenced.AirTemperature, temps.AirTemp);
                if (Event != null)
                {
                    events.Add(Event);
                }
            }

            if (LasKnownValues.ContainsKey(data.StationName))
            {
                LasKnownValues[data.StationName] = new Temperatures(data.RoadTemperature, data.AirTemperature);
            }
            else
            {
                LasKnownValues.Add(data.StationName, new Temperatures(data.RoadTemperature, data.AirTemperature));
            }

            return(events);
        }
    private TemperatureEventSlider InstantiateEventSliders(TemperatureEvent e)
    {
        TemperatureEventSlider slider = Instantiate(eventSlider);

        slider.transform.SetParent(eventSlidersParent, false);
        slider.transform.SetAsFirstSibling();
        slider.Init(e.temperatureTrigger, temperature.StartingTemperature, temperature.MaxTemperature);
        return(slider);
    }
Пример #5
0
        public void InsertData(TemperatureEvent temperatureEvent)
        {
            string command = "insert into " + _unitOfWork.EventTable + " (\"DataInfluenced\", \"EventType\", \"Value\", \"Latitude\", \"Longitude\", \"Timestamp\", \"StationName\")"
                             + "values ('" + temperatureEvent.DataInfluenced.ToString() + "', '" + temperatureEvent.EventType.ToString() + "', " + temperatureEvent.Value + ", "
                             + temperatureEvent.Latitude + ", " + temperatureEvent.Longitude + ", '" + ConvertDateToString(temperatureEvent.Timestamp)
                             + "', '" + temperatureEvent.StationName + "');";

            _unitOfWork.CassandraSession.Execute(command);
        }
Пример #6
0
        public async Task <ActionResult> AddEvent([FromBody] SiddhiDTO Event)
        {
            TemperatureEvent temp = new TemperatureEvent(Event.Event);

            Console.WriteLine("Received siddhi");
            await _notifyService.NotifyClient(temp);

            return(Ok());
        }
Пример #7
0
        public async Task NotifyClient(TemperatureEvent Event)
        {
            string       command      = "";
            EventCommand eventCommand = new EventCommand();

            eventCommand.TemperatureEvent = Event;
            eventCommand.ActuationCommand = new ActuationCommand();

            if (Event.EventType == EventType.TempDropAlert || Event.EventType == EventType.TempRiseAlert)
            {
                string loc  = _unitOfWork.LocationParam + "='" + (Event.DataInfluenced == DataInfluenced.RoadTemperature ? "road" : "air") + "'";
                string type = _unitOfWork.EventParam + "='" + (Event.EventType == EventType.TempRiseAlert ? "sudden temperature rise" : "sudden temperature fall") + "'";
                command = _unitOfWork.DiagnosticsEndpoint + "?" + loc + "&" + type;
                eventCommand.ActuationCommand.Command = _unitOfWork.DiagnosticsEndpoint;
                eventCommand.ActuationCommand.AdditionalArguments.Add(loc);
                eventCommand.ActuationCommand.AdditionalArguments.Add(type);
            }
            else if (Event.DataInfluenced == DataInfluenced.AirTemperature)
            {
                if (Event.EventType == EventType.TempNormalized)
                {
                    command = _unitOfWork.TempNormalizationEndpoint;
                    eventCommand.ActuationCommand.Command = _unitOfWork.TempNormalizationEndpoint;
                }
                else if (Event.EventType == EventType.ColdAlert)
                {
                    string temp = _unitOfWork.TempParam + "=" + (20 - Event.Value);
                    command = _unitOfWork.HeatingEndpoint + "?" + temp;
                    eventCommand.ActuationCommand.Command = _unitOfWork.HeatingEndpoint;
                    eventCommand.ActuationCommand.AdditionalArguments.Add(temp);
                }
                else if (Event.EventType == EventType.HotAlert)
                {
                    string temp = _unitOfWork.TempParam + "=" + ((70 - Event.Value) / 2f);
                    command = _unitOfWork.CoolingEndpoint + "?" + temp;
                    eventCommand.ActuationCommand.Command = _unitOfWork.CoolingEndpoint;
                    eventCommand.ActuationCommand.AdditionalArguments.Add(temp);
                }
            }
            else
            {
                string psi = _unitOfWork.PressureParam + "=" + (Event.EventType == EventType.ColdAlert ? 40 : Event.EventType == EventType.HotAlert ? 32 : 36);
                command = _unitOfWork.TirePressureEndpoint + "?" + psi;
                eventCommand.ActuationCommand.Command = _unitOfWork.TirePressureEndpoint;
                eventCommand.ActuationCommand.AdditionalArguments.Add(psi);
            }

            string clientLoc = _unitOfWork.GetClientLocation(Event.StationName);

            if (clientLoc is not null)
            {
                await sendCommand(clientLoc + command);
            }
            _cassandraService.InsertData(eventCommand);
            _messageService.Enqueue(eventCommand);
        }
Пример #8
0
        public void EnqueueOutput(TemperatureEvent data)
        {
            string body = JsonSerializer.Serialize(data);

            _unitOfWork.RabbitMQOutputChannel.BasicPublish(exchange: "",
                                                           routingKey: _unitOfWork.RabbitMQOutputQueue,
                                                           mandatory: true,
                                                           basicProperties: null,
                                                           body: Encoding.UTF8.GetBytes(body));
        }
Пример #9
0
    public void StartTemperatureEvent(WorldTempChangeType type, TemperatureEvent evt, int cooldown)
    {
        changeType = type;
        tempEvent  = evt;

        if (cooldown > 0)
        {
            cdDuration = cooldown;
            onCd       = true;
        }

        Debug.Log("starting");
    }
Пример #10
0
        public void Consume()
        {
            var Consumer = new EventingBasicConsumer(_unitOfWork.RabbitMQChannel);

            Consumer.Received += (model, ea) =>
            {
                var body              = ea.Body;
                var message           = Encoding.UTF8.GetString(body.ToArray());
                TemperatureEvent data = (TemperatureEvent)JsonSerializer.Deserialize(message, typeof(TemperatureEvent));
                _notifyService.NotifyClient(data);
            };
            _unitOfWork.RabbitMQChannel.BasicConsume(queue: _unitOfWork.RabbitMQQueue,
                                                     autoAck: true,
                                                     consumer: Consumer);
        }
Пример #11
0
        private async void BroadcastTelemetry(object sender, object args)
        {
            double           temp = tempVals.Average();
            TemperatureEvent te   = new TemperatureEvent();

            te.Location       = this.Location;
            te.DeviceId       = this.DeviceId;
            te.Temperature    = (float)temp;
            te.CollectionTime = DateTime.UtcNow;
            var text = te.ToString();
            var msg  = new Message(Encoding.UTF8.GetBytes(text));

            try
            {
                await deviceClient.SendEventAsync(msg);
            }
            catch (Exception e) { }
        }
Пример #12
0
        static void Main(string[] args)
        {
            var controller = new HeatingController();

            using (var termo = new Termometer(PollInterval))
            {
                var onEvent  = new TemperatureEvent(termo, 3, 15, false);
                var offEvent = new TemperatureEvent(termo, 3, 15, true);

                var strategy = new HeatingStrategy(controller, onEvent, offEvent);
                //strategy.Start();

                termo.Start();

                //strategy.Stop();
                Console.ReadKey();
            }

            Console.WriteLine("Press any key..");
            Console.ReadKey();
        }