Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Data.SqlClient;
- using System.Globalization;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml;
- using uPLibrary.Networking.M2Mqtt;
- using uPLibrary.Networking.M2Mqtt.Messages;
- namespace AirMonit_DL
- {
- class Program
- {
- static void Main(string[] args)
- {
- MqttClient mClient = new MqttClient(IPAddress.Parse("127.0.0.1"));
- string[] mStrTopicsInfo = { "uploader", "alarm" };
- mClient.Connect(Guid.NewGuid().ToString());
- if (!mClient.IsConnected)
- {
- Console.WriteLine("Error connecting to message broker...");
- return;
- }
- //Specify events we are interest on
- //New Msg Arrived
- mClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
- //Subscribe to topics
- byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE }; //QoS – depends on the topics number
- mClient.Subscribe(mStrTopicsInfo, qosLevels);
- Console.ReadKey();
- }
- static string str_conn = @"server = (localdb)\MSSQLLocalDB; Database = AirMonit; Trusted_Connection = True;";
- static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
- {
- SqlConnection conn = new SqlConnection(str_conn);
- conn.Open();
- Console.WriteLine(e.Topic + Encoding.UTF8.GetString(e.Message)); //aqui vem pelo canal uploader
- string data_type = e.Topic;
- SqlCommand cmd = null;
- if (data_type == "uploader")
- {
- String str_command = "Insert into Sensor_Data values(@sensor_id, @city_name, @parameter, @value, @date)";
- cmd = new SqlCommand(str_command, conn);
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(Encoding.UTF8.GetString(e.Message));
- string id = doc.SelectSingleNode("/data/id").InnerText;
- string valueStr = doc.SelectSingleNode("/data/value").InnerText;
- string date = doc.SelectSingleNode("/data/date").InnerText;
- string city = doc.SelectSingleNode("/data/city").InnerText;
- string gas = doc.SelectSingleNode("/data/gas").InnerText;
- cmd.Parameters.AddWithValue("sensor_id",id);
- cmd.Parameters.AddWithValue("city_name", city);
- cmd.Parameters.AddWithValue("parameter", gas);
- cmd.Parameters.AddWithValue("value", valueStr);
- DateTime dateTime = DateTime.ParseExact(date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
- cmd.Parameters.AddWithValue("date", dateTime);
- }
- else
- {
- String str_command = "Insert into Alarm_Data values(@sensor_id, @parameter, @value,@city_name, @date)";
- cmd = new SqlCommand(str_command, conn);
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(Encoding.UTF8.GetString(e.Message));
- string id = doc.SelectSingleNode("/alert/id").InnerText;
- string valueStr = doc.SelectSingleNode("/alert/value").InnerText;
- string date = doc.SelectSingleNode("/alert/date").InnerText;
- string city = doc.SelectSingleNode("/alert/city").InnerText;
- string gas = doc.SelectSingleNode("/alert/gas").InnerText;
- cmd.Parameters.AddWithValue("sensor_id", id);
- cmd.Parameters.AddWithValue("city_name", city);
- cmd.Parameters.AddWithValue("parameter", gas);
- cmd.Parameters.AddWithValue("value", valueStr);
- DateTime dateTime = DateTime.ParseExact(date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
- cmd.Parameters.AddWithValue("date", dateTime);
- }
- int nRows = cmd.ExecuteNonQuery();
- conn.Close();
- if(nRows > 0)
- {
- Console.WriteLine("OK");
- }
- else
- {
- Console.WriteLine("KO");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement