XiaomiMqttClient_FaultLog.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Newtonsoft.Json;
  2. namespace MainForm.ClassFile.XiaomiAPI
  3. {
  4. /// <summary>
  5. /// 小米 MqttClient类 - API拓展方法
  6. /// 故障⽇志
  7. /// 故障发⽣时,必须要上报对应的故障⽇志;设备状态数据同步也需要上报Fault,同时确保故障数据和上报的设备状态数据中fault_tm和fault_code⼀致。
  8. /// 故障编码规则需要依据⼩⽶标准,区分等级(A,B,C,D,E)。在录⼊数据字典时,也需按照此标准定义故障编码。如:B60028
  9. /// </summary>
  10. public partial class XiaomiMqttClient_Extend : XiaomiMqttClient
  11. {
  12. /// <summary>
  13. /// 故障⽇志- 事件Id
  14. /// </summary>
  15. private static string FaultLogId { get; set; } = "fault_log/electric_control/alarm/work_module/{0}";
  16. /// <summary>
  17. /// 故障⽇志- 事件方法
  18. /// </summary>
  19. /// <param name="msg">事件数据;Json</param>
  20. /// <param name="dataId">自定义事件Id;如:guid</param>
  21. /// <returns></returns>
  22. public static int Write_FaultLog(FaultLogRequest request, string dataId = "")
  23. {
  24. int result = 0;
  25. string msg = JsonConvert.SerializeObject(request);
  26. byte[] bytes = ToUTF8(msg);
  27. string faultLogId = string.Format(FaultLogId, request.fault_code);
  28. // 发送
  29. if (string.IsNullOrEmpty(dataId))
  30. result = Write(faultLogId, bytes);
  31. else
  32. result = WriteWithDataId(faultLogId, bytes, dataId);
  33. return result;
  34. }
  35. /// <summary>
  36. /// 故障⽇志- 参数
  37. /// ◦ function_name是对test_item进⾏分类聚合,同⼀类的test_item对应同⼀个function_name名称。
  38. /// ◦ test_item可以是装备作业过程中的检测项、算法参数、⼯艺参数等
  39. /// ◦ result_val可以是检测值/算法的输出值/⼯艺参数值
  40. /// ◦ description填写对应test_item的中⽂描述,⽤于描述这条数据的含义
  41. /// </summary>
  42. public class FaultLogRequest
  43. {
  44. /// <summary>
  45. /// ⼯位
  46. /// string[1,64]
  47. /// • 当上报⼯位信息时,表⽰当前上报的是⼯位状态
  48. /// • 当上报的⼯位信息为空时,表⽰状态状态
  49. /// </summary>
  50. public string station { get; set; } = string.Empty;
  51. /// <summary>
  52. /// 故障名称
  53. /// string[1,128]
  54. /// 故障事件名称,同数据字典中的事件名称。
  55. /// </summary>
  56. public string fault_name { get; set; } = string.Empty;
  57. /// <summary>
  58. /// 故障编码
  59. /// string[1,32]
  60. /// 故障编码规则需要依据⼩⽶标准,区分等级(A,B,C,D,E)。在录⼊数据字典时,也需按照此标准定义故障编码。如:B60028
  61. /// </summary>
  62. public string fault_code { get; set; } = string.Empty;
  63. /// <summary>
  64. /// 故障部件
  65. /// string[1,64]
  66. /// </summary>
  67. public string fault_cmpnt { get; set; } = string.Empty;
  68. /// <summary>
  69. /// 故障描述
  70. /// string[1,64]
  71. /// </summary>
  72. public string fault_desc { get; set; } = string.Empty;
  73. /// <summary>
  74. /// 故障发⽣时间
  75. /// string[1,32]
  76. /// 事件发⽣时间(时间戳,毫秒),如:2022-06-01 14:27:57.283
  77. /// </summary>
  78. public string fault_tm { get; set; } = string.Empty;
  79. }
  80. }
  81. }