Преглед изворни кода

feat(device): implement initial handling for error messages from device

sw пре 3 недеља
родитељ
комит
5675d960e3
1 измењених фајлова са 70 додато и 0 уклоњено
  1. 70 0
      src/domain/mqttServiceForDevice.ts

+ 70 - 0
src/domain/mqttServiceForDevice.ts

@@ -39,6 +39,62 @@ const MQTT_KV = 'CCOS/DEVICE/Generator/Notify/KV'; //KV值
 const MQTT_MAS = 'CCOS/DEVICE/Generator/Notify/MAS';
 const MQTT_MA = 'CCOS/DEVICE/Generator/Notify/MA';
 const MQTT_MS = 'CCOS/DEVICE/Generator/Notify/MS';
+const MQTT_ERRORLIST_NOTIFY = 'CCOS/DEVICE/Generator/Notify/ErrorList';
+
+interface ErrorListMessage {
+  IDX: string;
+  TYPE: string;
+  CMD: string;
+  KEY: string;
+  CONTEXT: Record<
+    string,
+    {
+      CodeID: string;
+      Type: string; // 0 表示error , 1 表示 warning
+      Level: string;
+      Resouceinfo: string;
+      Description: string;
+      CreationTime: string;
+      AppId: string;
+      InstanceId: string;
+    }
+  >;
+  Ver: string;
+  Transaction: string;
+  HANDLE: {
+    ROUTE: string;
+    FLAGS: string;
+    LANG: string;
+    HANDLEID: string;
+    OWNERID: {
+      EBUSID: string;
+      MACHINEID: string;
+      PROCID: string;
+      ADDR: string;
+    };
+    DEVID: {
+      EBUSID: string;
+      MACHINEID: string;
+      PROCID: string;
+      ADDR: string;
+    };
+  };
+  TOPIC: string;
+  PUBLISH: string;
+}
+
+const handleErrorListMessage = (message: ErrorListMessage) => {
+  console.log(
+    `[mqttServiceForDevice] 收到ErrorList消息: ${JSON.stringify(message.CONTEXT)}`
+  );
+  Object.keys(message.CONTEXT).forEach((key) => {
+    const error = message.CONTEXT[key];
+    console.log(
+      `Error CodeID: ${error.CodeID}, Level: ${error.Level}, Resource Info: ${error.Resouceinfo}`
+    );
+    // Add additional handling logic here if needed
+  });
+};
 
 const options = {
   clean: true,
@@ -140,6 +196,15 @@ const startListening = () => {
         );
       }
     });
+
+    mqttClient.subscribe(MQTT_ERRORLIST_NOTIFY, (err) => {
+      if (err) {
+        console.error(
+          '[mqttServiceForDevice] Failed to subscribe to topic MQTT_ERRORLIST_NOTIFY',
+          err
+        );
+      }
+    });
   });
 
   mqttClient.on('error', (error) => {
@@ -182,6 +247,11 @@ const startListening = () => {
       console.log(`从设备发来新的MS值 ${parsedMessage.CONTEXT}`);
       emitter.emit('NEW_MS', parsedMessage.CONTEXT);
     }
+
+    if (topic === MQTT_ERRORLIST_NOTIFY) {
+      const parsedMessage: ErrorListMessage = JSON.parse(message.toString());
+      handleErrorListMessage(parsedMessage);
+    }
   });
 };