Esempio n. 1
0
        private void onData(Match match, string payload)
        {
            if (match.Groups[2].Value == "ping")
            {
                dynamic data = JObject.Parse(payload);
                Ping    ping = new Ping()
                {
                    stamp     = DateTime.Now,
                    nodeid    = node.id,
                    ip        = data.ip,
                    heapspace = data.heapspace,
                    rssi      = data.rssi
                };
                using (var db = new SensorCloudContext(configuration))
                {
                    db.pings.Add(ping);
                    db.SaveChanges();
                }
                lastPing = DateTime.Now;
            }
            if (match.Groups[2].Value == "temperature" || match.Groups[2].Value == "humidity")
            {
                if (payload == "0")
                {
                    return;
                }
                try
                {
                    SensorData sensorData = new SensorData()
                    {
                        stamp  = DateTime.Now,
                        nodeid = node.id,
                        type   = match.Groups[2].Value,
                        value  = float.Parse(payload)
                    };
                    using (var db = new SensorCloudContext(configuration))
                    {
                        db.sensordata.Add(sensorData);
                        db.SaveChanges();
                    }
                    lastValue = DateTime.Now;
                }
                catch (FormatException)
                {
                    Log("Error while parsing payload");
                }
            }

            if (match.Groups[2].Value == "alive")
            {
                if (payload == "dead")
                {
                    Log("Node is dead, removing from listening list");
                    mqtt.Un("(" + node.Room.topic + "/" + node.topic + ")/(.*)");
                    Dispose(); //TODO: check
                }
            }
        }