public async Task Handle(WindowCoverStateModel message)
        {
            if (DateTime.Now - programStartedInformation.DateTime > TimeSpan.FromSeconds(15))
            {
                logger.LogInformation("Got message {message}", message.State);

                restClient.BaseUrl = new Uri(windowCoverConfiguration.Hostname);
                var request = new RestRequest(windowCoverConfiguration.Resource);

                int?levelToSet = message.State switch
                {
                    "open" => 0,
                    "close" => 100,
                    "stop" => null,
                    _ => throw new ArgumentException("Invalid level")
                };

                if (levelToSet.HasValue)
                {
                    request.AddParameter("level", levelToSet.Value);

                    var response = await restClient.ExecuteTaskAsync(request);

                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        logger.LogWarning("Invalid response code for request");
                    }

                    var level = 100 - levelToSet.Value;
                    logger.LogInformation("Sending to MQTT: {level}", level);
                    await mqttManager.Publish <WindowCoverPositionTopic>(c => level.ToString());
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Adds a vehicle to the total count of vehicles on top of the deck
 /// </summary>
 public void AddVehicleToDeck()
 {
     if (TotalVehiclesOnDeck == 0)
     {
         MqttManager.Publish("vessel/0/sensor/3", "1");
     }
     TotalVehiclesOnDeck++;
 }
        public async Task Execute(CoverLevelChangedModel model)
        {
            var level = 100 - model.Level;

            logger.LogInformation("Received cover level from Rabbit - sending to MQTT: {level}", level);
            await mqttManager.Publish <WindowCoverPositionTopic>(c => level.ToString());
        }
    /// <summary>
    /// Broadcasts that a sensor is pressed or unpressed
    /// </summary>
    /// <param name="pathName"></param>
    /// <param name="sensor_id"></param>
    /// <param name="sensorstatus"></param>
    public void UpdateSensor(string pathName, int sensor_id, SensorStatus sensorStatus)
    {
        var sensor = sensors.Find(a => a.Name == pathName.ToLower() + "/sensor/" + sensor_id);

        if (sensor != null)
        {
            if (sensor.Status != sensorStatus)
            {
                sensor.Status = sensorStatus;
                mqttManager.Publish(pathName.ToLower() + "/sensor/" + sensor_id, ((int)sensor.Status).ToString());
            }
        }
        else
        {
            mqttManager.Publish(pathName.ToLower() + "/sensor/" + sensor_id, ((int)sensorStatus).ToString());
        }
    }
Exemplo n.º 5
0
        public async Task Execute(TriggeredUpperStairSensorModel model)
        {
            _logger.LogInformation("Triggered upper stairs sensor at {time}", model.DateTime);
            await _mqttManager.Publish <UpperMotionDetectorTopic>(c => c.ON);

            var differenceBetweenSensorsTime = DateTime.Now - _lastTimeBottomSensorDetected;

            if (differenceBetweenSensorsTime >= TimeSpan.FromSeconds(3) &&
                differenceBetweenSensorsTime <= TimeSpan.FromSeconds(30))
            {
                _logger.LogInformation("Sending set_going_up on MQTT");
                _lastTimeBottomSensorDetected = DateTime.MinValue;
                await _mqttManager.Publish <SetGoingUpTopic>(c => c.ON);
            }

            _lastTimeUpperSensorDetected = model.DateTime;

            await Task.Delay(5000);

            await _mqttManager.Publish <UpperMotionDetectorTopic>(c => c.OFF);

            await _mqttManager.Publish <SetGoingUpTopic>(c => c.OFF);
        }
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            _programStartedInformation.DateTime = DateTime.Now;

            await _mqttManager.ConnectAsync();

            await _mqttManager.Publish <WindowCoverPositionTopic>(c => "100");

            await _mqttManager.AddHandler <MinLevelModel>();

            await _mqttManager.AddHandler <MaxLevelModel>();

            await _mqttManager.AddHandler <WindowCoverStateModel>();

            await _mqttManager.AddHandler <WindowCoverSetPositionModel>();

            _rabbitManager
            .Connect()
            .AddHandler <TriggeredUpperStairSensorModel>()
            .AddHandler <TriggeredBottomStairSensorModel>()
            .AddHandler <CoverLevelChangedModel>();
        }
Exemplo n.º 7
0
    // Update is called once per frame
    private void Update()
    {
        // Used for testing only
        if (Input.GetKeyDown(KeyCode.Backspace))
        {
            if (!BackspacePressed)
            {
                MqttManager.Publish("track/0/warning_light/0", "1");
                MqttManager.Publish("vessel/0/warning_light/0", "1");

                MqttManager.Publish("vessel/0/boat_light/0", "1");
                MqttManager.Publish("vessel/0/boat_light/1", "1");

                MqttManager.Publish("vessel/0/barrier/0", "1");
                MqttManager.Publish("track/0/barrier/0", "1");

                MqttManager.Publish("vessel/0/deck/0", "1");
            }
            else
            {
                MqttManager.Publish("track/0/warning_light/0", "0");
                MqttManager.Publish("vessel/0/warning_light/0", "0");

                MqttManager.Publish("vessel/0/boat_light/0", "0");
                MqttManager.Publish("vessel/0/boat_light/1", "0");

                MqttManager.Publish("vessel/0/barrier/0", "0");
                MqttManager.Publish("track/0/barrier/0", "0");

                MqttManager.Publish("vessel/0/deck/0", "0");
            }
            BackspacePressed = !BackspacePressed;
        }
        if (Input.GetKeyDown("space"))
        {
            TrafficSpawnManager.SpawnRandom();
        }
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            MqttManager.Publish("motorised/0/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            MqttManager.Publish("motorised/1/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            MqttManager.Publish("motorised/2/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            MqttManager.Publish("motorised/3/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            MqttManager.Publish("motorised/4/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha5))
        {
            MqttManager.Publish("motorised/5/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha6))
        {
            MqttManager.Publish("motorised/6/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha7))
        {
            MqttManager.Publish("motorised/7/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha8))
        {
            MqttManager.Publish("motorised/8/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha9))
        {
            MqttManager.Publish("vessel/0/null/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            MqttManager.Publish("vessel/1/null/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Backspace))
        {
            MqttManager.Publish("cycle/0/traffic_light/0", "2");
            MqttManager.Publish("cycle/1/traffic_light/0", "2");
            MqttManager.Publish("cycle/2/traffic_light/0", "2");
            MqttManager.Publish("cycle/3/traffic_light/0", "2");
            MqttManager.Publish("cycle/4/traffic_light/0", "2");

            MqttManager.Publish("foot/0/traffic_light/0", "2");
            MqttManager.Publish("foot/1/traffic_light/0", "2");
            MqttManager.Publish("foot/2/traffic_light/0", "2");
            MqttManager.Publish("foot/3/traffic_light/0", "2");
            MqttManager.Publish("foot/4/traffic_light/0", "2");
            MqttManager.Publish("foot/5/traffic_light/0", "2");
            MqttManager.Publish("foot/6/traffic_light/0", "2");
        }
        if (Input.GetKeyDown(KeyCode.Comma))
        {
            MqttManager.Publish("track/0/train_light/0", "1");
            MqttManager.Publish("track/0/train_light/1", "1");
        }
    }