public List <PlantData> Get() { var db = new SmartHomeServiceContext(); var data = db.PlantDatas.OrderBy(b => b.Id).ToList(); return(data); }
public PlantData Get(int id) { var db = new SmartHomeServiceContext(); PlantData data = db.PlantDatas.FirstOrDefault(e => e.Id == id); data.SensorDataHistory = db.SensorDatas.Where(e => e.SensorId == data.SensorId).ToList(); return(data); }
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation($"Loaded"); try { var advancedBus = RabbitHutch.CreateBus("host=<ipadress>:5672;virtualHost=/;username=home;password=<password>").Advanced; //_bus.PubSub.Subscribe<int>("Sensor1", HandleTextMessage); var queue = advancedBus.QueueDeclare("Sensor1"); var exchange = advancedBus.ExchangeDeclare("amq.topic", ExchangeType.Topic); var binding = advancedBus.Bind(exchange, queue, "#"); advancedBus.Consume(queue, (body, properties, info) => Task.Factory.StartNew(() => { var message = Encoding.UTF8.GetString(body).Split(","); var db = new SmartHomeServiceContext(); var data = new SensorData(); data.SoilMoistPercentage = Convert.ToInt32(message[0]); data.Timestamp = DateTime.Now; data.SensorId = Convert.ToInt32(message[1]); data.AirMoist = Convert.ToDecimal(message[4]); data.AirTemp = Convert.ToDecimal(message[2]); data.AirPressure = Convert.ToDecimal(message[3]); db.Add(data); db.SaveChanges(); Console.WriteLine("Got message: '{0}'", message); using (Webhook dcWeb = new Webhook()) { dcWeb.ProfilePicture = "https://i.ibb.co/GRGPWwV/DSC2453.jpg"; dcWeb.UserName = "******"; dcWeb.WebHook = "<apiwebhook>"; dcWeb.SendMessage(data); dcWeb.Dispose(); } })); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(Task.CompletedTask); }
public void SendMessage(SensorData msgSend) { SmartHomeServiceContext context = new SmartHomeServiceContext(); var plantdata = context.PlantDatas.FirstOrDefault(e => e.SensorId == msgSend.SensorId); discordValues = new NameValueCollection(); if (plantdata.TargetMoisture > msgSend.SoilMoistPercentage) { string message = $"Achtung! Bitte Gießen {plantdata.PlantName} im {plantdata.Room}! Bodenfeuchtigkeit ist {msgSend.SoilMoistPercentage}% und damit UNTER der eingestellten Feuchtigkeit von: {plantdata.TargetMoisture}%"; discordValues.Add("username", UserName); discordValues.Add("avatar_url", ProfilePicture); discordValues.Add("content", message); dWebClient.UploadValues(WebHook, discordValues); } context = new SmartHomeServiceContext(); var lastSensorData = context.SensorDatas .Where(x => x.SensorId == msgSend.SensorId && x.Timestamp != msgSend.Timestamp) .OrderBy(y => y.Timestamp).LastOrDefault(); var istGegossen = lastSensorData.SoilMoistPercentage + GiessModifier; if (istGegossen < msgSend.SoilMoistPercentage) { discordValues = new NameValueCollection(); string message = $"Danke für das Gießen von: {plantdata.PlantName} im {plantdata.Room}! Bodenfeuchtigkeit ist nun {msgSend.SoilMoistPercentage}% und damit ÜBER der eingestellten Feuchtigkeit von: {plantdata.TargetMoisture}%"; discordValues.Add("username", UserName); discordValues.Add("avatar_url", ProfilePicture); discordValues.Add("content", message); dWebClient.UploadValues(WebHook, discordValues); } }