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()); } } }
/// <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()); } }
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>(); }
// 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"); } }