Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.32 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Globalization;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Xml;
  10. using uPLibrary.Networking.M2Mqtt;
  11. using uPLibrary.Networking.M2Mqtt.Messages;
  12.  
  13. namespace AirMonit_DL
  14. {
  15. class Program
  16. {
  17. static void Main(string[] args)
  18. {
  19.  
  20. MqttClient mClient = new MqttClient(IPAddress.Parse("127.0.0.1"));
  21. string[] mStrTopicsInfo = { "uploader", "alarm" };
  22. mClient.Connect(Guid.NewGuid().ToString());
  23. if (!mClient.IsConnected)
  24. {
  25. Console.WriteLine("Error connecting to message broker...");
  26. return;
  27. }
  28. //Specify events we are interest on
  29. //New Msg Arrived
  30. mClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
  31. //Subscribe to topics
  32. byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE }; //QoS – depends on the topics number
  33. mClient.Subscribe(mStrTopicsInfo, qosLevels);
  34.  
  35. Console.ReadKey();
  36. }
  37.  
  38. static string str_conn = @"server = (localdb)\MSSQLLocalDB; Database = AirMonit; Trusted_Connection = True;";
  39.  
  40. static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
  41. {
  42. SqlConnection conn = new SqlConnection(str_conn);
  43. conn.Open();
  44. Console.WriteLine(e.Topic + Encoding.UTF8.GetString(e.Message)); //aqui vem pelo canal uploader
  45.  
  46. string data_type = e.Topic;
  47. SqlCommand cmd = null;
  48.  
  49. if (data_type == "uploader")
  50. {
  51. String str_command = "Insert into Sensor_Data values(@sensor_id, @city_name, @parameter, @value, @date)";
  52. cmd = new SqlCommand(str_command, conn);
  53. XmlDocument doc = new XmlDocument();
  54. doc.LoadXml(Encoding.UTF8.GetString(e.Message));
  55. string id = doc.SelectSingleNode("/data/id").InnerText;
  56. string valueStr = doc.SelectSingleNode("/data/value").InnerText;
  57. string date = doc.SelectSingleNode("/data/date").InnerText;
  58. string city = doc.SelectSingleNode("/data/city").InnerText;
  59. string gas = doc.SelectSingleNode("/data/gas").InnerText;
  60. cmd.Parameters.AddWithValue("sensor_id",id);
  61. cmd.Parameters.AddWithValue("city_name", city);
  62. cmd.Parameters.AddWithValue("parameter", gas);
  63. cmd.Parameters.AddWithValue("value", valueStr);
  64. DateTime dateTime = DateTime.ParseExact(date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
  65. cmd.Parameters.AddWithValue("date", dateTime);
  66.  
  67. }
  68. else
  69. {
  70. String str_command = "Insert into Alarm_Data values(@sensor_id, @parameter, @value,@city_name, @date)";
  71. cmd = new SqlCommand(str_command, conn);
  72. XmlDocument doc = new XmlDocument();
  73. doc.LoadXml(Encoding.UTF8.GetString(e.Message));
  74. string id = doc.SelectSingleNode("/alert/id").InnerText;
  75. string valueStr = doc.SelectSingleNode("/alert/value").InnerText;
  76. string date = doc.SelectSingleNode("/alert/date").InnerText;
  77. string city = doc.SelectSingleNode("/alert/city").InnerText;
  78. string gas = doc.SelectSingleNode("/alert/gas").InnerText;
  79. cmd.Parameters.AddWithValue("sensor_id", id);
  80. cmd.Parameters.AddWithValue("city_name", city);
  81. cmd.Parameters.AddWithValue("parameter", gas);
  82. cmd.Parameters.AddWithValue("value", valueStr);
  83. DateTime dateTime = DateTime.ParseExact(date, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
  84. cmd.Parameters.AddWithValue("date", dateTime);
  85. }
  86.  
  87. int nRows = cmd.ExecuteNonQuery();
  88. conn.Close();
  89.  
  90. if(nRows > 0)
  91. {
  92. Console.WriteLine("OK");
  93. }
  94. else
  95. {
  96. Console.WriteLine("KO");
  97. }
  98.  
  99.  
  100. }
  101. }
  102.  
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement