using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace MainForm.ClassFile.XiaomiClass { public class IoTHelper { //参数配置数据结构 public class ParamConfig { public string function; //"parameterConfig" public string reqId; //"123456" 随机⼀个请求id public Param parameter; //配置参数 } public class Param { public ConfigFds fds; public ConfigMes mes; public ConfigMQTT mqtt; public ConfigEquipment equipment; public ConfigOther other; } public class ConfigFds { public string address; //fds地址 public string appId; //fds应⽤识别码 public string appKey; //fds应⽤密钥 } public class ConfigMes { public string address; //mes地址 public string appId; //mes应⽤识别码 public string appKey; //mes应⽤密钥 } public class ConfigMQTT { public string address; // mqtt地址,必填 public int port = 80; //mqtt端⼝,必填 80 public string username; //mqtt⽤⼾名,必填 public string password; //mqtt密码,必填 } public class ConfigEquipment { public string factoryCode; //⼯⼚编号 public string deviceCode; //装备编号 public string stationCode; //⼯站编号 public string project; //项⽬编号 public string productMode; //⽣产模式 } public class ConfigOther { public string logLevel; //⽇志等级(0:Info,1:Warn, public string runMode; //⽣产模式 Online:在线,Offline:离线 public string uploadDigitalTwinData; // 开启数字孪⽣,选填(true:开启,false:关闭) public string LogPath; //⽇志路径 public string mqttEnableService = "true"; //数据采集是否开启 } //MQTT上传资料 public class IoT_PassOutResult_t //IoT需求 { public string pass_station_id; //必填:是 过站唯⼀标识:1~64个字符 站名:OP10~OP90 public string project_code; //必填:是 项⽬编码:1~32个字符 public string factory_code; //必填:否 ⼯⼚编码:1~64个字符 public string process_section_code; //必填:否 ⼯段编码:1~32个字符 public string line_code; //必填:否 线体编码:1~32个字符 public string work_station; //必填:否 ⼯站:1~32个字符 public string device_code; //必填:是 装备编码:1~32个字符 public string station; //必填:是 ⼯位编码:1~32个字符 与MES那边的stationId保持⼀致 public string process_time; //必填:是 过站时间:1~32个字符 public string slot; //必填:是 槽位编码:1~32个字符 public string sn; //必填:是 产品SN: 1~32个字符 public string enter_status; //必填:是 进站状态:PASS/FAIL:1~32个字符 MES进站接⼝调⽤状态 public string result; //必填:是 过站结果:PASS/FAIL:1~32个字符 public string work_type; //必填:是 作业类型:PRESSURE_TEST(压测),POINT_CHECK(点检),OUT_STATION(正常跑料数据) 1~32个字符 } public class IoT_PassOutDetailResult_t //IoT需求 { public string pass_station_id; //必填:是 过站唯⼀标识:1~64个字符 public string sn; //必填:是 产品SN: 1~32个字符 public string slot; //必填:是 槽位编码: 1~32个字符 public string test_item_num; //必填:是 测试项序号: 1~32个字符 public string function_name; //必填:是 功能名称: 1~64个字符 //⼤类:Machine_加⼯模块,加⼯相关的⼯艺 //Test_测试模块,检测项相关 //Fixture_Process,治具信息 //File_Process,⽂件相关信息 public string test_item; //必填:是 测试项: 1~32个字符 key(⼩类,可以是检测项名称或⼯艺参数名称) public string result_val; //必填:是 测试值/输出值:1~32个字符 value(和测试项对应的值,可以是检测值/算法的输出值/⼯艺参数值) public string hi_limit; //必填:否 上限值:1~32个字符 public string low_limit; //必填:否 下限值:1~32个字符 public string status; //必填:是 测试状态:1~32个字符 PASS/FAIL public string test_time; //必填:否 单项测试时间:1~32个字符 public string error_code; //必填:否 错误码:1~32个字符 public string description; //必填:是 描述:1~32个字符 中⽂描述或说明备注信息 } public class IoT_Fault_t //1条故障的定义 { public string station; //必填:是 ⼯位:1~64个字符 public string fault_name; //必填:是 故障名称:1~128个字符 故障事件名称,同数据字典中的事件名称 public string fault_code; //必填:是 故障编码:1~32个字符(6) 故障等级(A~E)+故障类型(1~7)+故障号(4位数字):A10001 public string fault_cmpnt; //必填:否 故障部件:1~64个字符 public string fault_desc; //必填:是 故障描述:1~64个字符 public string fault_tm; //必填:是 故障发⽣时间:1~32个字符 事件发⽣时间(时间戳,毫秒),2022-06-01 14:27:57.283 } public class IoT_State_t { public string station; //必填:否 ⼯位:1~64个字符 public string state; //必填:是 设备状态: 1~32个字符 枚举值,需要按照⼩⽶要求定义 public string time; //必填:是 状态切换时的时间 1~64个字符 时间,精确到毫秒。如:2022-06-01 14:27:57.283 public string fault_code; //必填:可选 对应的故障编码: 1~64个字符 当状态为Alarm或Fault时,不能为空 和故障⽇志中的fault_code值相同 public string fault_tm; //必填:可选 对应的故障发⽣时间1~64个字符 时间,精确到毫秒。当状态为Alarm或Fault时,不能为空,和故障⽇志中的fault_tm值相同 } public enum eMachineState : short { Uninitialized = 0, //未初始化状态 Initializing, //初始化中... Initialized, //初始化完成 Running, //运行中 Paused, //暂停状态 Fault, //故障状态 Alarm //报警状态 } //节拍,必须上传的节拍:1:上料开始/结束 2:作业开始/结束 3:下料开始/结束 public class Iot_Beat_t { public string action; //必填:否 节拍动作: 1~64个字符 public string beat_tm; //必填:是 节拍发⽣时间: 1~32个字符 时间,精确到毫秒。如:2022-06-01 14:27:57.283 public string action_subject; //必填:是 该动作操作的⽬标对象(SN) 1~64个字符 public string action_subject_parent; //必填:否 ⼤板SN/载具SN: 1~64个字符 public string action_location; //必填:是 ⼯位,该动作的位置信息 1~32个字符 public string action_material; //必填:否 该动作的物料信息 1~256个字符 如:⼯位号_槽位号 public string extra; //必填:否 额外信息 1~64个字符 public string class_level_1; //必填:否 数据字典中定义的分类层级1 1~64个字符 public string class_level_2; //必填:否 数据字典中定义的分类层级2 1~64个字符 public string class_level_3; //必填:否 数据字典中定义的分类层级3 1~64个字符 } //以下6个节拍是必须要求上传的,请注意在数据字典中填写,同时在进⾏数据上报时,也⼀并传上 //来。顺序要求:上料开始->上料结束->作业开始->作业结束->下料开始->下料结束 //非结构化数据 必须上传的节拍:1:上料开始/结束 2:作业开始/结束 3:下料开始/结束 //类型:post //url:/x5/file/upload/mqtt //mthod:UploadMqtt public class IoT_NoStructData_t { public string bucket; //⽂件所属包: 1~64个字符 必填:否 public string name; //⽂件名: 1~32个字符 必填:是 时间,精确到毫秒。如:2022-06-01 14:27:57.283 public string file; //===================⽂件内容 MultipartFile===================== public string uuid; //⽂件唯⼀标识 随机⼀串uuid发给我们 public string md5; //传空 public bool uploadCloud; //是否上云 是否上传云端,默认传true public bool informMqtt; //是否通知mqtt 默认传true public MqttPayload_t mqttPayload; } public class MqttPayload_t { public string factory; //⼯⼚编码 public string project_name; //对应当前⽣产的项⽬号 public string product_mode; //⽣产阶段 对应⽣产阶段,同配置参数中productMode public string line_no; //线体 对应线体编码,同过站结果中线体编码 public string work_station_no; //传空,同过站结果⼯站字段 public string equipment_no; //同device_code,即装备编码(同过站结果) public string station_no; //对应⼯位编码,同MES中的stationId public string file_id; //同上⾯uuid public string file_name; //⽂件名称 public string sn; //产品码 public string opt_time; //⽂件的⽣成时间 public string file_type; //⽂件类型 默认为IMAGE public string file_category; //⽂件类别 public string tag; //没有不传 public string pass_station_id; public string reference_info; //关联业务信息 这⾥传递过站结果id(同MES那边的uuidInspection字段的值),格式为:"reference_info":"[{\"pass_station_id\":\"d092c4db-0d93-49c3-96b9-40caf8d7c812\"}] } //传感器--周期采集 public class IoT_SensorData_t { string id; string value; } //装备配置参数 public class IoT_DeviceConfigParam_t { string id; string value; } //图⽚命名需要遵循⼩⽶标准 //[项⽬]_[⼯站]_[SN]_[物料-功能]_[测试时间]_[定位/检测/测量结果]_[是否原图-当前第⼏张-共⼏张] //操作日志 public class IoT_OperateLog_t { public string id; //操作记录⽇志标识 public string software_version; //供应商软件版本号 public string operate_time; //操作时间 public string operate_action; //操作动作 对应软件开启/关闭/重新加载项⽬ 枚举值:startup,shutdown,reload public string action_param; //动作参数,选填,附带额外的信息 public string operate_module; //操作模块 选填 public string operate_page; //操作⻚⾯ 选填 public string current_process; //当前进程ID public string operate_desc; //操作描述 供应商软件开启/关闭/重新加载项⽬ public string operate_result; //操作结果 success public string operator_name; //填当前操作⽤⼾,如⽆则填default } } }