@@ -631,6 +631,7 @@ process.on('uncaughtException', (err) =>
631631 element . _componentOf  =  folderJsonScada 
632632 } 
633633
634+  // Log.log(JSON.stringify(v)) 
634635 server . _metrics [ element . tag ]  =  namespace . addVariable ( { 
635636 componentOf : element . _componentOf , 
636637 ...( nodeId  ===  null  ? { }  : {  nodeId : nodeId  } ) , 
@@ -646,26 +647,28 @@ process.on('uncaughtException', (err) =>
646647 : writeFlag ) , 
647648 ...cmdWriteProp , 
648649 } ) 
649-  server . _metrics [ element . tag ] . setValueFromSource ( 
650-  { 
651-  dataType : v . dataType , 
652-  ...( v . arrayType  ? {  arrayType : v . arrayType  }  : { } ) , 
653-  value : v . value , 
654-  } , 
655-  element . invalid  ? StatusCodes . Bad  : StatusCodes . Good , 
656-  ! ( 'timeTagAtSource'  in  element )  || 
657-  element . timeTagAtSource  ===  null 
658-  ? new  Date ( 1970 ,  0 ,  1 ) 
659-  : element . timeTagAtSource 
660-  ) 
650+  if  ( element . origin  !==  'command' )  { 
651+  server . _metrics [ element . tag ] . setValueFromSource ( 
652+  { 
653+  dataType : v . dataType , 
654+  ...( v . arrayType  ? {  arrayType : v . arrayType  }  : { } ) , 
655+  value : v . value , 
656+  } , 
657+  element . invalid  ? StatusCodes . Bad  : StatusCodes . Good , 
658+  ! ( 'timeTagAtSource'  in  element )  || 
659+  element . timeTagAtSource  ===  null 
660+  ? new  Date ( 1970 ,  0 ,  1 ) 
661+  : element . timeTagAtSource 
662+  ) 
663+  } 
661664 } 
662665 }  catch  ( e )  { 
663666 Log . log ( 
664667 `Error creating OPC UA Variable for tag ${ res [ i ] . tag }  ` , 
665668 Log . levelMin 
666669 ) 
667670 Log . log ( e ,  Log . levelMin ) 
668-  Log . log ( JSON . stringify ( res [ i ] ) ) 
671+  //  Log.log(JSON.stringify(res[i]))
669672 } 
670673 } 
671674
@@ -900,9 +903,6 @@ function convertValueVariant(rtData) {
900903 case  'sbyte[]' :
901904 dataType  =  DataType . SByte 
902905 break 
903-  case  'datetime[]' :
904-  dataType  =  DataType . DateTime 
905-  break 
906906 case  'string[]' :
907907 dataType  =  DataType . String 
908908 break 
@@ -911,8 +911,12 @@ function convertValueVariant(rtData) {
911911 break 
912912 case  'datetime[]' :
913913 dataType  =  DataType . DateTime 
914-  value  =  [ ] 
915-  obj . forEach ( ( v )  =>  value . push ( new  Date ( v ) ) ) 
914+  let  vArr  =  [ ] 
915+  if  ( obj ?. length ) 
916+  for  ( let  i  =  0 ;  i  <  obj . length ;  i ++ )  { 
917+  vArr . push ( new  Date ( obj [ i ] ) ) 
918+  } 
919+  obj  =  vArr 
916920 break 
917921 case  'bytestring[]' :
918922 dataType  =  DataType . ByteString 
@@ -963,38 +967,6 @@ function convertValueVariant(rtData) {
963967 break 
964968 } 
965969 } 
966-  /* 
967-  if (obj.length > 0) 
968-  switch (typeof obj[0]) { 
969-  case 'boolean': 
970-  dataType = DataType.Boolean 
971-  value = obj 
972-  break 
973-  case 'number': 
974-  case 'bigint': 
975-  value = obj 
976-  break 
977-  case 'string': 
978-  if (obj[0].length >= 19) { 
979-  const tm = Date.parse(obj[0]) 
980-  if (!isNaN(tm)) { 
981-  dataType = DataType.DateTime 
982-  value = [] 
983-  obj.forEach((v) => value.push(new Date(v))) 
984-  } else { 
985-  dataType = DataType.String 
986-  value = obj 
987-  } 
988-  } else { 
989-  dataType = DataType.String 
990-  value = obj 
991-  } 
992-  break 
993-  default: 
994-  dataType = DataType.String 
995-  value = JSON.stringify(obj) 
996-  } 
997-  */ 
998970 }  else  { 
999971 dataType  =  DataType . String 
1000972 value  =  rtData ?. valueJson 
@@ -1094,25 +1066,6 @@ function convertValueVariant(rtData) {
10941066 value  =  new  Date ( rtData . value ) 
10951067 break 
10961068 } 
1097-  /* 
1098-  if ( 
1099-  rtData.value > 1000000000000 && 
1100-  typeof rtData.valueJson === 'string' 
1101-  ) { 
1102-  // try to detect date type as json (number of milliseconds) 
1103-  const tm = Date.parse(rtData.valueJson.replace(/^"(.+(?="$))"$/, '1ドル')) 
1104-  if (!isNaN(tm)) { 
1105-  value = new Date(tm) 
1106-  dataType = DataType.DateTime 
1107-  } else { 
1108-  dataType = DataType.Double 
1109-  value = parseFloat(rtData.value) 
1110-  } 
1111-  } else { 
1112-  dataType = DataType.Double 
1113-  value = parseFloat(rtData.value) 
1114-  } 
1115-  */ 
11161069 break 
11171070 default :
11181071 } 
0 commit comments