IoTHelper.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace MainForm.ClassFile.XiaomiClass
  8. {
  9. public class IoTHelper
  10. {
  11. //参数配置数据结构
  12. public class ParamConfig
  13. {
  14. public string function; //"parameterConfig"
  15. public string reqId; //"123456" 随机⼀个请求id
  16. public Param parameter; //配置参数
  17. }
  18. public class Param
  19. {
  20. public ConfigFds fds;
  21. public ConfigMes mes;
  22. public ConfigMQTT mqtt;
  23. public ConfigEquipment equipment;
  24. public ConfigOther other;
  25. }
  26. public class ConfigFds
  27. {
  28. public string address; //fds地址
  29. public string appId; //fds应⽤识别码
  30. public string appKey; //fds应⽤密钥
  31. }
  32. public class ConfigMes
  33. {
  34. public string address; //mes地址
  35. public string appId; //mes应⽤识别码
  36. public string appKey; //mes应⽤密钥
  37. }
  38. public class ConfigMQTT
  39. {
  40. public string address; // mqtt地址,必填
  41. public int port = 80; //mqtt端⼝,必填 80
  42. public string username; //mqtt⽤⼾名,必填
  43. public string password; //mqtt密码,必填
  44. }
  45. public class ConfigEquipment
  46. {
  47. public string factoryCode; //⼯⼚编号
  48. public string deviceCode; //装备编号
  49. public string stationCode; //⼯站编号
  50. public string project; //项⽬编号
  51. public string productMode; //⽣产模式
  52. }
  53. public class ConfigOther
  54. {
  55. public string logLevel; //⽇志等级(0:Info,1:Warn,
  56. public string runMode; //⽣产模式 Online:在线,Offline:离线
  57. public string uploadDigitalTwinData; // 开启数字孪⽣,选填(true:开启,false:关闭)
  58. public string LogPath; //⽇志路径
  59. public string mqttEnableService = "true"; //数据采集是否开启
  60. }
  61. //MQTT上传资料
  62. public class IoT_PassOutResult_t //IoT需求
  63. {
  64. public string pass_station_id; //必填:是 过站唯⼀标识:1~64个字符 站名:OP10~OP90
  65. public string project_code; //必填:是 项⽬编码:1~32个字符
  66. public string factory_code; //必填:否 ⼯⼚编码:1~64个字符
  67. public string process_section_code; //必填:否 ⼯段编码:1~32个字符
  68. public string line_code; //必填:否 线体编码:1~32个字符
  69. public string work_station; //必填:否 ⼯站:1~32个字符
  70. public string device_code; //必填:是 装备编码:1~32个字符
  71. public string station; //必填:是 ⼯位编码:1~32个字符 与MES那边的stationId保持⼀致
  72. public string process_time; //必填:是 过站时间:1~32个字符
  73. public string slot; //必填:是 槽位编码:1~32个字符
  74. public string sn; //必填:是 产品SN: 1~32个字符
  75. public string enter_status; //必填:是 进站状态:PASS/FAIL:1~32个字符 MES进站接⼝调⽤状态
  76. public string result; //必填:是 过站结果:PASS/FAIL:1~32个字符
  77. public string work_type; //必填:是 作业类型:PRESSURE_TEST(压测),POINT_CHECK(点检),OUT_STATION(正常跑料数据) 1~32个字符
  78. }
  79. public class IoT_PassOutDetailResult_t //IoT需求
  80. {
  81. public string pass_station_id; //必填:是 过站唯⼀标识:1~64个字符
  82. public string sn; //必填:是 产品SN: 1~32个字符
  83. public string slot; //必填:是 槽位编码: 1~32个字符
  84. public string test_item_num; //必填:是 测试项序号: 1~32个字符
  85. public string function_name; //必填:是 功能名称: 1~64个字符
  86. //⼤类:Machine_加⼯模块,加⼯相关的⼯艺
  87. //Test_测试模块,检测项相关
  88. //Fixture_Process,治具信息
  89. //File_Process,⽂件相关信息
  90. public string test_item; //必填:是 测试项: 1~32个字符 key(⼩类,可以是检测项名称或⼯艺参数名称)
  91. public string result_val; //必填:是 测试值/输出值:1~32个字符 value(和测试项对应的值,可以是检测值/算法的输出值/⼯艺参数值)
  92. public string hi_limit; //必填:否 上限值:1~32个字符
  93. public string low_limit; //必填:否 下限值:1~32个字符
  94. public string status; //必填:是 测试状态:1~32个字符 PASS/FAIL
  95. public string test_time; //必填:否 单项测试时间:1~32个字符
  96. public string error_code; //必填:否 错误码:1~32个字符
  97. public string description; //必填:是 描述:1~32个字符 中⽂描述或说明备注信息
  98. }
  99. public class IoT_Fault_t //1条故障的定义
  100. {
  101. public string station; //必填:是 ⼯位:1~64个字符
  102. public string fault_name; //必填:是 故障名称:1~128个字符 故障事件名称,同数据字典中的事件名称
  103. public string fault_code; //必填:是 故障编码:1~32个字符(6) 故障等级(A~E)+故障类型(1~7)+故障号(4位数字):A10001
  104. public string fault_cmpnt; //必填:否 故障部件:1~64个字符
  105. public string fault_desc; //必填:是 故障描述:1~64个字符
  106. public string fault_tm; //必填:是 故障发⽣时间:1~32个字符 事件发⽣时间(时间戳,毫秒),2022-06-01 14:27:57.283
  107. }
  108. public class IoT_State_t
  109. {
  110. public string station; //必填:否 ⼯位:1~64个字符
  111. public string state; //必填:是 设备状态: 1~32个字符 枚举值,需要按照⼩⽶要求定义
  112. public string time; //必填:是 状态切换时的时间 1~64个字符 时间,精确到毫秒。如:2022-06-01 14:27:57.283
  113. public string fault_code; //必填:可选 对应的故障编码: 1~64个字符 当状态为Alarm或Fault时,不能为空 和故障⽇志中的fault_code值相同
  114. public string fault_tm; //必填:可选 对应的故障发⽣时间1~64个字符 时间,精确到毫秒。当状态为Alarm或Fault时,不能为空,和故障⽇志中的fault_tm值相同
  115. }
  116. public enum eMachineState : short
  117. {
  118. Uninitialized = 0, //未初始化状态
  119. Initializing, //初始化中...
  120. Initialized, //初始化完成
  121. Running, //运行中
  122. Paused, //暂停状态
  123. Fault, //故障状态
  124. Alarm //报警状态
  125. }
  126. //节拍,必须上传的节拍:1:上料开始/结束 2:作业开始/结束 3:下料开始/结束
  127. public class Iot_Beat_t
  128. {
  129. public string action; //必填:否 节拍动作: 1~64个字符
  130. public string beat_tm; //必填:是 节拍发⽣时间: 1~32个字符 时间,精确到毫秒。如:2022-06-01 14:27:57.283
  131. public string action_subject; //必填:是 该动作操作的⽬标对象(SN) 1~64个字符
  132. public string action_subject_parent; //必填:否 ⼤板SN/载具SN: 1~64个字符
  133. public string action_location; //必填:是 ⼯位,该动作的位置信息 1~32个字符
  134. public string action_material; //必填:否 该动作的物料信息 1~256个字符 如:⼯位号_槽位号
  135. public string extra; //必填:否 额外信息 1~64个字符
  136. public string class_level_1; //必填:否 数据字典中定义的分类层级1 1~64个字符
  137. public string class_level_2; //必填:否 数据字典中定义的分类层级2 1~64个字符
  138. public string class_level_3; //必填:否 数据字典中定义的分类层级3 1~64个字符
  139. }
  140. //以下6个节拍是必须要求上传的,请注意在数据字典中填写,同时在进⾏数据上报时,也⼀并传上
  141. //来。顺序要求:上料开始->上料结束->作业开始->作业结束->下料开始->下料结束
  142. //非结构化数据 必须上传的节拍:1:上料开始/结束 2:作业开始/结束 3:下料开始/结束
  143. //类型:post
  144. //url:/x5/file/upload/mqtt
  145. //mthod:UploadMqtt
  146. public class IoT_NoStructData_t
  147. {
  148. public string bucket; //⽂件所属包: 1~64个字符 必填:否
  149. public string name; //⽂件名: 1~32个字符 必填:是 时间,精确到毫秒。如:2022-06-01 14:27:57.283
  150. public string file; //===================⽂件内容 MultipartFile=====================
  151. public string uuid; //⽂件唯⼀标识 随机⼀串uuid发给我们
  152. public string md5; //传空
  153. public bool uploadCloud; //是否上云 是否上传云端,默认传true
  154. public bool informMqtt; //是否通知mqtt 默认传true
  155. public MqttPayload_t mqttPayload;
  156. }
  157. public class MqttPayload_t
  158. {
  159. public string factory; //⼯⼚编码
  160. public string project_name; //对应当前⽣产的项⽬号
  161. public string product_mode; //⽣产阶段 对应⽣产阶段,同配置参数中productMode
  162. public string line_no; //线体 对应线体编码,同过站结果中线体编码
  163. public string work_station_no; //传空,同过站结果⼯站字段
  164. public string equipment_no; //同device_code,即装备编码(同过站结果)
  165. public string station_no; //对应⼯位编码,同MES中的stationId
  166. public string file_id; //同上⾯uuid
  167. public string file_name; //⽂件名称
  168. public string sn; //产品码
  169. public string opt_time; //⽂件的⽣成时间
  170. public string file_type; //⽂件类型 默认为IMAGE
  171. public string file_category; //⽂件类别
  172. public string tag; //没有不传
  173. public string pass_station_id;
  174. public string reference_info; //关联业务信息 这⾥传递过站结果id(同MES那边的uuidInspection字段的值),格式为:"reference_info":"[{\"pass_station_id\":\"d092c4db-0d93-49c3-96b9-40caf8d7c812\"}]
  175. }
  176. //传感器--周期采集
  177. public class IoT_SensorData_t
  178. {
  179. string id;
  180. string value;
  181. }
  182. //装备配置参数
  183. public class IoT_DeviceConfigParam_t
  184. {
  185. string id;
  186. string value;
  187. }
  188. //图⽚命名需要遵循⼩⽶标准
  189. //[项⽬]_[⼯站]_[SN]_[物料-功能]_[测试时间]_[定位/检测/测量结果]_[是否原图-当前第⼏张-共⼏张]
  190. //操作日志
  191. public class IoT_OperateLog_t
  192. {
  193. public string id; //操作记录⽇志标识
  194. public string software_version; //供应商软件版本号
  195. public string operate_time; //操作时间
  196. public string operate_action; //操作动作 对应软件开启/关闭/重新加载项⽬ 枚举值:startup,shutdown,reload
  197. public string action_param; //动作参数,选填,附带额外的信息
  198. public string operate_module; //操作模块 选填
  199. public string operate_page; //操作⻚⾯ 选填
  200. public string current_process; //当前进程ID
  201. public string operate_desc; //操作描述 供应商软件开启/关闭/重新加载项⽬
  202. public string operate_result; //操作结果 success
  203. public string operator_name; //填当前操作⽤⼾,如⽆则填default
  204. }
  205. }
  206. }