Beispiel #1
0
        public List <PlantData> Get()
        {
            var db   = new SmartHomeServiceContext();
            var data = db.PlantDatas.OrderBy(b => b.Id).ToList();

            return(data);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            }
        }