agentworkshop 0.7.8 → 0.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/-6OnbLFb.js +1 -0
  3. package/.output/public/_nuxt/{BUxYN2mw.js → -nb2uqVg.js} +1 -1
  4. package/.output/public/_nuxt/6vYobj4F.js +1 -0
  5. package/.output/public/_nuxt/{BSXx2vqR.js → B-xskWta.js} +1 -1
  6. package/.output/public/_nuxt/B3Psw_sL.js +1 -0
  7. package/.output/public/_nuxt/B53Mp7lD.js +1 -0
  8. package/.output/public/_nuxt/B5CYgFAD.js +14 -0
  9. package/.output/public/_nuxt/{uBbDCfTz.js → B5S_UyaC.js} +1 -1
  10. package/.output/public/_nuxt/{DZk24ego.js → B7wL3pDk.js} +1 -1
  11. package/.output/public/_nuxt/B8WV7GzS.js +1 -0
  12. package/.output/public/_nuxt/{BYL0Rjqj.js → BBwMH_hG.js} +3 -3
  13. package/.output/public/_nuxt/BLzCac9K2.js +1 -0
  14. package/.output/public/_nuxt/BNXfwXpE.js +1 -0
  15. package/.output/public/_nuxt/{VnIWJ0ts.js → BN_PdN3J.js} +1 -1
  16. package/.output/public/_nuxt/BZGNTgTQ2.js +1 -0
  17. package/.output/public/_nuxt/BbZAzXjZ2.js +1 -0
  18. package/.output/public/_nuxt/Bc3PiGGr.js +1 -0
  19. package/.output/public/_nuxt/Bckshc9V.js +1 -0
  20. package/.output/public/_nuxt/BcrN7QEl2.js +1 -0
  21. package/.output/public/_nuxt/BgOhoDTI.js +1 -0
  22. package/.output/public/_nuxt/Bmpvki7M.js +1 -0
  23. package/.output/public/_nuxt/{BkfchkK62.js → Bp5luxkg2.js} +1 -1
  24. package/.output/public/_nuxt/BxPPAkGA.js +3 -0
  25. package/.output/public/_nuxt/{C8dxXc6K.js → BxtpDtzC.js} +1 -1
  26. package/.output/public/_nuxt/{pRQri7vQ2.js → BytVi9VX2.js} +1 -1
  27. package/.output/public/_nuxt/{D5KJ7_0V.js → C3tCneTM.js} +1 -1
  28. package/.output/public/_nuxt/{C_gFA2H_2.js → C4OAdbVK2.js} +1 -1
  29. package/.output/public/_nuxt/C6m-kenn.js +1 -0
  30. package/.output/public/_nuxt/{zwdqvGN_.js → CGx-mtWf.js} +1 -1
  31. package/.output/public/_nuxt/{DCXIGxzT.js → CKfhtOt7.js} +2 -2
  32. package/.output/public/_nuxt/{ChEKFMxj.js → CUXCQXjG.js} +1 -1
  33. package/.output/public/_nuxt/CfVAr2nf.js +1 -0
  34. package/.output/public/_nuxt/Cj6139IM.js +1 -0
  35. package/.output/public/_nuxt/{DM8DS9MA.js → Cor9siSf.js} +1 -1
  36. package/.output/public/_nuxt/{BsMpJf7S.js → D-Ca4BGY.js} +6 -6
  37. package/.output/public/_nuxt/{CsCpu2Zh.js → D1z7i2UP.js} +1 -1
  38. package/.output/public/_nuxt/D7jiode2.js +1 -0
  39. package/.output/public/_nuxt/D8CqF0yy.js +1 -0
  40. package/.output/public/_nuxt/{DYZBdSSg2.js → DA4lxCWC2.js} +1 -1
  41. package/.output/public/_nuxt/DEaY_uvR.js +1 -0
  42. package/.output/public/_nuxt/{DCEyMaN-.js → DNxVTfhe.js} +3 -3
  43. package/.output/public/_nuxt/DT-Wg8r1.js +1 -0
  44. package/.output/public/_nuxt/DTYBfjRY.js +1 -0
  45. package/.output/public/_nuxt/{fQUs58kX2.js → DWcEk1ur2.js} +1 -1
  46. package/.output/public/_nuxt/DXRZPxGs.js +1 -0
  47. package/.output/public/_nuxt/Dhqra7NB.js +1 -0
  48. package/.output/public/_nuxt/DlRO_q5L.js +1 -0
  49. package/.output/public/_nuxt/{C2iWjzEC2.js → DoLasgPj2.js} +1 -1
  50. package/.output/public/_nuxt/{DRq09ZmT.js → DpojD719.js} +1 -1
  51. package/.output/public/_nuxt/Ds8JbqGB.js +1 -0
  52. package/.output/public/_nuxt/{BCipft_k2.js → DsUUYP292.js} +1 -1
  53. package/.output/public/_nuxt/DtBu71ev.js +32 -0
  54. package/.output/public/_nuxt/Dy-mxvXY2.js +1 -0
  55. package/.output/public/_nuxt/DyisHHzD.js +18 -0
  56. package/.output/public/_nuxt/G0qIw7Gq2.js +1 -0
  57. package/.output/public/_nuxt/ORt9oDIy2.js +1 -0
  58. package/.output/public/_nuxt/QoCzfpo2.js +1 -0
  59. package/.output/public/_nuxt/RzXYI9FM.js +23 -0
  60. package/.output/public/_nuxt/TownView.BHLKAjEu.css +1 -0
  61. package/.output/public/_nuxt/VLI2Zy4t.js +5 -0
  62. package/.output/public/_nuxt/_id_.DIxEKj88.css +1 -0
  63. package/.output/public/_nuxt/_id_.DTvjd6VN.css +1 -0
  64. package/.output/public/_nuxt/{_wsId_.COUzMXpP.css → _wsId_.BFyCuUwS.css} +1 -1
  65. package/.output/public/_nuxt/agents.CEbox5-D.css +1 -0
  66. package/.output/public/_nuxt/{ZugRk0CM2.js → arUY5dyq2.js} +2 -2
  67. package/.output/public/_nuxt/builds/latest.json +1 -1
  68. package/.output/public/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json +1 -0
  69. package/.output/public/_nuxt/channel-templates.De5ZvrGz.css +1 -0
  70. package/.output/public/_nuxt/d_Sz9KGm.js +1 -0
  71. package/.output/public/_nuxt/daq.6IrhVVfy.css +1 -0
  72. package/.output/public/_nuxt/dcw.DcDjwvqv.css +1 -0
  73. package/.output/public/_nuxt/default.BbgdTDCk.css +1 -0
  74. package/.output/public/_nuxt/{CblLEiCZ.js → eHYnGew0.js} +3 -3
  75. package/.output/public/_nuxt/eUGyJdiT.js +1 -0
  76. package/.output/public/_nuxt/{entry.5qf6EqfN.css → entry.B03HBJGC.css} +1 -1
  77. package/.output/public/_nuxt/{Cyk3du4K2.js → kZV5TQvh2.js} +1 -1
  78. package/.output/public/_nuxt/kkEthL84.js +2 -0
  79. package/.output/public/_nuxt/logs.BO-BSyjm.css +1 -0
  80. package/.output/public/_nuxt/{D4qXvjuV.js → niDwBOZW.js} +2 -2
  81. package/.output/public/_nuxt/permissions.CwZo6t1V.css +1 -0
  82. package/.output/public/_nuxt/plugins.Clsky_kl.css +1 -0
  83. package/.output/public/_nuxt/rqZ-1SoP.js +2 -0
  84. package/.output/public/_nuxt/settings.BqMF2nfj.css +1 -0
  85. package/.output/public/_nuxt/tJuVvBSl.js +1 -0
  86. package/.output/public/_nuxt/teams.CUMnbQGf.css +1 -0
  87. package/.output/public/_nuxt/tokens.BPLe9ioQ.css +1 -0
  88. package/.output/public/_nuxt/{Bi6AiCuP.js → vJ4FPb-_.js} +1 -1
  89. package/.output/public/_nuxt/workshop.BIdoGfoC.css +1 -0
  90. package/.output/public/_nuxt/{B7aqqzkY.js → zVkqCZ78.js} +1 -1
  91. package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
  92. package/.output/server/chunks/_/SearchOutlined.mjs +1 -1
  93. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  94. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  95. package/.output/server/chunks/_/nitro.mjs +1614 -1279
  96. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  97. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  98. package/.output/server/chunks/build/Col-biaNnEPf.mjs +1 -1
  99. package/.output/server/chunks/build/{OmpTerminalPanel-COphA1br.mjs → OmpTerminalPanel-Ban3yJZ4.mjs} +4 -5
  100. package/.output/server/chunks/build/OmpTerminalPanel-Ban3yJZ4.mjs.map +1 -0
  101. package/.output/server/chunks/build/{TownView-B5KifIaT.mjs → TownView-CunmEMzS.mjs} +184 -184
  102. package/.output/server/chunks/build/{TownView-B5KifIaT.mjs.map → TownView-CunmEMzS.mjs.map} +1 -1
  103. package/.output/server/chunks/build/{_id_-Ct4Jhvl1.mjs → _id_-CVnMdSeG.mjs} +38 -37
  104. package/.output/server/chunks/build/_id_-CVnMdSeG.mjs.map +1 -0
  105. package/.output/server/chunks/build/{_id_-C-ewLgfl.mjs → _id_-D265Wh_k.mjs} +127 -126
  106. package/.output/server/chunks/build/_id_-D265Wh_k.mjs.map +1 -0
  107. package/.output/server/chunks/build/{_wsId_-CanI_6Su.mjs → _wsId_-eNJmBp05.mjs} +137 -136
  108. package/.output/server/chunks/build/{_wsId_-CanI_6Su.mjs.map → _wsId_-eNJmBp05.mjs.map} +1 -1
  109. package/.output/server/chunks/build/{agents-DSOptxXA.mjs → agents-B10wmFri.mjs} +24 -23
  110. package/.output/server/chunks/build/agents-B10wmFri.mjs.map +1 -0
  111. package/.output/server/chunks/build/alert-qJnjyRcP.mjs +1 -1
  112. package/.output/server/chunks/build/api-error-dul30BYQ.mjs +47 -0
  113. package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -0
  114. package/.output/server/chunks/build/button-DEcZFcqN.mjs +2 -2
  115. package/.output/server/chunks/build/{card-Dipvaykh.mjs → card-CCPQoKlh.mjs} +4 -4
  116. package/.output/server/chunks/build/{card-Dipvaykh.mjs.map → card-CCPQoKlh.mjs.map} +1 -1
  117. package/.output/server/chunks/build/{channel-templates-BK0KuPOd.mjs → channel-templates-CpWxVk5A.mjs} +29 -28
  118. package/.output/server/chunks/build/channel-templates-CpWxVk5A.mjs.map +1 -0
  119. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs → checkbox-Dv1kjaUZ.mjs} +3 -3
  120. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs.map → checkbox-Dv1kjaUZ.mjs.map} +1 -1
  121. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +1 -1
  122. package/.output/server/chunks/build/{daq-D9RA_uze.mjs → daq-DxaXk_8N.mjs} +114 -114
  123. package/.output/server/chunks/build/daq-DxaXk_8N.mjs.map +1 -0
  124. package/.output/server/chunks/build/{dcw-BTM5YU-B.mjs → dcw-DqjHrl5Z.mjs} +48 -47
  125. package/.output/server/chunks/build/dcw-DqjHrl5Z.mjs.map +1 -0
  126. package/.output/server/chunks/build/{default-BfWGTlbj.mjs → default-YcUHc1Ev.mjs} +34 -26
  127. package/.output/server/chunks/build/{default-BfWGTlbj.mjs.map → default-YcUHc1Ev.mjs.map} +1 -1
  128. package/.output/server/chunks/build/drawer-Cmh90erI.mjs +1 -1
  129. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +2 -2
  130. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +554 -0
  131. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +1 -0
  132. package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +1 -1
  133. package/.output/server/chunks/build/{input-sf_BT6o6.mjs → input-DxDqeyQW.mjs} +5 -553
  134. package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +1 -0
  135. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-CZ3ZrCsy.mjs} +3 -3
  136. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-CZ3ZrCsy.mjs.map} +1 -1
  137. package/.output/server/chunks/build/{logs-Dyk0I2I9.mjs → logs-Co854R4y.mjs} +40 -40
  138. package/.output/server/chunks/build/{logs-Dyk0I2I9.mjs.map → logs-Co854R4y.mjs.map} +1 -1
  139. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
  140. package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
  141. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs → monitor-miqq9xHB.mjs} +11 -11
  142. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs.map → monitor-miqq9xHB.mjs.map} +1 -1
  143. package/.output/server/chunks/build/{pages-DR2bzczM.mjs → pages-DPC1Vp6w.mjs} +6 -5
  144. package/.output/server/chunks/build/pages-DPC1Vp6w.mjs.map +1 -0
  145. package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs +534 -0
  146. package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs.map +1 -0
  147. package/.output/server/chunks/build/{plugins-DnOBIWGg.mjs → plugins-D84mvK9G.mjs} +27 -25
  148. package/.output/server/chunks/build/plugins-D84mvK9G.mjs.map +1 -0
  149. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +2 -2
  150. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +1 -1
  151. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs → segmented-ChmQZwz6.mjs} +5 -4
  152. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs.map → segmented-ChmQZwz6.mjs.map} +1 -1
  153. package/.output/server/chunks/build/select-D-CeE5vY.mjs +1 -1
  154. package/.output/server/chunks/build/{settings-DA8IkGLo.mjs → settings-BPBll_7K.mjs} +28 -26
  155. package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +1 -0
  156. package/.output/server/chunks/build/space-CCBYAkXt.mjs +2 -2
  157. package/.output/server/chunks/build/spin-HVY81X_L.mjs +1 -1
  158. package/.output/server/chunks/build/switch-CelRXpcy.mjs +2 -2
  159. package/.output/server/chunks/build/{table-Cswq-l2r.mjs → table-BtksyDlQ.mjs} +5 -5
  160. package/.output/server/chunks/build/{table-Cswq-l2r.mjs.map → table-BtksyDlQ.mjs.map} +1 -1
  161. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs → tabs-DQv-_-R6.mjs} +3 -3
  162. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs.map → tabs-DQv-_-R6.mjs.map} +1 -1
  163. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-A0tZ2Ouq.mjs} +4 -4
  164. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs.map → tag-A0tZ2Ouq.mjs.map} +1 -1
  165. package/.output/server/chunks/build/{teams-BhSKBBBM.mjs → teams-CNflUtPh.mjs} +25 -24
  166. package/.output/server/chunks/build/teams-CNflUtPh.mjs.map +1 -0
  167. package/.output/server/chunks/build/{tokens-D_eyxmcv.mjs → tokens-CZpnEDVf.mjs} +27 -26
  168. package/.output/server/chunks/build/tokens-CZpnEDVf.mjs.map +1 -0
  169. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -1
  170. package/.output/server/chunks/build/{town-DPtOPRRO.mjs → town-BbaR-8io.mjs} +10 -10
  171. package/.output/server/chunks/build/{town-DPtOPRRO.mjs.map → town-BbaR-8io.mjs.map} +1 -1
  172. package/.output/server/chunks/build/{useDaqStream-hwkhJHFU.mjs → useDaqStream-BkmyQT06.mjs} +36 -24
  173. package/.output/server/chunks/build/useDaqStream-BkmyQT06.mjs.map +1 -0
  174. package/.output/server/chunks/build/{useDcwStream-Bdew_yrr.mjs → useDcwStream-DWVoU96J.mjs} +63 -48
  175. package/.output/server/chunks/build/useDcwStream-DWVoU96J.mjs.map +1 -0
  176. package/.output/server/chunks/build/{useDeviceTwins-C6EBg9oN.mjs → useDeviceTwins-34WGk9aN.mjs} +4 -3
  177. package/.output/server/chunks/build/useDeviceTwins-34WGk9aN.mjs.map +1 -0
  178. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -1
  179. package/.output/server/chunks/build/{useOpsLog-DdCqKVVG.mjs → useOpsLog-C9zTzYof.mjs} +30 -17
  180. package/.output/server/chunks/build/useOpsLog-C9zTzYof.mjs.map +1 -0
  181. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +1 -1
  182. package/.output/server/chunks/build/useWorkshopApi-D2gq06N2.mjs +1 -1
  183. package/.output/server/chunks/build/{useWorkshopWs-B3j5wIAK.mjs → useWorkshopWs-CprkZEdq.mjs} +2 -3
  184. package/.output/server/chunks/build/useWorkshopWs-CprkZEdq.mjs.map +1 -0
  185. package/.output/server/chunks/build/{users-CmVvb1oq.mjs → users-D6RNylrW.mjs} +10 -10
  186. package/.output/server/chunks/build/{users-CmVvb1oq.mjs.map → users-D6RNylrW.mjs.map} +1 -1
  187. package/.output/server/chunks/build/{workshop-D5CQj2A8.mjs → workshop-Crsai2Y9.mjs} +27 -26
  188. package/.output/server/chunks/build/workshop-Crsai2Y9.mjs.map +1 -0
  189. package/.output/server/chunks/build/{workspaces-IfORCDJE.mjs → workspaces-BuydxM-3.mjs} +2 -3
  190. package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +1 -0
  191. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  192. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  193. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  195. package/.output/server/chunks/routes/api/metrics.mjs +1 -1
  196. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  197. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
  198. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
  199. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
  202. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  203. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
  207. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  208. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  209. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  210. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  211. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  212. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  215. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  217. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  218. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  219. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +19 -8
  229. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  230. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
  232. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
  233. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -2
  242. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -2
  244. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +3 -3
  247. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
  252. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
  257. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
  265. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
  274. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
  276. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  279. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +7 -6
  280. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  281. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +5 -4
  282. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  283. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +5 -4
  284. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +5 -4
  286. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  287. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
  288. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
  289. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +5 -4
  290. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +5 -2
  292. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  293. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
  294. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +3 -2
  295. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
  297. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
  298. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
  299. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
  300. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
  301. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
  302. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +7 -6
  303. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
  305. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
  306. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +5 -4
  307. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +4 -3
  309. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
  311. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
  312. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
  313. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
  314. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +4 -4
  315. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +8 -4
  317. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +4 -4
  319. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
  321. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
  322. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
  323. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
  324. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -4
  325. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
  327. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +7 -3
  328. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +3 -2
  330. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +3 -2
  332. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
  334. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
  335. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
  336. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
  337. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
  338. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
  339. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
  340. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
  341. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
  342. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
  343. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
  344. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  345. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -2
  346. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
  347. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +5 -3
  348. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  349. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
  350. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
  351. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
  352. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
  353. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  354. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  355. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
  356. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
  357. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
  359. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
  360. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -2
  361. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +2 -2
  362. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
  363. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  364. package/.output/server/chunks/routes/api/workshop/index.put.mjs +41 -0
  365. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -0
  366. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +4 -3
  367. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +27 -0
  369. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -0
  370. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  373. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +4 -4
  374. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  375. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -4
  376. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  377. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
  378. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +18 -11
  379. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
  381. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  382. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
  383. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  385. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +24 -12
  386. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  387. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  388. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +12 -7
  389. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
  391. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
  392. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
  393. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +4 -4
  394. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  395. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +4 -4
  396. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  397. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
  398. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
  399. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
  400. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
  401. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
  402. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  403. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  404. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
  405. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  406. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
  407. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  408. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
  409. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
  410. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
  411. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  412. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
  413. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
  414. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
  415. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  416. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
  417. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  418. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
  419. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
  420. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
  421. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
  422. package/.output/server/chunks/routes/renderer.mjs +3 -3
  423. package/.output/server/chunks/virtual/entry.mjs +303 -37
  424. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  425. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  426. package/.output/server/index.mjs +1 -1
  427. package/.output/server/package.json +1 -1
  428. package/README-zh.md +15 -0
  429. package/README.md +20 -0
  430. package/app/components/AppHeader.vue +1 -1
  431. package/app/components/AppSidebar.vue +7 -1
  432. package/app/components/workshop/A2aRpcDebugger.vue +1 -1
  433. package/app/components/workshop/AgentInspectorDrawer.vue +3 -3
  434. package/app/components/workshop/AgentLanesView.vue +6 -6
  435. package/app/components/workshop/AssetLibrary.vue +2 -2
  436. package/app/components/workshop/ChannelSessionList.vue +5 -5
  437. package/app/components/workshop/Composer.vue +1 -1
  438. package/app/components/workshop/DeviceTwinPanel.vue +2 -2
  439. package/app/components/workshop/TaskBoardView.vue +1 -1
  440. package/app/components/workshop/TaskInspectorDrawer.vue +2 -2
  441. package/app/components/workshop/town/TownView.vue +23 -23
  442. package/app/composables/workshop/apiClient.ts +103 -95
  443. package/app/composables/workshop/useCharacterAssets.ts +1 -1
  444. package/app/composables/workshop/useDaqStream.ts +36 -22
  445. package/app/composables/workshop/useDcwStream.ts +23 -6
  446. package/app/composables/workshop/useDeviceTwins.ts +1 -1
  447. package/app/composables/workshop/useOpsLog.ts +28 -15
  448. package/app/composables/workshop/useSceneLayouts.ts +1 -1
  449. package/app/composables/workshop/useWorkshopWs.ts +11 -2
  450. package/app/pages/daq/[id].vue +1 -1
  451. package/app/pages/daq/index.vue +8 -8
  452. package/app/pages/dcw/[id].vue +13 -13
  453. package/app/pages/dcw/index.vue +7 -7
  454. package/app/pages/logs/index.vue +1 -1
  455. package/app/pages/permissions/index.vue +327 -0
  456. package/app/pages/plugins/index.vue +14 -6
  457. package/app/pages/settings.vue +4 -2
  458. package/app/pages/tokens.vue +3 -3
  459. package/app/pages/workshop/agents.vue +2 -2
  460. package/app/pages/workshop/channel-templates.vue +3 -3
  461. package/app/pages/workshop/index.vue +4 -4
  462. package/app/pages/workshop/teams.vue +3 -3
  463. package/app/plugins/http.ts +18 -2
  464. package/app/plugins/session-restore.client.ts +7 -2
  465. package/app/stores/workshop/user.ts +14 -1
  466. package/app/utils/api-error.ts +75 -0
  467. package/cli/commands/plugin.mjs +2 -2
  468. package/config.yml +1 -1
  469. package/i18n/locales/en.ts +53 -3
  470. package/i18n/locales/zh-CN.ts +53 -3
  471. package/package.json +1 -1
  472. package/scripts/_dbg-acc-1-setup.mjs +57 -0
  473. package/scripts/_dbg-acc-2-diag.mjs +14 -0
  474. package/scripts/_dbg-acc-2-intervals.mjs +81 -0
  475. package/scripts/_dbg-acc-3-daq.mjs +48 -0
  476. package/scripts/_dbg-acc-4-team.mjs +92 -0
  477. package/scripts/_dbg-acc-5-visual.mjs +63 -0
  478. package/scripts/_dbg-acc-5b-ws-town.mjs +18 -0
  479. package/scripts/_dbg-acc-5c-town.mjs +12 -0
  480. package/scripts/_dbg-acc-6-i18n.mjs +19 -0
  481. package/scripts/_dbg-audit-neg-e2e.mjs +64 -0
  482. package/scripts/_dbg-final-features.mjs +155 -0
  483. package/scripts/_dbg-final-fixups.mjs +62 -0
  484. package/scripts/_dbg-final-visual.mjs +29 -0
  485. package/scripts/_dbg-interval-config.mjs +17 -6
  486. package/scripts/_dbg-perms-e2e.mjs +102 -0
  487. package/scripts/_dbg-perms-visual.mjs +36 -0
  488. package/scripts/_dbg-plugins-e2e.mjs +101 -0
  489. package/scripts/_dbg-protocol-matrix.mjs +16 -0
  490. package/scripts/_dbg-repo-setup-verify.mjs +31 -0
  491. package/scripts/_dbg-setup-e2e.mjs +1 -1
  492. package/sdk/api.mjs +117 -101
  493. package/sdk/context.mjs +240 -219
  494. package/sdk/hooks.mjs +105 -103
  495. package/sdk/index.d.mts +142 -135
  496. package/sdk/lifecycle.mjs +26 -25
  497. package/server/api/workshop/agent-tools/bindings/index.post.ts +40 -20
  498. package/server/api/workshop/daq/[id]/bind.post.ts +5 -2
  499. package/server/api/workshop/daq/[id]/frames/content.get.ts +4 -1
  500. package/server/api/workshop/daq/[id]/frames.get.ts +4 -1
  501. package/server/api/workshop/daq/[id]/samples.get.ts +4 -1
  502. package/server/api/workshop/daq/[id].patch.ts +3 -0
  503. package/server/api/workshop/daq/alarms/[id]/ack.post.ts +20 -15
  504. package/server/api/workshop/daq/controller.post.ts +2 -0
  505. package/server/api/workshop/daq/index.get.ts +5 -3
  506. package/server/api/workshop/daq/index.post.ts +2 -2
  507. package/server/api/workshop/dcw/[id]/bind.post.ts +20 -17
  508. package/server/api/workshop/dcw/[id]/test.post.ts +18 -15
  509. package/server/api/workshop/dcw/[id]/write.post.ts +3 -0
  510. package/server/api/workshop/dcw/index.get.ts +22 -9
  511. package/server/api/workshop/dcw/line/query.get.ts +38 -31
  512. package/server/api/workshop/dcw/lines/[id]/start.post.ts +3 -0
  513. package/server/api/workshop/dcw/lines/[id]/stop.post.ts +3 -0
  514. package/server/api/workshop/dcw/lines/index.get.ts +8 -2
  515. package/server/api/workshop/dcw/lines/index.post.ts +2 -2
  516. package/server/api/workshop/dcw/products/index.post.ts +16 -16
  517. package/server/api/workshop/dcw/runs/[id]/data.get.ts +20 -15
  518. package/server/api/workshop/dcw/runs/index.get.ts +13 -11
  519. package/server/api/workshop/permissions/index.get.ts +30 -0
  520. package/server/api/workshop/permissions/index.put.ts +29 -0
  521. package/server/api/workshop/plugins/[name]/disable.post.ts +5 -3
  522. package/server/api/workshop/plugins/[name]/enable.post.ts +5 -3
  523. package/server/api/workshop/ws.ts +18 -6
  524. package/server/data/daqs.json +90 -46
  525. package/server/data/dcw-lines.json +21 -0
  526. package/server/data/dcw-products.json +140 -0
  527. package/server/data/dcw-recipes.json +506 -0
  528. package/server/data/dcw-rollback.json +281 -6
  529. package/server/data/dcw-runs.json +1374 -1257
  530. package/server/data/dcw-writes.json +312 -0
  531. package/server/data/dcws.json +1165 -477
  532. package/server/data/line-runs.json +26 -6
  533. package/server/plugins/backup.ts +119 -116
  534. package/server/repositories/user.repository.ts +86 -6
  535. package/server/services/system-config.ts +5 -0
  536. package/server/services/user.service.ts +5 -3
  537. package/server/services/workshop/daq/bus/index.ts +5 -3
  538. package/server/services/workshop/daq/bus/inproc.adapter.ts +12 -3
  539. package/server/services/workshop/daq/bus/mqtt.adapter.ts +13 -0
  540. package/server/services/workshop/daq/bus/queue-port.ts +2 -0
  541. package/server/services/workshop/daq/daq-controller.ts +18 -1
  542. package/server/services/workshop/daq/storage/sqlite.adapter.ts +10 -5
  543. package/server/services/workshop/db/ops.repo.ts +6 -0
  544. package/server/services/workshop/dcw/dcw-controller.ts +10 -2
  545. package/server/services/workshop/permissions.ts +79 -0
  546. package/server/services/workshop/plugins/host.mjs +40 -2
  547. package/server/services/workshop/scene-events.ts +25 -1
  548. package/server/services/workshop/settings.ts +10 -0
  549. package/shared/config/single-instance.mjs +24 -0
  550. package/shared/daq-protocol.ts +2 -0
  551. package/.output/public/_nuxt/2LwEn9gX.js +0 -2
  552. package/.output/public/_nuxt/3612gD2V.js +0 -32
  553. package/.output/public/_nuxt/8eIQAVlb.js +0 -1
  554. package/.output/public/_nuxt/Ah9qOv1m.js +0 -1
  555. package/.output/public/_nuxt/B4Fia4FB.js +0 -3
  556. package/.output/public/_nuxt/BH0Z05CS.js +0 -1
  557. package/.output/public/_nuxt/BJ-fxrSw.js +0 -1
  558. package/.output/public/_nuxt/BJvGPTpC.js +0 -1
  559. package/.output/public/_nuxt/BVZjSVs2.js +0 -1
  560. package/.output/public/_nuxt/BVzDoF8t.js +0 -1
  561. package/.output/public/_nuxt/BjVLsC3M.js +0 -1
  562. package/.output/public/_nuxt/BnVoQ74r.js +0 -1
  563. package/.output/public/_nuxt/Bnp4vIAf.js +0 -1
  564. package/.output/public/_nuxt/Bt_HDizI.js +0 -5
  565. package/.output/public/_nuxt/Bu-P92Pe.js +0 -18
  566. package/.output/public/_nuxt/ButLXkjo.js +0 -2
  567. package/.output/public/_nuxt/By-LNp3k.js +0 -1
  568. package/.output/public/_nuxt/CGdPdJPP.js +0 -1
  569. package/.output/public/_nuxt/CRGlf1Gb.js +0 -1
  570. package/.output/public/_nuxt/CS8R0_J3.js +0 -1
  571. package/.output/public/_nuxt/CUxV8Bw_.js +0 -1
  572. package/.output/public/_nuxt/Cd15nPnG2.js +0 -1
  573. package/.output/public/_nuxt/CvbHIGQY2.js +0 -1
  574. package/.output/public/_nuxt/DNJSkm3Q.js +0 -1
  575. package/.output/public/_nuxt/DNzaswei.js +0 -1
  576. package/.output/public/_nuxt/DXK1U43I.js +0 -1
  577. package/.output/public/_nuxt/Dc46i75T.js +0 -14
  578. package/.output/public/_nuxt/Dk6pq9JB2.js +0 -1
  579. package/.output/public/_nuxt/Do88WZG2.js +0 -23
  580. package/.output/public/_nuxt/Du-eSpo2.js +0 -1
  581. package/.output/public/_nuxt/GP2wXyuY.js +0 -1
  582. package/.output/public/_nuxt/NIM0Wglj2.js +0 -1
  583. package/.output/public/_nuxt/PQLnLxYe.js +0 -1
  584. package/.output/public/_nuxt/R_Wv_Nd9.js +0 -1
  585. package/.output/public/_nuxt/TownView.Bt33bo1M.css +0 -1
  586. package/.output/public/_nuxt/_id_.BzKMZnLe.css +0 -1
  587. package/.output/public/_nuxt/_id_.CbpDAWRh.css +0 -1
  588. package/.output/public/_nuxt/agents.BlejnOOC.css +0 -1
  589. package/.output/public/_nuxt/builds/meta/e5bb1803-86d9-43b3-85be-dc787dc9a978.json +0 -1
  590. package/.output/public/_nuxt/channel-templates.lkqEYlWY.css +0 -1
  591. package/.output/public/_nuxt/daq.zZ8GR433.css +0 -1
  592. package/.output/public/_nuxt/dcw.C46dGiF_.css +0 -1
  593. package/.output/public/_nuxt/default.V3_hUJq1.css +0 -1
  594. package/.output/public/_nuxt/eHGLpQSg2.js +0 -1
  595. package/.output/public/_nuxt/logs.DaIsHWZE.css +0 -1
  596. package/.output/public/_nuxt/p7wSGMtc.js +0 -1
  597. package/.output/public/_nuxt/plugins.FTm0PcEe.css +0 -1
  598. package/.output/public/_nuxt/settings.DeRNNUcP.css +0 -1
  599. package/.output/public/_nuxt/tRBT-plo.js +0 -1
  600. package/.output/public/_nuxt/teams.B8JNbUZg.css +0 -1
  601. package/.output/public/_nuxt/tokens.CWOTXM-Z.css +0 -1
  602. package/.output/public/_nuxt/ubPfs9mQ.js +0 -1
  603. package/.output/public/_nuxt/workshop.3kAcLB_M.css +0 -1
  604. package/.output/server/chunks/build/OmpTerminalPanel-COphA1br.mjs.map +0 -1
  605. package/.output/server/chunks/build/_id_-C-ewLgfl.mjs.map +0 -1
  606. package/.output/server/chunks/build/_id_-Ct4Jhvl1.mjs.map +0 -1
  607. package/.output/server/chunks/build/agents-DSOptxXA.mjs.map +0 -1
  608. package/.output/server/chunks/build/channel-templates-BK0KuPOd.mjs.map +0 -1
  609. package/.output/server/chunks/build/daq-D9RA_uze.mjs.map +0 -1
  610. package/.output/server/chunks/build/dcw-BTM5YU-B.mjs.map +0 -1
  611. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
  612. package/.output/server/chunks/build/pages-DR2bzczM.mjs.map +0 -1
  613. package/.output/server/chunks/build/plugins-DnOBIWGg.mjs.map +0 -1
  614. package/.output/server/chunks/build/settings-DA8IkGLo.mjs.map +0 -1
  615. package/.output/server/chunks/build/teams-BhSKBBBM.mjs.map +0 -1
  616. package/.output/server/chunks/build/tokens-D_eyxmcv.mjs.map +0 -1
  617. package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs.map +0 -1
  618. package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs.map +0 -1
  619. package/.output/server/chunks/build/useDeviceTwins-C6EBg9oN.mjs.map +0 -1
  620. package/.output/server/chunks/build/useOpsLog-DdCqKVVG.mjs.map +0 -1
  621. package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +0 -1
  622. package/.output/server/chunks/build/user-Dk-ytEUV.mjs +0 -140
  623. package/.output/server/chunks/build/user-Dk-ytEUV.mjs.map +0 -1
  624. package/.output/server/chunks/build/workshop-D5CQj2A8.mjs.map +0 -1
  625. package/.output/server/chunks/build/workspaces-IfORCDJE.mjs.map +0 -1
  626. /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
  627. /package/.output/public/_nuxt/{Cno6kYiO2.js → Cno6kYiO.js} +0 -0
@@ -17,9 +17,9 @@
17
17
  "posZ": 1360,
18
18
  "lineId": "ln-af002514",
19
19
  "value": 182,
20
- "readValue": 180,
21
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
22
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
20
+ "readValue": 170,
21
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
22
+ "lastReadError": null,
23
23
  "lastAckAt": "2026-09-03T11:18:01.215Z",
24
24
  "lastWriteAt": "2026-09-03T11:18:01.215Z",
25
25
  "state": "ok",
@@ -41,13 +41,13 @@
41
41
  "deviceBindingId": null,
42
42
  "driverConfig": {},
43
43
  "lineId": "ln-17b2d0ae",
44
- "value": 162,
45
- "readValue": 180,
46
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
47
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
48
- "lastAckAt": "2026-08-30T10:04:50.179Z",
49
- "lastWriteAt": "2026-08-30T10:04:50.179Z",
50
- "state": "idle",
44
+ "value": 170,
45
+ "readValue": 170,
46
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
47
+ "lastReadError": null,
48
+ "lastAckAt": "2026-09-06T13:46:26.226+08:00",
49
+ "lastWriteAt": "2026-09-06T13:46:26.226+08:00",
50
+ "state": "ok",
51
51
  "lastError": null,
52
52
  "createdAt": "2026-08-29T03:30:57.528Z"
53
53
  },
@@ -69,9 +69,9 @@
69
69
  "posZ": 1360,
70
70
  "lineId": "ln-af002514",
71
71
  "value": 0.92,
72
- "readValue": 180,
73
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
74
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
72
+ "readValue": 170,
73
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
74
+ "lastReadError": null,
75
75
  "lastAckAt": "2026-09-03T11:18:01.287Z",
76
76
  "lastWriteAt": "2026-09-03T11:18:01.287Z",
77
77
  "state": "ok",
@@ -94,9 +94,9 @@
94
94
  "driverConfig": {},
95
95
  "lineId": "ln-9569b340",
96
96
  "value": 182,
97
- "readValue": 180,
98
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
99
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
97
+ "readValue": 170,
98
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
99
+ "lastReadError": null,
100
100
  "lastAckAt": "2026-08-29T04:36:21.159Z",
101
101
  "lastWriteAt": "2026-08-29T04:36:21.159Z",
102
102
  "state": "idle",
@@ -119,9 +119,9 @@
119
119
  "driverConfig": {},
120
120
  "lineId": "ln-52abf49b",
121
121
  "value": 182,
122
- "readValue": 180,
123
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
124
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
122
+ "readValue": 170,
123
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
124
+ "lastReadError": null,
125
125
  "lastAckAt": "2026-08-29T04:37:32.352Z",
126
126
  "lastWriteAt": "2026-08-29T04:37:32.352Z",
127
127
  "state": "idle",
@@ -156,7 +156,7 @@
156
156
  "lineId": "ln-6a48c16d",
157
157
  "value": 182,
158
158
  "readValue": 150,
159
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
159
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
160
160
  "lastReadError": null,
161
161
  "lastAckAt": "2026-08-29T13:16:25.564Z",
162
162
  "lastWriteAt": "2026-08-29T13:16:25.564Z",
@@ -192,7 +192,7 @@
192
192
  "lineId": "ln-feef6e4d",
193
193
  "value": 182,
194
194
  "readValue": 150,
195
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
195
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
196
196
  "lastReadError": null,
197
197
  "lastAckAt": "2026-08-29T14:12:02.609Z",
198
198
  "lastWriteAt": "2026-08-31T14:26:24.124Z",
@@ -229,7 +229,7 @@
229
229
  "semantics": "PROBE-SEM-7741:熔体温度决定塑化均化质量,波动超过4℃将导致制品内应力超标",
230
230
  "value": 180,
231
231
  "readValue": 150,
232
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
232
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
233
233
  "lastReadError": null,
234
234
  "lastAckAt": "2026-08-29T16:55:05.852Z",
235
235
  "lastWriteAt": "2026-08-29T16:55:05.852Z",
@@ -253,9 +253,9 @@
253
253
  "driverConfig": {},
254
254
  "lineId": "",
255
255
  "value": 180,
256
- "readValue": 180,
257
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
258
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
256
+ "readValue": 170,
257
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
258
+ "lastReadError": null,
259
259
  "lastAckAt": "2026-08-30T08:35:56.489Z",
260
260
  "lastWriteAt": "2026-08-30T08:35:56.489Z",
261
261
  "state": "idle",
@@ -290,7 +290,7 @@
290
290
  "lineId": "",
291
291
  "value": 175,
292
292
  "readValue": 150,
293
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
293
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
294
294
  "lastReadError": null,
295
295
  "lastAckAt": "2026-08-30T08:35:56.720Z",
296
296
  "lastWriteAt": "2026-08-30T08:35:56.720Z",
@@ -314,9 +314,9 @@
314
314
  "driverConfig": {},
315
315
  "lineId": "",
316
316
  "value": null,
317
- "readValue": 180,
318
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
319
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
317
+ "readValue": 170,
318
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
319
+ "lastReadError": null,
320
320
  "lastAckAt": null,
321
321
  "lastWriteAt": null,
322
322
  "state": "idle",
@@ -339,9 +339,9 @@
339
339
  "driverConfig": {},
340
340
  "lineId": "",
341
341
  "value": 180,
342
- "readValue": 180,
343
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
344
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
342
+ "readValue": 170,
343
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
344
+ "lastReadError": null,
345
345
  "lastAckAt": "2026-08-30T08:40:09.061Z",
346
346
  "lastWriteAt": "2026-08-30T08:40:09.061Z",
347
347
  "state": "idle",
@@ -376,7 +376,7 @@
376
376
  "lineId": "",
377
377
  "value": 175,
378
378
  "readValue": 150,
379
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
379
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
380
380
  "lastReadError": null,
381
381
  "lastAckAt": "2026-08-30T08:40:09.232Z",
382
382
  "lastWriteAt": "2026-08-30T08:40:09.232Z",
@@ -400,9 +400,9 @@
400
400
  "driverConfig": {},
401
401
  "lineId": "",
402
402
  "value": null,
403
- "readValue": 180,
404
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
405
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
403
+ "readValue": 170,
404
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
405
+ "lastReadError": null,
406
406
  "lastAckAt": null,
407
407
  "lastWriteAt": null,
408
408
  "state": "idle",
@@ -437,7 +437,7 @@
437
437
  "lineId": "ln-af002514",
438
438
  "value": 180,
439
439
  "readValue": 150,
440
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
440
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
441
441
  "lastReadError": null,
442
442
  "lastAckAt": "2026-08-31T04:09:38.997Z",
443
443
  "lastWriteAt": "2026-08-31T04:09:38.997Z",
@@ -461,9 +461,9 @@
461
461
  "driverConfig": {},
462
462
  "lineId": "ln-3aff4d75",
463
463
  "value": 182,
464
- "readValue": 180,
465
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
466
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
464
+ "readValue": 170,
465
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
466
+ "lastReadError": null,
467
467
  "lastAckAt": "2026-08-31T15:03:29.913Z",
468
468
  "lastWriteAt": "2026-08-31T15:03:29.913Z",
469
469
  "state": "ok",
@@ -486,9 +486,9 @@
486
486
  "driverConfig": {},
487
487
  "lineId": "ln-427909b2",
488
488
  "value": 179,
489
- "readValue": 180,
490
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
491
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
489
+ "readValue": 170,
490
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
491
+ "lastReadError": null,
492
492
  "lastAckAt": "2026-08-31T16:15:59.857Z",
493
493
  "lastWriteAt": "2026-08-31T16:15:59.857Z",
494
494
  "state": "ok",
@@ -511,9 +511,9 @@
511
511
  "driverConfig": {},
512
512
  "lineId": "ln-427909b2",
513
513
  "value": 173,
514
- "readValue": 180,
515
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
516
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
514
+ "readValue": 170,
515
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
516
+ "lastReadError": null,
517
517
  "lastAckAt": "2026-08-31T16:16:00.128Z",
518
518
  "lastWriteAt": "2026-08-31T16:16:00.128Z",
519
519
  "state": "ok",
@@ -536,9 +536,9 @@
536
536
  "driverConfig": {},
537
537
  "lineId": "ln-29c185e7",
538
538
  "value": 182,
539
- "readValue": 180,
540
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
541
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
539
+ "readValue": 170,
540
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
541
+ "lastReadError": null,
542
542
  "lastAckAt": "2026-08-31T16:20:13.708Z",
543
543
  "lastWriteAt": "2026-08-31T16:20:13.708Z",
544
544
  "state": "ok",
@@ -561,9 +561,9 @@
561
561
  "driverConfig": {},
562
562
  "lineId": "ln-29c185e7",
563
563
  "value": 320,
564
- "readValue": 180,
565
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
566
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
564
+ "readValue": 170,
565
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
566
+ "lastReadError": null,
567
567
  "lastAckAt": "2026-08-31T16:20:13.858Z",
568
568
  "lastWriteAt": "2026-08-31T16:20:13.858Z",
569
569
  "state": "ok",
@@ -586,9 +586,9 @@
586
586
  "driverConfig": {},
587
587
  "lineId": "ln-d41a0d5e",
588
588
  "value": 175,
589
- "readValue": 180,
590
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
591
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
589
+ "readValue": 170,
590
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
591
+ "lastReadError": null,
592
592
  "lastAckAt": "2026-08-31T16:22:50.138Z",
593
593
  "lastWriteAt": "2026-08-31T16:22:50.138Z",
594
594
  "state": "ok",
@@ -611,9 +611,9 @@
611
611
  "driverConfig": {},
612
612
  "lineId": "ln-d41a0d5e",
613
613
  "value": 173,
614
- "readValue": 180,
615
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
616
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
614
+ "readValue": 170,
615
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
616
+ "lastReadError": null,
617
617
  "lastAckAt": "2026-08-31T16:22:49.717Z",
618
618
  "lastWriteAt": "2026-08-31T16:22:49.717Z",
619
619
  "state": "ok",
@@ -636,9 +636,9 @@
636
636
  "driverConfig": {},
637
637
  "lineId": "ln-4d38b02c",
638
638
  "value": 176,
639
- "readValue": 180,
640
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
641
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
639
+ "readValue": 170,
640
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
641
+ "lastReadError": null,
642
642
  "lastAckAt": "2026-08-31T16:23:16.771Z",
643
643
  "lastWriteAt": "2026-08-31T16:23:16.771Z",
644
644
  "state": "ok",
@@ -661,9 +661,9 @@
661
661
  "driverConfig": {},
662
662
  "lineId": "ln-2d1adacd",
663
663
  "value": 175,
664
- "readValue": 180,
665
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
666
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
664
+ "readValue": 170,
665
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
666
+ "lastReadError": null,
667
667
  "lastAckAt": "2026-08-31T16:24:30.386Z",
668
668
  "lastWriteAt": "2026-08-31T16:24:30.386Z",
669
669
  "state": "ok",
@@ -686,9 +686,9 @@
686
686
  "driverConfig": {},
687
687
  "lineId": "ln-2d1adacd",
688
688
  "value": 173,
689
- "readValue": 180,
690
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
691
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
689
+ "readValue": 170,
690
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
691
+ "lastReadError": null,
692
692
  "lastAckAt": "2026-08-31T16:24:29.934Z",
693
693
  "lastWriteAt": "2026-08-31T16:24:29.934Z",
694
694
  "state": "ok",
@@ -711,9 +711,9 @@
711
711
  "driverConfig": {},
712
712
  "lineId": "ln-572ac0ff",
713
713
  "value": 175,
714
- "readValue": 180,
715
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
716
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
714
+ "readValue": 170,
715
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
716
+ "lastReadError": null,
717
717
  "lastAckAt": "2026-08-31T16:27:33.818Z",
718
718
  "lastWriteAt": "2026-08-31T16:27:33.818Z",
719
719
  "state": "ok",
@@ -736,9 +736,9 @@
736
736
  "driverConfig": {},
737
737
  "lineId": "ln-572ac0ff",
738
738
  "value": 173,
739
- "readValue": 180,
740
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
741
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
739
+ "readValue": 170,
740
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
741
+ "lastReadError": null,
742
742
  "lastAckAt": "2026-08-31T16:27:33.415Z",
743
743
  "lastWriteAt": "2026-08-31T16:27:33.415Z",
744
744
  "state": "ok",
@@ -761,9 +761,9 @@
761
761
  "driverConfig": {},
762
762
  "lineId": "ln-f8fee4c7",
763
763
  "value": null,
764
- "readValue": 180,
765
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
766
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
764
+ "readValue": 170,
765
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
766
+ "lastReadError": null,
767
767
  "lastAckAt": null,
768
768
  "lastWriteAt": null,
769
769
  "state": "idle",
@@ -786,9 +786,9 @@
786
786
  "driverConfig": {},
787
787
  "lineId": "ln-f8fee4c7",
788
788
  "value": null,
789
- "readValue": 180,
790
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
791
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
789
+ "readValue": 170,
790
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
791
+ "lastReadError": null,
792
792
  "lastAckAt": null,
793
793
  "lastWriteAt": null,
794
794
  "state": "idle",
@@ -811,9 +811,9 @@
811
811
  "driverConfig": {},
812
812
  "lineId": "ln-e132a42f",
813
813
  "value": 175,
814
- "readValue": 180,
815
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
816
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
814
+ "readValue": 170,
815
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
816
+ "lastReadError": null,
817
817
  "lastAckAt": "2026-08-31T16:30:22.764Z",
818
818
  "lastWriteAt": "2026-08-31T16:30:22.764Z",
819
819
  "state": "ok",
@@ -836,9 +836,9 @@
836
836
  "driverConfig": {},
837
837
  "lineId": "ln-e132a42f",
838
838
  "value": 173,
839
- "readValue": 180,
840
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
841
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
839
+ "readValue": 170,
840
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
841
+ "lastReadError": null,
842
842
  "lastAckAt": "2026-08-31T16:30:22.362Z",
843
843
  "lastWriteAt": "2026-08-31T16:30:22.362Z",
844
844
  "state": "ok",
@@ -861,9 +861,9 @@
861
861
  "driverConfig": {},
862
862
  "lineId": "ln-f178ca43",
863
863
  "value": 175,
864
- "readValue": 180,
865
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
866
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
864
+ "readValue": 170,
865
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
866
+ "lastReadError": null,
867
867
  "lastAckAt": "2026-08-31T16:30:46.020Z",
868
868
  "lastWriteAt": "2026-08-31T16:30:46.020Z",
869
869
  "state": "ok",
@@ -886,9 +886,9 @@
886
886
  "driverConfig": {},
887
887
  "lineId": "ln-f178ca43",
888
888
  "value": 173,
889
- "readValue": 180,
890
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
891
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
889
+ "readValue": 170,
890
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
891
+ "lastReadError": null,
892
892
  "lastAckAt": "2026-08-31T16:30:45.644Z",
893
893
  "lastWriteAt": "2026-08-31T16:30:45.644Z",
894
894
  "state": "ok",
@@ -911,9 +911,9 @@
911
911
  "driverConfig": {},
912
912
  "lineId": "ln-c9e7ccee",
913
913
  "value": 175,
914
- "readValue": 180,
915
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
916
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
914
+ "readValue": 170,
915
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
916
+ "lastReadError": null,
917
917
  "lastAckAt": "2026-08-31T16:31:39.256Z",
918
918
  "lastWriteAt": "2026-08-31T16:31:39.256Z",
919
919
  "state": "ok",
@@ -936,9 +936,9 @@
936
936
  "driverConfig": {},
937
937
  "lineId": "ln-c9e7ccee",
938
938
  "value": 173,
939
- "readValue": 180,
940
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
941
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
939
+ "readValue": 170,
940
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
941
+ "lastReadError": null,
942
942
  "lastAckAt": "2026-08-31T16:31:38.883Z",
943
943
  "lastWriteAt": "2026-08-31T16:31:38.883Z",
944
944
  "state": "ok",
@@ -963,9 +963,9 @@
963
963
  "posZ": 1070,
964
964
  "lineId": "ln-2398a086",
965
965
  "value": 174,
966
- "readValue": 180,
967
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
968
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
966
+ "readValue": 170,
967
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
968
+ "lastReadError": null,
969
969
  "lastAckAt": "2026-08-31T16:50:16.266Z",
970
970
  "lastWriteAt": "2026-08-31T16:50:16.266Z",
971
971
  "state": "ok",
@@ -988,9 +988,9 @@
988
988
  "driverConfig": {},
989
989
  "lineId": "ln-1b52b78a",
990
990
  "value": 175,
991
- "readValue": 180,
992
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
993
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
991
+ "readValue": 170,
992
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
993
+ "lastReadError": null,
994
994
  "lastAckAt": "2026-09-01T01:32:13.199Z",
995
995
  "lastWriteAt": "2026-09-01T01:32:13.199Z",
996
996
  "state": "ok",
@@ -1013,9 +1013,9 @@
1013
1013
  "driverConfig": {},
1014
1014
  "lineId": "ln-1b52b78a",
1015
1015
  "value": 173,
1016
- "readValue": 180,
1017
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1018
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1016
+ "readValue": 170,
1017
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1018
+ "lastReadError": null,
1019
1019
  "lastAckAt": "2026-09-01T01:32:12.684Z",
1020
1020
  "lastWriteAt": "2026-09-01T01:32:12.684Z",
1021
1021
  "state": "ok",
@@ -1038,9 +1038,9 @@
1038
1038
  "driverConfig": {},
1039
1039
  "lineId": "ln-b689deb1",
1040
1040
  "value": 175,
1041
- "readValue": 180,
1042
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1043
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1041
+ "readValue": 170,
1042
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1043
+ "lastReadError": null,
1044
1044
  "lastAckAt": "2026-09-01T02:24:40.946Z",
1045
1045
  "lastWriteAt": "2026-09-01T02:24:40.946Z",
1046
1046
  "state": "ok",
@@ -1063,9 +1063,9 @@
1063
1063
  "driverConfig": {},
1064
1064
  "lineId": "ln-b689deb1",
1065
1065
  "value": 173,
1066
- "readValue": 180,
1067
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1068
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1066
+ "readValue": 170,
1067
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1068
+ "lastReadError": null,
1069
1069
  "lastAckAt": "2026-09-01T02:24:40.527Z",
1070
1070
  "lastWriteAt": "2026-09-01T02:24:40.527Z",
1071
1071
  "state": "ok",
@@ -1088,9 +1088,9 @@
1088
1088
  "driverConfig": {},
1089
1089
  "lineId": "ln-c377a6bf",
1090
1090
  "value": 175,
1091
- "readValue": 180,
1092
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1093
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1091
+ "readValue": 170,
1092
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1093
+ "lastReadError": null,
1094
1094
  "lastAckAt": "2026-09-01T03:23:18.235Z",
1095
1095
  "lastWriteAt": "2026-09-01T03:23:18.235Z",
1096
1096
  "state": "ok",
@@ -1113,9 +1113,9 @@
1113
1113
  "driverConfig": {},
1114
1114
  "lineId": "ln-9224d3d7",
1115
1115
  "value": 175,
1116
- "readValue": 180,
1117
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1118
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1116
+ "readValue": 170,
1117
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1118
+ "lastReadError": null,
1119
1119
  "lastAckAt": "2026-09-01T05:59:24.065Z",
1120
1120
  "lastWriteAt": "2026-09-01T05:59:24.065Z",
1121
1121
  "state": "ok",
@@ -1138,9 +1138,9 @@
1138
1138
  "driverConfig": {},
1139
1139
  "lineId": "ln-386c53ed",
1140
1140
  "value": 175,
1141
- "readValue": 180,
1142
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1143
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1141
+ "readValue": 170,
1142
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1143
+ "lastReadError": null,
1144
1144
  "lastAckAt": "2026-09-01T06:05:53.065Z",
1145
1145
  "lastWriteAt": "2026-09-01T06:05:53.065Z",
1146
1146
  "state": "ok",
@@ -1163,9 +1163,9 @@
1163
1163
  "driverConfig": {},
1164
1164
  "lineId": "ln-5957f6db",
1165
1165
  "value": 175,
1166
- "readValue": 180,
1167
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1168
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1166
+ "readValue": 170,
1167
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1168
+ "lastReadError": null,
1169
1169
  "lastAckAt": "2026-09-01T06:09:02.150Z",
1170
1170
  "lastWriteAt": "2026-09-01T06:09:02.150Z",
1171
1171
  "state": "ok",
@@ -1188,9 +1188,9 @@
1188
1188
  "driverConfig": {},
1189
1189
  "lineId": "ln-9ec42f08",
1190
1190
  "value": 175,
1191
- "readValue": 180,
1192
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1193
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1191
+ "readValue": 170,
1192
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1193
+ "lastReadError": null,
1194
1194
  "lastAckAt": "2026-09-01T06:13:44.316Z",
1195
1195
  "lastWriteAt": "2026-09-01T06:13:44.316Z",
1196
1196
  "state": "ok",
@@ -1213,9 +1213,9 @@
1213
1213
  "driverConfig": {},
1214
1214
  "lineId": "ln-69e37924",
1215
1215
  "value": 175,
1216
- "readValue": 180,
1217
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1218
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1216
+ "readValue": 170,
1217
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1218
+ "lastReadError": null,
1219
1219
  "lastAckAt": "2026-09-01T06:16:47.470Z",
1220
1220
  "lastWriteAt": "2026-09-01T06:16:47.470Z",
1221
1221
  "state": "ok",
@@ -1238,9 +1238,9 @@
1238
1238
  "driverConfig": {},
1239
1239
  "lineId": "ln-c269e692",
1240
1240
  "value": 175,
1241
- "readValue": 180,
1242
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1243
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1241
+ "readValue": 170,
1242
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1243
+ "lastReadError": null,
1244
1244
  "lastAckAt": "2026-09-01T06:56:05.895Z",
1245
1245
  "lastWriteAt": "2026-09-01T06:56:05.895Z",
1246
1246
  "state": "ok",
@@ -1263,9 +1263,9 @@
1263
1263
  "driverConfig": {},
1264
1264
  "lineId": "ln-229d1637",
1265
1265
  "value": 175,
1266
- "readValue": 180,
1267
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1268
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1266
+ "readValue": 170,
1267
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1268
+ "lastReadError": null,
1269
1269
  "lastAckAt": "2026-09-01T06:57:29.289Z",
1270
1270
  "lastWriteAt": "2026-09-01T06:57:29.289Z",
1271
1271
  "state": "ok",
@@ -1288,9 +1288,9 @@
1288
1288
  "driverConfig": {},
1289
1289
  "lineId": "ln-9546f91f",
1290
1290
  "value": 175,
1291
- "readValue": 180,
1292
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1293
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1291
+ "readValue": 170,
1292
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1293
+ "lastReadError": null,
1294
1294
  "lastAckAt": "2026-09-01T07:00:25.060Z",
1295
1295
  "lastWriteAt": "2026-09-01T07:00:25.060Z",
1296
1296
  "state": "ok",
@@ -1313,9 +1313,9 @@
1313
1313
  "driverConfig": {},
1314
1314
  "lineId": "ln-087aad5b",
1315
1315
  "value": 175,
1316
- "readValue": 180,
1317
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1318
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1316
+ "readValue": 170,
1317
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1318
+ "lastReadError": null,
1319
1319
  "lastAckAt": "2026-09-01T07:09:07.308Z",
1320
1320
  "lastWriteAt": "2026-09-01T07:09:07.308Z",
1321
1321
  "state": "ok",
@@ -1338,9 +1338,9 @@
1338
1338
  "driverConfig": {},
1339
1339
  "lineId": "ln-c1be3295",
1340
1340
  "value": null,
1341
- "readValue": 180,
1342
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1343
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1341
+ "readValue": 170,
1342
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1343
+ "lastReadError": null,
1344
1344
  "lastAckAt": null,
1345
1345
  "lastWriteAt": null,
1346
1346
  "state": "idle",
@@ -1363,9 +1363,9 @@
1363
1363
  "driverConfig": {},
1364
1364
  "lineId": "ln-97d44f8a",
1365
1365
  "value": 175,
1366
- "readValue": 180,
1367
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1368
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1366
+ "readValue": 170,
1367
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1368
+ "lastReadError": null,
1369
1369
  "lastAckAt": "2026-09-01T07:13:44.913Z",
1370
1370
  "lastWriteAt": "2026-09-01T07:13:44.913Z",
1371
1371
  "state": "ok",
@@ -1388,9 +1388,9 @@
1388
1388
  "driverConfig": {},
1389
1389
  "lineId": "ln-a9551770",
1390
1390
  "value": 175,
1391
- "readValue": 180,
1392
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1393
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1391
+ "readValue": 170,
1392
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1393
+ "lastReadError": null,
1394
1394
  "lastAckAt": "2026-09-01T07:15:40.114Z",
1395
1395
  "lastWriteAt": "2026-09-01T07:15:40.114Z",
1396
1396
  "state": "ok",
@@ -1415,9 +1415,9 @@
1415
1415
  "posZ": 1704,
1416
1416
  "lineId": "ln-635c2cfa",
1417
1417
  "value": 174,
1418
- "readValue": 180,
1419
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1420
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1418
+ "readValue": 170,
1419
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1420
+ "lastReadError": null,
1421
1421
  "lastAckAt": "2026-09-01T07:16:43.827Z",
1422
1422
  "lastWriteAt": "2026-09-01T07:16:43.827Z",
1423
1423
  "state": "ok",
@@ -1442,9 +1442,9 @@
1442
1442
  "posZ": 1704,
1443
1443
  "lineId": "ln-6f95b193",
1444
1444
  "value": 174,
1445
- "readValue": 180,
1446
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1447
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1445
+ "readValue": 170,
1446
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1447
+ "lastReadError": null,
1448
1448
  "lastAckAt": "2026-09-01T07:17:39.977Z",
1449
1449
  "lastWriteAt": "2026-09-01T07:17:39.977Z",
1450
1450
  "state": "ok",
@@ -1469,9 +1469,9 @@
1469
1469
  "posZ": 1704,
1470
1470
  "lineId": "ln-b8caafb9",
1471
1471
  "value": 174,
1472
- "readValue": 180,
1473
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1474
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1472
+ "readValue": 170,
1473
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1474
+ "lastReadError": null,
1475
1475
  "lastAckAt": "2026-09-01T07:21:29.346Z",
1476
1476
  "lastWriteAt": "2026-09-01T07:21:29.346Z",
1477
1477
  "state": "ok",
@@ -1496,9 +1496,9 @@
1496
1496
  "posZ": 1704,
1497
1497
  "lineId": "ln-cff04274",
1498
1498
  "value": 174,
1499
- "readValue": 180,
1500
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1501
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1499
+ "readValue": 170,
1500
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1501
+ "lastReadError": null,
1502
1502
  "lastAckAt": "2026-09-01T07:23:03.311Z",
1503
1503
  "lastWriteAt": "2026-09-01T07:23:03.311Z",
1504
1504
  "state": "ok",
@@ -1523,9 +1523,9 @@
1523
1523
  "posZ": 1704,
1524
1524
  "lineId": "ln-4746929d",
1525
1525
  "value": 174,
1526
- "readValue": 180,
1527
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1528
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1526
+ "readValue": 170,
1527
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1528
+ "lastReadError": null,
1529
1529
  "lastAckAt": "2026-09-01T07:28:13.909Z",
1530
1530
  "lastWriteAt": "2026-09-01T07:28:13.909Z",
1531
1531
  "state": "ok",
@@ -1548,9 +1548,9 @@
1548
1548
  "driverConfig": {},
1549
1549
  "lineId": "ln-fd22576a",
1550
1550
  "value": 175,
1551
- "readValue": 180,
1552
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1553
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1551
+ "readValue": 170,
1552
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1553
+ "lastReadError": null,
1554
1554
  "lastAckAt": "2026-09-01T07:28:30.328Z",
1555
1555
  "lastWriteAt": "2026-09-01T07:28:30.328Z",
1556
1556
  "state": "ok",
@@ -1573,9 +1573,9 @@
1573
1573
  "driverConfig": {},
1574
1574
  "lineId": "ln-fd22576a",
1575
1575
  "value": 173,
1576
- "readValue": 180,
1577
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1578
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1576
+ "readValue": 170,
1577
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1578
+ "lastReadError": null,
1579
1579
  "lastAckAt": "2026-09-01T07:28:29.957Z",
1580
1580
  "lastWriteAt": "2026-09-01T07:28:29.957Z",
1581
1581
  "state": "ok",
@@ -1598,9 +1598,9 @@
1598
1598
  "driverConfig": {},
1599
1599
  "lineId": "ln-4b84a228",
1600
1600
  "value": 180,
1601
- "readValue": 180,
1602
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1603
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1601
+ "readValue": 170,
1602
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1603
+ "lastReadError": null,
1604
1604
  "lastAckAt": "2026-09-01T07:28:35.451Z",
1605
1605
  "lastWriteAt": "2026-09-01T07:28:35.451Z",
1606
1606
  "state": "ok",
@@ -1635,7 +1635,7 @@
1635
1635
  "lineId": "",
1636
1636
  "value": 175,
1637
1637
  "readValue": 150,
1638
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1638
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1639
1639
  "lastReadError": null,
1640
1640
  "lastAckAt": "2026-09-01T07:28:35.685Z",
1641
1641
  "lastWriteAt": "2026-09-01T07:28:35.685Z",
@@ -1659,9 +1659,9 @@
1659
1659
  "driverConfig": {},
1660
1660
  "lineId": "ln-4b84a228",
1661
1661
  "value": null,
1662
- "readValue": 180,
1663
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1664
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1662
+ "readValue": 170,
1663
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1664
+ "lastReadError": null,
1665
1665
  "lastAckAt": null,
1666
1666
  "lastWriteAt": null,
1667
1667
  "state": "idle",
@@ -1684,9 +1684,9 @@
1684
1684
  "driverConfig": {},
1685
1685
  "lineId": "ln-2d785bd8",
1686
1686
  "value": 176,
1687
- "readValue": 180,
1688
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1689
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1687
+ "readValue": 170,
1688
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1689
+ "lastReadError": null,
1690
1690
  "lastAckAt": "2026-09-01T08:52:41.707Z",
1691
1691
  "lastWriteAt": "2026-09-01T08:52:41.707Z",
1692
1692
  "state": "ok",
@@ -1709,9 +1709,9 @@
1709
1709
  "driverConfig": {},
1710
1710
  "lineId": "ln-ec406cd4",
1711
1711
  "value": 176,
1712
- "readValue": 180,
1713
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1714
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1712
+ "readValue": 170,
1713
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1714
+ "lastReadError": null,
1715
1715
  "lastAckAt": "2026-09-01T08:54:00.988Z",
1716
1716
  "lastWriteAt": "2026-09-01T08:54:00.988Z",
1717
1717
  "state": "ok",
@@ -1734,9 +1734,9 @@
1734
1734
  "driverConfig": {},
1735
1735
  "lineId": "ln-844ad82f",
1736
1736
  "value": 175,
1737
- "readValue": 180,
1738
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1739
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1737
+ "readValue": 170,
1738
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1739
+ "lastReadError": null,
1740
1740
  "lastAckAt": "2026-09-01T09:06:55.731Z",
1741
1741
  "lastWriteAt": "2026-09-01T09:06:55.731Z",
1742
1742
  "state": "ok",
@@ -1761,9 +1761,9 @@
1761
1761
  "posZ": 1704,
1762
1762
  "lineId": "ln-fcd8023a",
1763
1763
  "value": 174,
1764
- "readValue": 180,
1765
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1766
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1764
+ "readValue": 170,
1765
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1766
+ "lastReadError": null,
1767
1767
  "lastAckAt": "2026-09-01T09:08:10.909Z",
1768
1768
  "lastWriteAt": "2026-09-01T09:08:10.909Z",
1769
1769
  "state": "ok",
@@ -1786,9 +1786,9 @@
1786
1786
  "driverConfig": {},
1787
1787
  "lineId": "ln-dd871047",
1788
1788
  "value": 175,
1789
- "readValue": 180,
1790
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1791
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1789
+ "readValue": 170,
1790
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1791
+ "lastReadError": null,
1792
1792
  "lastAckAt": "2026-09-01T09:08:17.743Z",
1793
1793
  "lastWriteAt": "2026-09-01T09:08:17.743Z",
1794
1794
  "state": "ok",
@@ -1811,9 +1811,9 @@
1811
1811
  "driverConfig": {},
1812
1812
  "lineId": "ln-dd871047",
1813
1813
  "value": 173,
1814
- "readValue": 180,
1815
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1816
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1814
+ "readValue": 170,
1815
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1816
+ "lastReadError": null,
1817
1817
  "lastAckAt": "2026-09-01T09:08:17.345Z",
1818
1818
  "lastWriteAt": "2026-09-01T09:08:17.345Z",
1819
1819
  "state": "ok",
@@ -1836,9 +1836,9 @@
1836
1836
  "driverConfig": {},
1837
1837
  "lineId": "ln-6dc23d6d",
1838
1838
  "value": 175,
1839
- "readValue": 180,
1840
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1841
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1839
+ "readValue": 170,
1840
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1841
+ "lastReadError": null,
1842
1842
  "lastAckAt": "2026-09-01T09:08:44.710Z",
1843
1843
  "lastWriteAt": "2026-09-01T09:08:44.710Z",
1844
1844
  "state": "ok",
@@ -1861,9 +1861,9 @@
1861
1861
  "driverConfig": {},
1862
1862
  "lineId": "ln-6dc23d6d",
1863
1863
  "value": 173,
1864
- "readValue": 180,
1865
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1866
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1864
+ "readValue": 170,
1865
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1866
+ "lastReadError": null,
1867
1867
  "lastAckAt": "2026-09-01T09:08:44.377Z",
1868
1868
  "lastWriteAt": "2026-09-01T09:08:44.377Z",
1869
1869
  "state": "ok",
@@ -1886,9 +1886,9 @@
1886
1886
  "driverConfig": {},
1887
1887
  "lineId": "ln-2a2ae15e",
1888
1888
  "value": 175,
1889
- "readValue": 180,
1890
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1891
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1889
+ "readValue": 170,
1890
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1891
+ "lastReadError": null,
1892
1892
  "lastAckAt": "2026-09-01T09:16:35.330Z",
1893
1893
  "lastWriteAt": "2026-09-01T09:16:35.330Z",
1894
1894
  "state": "ok",
@@ -1911,9 +1911,9 @@
1911
1911
  "driverConfig": {},
1912
1912
  "lineId": "ln-2a2ae15e",
1913
1913
  "value": 173,
1914
- "readValue": 180,
1915
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1916
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1914
+ "readValue": 170,
1915
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1916
+ "lastReadError": null,
1917
1917
  "lastAckAt": "2026-09-01T09:16:34.947Z",
1918
1918
  "lastWriteAt": "2026-09-01T09:16:34.947Z",
1919
1919
  "state": "ok",
@@ -1936,9 +1936,9 @@
1936
1936
  "driverConfig": {},
1937
1937
  "lineId": "ln-9b54577f",
1938
1938
  "value": 176,
1939
- "readValue": 180,
1940
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1941
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1939
+ "readValue": 170,
1940
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1941
+ "lastReadError": null,
1942
1942
  "lastAckAt": "2026-09-01T09:16:39.619Z",
1943
1943
  "lastWriteAt": "2026-09-01T09:16:39.619Z",
1944
1944
  "state": "ok",
@@ -1961,9 +1961,9 @@
1961
1961
  "driverConfig": {},
1962
1962
  "lineId": "ln-7b9f19d9",
1963
1963
  "value": 180,
1964
- "readValue": 180,
1965
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1966
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1964
+ "readValue": 170,
1965
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1966
+ "lastReadError": null,
1967
1967
  "lastAckAt": "2026-09-01T11:03:23.453Z",
1968
1968
  "lastWriteAt": "2026-09-01T11:03:23.453Z",
1969
1969
  "state": "ok",
@@ -1986,9 +1986,9 @@
1986
1986
  "driverConfig": {},
1987
1987
  "lineId": "ln-5a7d0d1f",
1988
1988
  "value": null,
1989
- "readValue": 180,
1990
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
1991
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
1989
+ "readValue": 170,
1990
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
1991
+ "lastReadError": null,
1992
1992
  "lastAckAt": null,
1993
1993
  "lastWriteAt": null,
1994
1994
  "state": "idle",
@@ -2011,9 +2011,9 @@
2011
2011
  "driverConfig": {},
2012
2012
  "lineId": "ln-847bee7f",
2013
2013
  "value": 180,
2014
- "readValue": 180,
2015
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2016
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2014
+ "readValue": 170,
2015
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2016
+ "lastReadError": null,
2017
2017
  "lastAckAt": "2026-09-01T12:25:43.183Z",
2018
2018
  "lastWriteAt": "2026-09-01T12:25:43.183Z",
2019
2019
  "state": "ok",
@@ -2036,9 +2036,9 @@
2036
2036
  "driverConfig": {},
2037
2037
  "lineId": "ln-d32ca422",
2038
2038
  "value": 180,
2039
- "readValue": 180,
2040
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2041
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2039
+ "readValue": 170,
2040
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2041
+ "lastReadError": null,
2042
2042
  "lastAckAt": "2026-09-01T12:27:14.395Z",
2043
2043
  "lastWriteAt": "2026-09-01T12:27:14.395Z",
2044
2044
  "state": "ok",
@@ -2061,9 +2061,9 @@
2061
2061
  "driverConfig": {},
2062
2062
  "lineId": "ln-6e75316a",
2063
2063
  "value": null,
2064
- "readValue": 180,
2065
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2066
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2064
+ "readValue": 170,
2065
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2066
+ "lastReadError": null,
2067
2067
  "lastAckAt": null,
2068
2068
  "lastWriteAt": null,
2069
2069
  "state": "idle",
@@ -2086,9 +2086,9 @@
2086
2086
  "driverConfig": {},
2087
2087
  "lineId": "ln-e2d8aebc",
2088
2088
  "value": null,
2089
- "readValue": 180,
2090
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2091
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2089
+ "readValue": 170,
2090
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2091
+ "lastReadError": null,
2092
2092
  "lastAckAt": null,
2093
2093
  "lastWriteAt": null,
2094
2094
  "state": "idle",
@@ -2111,9 +2111,9 @@
2111
2111
  "driverConfig": {},
2112
2112
  "lineId": "ln-4849768e",
2113
2113
  "value": null,
2114
- "readValue": 180,
2115
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2116
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2114
+ "readValue": 170,
2115
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2116
+ "lastReadError": null,
2117
2117
  "lastAckAt": null,
2118
2118
  "lastWriteAt": null,
2119
2119
  "state": "idle",
@@ -2136,9 +2136,9 @@
2136
2136
  "driverConfig": {},
2137
2137
  "lineId": "ln-e0769d5b",
2138
2138
  "value": null,
2139
- "readValue": 180,
2140
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2141
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2139
+ "readValue": 170,
2140
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2141
+ "lastReadError": null,
2142
2142
  "lastAckAt": null,
2143
2143
  "lastWriteAt": null,
2144
2144
  "state": "idle",
@@ -2161,9 +2161,9 @@
2161
2161
  "driverConfig": {},
2162
2162
  "lineId": "ln-8c17f4e7",
2163
2163
  "value": null,
2164
- "readValue": 180,
2165
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2166
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2164
+ "readValue": 170,
2165
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2166
+ "lastReadError": null,
2167
2167
  "lastAckAt": null,
2168
2168
  "lastWriteAt": null,
2169
2169
  "state": "idle",
@@ -2186,9 +2186,9 @@
2186
2186
  "driverConfig": {},
2187
2187
  "lineId": "ln-0eccf6ba",
2188
2188
  "value": null,
2189
- "readValue": 180,
2190
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2191
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2189
+ "readValue": 170,
2190
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2191
+ "lastReadError": null,
2192
2192
  "lastAckAt": null,
2193
2193
  "lastWriteAt": null,
2194
2194
  "state": "idle",
@@ -2211,9 +2211,9 @@
2211
2211
  "driverConfig": {},
2212
2212
  "lineId": "ln-e984246e",
2213
2213
  "value": null,
2214
- "readValue": 180,
2215
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2216
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2214
+ "readValue": 170,
2215
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2216
+ "lastReadError": null,
2217
2217
  "lastAckAt": null,
2218
2218
  "lastWriteAt": null,
2219
2219
  "state": "idle",
@@ -2236,9 +2236,9 @@
2236
2236
  "driverConfig": {},
2237
2237
  "lineId": "ln-1fe0b5bc",
2238
2238
  "value": null,
2239
- "readValue": 180,
2240
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2241
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2239
+ "readValue": 170,
2240
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2241
+ "lastReadError": null,
2242
2242
  "lastAckAt": null,
2243
2243
  "lastWriteAt": null,
2244
2244
  "state": "idle",
@@ -2261,9 +2261,9 @@
2261
2261
  "driverConfig": {},
2262
2262
  "lineId": "ln-d826473e",
2263
2263
  "value": null,
2264
- "readValue": 180,
2265
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2266
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2264
+ "readValue": 170,
2265
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2266
+ "lastReadError": null,
2267
2267
  "lastAckAt": null,
2268
2268
  "lastWriteAt": null,
2269
2269
  "state": "idle",
@@ -2286,9 +2286,9 @@
2286
2286
  "driverConfig": {},
2287
2287
  "lineId": "ln-156abb71",
2288
2288
  "value": null,
2289
- "readValue": 180,
2290
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2291
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2289
+ "readValue": 170,
2290
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2291
+ "lastReadError": null,
2292
2292
  "lastAckAt": null,
2293
2293
  "lastWriteAt": null,
2294
2294
  "state": "idle",
@@ -2311,9 +2311,9 @@
2311
2311
  "driverConfig": {},
2312
2312
  "lineId": "ln-bac43927",
2313
2313
  "value": null,
2314
- "readValue": 180,
2315
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2316
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2314
+ "readValue": 170,
2315
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2316
+ "lastReadError": null,
2317
2317
  "lastAckAt": null,
2318
2318
  "lastWriteAt": null,
2319
2319
  "state": "idle",
@@ -2336,9 +2336,9 @@
2336
2336
  "driverConfig": {},
2337
2337
  "lineId": "ln-f223008a",
2338
2338
  "value": null,
2339
- "readValue": 180,
2340
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2341
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2339
+ "readValue": 170,
2340
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2341
+ "lastReadError": null,
2342
2342
  "lastAckAt": null,
2343
2343
  "lastWriteAt": null,
2344
2344
  "state": "idle",
@@ -2361,9 +2361,9 @@
2361
2361
  "driverConfig": {},
2362
2362
  "lineId": "ln-fb06f10b",
2363
2363
  "value": 182,
2364
- "readValue": 180,
2365
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2366
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2364
+ "readValue": 170,
2365
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2366
+ "lastReadError": null,
2367
2367
  "lastAckAt": "2026-09-02T08:39:25.301Z",
2368
2368
  "lastWriteAt": "2026-09-02T08:39:25.301Z",
2369
2369
  "state": "ok",
@@ -2386,9 +2386,9 @@
2386
2386
  "driverConfig": {},
2387
2387
  "lineId": "ln-9f15af4e",
2388
2388
  "value": 182,
2389
- "readValue": 180,
2390
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2391
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2389
+ "readValue": 170,
2390
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2391
+ "lastReadError": null,
2392
2392
  "lastAckAt": "2026-09-02T08:46:51.079Z",
2393
2393
  "lastWriteAt": "2026-09-02T08:46:51.079Z",
2394
2394
  "state": "ok",
@@ -2411,9 +2411,9 @@
2411
2411
  "driverConfig": {},
2412
2412
  "lineId": "ln-69eaecb9",
2413
2413
  "value": 182,
2414
- "readValue": 180,
2415
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2416
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2414
+ "readValue": 170,
2415
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2416
+ "lastReadError": null,
2417
2417
  "lastAckAt": "2026-09-02T10:39:20.083Z",
2418
2418
  "lastWriteAt": "2026-09-02T10:39:20.083Z",
2419
2419
  "state": "ok",
@@ -2436,9 +2436,9 @@
2436
2436
  "driverConfig": {},
2437
2437
  "lineId": "ln-af1e04a3",
2438
2438
  "value": 182,
2439
- "readValue": 180,
2440
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2441
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2439
+ "readValue": 170,
2440
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2441
+ "lastReadError": null,
2442
2442
  "lastAckAt": "2026-09-02T11:42:48.318Z",
2443
2443
  "lastWriteAt": "2026-09-02T11:42:48.318Z",
2444
2444
  "state": "ok",
@@ -2461,9 +2461,9 @@
2461
2461
  "driverConfig": {},
2462
2462
  "lineId": "ln-c1ef6c0d",
2463
2463
  "value": 180,
2464
- "readValue": 180,
2465
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2466
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2464
+ "readValue": 170,
2465
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2466
+ "lastReadError": null,
2467
2467
  "lastAckAt": "2026-09-02T11:55:28.777Z",
2468
2468
  "lastWriteAt": "2026-09-02T11:55:28.777Z",
2469
2469
  "state": "ok",
@@ -2486,9 +2486,9 @@
2486
2486
  "driverConfig": {},
2487
2487
  "lineId": "ln-b587c5ec",
2488
2488
  "value": 182,
2489
- "readValue": 180,
2490
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2491
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2489
+ "readValue": 170,
2490
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2491
+ "lastReadError": null,
2492
2492
  "lastAckAt": "2026-09-02T13:05:36.771Z",
2493
2493
  "lastWriteAt": "2026-09-02T13:05:36.771Z",
2494
2494
  "state": "ok",
@@ -2713,7 +2713,7 @@
2713
2713
  "lineId": "",
2714
2714
  "value": 155,
2715
2715
  "readValue": 155,
2716
- "lastReadAt": "2026-09-06T00:43:32.350+08:00",
2716
+ "lastReadAt": "2026-09-06T14:29:03.393+08:00",
2717
2717
  "lastReadError": "Mock PLC 无设定记录(rw-e2e-3-mtlkgr9s;从未写入)",
2718
2718
  "lastAckAt": "2026-09-03T13:34:22.239Z",
2719
2719
  "lastWriteAt": "2026-09-03T13:34:22.239Z",
@@ -2796,9 +2796,9 @@
2796
2796
  "driverConfig": {},
2797
2797
  "lineId": "",
2798
2798
  "value": 182,
2799
- "readValue": 180,
2800
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2801
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2799
+ "readValue": 170,
2800
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2801
+ "lastReadError": null,
2802
2802
  "lastAckAt": "2026-09-04T04:58:20.275Z",
2803
2803
  "lastWriteAt": "2026-09-04T04:58:20.275Z",
2804
2804
  "state": "ok",
@@ -2821,9 +2821,9 @@
2821
2821
  "driverConfig": {},
2822
2822
  "lineId": "",
2823
2823
  "value": 182,
2824
- "readValue": 180,
2825
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2826
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2824
+ "readValue": 170,
2825
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2826
+ "lastReadError": null,
2827
2827
  "lastAckAt": "2026-09-04T05:03:56.066Z",
2828
2828
  "lastWriteAt": "2026-09-04T05:03:56.066Z",
2829
2829
  "state": "ok",
@@ -2846,9 +2846,9 @@
2846
2846
  "driverConfig": {},
2847
2847
  "lineId": "ln-1b318320",
2848
2848
  "value": 182,
2849
- "readValue": 180,
2850
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2851
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2849
+ "readValue": 170,
2850
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2851
+ "lastReadError": null,
2852
2852
  "lastAckAt": "2026-09-04T05:08:10.216Z",
2853
2853
  "lastWriteAt": "2026-09-04T05:08:10.216Z",
2854
2854
  "state": "ok",
@@ -2871,9 +2871,9 @@
2871
2871
  "driverConfig": {},
2872
2872
  "lineId": "",
2873
2873
  "value": 182,
2874
- "readValue": 180,
2875
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2876
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2874
+ "readValue": 170,
2875
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2876
+ "lastReadError": null,
2877
2877
  "lastAckAt": "2026-09-04T05:08:56.411Z",
2878
2878
  "lastWriteAt": "2026-09-04T05:08:56.411Z",
2879
2879
  "state": "ok",
@@ -2896,9 +2896,9 @@
2896
2896
  "driverConfig": {},
2897
2897
  "lineId": "",
2898
2898
  "value": 182,
2899
- "readValue": 180,
2900
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2901
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2899
+ "readValue": 170,
2900
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2901
+ "lastReadError": null,
2902
2902
  "lastAckAt": "2026-09-04T05:12:13.804Z",
2903
2903
  "lastWriteAt": "2026-09-04T05:12:13.804Z",
2904
2904
  "state": "ok",
@@ -2921,9 +2921,9 @@
2921
2921
  "driverConfig": {},
2922
2922
  "lineId": "",
2923
2923
  "value": null,
2924
- "readValue": 180,
2925
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
2926
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2924
+ "readValue": 170,
2925
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
2926
+ "lastReadError": null,
2927
2927
  "lastAckAt": null,
2928
2928
  "lastWriteAt": null,
2929
2929
  "state": "idle",
@@ -2946,9 +2946,9 @@
2946
2946
  "driverConfig": {},
2947
2947
  "lineId": "ln-549b1062",
2948
2948
  "value": null,
2949
- "readValue": 180,
2950
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
2951
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2949
+ "readValue": 170,
2950
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
2951
+ "lastReadError": null,
2952
2952
  "lastAckAt": null,
2953
2953
  "lastWriteAt": null,
2954
2954
  "state": "idle",
@@ -2971,9 +2971,9 @@
2971
2971
  "driverConfig": {},
2972
2972
  "lineId": "",
2973
2973
  "value": null,
2974
- "readValue": 180,
2975
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
2976
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2974
+ "readValue": 170,
2975
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
2976
+ "lastReadError": null,
2977
2977
  "lastAckAt": null,
2978
2978
  "lastWriteAt": null,
2979
2979
  "state": "idle",
@@ -2996,9 +2996,9 @@
2996
2996
  "driverConfig": {},
2997
2997
  "lineId": "ln-b18fbae0",
2998
2998
  "value": null,
2999
- "readValue": 180,
3000
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
3001
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
2999
+ "readValue": 170,
3000
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
3001
+ "lastReadError": null,
3002
3002
  "lastAckAt": null,
3003
3003
  "lastWriteAt": null,
3004
3004
  "state": "idle",
@@ -3021,9 +3021,9 @@
3021
3021
  "driverConfig": {},
3022
3022
  "lineId": "",
3023
3023
  "value": null,
3024
- "readValue": 180,
3025
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3026
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3024
+ "readValue": 170,
3025
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3026
+ "lastReadError": null,
3027
3027
  "lastAckAt": null,
3028
3028
  "lastWriteAt": null,
3029
3029
  "state": "idle",
@@ -3046,9 +3046,9 @@
3046
3046
  "driverConfig": {},
3047
3047
  "lineId": "ln-7024c512",
3048
3048
  "value": 175,
3049
- "readValue": 180,
3050
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
3051
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3049
+ "readValue": 170,
3050
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
3051
+ "lastReadError": null,
3052
3052
  "lastAckAt": "2026-09-05T02:05:03.057Z",
3053
3053
  "lastWriteAt": "2026-09-05T02:05:03.057Z",
3054
3054
  "state": "ok",
@@ -3071,9 +3071,9 @@
3071
3071
  "driverConfig": {},
3072
3072
  "lineId": "ln-32cc515d",
3073
3073
  "value": 175,
3074
- "readValue": 180,
3075
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
3076
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3074
+ "readValue": 170,
3075
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
3076
+ "lastReadError": null,
3077
3077
  "lastAckAt": "2026-09-05T02:42:52.519Z",
3078
3078
  "lastWriteAt": "2026-09-05T02:42:52.519Z",
3079
3079
  "state": "ok",
@@ -3096,9 +3096,9 @@
3096
3096
  "driverConfig": {},
3097
3097
  "lineId": "ln-a5c1a8c8",
3098
3098
  "value": 175,
3099
- "readValue": 180,
3100
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
3101
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3099
+ "readValue": 170,
3100
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
3101
+ "lastReadError": null,
3102
3102
  "lastAckAt": "2026-09-05T03:07:49.558Z",
3103
3103
  "lastWriteAt": "2026-09-05T03:07:49.558Z",
3104
3104
  "state": "ok",
@@ -3121,9 +3121,9 @@
3121
3121
  "driverConfig": {},
3122
3122
  "lineId": "ln-4beac4a4",
3123
3123
  "value": 175,
3124
- "readValue": 180,
3125
- "lastReadAt": "2026-09-06T00:43:32.862+08:00",
3126
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3124
+ "readValue": 170,
3125
+ "lastReadAt": "2026-09-06T14:29:02.368+08:00",
3126
+ "lastReadError": null,
3127
3127
  "lastAckAt": "2026-09-05T03:32:31.881Z",
3128
3128
  "lastWriteAt": "2026-09-05T03:32:31.881Z",
3129
3129
  "state": "ok",
@@ -3146,9 +3146,9 @@
3146
3146
  "driverConfig": {},
3147
3147
  "lineId": "ln-d79822f5",
3148
3148
  "value": null,
3149
- "readValue": 180,
3150
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3151
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3149
+ "readValue": 170,
3150
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3151
+ "lastReadError": null,
3152
3152
  "lastAckAt": null,
3153
3153
  "lastWriteAt": null,
3154
3154
  "state": "idle",
@@ -3178,8 +3178,8 @@
3178
3178
  },
3179
3179
  "lineId": "",
3180
3180
  "value": 182,
3181
- "readValue": 0,
3182
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3181
+ "readValue": 182,
3182
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3183
3183
  "lastReadError": null,
3184
3184
  "lastAckAt": "2026-09-05T05:29:42.239Z",
3185
3185
  "lastWriteAt": "2026-09-05T05:29:42.239Z",
@@ -3206,8 +3206,8 @@
3206
3206
  },
3207
3207
  "lineId": "",
3208
3208
  "value": 172.5,
3209
- "readValue": 180,
3210
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3209
+ "readValue": 172.5,
3210
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3211
3211
  "lastReadError": null,
3212
3212
  "lastAckAt": "2026-09-05T05:29:40.977Z",
3213
3213
  "lastWriteAt": "2026-09-05T05:29:40.977Z",
@@ -3297,8 +3297,8 @@
3297
3297
  },
3298
3298
  "lineId": "ln-81865050",
3299
3299
  "value": 180,
3300
- "readValue": 0,
3301
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3300
+ "readValue": 182,
3301
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3302
3302
  "lastReadError": null,
3303
3303
  "lastAckAt": "2026-09-05T05:40:12.228Z",
3304
3304
  "lastWriteAt": "2026-09-05T05:40:12.228Z",
@@ -3325,8 +3325,8 @@
3325
3325
  },
3326
3326
  "lineId": "ln-81865050",
3327
3327
  "value": 172.5,
3328
- "readValue": 180,
3329
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3328
+ "readValue": 172.5,
3329
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3330
3330
  "lastReadError": null,
3331
3331
  "lastAckAt": "2026-09-05T05:40:31.611Z",
3332
3332
  "lastWriteAt": "2026-09-05T05:40:31.611Z",
@@ -3447,8 +3447,8 @@
3447
3447
  },
3448
3448
  "lineId": "ln-498547a2",
3449
3449
  "value": null,
3450
- "readValue": 0,
3451
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3450
+ "readValue": 182,
3451
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3452
3452
  "lastReadError": null,
3453
3453
  "lastAckAt": null,
3454
3454
  "lastWriteAt": null,
@@ -3475,8 +3475,8 @@
3475
3475
  },
3476
3476
  "lineId": "ln-498547a2",
3477
3477
  "value": null,
3478
- "readValue": 180,
3479
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3478
+ "readValue": 172.5,
3479
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3480
3480
  "lastReadError": null,
3481
3481
  "lastAckAt": null,
3482
3482
  "lastWriteAt": null,
@@ -3566,8 +3566,8 @@
3566
3566
  },
3567
3567
  "lineId": "ln-66ec0c1a",
3568
3568
  "value": null,
3569
- "readValue": 0,
3570
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3569
+ "readValue": 182,
3570
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3571
3571
  "lastReadError": null,
3572
3572
  "lastAckAt": null,
3573
3573
  "lastWriteAt": null,
@@ -3594,8 +3594,8 @@
3594
3594
  },
3595
3595
  "lineId": "ln-66ec0c1a",
3596
3596
  "value": null,
3597
- "readValue": 180,
3598
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3597
+ "readValue": 172.5,
3598
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3599
3599
  "lastReadError": null,
3600
3600
  "lastAckAt": null,
3601
3601
  "lastWriteAt": null,
@@ -3685,8 +3685,8 @@
3685
3685
  },
3686
3686
  "lineId": "ln-6a34fbc7",
3687
3687
  "value": 180,
3688
- "readValue": 0,
3689
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3688
+ "readValue": 182,
3689
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3690
3690
  "lastReadError": null,
3691
3691
  "lastAckAt": null,
3692
3692
  "lastWriteAt": "2026-09-05T05:47:26.481Z",
@@ -3713,8 +3713,8 @@
3713
3713
  },
3714
3714
  "lineId": "ln-6a34fbc7",
3715
3715
  "value": 172.5,
3716
- "readValue": 180,
3717
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3716
+ "readValue": 172.5,
3717
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3718
3718
  "lastReadError": null,
3719
3719
  "lastAckAt": null,
3720
3720
  "lastWriteAt": "2026-09-05T05:47:36.311Z",
@@ -3804,8 +3804,8 @@
3804
3804
  },
3805
3805
  "lineId": "",
3806
3806
  "value": 182,
3807
- "readValue": 0,
3808
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3807
+ "readValue": 182,
3808
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3809
3809
  "lastReadError": null,
3810
3810
  "lastAckAt": null,
3811
3811
  "lastWriteAt": "2026-09-05T05:56:49.055Z",
@@ -3832,8 +3832,8 @@
3832
3832
  },
3833
3833
  "lineId": "",
3834
3834
  "value": 172.5,
3835
- "readValue": 180,
3836
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3835
+ "readValue": 172.5,
3836
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3837
3837
  "lastReadError": null,
3838
3838
  "lastAckAt": null,
3839
3839
  "lastWriteAt": "2026-09-05T05:56:46.753Z",
@@ -3916,9 +3916,9 @@
3916
3916
  "driverConfig": {},
3917
3917
  "lineId": "ln-65121e6f",
3918
3918
  "value": null,
3919
- "readValue": 180,
3920
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3921
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3919
+ "readValue": 170,
3920
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3921
+ "lastReadError": null,
3922
3922
  "lastAckAt": null,
3923
3923
  "lastWriteAt": null,
3924
3924
  "state": "idle",
@@ -3941,9 +3941,9 @@
3941
3941
  "driverConfig": {},
3942
3942
  "lineId": "ln-f4db9e02",
3943
3943
  "value": null,
3944
- "readValue": 180,
3945
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3946
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
3944
+ "readValue": 170,
3945
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3946
+ "lastReadError": null,
3947
3947
  "lastAckAt": null,
3948
3948
  "lastWriteAt": null,
3949
3949
  "state": "idle",
@@ -3973,8 +3973,8 @@
3973
3973
  },
3974
3974
  "lineId": "ln-419463e0",
3975
3975
  "value": 182,
3976
- "readValue": 0,
3977
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
3976
+ "readValue": 182,
3977
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
3978
3978
  "lastReadError": null,
3979
3979
  "lastAckAt": null,
3980
3980
  "lastWriteAt": "2026-09-05T06:09:49.071Z",
@@ -4001,8 +4001,8 @@
4001
4001
  },
4002
4002
  "lineId": "ln-419463e0",
4003
4003
  "value": 172.5,
4004
- "readValue": 180,
4005
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4004
+ "readValue": 172.5,
4005
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4006
4006
  "lastReadError": null,
4007
4007
  "lastAckAt": null,
4008
4008
  "lastWriteAt": "2026-09-05T06:09:46.778Z",
@@ -4085,9 +4085,9 @@
4085
4085
  "driverConfig": {},
4086
4086
  "lineId": "ln-b0e94f9e",
4087
4087
  "value": null,
4088
- "readValue": 180,
4089
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4090
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
4088
+ "readValue": 170,
4089
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4090
+ "lastReadError": null,
4091
4091
  "lastAckAt": null,
4092
4092
  "lastWriteAt": null,
4093
4093
  "state": "idle",
@@ -4117,8 +4117,8 @@
4117
4117
  },
4118
4118
  "lineId": "",
4119
4119
  "value": 182,
4120
- "readValue": 0,
4121
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4120
+ "readValue": 182,
4121
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4122
4122
  "lastReadError": null,
4123
4123
  "lastAckAt": "2026-09-05T06:14:19.351Z",
4124
4124
  "lastWriteAt": "2026-09-05T06:14:19.351Z",
@@ -4145,8 +4145,8 @@
4145
4145
  },
4146
4146
  "lineId": "",
4147
4147
  "value": 172.5,
4148
- "readValue": 180,
4149
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4148
+ "readValue": 172.5,
4149
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4150
4150
  "lastReadError": null,
4151
4151
  "lastAckAt": "2026-09-05T06:14:18.111Z",
4152
4152
  "lastWriteAt": "2026-09-05T06:14:18.111Z",
@@ -4229,9 +4229,9 @@
4229
4229
  "driverConfig": {},
4230
4230
  "lineId": "ln-536af8ec",
4231
4231
  "value": null,
4232
- "readValue": 180,
4233
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4234
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
4232
+ "readValue": 170,
4233
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4234
+ "lastReadError": null,
4235
4235
  "lastAckAt": null,
4236
4236
  "lastWriteAt": null,
4237
4237
  "state": "idle",
@@ -4261,8 +4261,8 @@
4261
4261
  },
4262
4262
  "lineId": "",
4263
4263
  "value": 182,
4264
- "readValue": 0,
4265
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4264
+ "readValue": 182,
4265
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4266
4266
  "lastReadError": null,
4267
4267
  "lastAckAt": "2026-09-05T06:26:39.295Z",
4268
4268
  "lastWriteAt": "2026-09-05T06:26:39.295Z",
@@ -4289,8 +4289,8 @@
4289
4289
  },
4290
4290
  "lineId": "",
4291
4291
  "value": 172.5,
4292
- "readValue": 180,
4293
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4292
+ "readValue": 172.5,
4293
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4294
4294
  "lastReadError": null,
4295
4295
  "lastAckAt": "2026-09-05T06:26:38.050Z",
4296
4296
  "lastWriteAt": "2026-09-05T06:26:38.050Z",
@@ -4380,8 +4380,8 @@
4380
4380
  },
4381
4381
  "lineId": "",
4382
4382
  "value": 182,
4383
- "readValue": 0,
4384
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4383
+ "readValue": 182,
4384
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4385
4385
  "lastReadError": null,
4386
4386
  "lastAckAt": "2026-09-05T06:38:54.283Z",
4387
4387
  "lastWriteAt": "2026-09-05T06:38:54.283Z",
@@ -4408,8 +4408,8 @@
4408
4408
  },
4409
4409
  "lineId": "",
4410
4410
  "value": 172.5,
4411
- "readValue": 180,
4412
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4411
+ "readValue": 172.5,
4412
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4413
4413
  "lastReadError": null,
4414
4414
  "lastAckAt": "2026-09-05T06:38:53.044Z",
4415
4415
  "lastWriteAt": "2026-09-05T06:38:53.044Z",
@@ -4492,9 +4492,9 @@
4492
4492
  "driverConfig": {},
4493
4493
  "lineId": "ln-476d81d5",
4494
4494
  "value": null,
4495
- "readValue": 180,
4496
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4497
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
4495
+ "readValue": 170,
4496
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4497
+ "lastReadError": null,
4498
4498
  "lastAckAt": null,
4499
4499
  "lastWriteAt": null,
4500
4500
  "state": "idle",
@@ -4524,8 +4524,8 @@
4524
4524
  },
4525
4525
  "lineId": "",
4526
4526
  "value": 182,
4527
- "readValue": 0,
4528
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4527
+ "readValue": 182,
4528
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4529
4529
  "lastReadError": null,
4530
4530
  "lastAckAt": "2026-09-05T06:42:57.442Z",
4531
4531
  "lastWriteAt": "2026-09-05T06:42:57.442Z",
@@ -4552,8 +4552,8 @@
4552
4552
  },
4553
4553
  "lineId": "",
4554
4554
  "value": 172.5,
4555
- "readValue": 180,
4556
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4555
+ "readValue": 172.5,
4556
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4557
4557
  "lastReadError": null,
4558
4558
  "lastAckAt": "2026-09-05T06:42:56.196Z",
4559
4559
  "lastWriteAt": "2026-09-05T06:42:56.196Z",
@@ -4698,9 +4698,9 @@
4698
4698
  "driverConfig": {},
4699
4699
  "lineId": "ln-8d5cae82",
4700
4700
  "value": null,
4701
- "readValue": 180,
4702
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4703
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
4701
+ "readValue": 170,
4702
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4703
+ "lastReadError": null,
4704
4704
  "lastAckAt": null,
4705
4705
  "lastWriteAt": null,
4706
4706
  "state": "idle",
@@ -4792,8 +4792,8 @@
4792
4792
  },
4793
4793
  "lineId": "",
4794
4794
  "value": 182,
4795
- "readValue": 0,
4796
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4795
+ "readValue": 182,
4796
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4797
4797
  "lastReadError": null,
4798
4798
  "lastAckAt": "2026-09-05T06:54:23.219Z",
4799
4799
  "lastWriteAt": "2026-09-05T06:54:23.219Z",
@@ -4820,8 +4820,8 @@
4820
4820
  },
4821
4821
  "lineId": "",
4822
4822
  "value": 172.5,
4823
- "readValue": 180,
4824
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4823
+ "readValue": 172.5,
4824
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4825
4825
  "lastReadError": null,
4826
4826
  "lastAckAt": "2026-09-05T06:54:21.997Z",
4827
4827
  "lastWriteAt": "2026-09-05T06:54:21.997Z",
@@ -4904,9 +4904,9 @@
4904
4904
  "driverConfig": {},
4905
4905
  "lineId": "ln-ee6d4693",
4906
4906
  "value": null,
4907
- "readValue": 180,
4908
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4909
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
4907
+ "readValue": 170,
4908
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4909
+ "lastReadError": null,
4910
4910
  "lastAckAt": null,
4911
4911
  "lastWriteAt": null,
4912
4912
  "state": "idle",
@@ -4936,8 +4936,8 @@
4936
4936
  },
4937
4937
  "lineId": "",
4938
4938
  "value": 182,
4939
- "readValue": 0,
4940
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4939
+ "readValue": 182,
4940
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4941
4941
  "lastReadError": null,
4942
4942
  "lastAckAt": "2026-09-05T07:14:44.613Z",
4943
4943
  "lastWriteAt": "2026-09-05T07:14:44.613Z",
@@ -4964,8 +4964,8 @@
4964
4964
  },
4965
4965
  "lineId": "",
4966
4966
  "value": 172.5,
4967
- "readValue": 180,
4968
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
4967
+ "readValue": 172.5,
4968
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
4969
4969
  "lastReadError": null,
4970
4970
  "lastAckAt": "2026-09-05T07:14:43.371Z",
4971
4971
  "lastWriteAt": "2026-09-05T07:14:43.371Z",
@@ -5055,8 +5055,8 @@
5055
5055
  },
5056
5056
  "lineId": "ln-be60aa74",
5057
5057
  "value": null,
5058
- "readValue": 0,
5059
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5058
+ "readValue": 182,
5059
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5060
5060
  "lastReadError": null,
5061
5061
  "lastAckAt": null,
5062
5062
  "lastWriteAt": null,
@@ -5087,8 +5087,8 @@
5087
5087
  },
5088
5088
  "lineId": "ln-43f61780",
5089
5089
  "value": 182,
5090
- "readValue": 0,
5091
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5090
+ "readValue": 182,
5091
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5092
5092
  "lastReadError": null,
5093
5093
  "lastAckAt": "2026-09-05T07:21:42.887Z",
5094
5094
  "lastWriteAt": "2026-09-05T07:21:42.887Z",
@@ -5112,9 +5112,9 @@
5112
5112
  "driverConfig": {},
5113
5113
  "lineId": "ln-ad666e87",
5114
5114
  "value": null,
5115
- "readValue": 180,
5116
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5117
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5115
+ "readValue": 170,
5116
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5117
+ "lastReadError": null,
5118
5118
  "lastAckAt": null,
5119
5119
  "lastWriteAt": null,
5120
5120
  "state": "idle",
@@ -5144,8 +5144,8 @@
5144
5144
  },
5145
5145
  "lineId": "ln-3548f325",
5146
5146
  "value": 182,
5147
- "readValue": 0,
5148
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5147
+ "readValue": 182,
5148
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5149
5149
  "lastReadError": null,
5150
5150
  "lastAckAt": "2026-09-05T07:24:04.091Z",
5151
5151
  "lastWriteAt": "2026-09-05T07:24:04.091Z",
@@ -5176,8 +5176,8 @@
5176
5176
  },
5177
5177
  "lineId": "",
5178
5178
  "value": 182,
5179
- "readValue": 0,
5180
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5179
+ "readValue": 182,
5180
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5181
5181
  "lastReadError": null,
5182
5182
  "lastAckAt": "2026-09-05T07:39:09.089Z",
5183
5183
  "lastWriteAt": "2026-09-05T07:39:09.089Z",
@@ -5204,8 +5204,8 @@
5204
5204
  },
5205
5205
  "lineId": "",
5206
5206
  "value": 172.5,
5207
- "readValue": 180,
5208
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5207
+ "readValue": 172.5,
5208
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5209
5209
  "lastReadError": null,
5210
5210
  "lastAckAt": "2026-09-05T07:39:07.849Z",
5211
5211
  "lastWriteAt": "2026-09-05T07:39:07.849Z",
@@ -5295,8 +5295,8 @@
5295
5295
  },
5296
5296
  "lineId": "ln-c3a7ba01",
5297
5297
  "value": 182,
5298
- "readValue": 0,
5299
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5298
+ "readValue": 182,
5299
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5300
5300
  "lastReadError": null,
5301
5301
  "lastAckAt": "2026-09-05T07:46:45.140Z",
5302
5302
  "lastWriteAt": "2026-09-05T07:46:45.140Z",
@@ -5323,8 +5323,8 @@
5323
5323
  },
5324
5324
  "lineId": "ln-c3a7ba01",
5325
5325
  "value": 172.5,
5326
- "readValue": 180,
5327
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5326
+ "readValue": 172.5,
5327
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5328
5328
  "lastReadError": null,
5329
5329
  "lastAckAt": "2026-09-05T07:46:43.898Z",
5330
5330
  "lastWriteAt": "2026-09-05T07:46:43.898Z",
@@ -5407,9 +5407,9 @@
5407
5407
  "driverConfig": {},
5408
5408
  "lineId": "ln-60f2d1ef",
5409
5409
  "value": null,
5410
- "readValue": 180,
5411
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5412
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5410
+ "readValue": 170,
5411
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5412
+ "lastReadError": null,
5413
5413
  "lastAckAt": null,
5414
5414
  "lastWriteAt": null,
5415
5415
  "state": "idle",
@@ -5439,8 +5439,8 @@
5439
5439
  },
5440
5440
  "lineId": "ln-c570b64e",
5441
5441
  "value": 182,
5442
- "readValue": 0,
5443
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5442
+ "readValue": 182,
5443
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5444
5444
  "lastReadError": null,
5445
5445
  "lastAckAt": "2026-09-05T07:50:36.180Z",
5446
5446
  "lastWriteAt": "2026-09-05T07:50:36.180Z",
@@ -5467,8 +5467,8 @@
5467
5467
  },
5468
5468
  "lineId": "ln-c570b64e",
5469
5469
  "value": 172.5,
5470
- "readValue": 180,
5471
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5470
+ "readValue": 172.5,
5471
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5472
5472
  "lastReadError": null,
5473
5473
  "lastAckAt": "2026-09-05T07:50:34.915Z",
5474
5474
  "lastWriteAt": "2026-09-05T07:50:34.915Z",
@@ -5551,9 +5551,9 @@
5551
5551
  "driverConfig": {},
5552
5552
  "lineId": "ln-af8f95db",
5553
5553
  "value": null,
5554
- "readValue": 180,
5555
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5556
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5554
+ "readValue": 170,
5555
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5556
+ "lastReadError": null,
5557
5557
  "lastAckAt": null,
5558
5558
  "lastWriteAt": null,
5559
5559
  "state": "idle",
@@ -5576,9 +5576,9 @@
5576
5576
  "driverConfig": {},
5577
5577
  "lineId": "",
5578
5578
  "value": 180,
5579
- "readValue": 180,
5580
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5581
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5579
+ "readValue": 170,
5580
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5581
+ "lastReadError": null,
5582
5582
  "lastAckAt": "2026-09-05T08:08:23.555Z",
5583
5583
  "lastWriteAt": "2026-09-05T08:08:23.555Z",
5584
5584
  "state": "ok",
@@ -5604,8 +5604,8 @@
5604
5604
  },
5605
5605
  "lineId": "",
5606
5606
  "value": null,
5607
- "readValue": 180,
5608
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5607
+ "readValue": 172.5,
5608
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5609
5609
  "lastReadError": null,
5610
5610
  "lastAckAt": null,
5611
5611
  "lastWriteAt": null,
@@ -5636,8 +5636,8 @@
5636
5636
  },
5637
5637
  "lineId": "",
5638
5638
  "value": 180,
5639
- "readValue": 0,
5640
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5639
+ "readValue": 182,
5640
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5641
5641
  "lastReadError": null,
5642
5642
  "lastAckAt": "2026-09-05T08:23:06.423Z",
5643
5643
  "lastWriteAt": "2026-09-05T08:23:06.423Z",
@@ -5661,9 +5661,9 @@
5661
5661
  "driverConfig": {},
5662
5662
  "lineId": "ln-1bda4fba",
5663
5663
  "value": null,
5664
- "readValue": 180,
5665
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5666
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5664
+ "readValue": 170,
5665
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5666
+ "lastReadError": null,
5667
5667
  "lastAckAt": null,
5668
5668
  "lastWriteAt": null,
5669
5669
  "state": "idle",
@@ -5689,8 +5689,8 @@
5689
5689
  },
5690
5690
  "lineId": "",
5691
5691
  "value": null,
5692
- "readValue": 180,
5693
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5692
+ "readValue": 172.5,
5693
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5694
5694
  "lastReadError": null,
5695
5695
  "lastAckAt": null,
5696
5696
  "lastWriteAt": null,
@@ -5721,8 +5721,8 @@
5721
5721
  },
5722
5722
  "lineId": "",
5723
5723
  "value": 180,
5724
- "readValue": 0,
5725
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5724
+ "readValue": 182,
5725
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5726
5726
  "lastReadError": null,
5727
5727
  "lastAckAt": "2026-09-05T08:42:47.820Z",
5728
5728
  "lastWriteAt": "2026-09-05T08:42:47.820Z",
@@ -5746,9 +5746,9 @@
5746
5746
  "driverConfig": {},
5747
5747
  "lineId": "",
5748
5748
  "value": null,
5749
- "readValue": 180,
5750
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5751
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5749
+ "readValue": 170,
5750
+ "lastReadAt": "2026-09-06T14:29:02.881+08:00",
5751
+ "lastReadError": null,
5752
5752
  "lastAckAt": null,
5753
5753
  "lastWriteAt": null,
5754
5754
  "state": "idle",
@@ -5771,9 +5771,9 @@
5771
5771
  "driverConfig": {},
5772
5772
  "lineId": "",
5773
5773
  "value": 172,
5774
- "readValue": 180,
5775
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5776
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5774
+ "readValue": 170,
5775
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5776
+ "lastReadError": null,
5777
5777
  "lastAckAt": "2026-09-05T08:59:06.974Z",
5778
5778
  "lastWriteAt": "2026-09-05T08:59:06.974Z",
5779
5779
  "state": "ok",
@@ -5796,9 +5796,9 @@
5796
5796
  "driverConfig": {},
5797
5797
  "lineId": "",
5798
5798
  "value": 180,
5799
- "readValue": 180,
5800
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5801
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5799
+ "readValue": 170,
5800
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5801
+ "lastReadError": null,
5802
5802
  "lastAckAt": "2026-09-05T09:34:20.928Z",
5803
5803
  "lastWriteAt": "2026-09-05T09:34:20.928Z",
5804
5804
  "state": "ok",
@@ -5821,9 +5821,9 @@
5821
5821
  "driverConfig": {},
5822
5822
  "lineId": "",
5823
5823
  "value": 180,
5824
- "readValue": 180,
5825
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5826
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5824
+ "readValue": 170,
5825
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5826
+ "lastReadError": null,
5827
5827
  "lastAckAt": "2026-09-05T09:39:59.373Z",
5828
5828
  "lastWriteAt": "2026-09-05T09:39:59.373Z",
5829
5829
  "state": "ok",
@@ -5846,9 +5846,9 @@
5846
5846
  "driverConfig": {},
5847
5847
  "lineId": "",
5848
5848
  "value": 180,
5849
- "readValue": 180,
5850
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5851
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5849
+ "readValue": 170,
5850
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5851
+ "lastReadError": null,
5852
5852
  "lastAckAt": "2026-09-05T09:43:40.423Z",
5853
5853
  "lastWriteAt": "2026-09-05T09:43:40.423Z",
5854
5854
  "state": "ok",
@@ -5871,9 +5871,9 @@
5871
5871
  "driverConfig": {},
5872
5872
  "lineId": "",
5873
5873
  "value": 180,
5874
- "readValue": 180,
5875
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5876
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5874
+ "readValue": 170,
5875
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5876
+ "lastReadError": null,
5877
5877
  "lastAckAt": "2026-09-05T09:45:11.766Z",
5878
5878
  "lastWriteAt": "2026-09-05T09:45:11.766Z",
5879
5879
  "state": "ok",
@@ -5896,9 +5896,9 @@
5896
5896
  "driverConfig": {},
5897
5897
  "lineId": "ln-871ac52d",
5898
5898
  "value": 180,
5899
- "readValue": 180,
5900
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5901
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5899
+ "readValue": 170,
5900
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5901
+ "lastReadError": null,
5902
5902
  "lastAckAt": "2026-09-05T09:47:55.529Z",
5903
5903
  "lastWriteAt": "2026-09-05T09:47:55.529Z",
5904
5904
  "state": "ok",
@@ -5921,9 +5921,9 @@
5921
5921
  "driverConfig": {},
5922
5922
  "lineId": "",
5923
5923
  "value": 180,
5924
- "readValue": 180,
5925
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5926
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5924
+ "readValue": 170,
5925
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5926
+ "lastReadError": null,
5927
5927
  "lastAckAt": "2026-09-05T09:53:24.693Z",
5928
5928
  "lastWriteAt": "2026-09-05T09:53:24.693Z",
5929
5929
  "state": "ok",
@@ -5946,9 +5946,9 @@
5946
5946
  "driverConfig": {},
5947
5947
  "lineId": "",
5948
5948
  "value": 180,
5949
- "readValue": 180,
5950
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5951
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5949
+ "readValue": 170,
5950
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5951
+ "lastReadError": null,
5952
5952
  "lastAckAt": "2026-09-05T09:53:58.818Z",
5953
5953
  "lastWriteAt": "2026-09-05T09:53:58.818Z",
5954
5954
  "state": "ok",
@@ -5971,9 +5971,9 @@
5971
5971
  "driverConfig": {},
5972
5972
  "lineId": "",
5973
5973
  "value": 180,
5974
- "readValue": 180,
5975
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
5976
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5974
+ "readValue": 170,
5975
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
5976
+ "lastReadError": null,
5977
5977
  "lastAckAt": "2026-09-05T19:05:14.657+08:00",
5978
5978
  "lastWriteAt": "2026-09-05T19:05:14.657+08:00",
5979
5979
  "state": "ok",
@@ -5996,9 +5996,9 @@
5996
5996
  "driverConfig": {},
5997
5997
  "lineId": "",
5998
5998
  "value": 180,
5999
- "readValue": 180,
6000
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
6001
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
5999
+ "readValue": 170,
6000
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6001
+ "lastReadError": null,
6002
6002
  "lastAckAt": "2026-09-05T19:59:44.420+08:00",
6003
6003
  "lastWriteAt": "2026-09-05T19:59:44.420+08:00",
6004
6004
  "state": "ok",
@@ -6021,9 +6021,9 @@
6021
6021
  "driverConfig": {},
6022
6022
  "lineId": "",
6023
6023
  "value": 180,
6024
- "readValue": 180,
6025
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
6026
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
6024
+ "readValue": 170,
6025
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6026
+ "lastReadError": null,
6027
6027
  "lastAckAt": "2026-09-05T20:04:40.535+08:00",
6028
6028
  "lastWriteAt": "2026-09-05T20:04:40.535+08:00",
6029
6029
  "state": "ok",
@@ -6046,13 +6046,701 @@
6046
6046
  "driverConfig": {},
6047
6047
  "lineId": "",
6048
6048
  "value": 180,
6049
- "readValue": 180,
6050
- "lastReadAt": "2026-09-06T00:43:31.839+08:00",
6051
- "lastReadError": "Mock PLC 无设定记录(default;从未写入)",
6049
+ "readValue": 170,
6050
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6051
+ "lastReadError": null,
6052
6052
  "lastAckAt": "2026-09-05T20:08:42.288+08:00",
6053
6053
  "lastWriteAt": "2026-09-05T20:08:42.288+08:00",
6054
6054
  "state": "ok",
6055
6055
  "lastError": null,
6056
6056
  "createdAt": "2026-09-05T20:08:42.240+08:00"
6057
+ },
6058
+ {
6059
+ "id": "dw-d1473c36",
6060
+ "templateRef": "dcw-temp-sp",
6061
+ "name": "cfg-dcw",
6062
+ "driver": "mock",
6063
+ "enabled": true,
6064
+ "holdIntervalMs": null,
6065
+ "readIntervalMs": null,
6066
+ "unit": "℃",
6067
+ "decimals": 1,
6068
+ "min": 150,
6069
+ "max": 200,
6070
+ "deviceBindingId": null,
6071
+ "driverConfig": {},
6072
+ "lineId": "",
6073
+ "value": 180,
6074
+ "readValue": 170,
6075
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6076
+ "lastReadError": null,
6077
+ "lastAckAt": "2026-09-06T01:31:30.570+08:00",
6078
+ "lastWriteAt": "2026-09-06T01:31:30.570+08:00",
6079
+ "state": "ok",
6080
+ "lastError": null,
6081
+ "createdAt": "2026-09-06T01:31:30.518+08:00"
6082
+ },
6083
+ {
6084
+ "id": "dw-282271fd",
6085
+ "templateRef": "dcw-temp-sp",
6086
+ "name": "cfg-dcw",
6087
+ "driver": "mock",
6088
+ "enabled": true,
6089
+ "holdIntervalMs": null,
6090
+ "readIntervalMs": null,
6091
+ "unit": "℃",
6092
+ "decimals": 1,
6093
+ "min": 150,
6094
+ "max": 200,
6095
+ "deviceBindingId": null,
6096
+ "driverConfig": {},
6097
+ "lineId": "",
6098
+ "value": 180,
6099
+ "readValue": 170,
6100
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6101
+ "lastReadError": null,
6102
+ "lastAckAt": "2026-09-06T01:34:34.958+08:00",
6103
+ "lastWriteAt": "2026-09-06T01:34:34.958+08:00",
6104
+ "state": "ok",
6105
+ "lastError": null,
6106
+ "createdAt": "2026-09-06T01:34:34.922+08:00"
6107
+ },
6108
+ {
6109
+ "id": "dw-cd0ba7e6",
6110
+ "templateRef": "dcw-temp-sp",
6111
+ "name": "cfg-dcw",
6112
+ "driver": "mock",
6113
+ "enabled": true,
6114
+ "holdIntervalMs": null,
6115
+ "readIntervalMs": null,
6116
+ "unit": "℃",
6117
+ "decimals": 1,
6118
+ "min": 150,
6119
+ "max": 200,
6120
+ "deviceBindingId": null,
6121
+ "driverConfig": {},
6122
+ "lineId": "",
6123
+ "value": 180,
6124
+ "readValue": 170,
6125
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6126
+ "lastReadError": null,
6127
+ "lastAckAt": "2026-09-06T01:36:55.766+08:00",
6128
+ "lastWriteAt": "2026-09-06T01:36:55.766+08:00",
6129
+ "state": "ok",
6130
+ "lastError": null,
6131
+ "createdAt": "2026-09-06T01:36:55.717+08:00"
6132
+ },
6133
+ {
6134
+ "id": "dw-140e12fa",
6135
+ "templateRef": "dcw-temp-sp",
6136
+ "name": "cfg-dcw",
6137
+ "driver": "mock",
6138
+ "enabled": true,
6139
+ "holdIntervalMs": null,
6140
+ "readIntervalMs": null,
6141
+ "unit": "℃",
6142
+ "decimals": 1,
6143
+ "min": 150,
6144
+ "max": 200,
6145
+ "deviceBindingId": null,
6146
+ "driverConfig": {},
6147
+ "lineId": "",
6148
+ "value": 180,
6149
+ "readValue": 170,
6150
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6151
+ "lastReadError": null,
6152
+ "lastAckAt": "2026-09-06T01:38:22.261+08:00",
6153
+ "lastWriteAt": "2026-09-06T01:38:22.261+08:00",
6154
+ "state": "ok",
6155
+ "lastError": null,
6156
+ "createdAt": "2026-09-06T01:38:22.225+08:00"
6157
+ },
6158
+ {
6159
+ "id": "dw-5316721a",
6160
+ "templateRef": "dcw-temp-sp",
6161
+ "name": "cfg-dcw",
6162
+ "driver": "mock",
6163
+ "enabled": true,
6164
+ "holdIntervalMs": null,
6165
+ "readIntervalMs": null,
6166
+ "unit": "℃",
6167
+ "decimals": 1,
6168
+ "min": 150,
6169
+ "max": 200,
6170
+ "deviceBindingId": null,
6171
+ "driverConfig": {},
6172
+ "lineId": "",
6173
+ "value": 180,
6174
+ "readValue": 170,
6175
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6176
+ "lastReadError": null,
6177
+ "lastAckAt": "2026-09-06T01:40:55.376+08:00",
6178
+ "lastWriteAt": "2026-09-06T01:40:55.376+08:00",
6179
+ "state": "ok",
6180
+ "lastError": null,
6181
+ "createdAt": "2026-09-06T01:40:55.328+08:00"
6182
+ },
6183
+ {
6184
+ "id": "dw-cb7b120b",
6185
+ "templateRef": "dcw-temp-sp",
6186
+ "name": "lx-dcw",
6187
+ "driver": "mock",
6188
+ "enabled": true,
6189
+ "holdIntervalMs": null,
6190
+ "readIntervalMs": null,
6191
+ "unit": "℃",
6192
+ "decimals": 1,
6193
+ "min": 150,
6194
+ "max": 200,
6195
+ "deviceBindingId": null,
6196
+ "driverConfig": {},
6197
+ "lineId": "",
6198
+ "value": 180,
6199
+ "readValue": 170,
6200
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6201
+ "lastReadError": null,
6202
+ "lastAckAt": "2026-09-06T01:42:23.536+08:00",
6203
+ "lastWriteAt": "2026-09-06T01:42:23.536+08:00",
6204
+ "state": "ok",
6205
+ "lastError": null,
6206
+ "createdAt": "2026-09-06T01:42:23.488+08:00"
6207
+ },
6208
+ {
6209
+ "id": "dw-588c9a0d",
6210
+ "templateRef": "dcw-temp-sp",
6211
+ "name": "lx2-dcw",
6212
+ "driver": "mock",
6213
+ "enabled": true,
6214
+ "holdIntervalMs": null,
6215
+ "readIntervalMs": null,
6216
+ "unit": "℃",
6217
+ "decimals": 1,
6218
+ "min": 150,
6219
+ "max": 200,
6220
+ "deviceBindingId": null,
6221
+ "driverConfig": {},
6222
+ "lineId": "",
6223
+ "value": 180,
6224
+ "readValue": 170,
6225
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6226
+ "lastReadError": null,
6227
+ "lastAckAt": "2026-09-06T01:50:15.702+08:00",
6228
+ "lastWriteAt": "2026-09-06T01:50:15.702+08:00",
6229
+ "state": "ok",
6230
+ "lastError": null,
6231
+ "createdAt": "2026-09-06T01:50:15.670+08:00"
6232
+ },
6233
+ {
6234
+ "id": "dw-0b88f9ed",
6235
+ "templateRef": "dcw-temp-sp",
6236
+ "name": "lx3-dcw",
6237
+ "driver": "mock",
6238
+ "enabled": true,
6239
+ "holdIntervalMs": null,
6240
+ "readIntervalMs": null,
6241
+ "unit": "℃",
6242
+ "decimals": 1,
6243
+ "min": 150,
6244
+ "max": 200,
6245
+ "deviceBindingId": null,
6246
+ "driverConfig": {},
6247
+ "lineId": "",
6248
+ "value": 180,
6249
+ "readValue": 170,
6250
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6251
+ "lastReadError": null,
6252
+ "lastAckAt": "2026-09-06T01:54:41.088+08:00",
6253
+ "lastWriteAt": "2026-09-06T01:54:41.088+08:00",
6254
+ "state": "ok",
6255
+ "lastError": null,
6256
+ "createdAt": "2026-09-06T01:54:41.041+08:00"
6257
+ },
6258
+ {
6259
+ "id": "dw-84ebc256",
6260
+ "templateRef": "dcw-temp-sp",
6261
+ "name": "lx4-dcw",
6262
+ "driver": "mock",
6263
+ "enabled": true,
6264
+ "holdIntervalMs": null,
6265
+ "readIntervalMs": null,
6266
+ "unit": "℃",
6267
+ "decimals": 1,
6268
+ "min": 150,
6269
+ "max": 200,
6270
+ "deviceBindingId": null,
6271
+ "driverConfig": {},
6272
+ "lineId": "",
6273
+ "value": 180,
6274
+ "readValue": 170,
6275
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6276
+ "lastReadError": null,
6277
+ "lastAckAt": "2026-09-06T02:00:59.117+08:00",
6278
+ "lastWriteAt": "2026-09-06T02:00:59.117+08:00",
6279
+ "state": "ok",
6280
+ "lastError": null,
6281
+ "createdAt": "2026-09-06T02:00:59.068+08:00"
6282
+ },
6283
+ {
6284
+ "id": "dw-f87c592c",
6285
+ "templateRef": "dcw-temp-sp",
6286
+ "name": "lx5-dcw",
6287
+ "driver": "mock",
6288
+ "enabled": true,
6289
+ "holdIntervalMs": null,
6290
+ "readIntervalMs": null,
6291
+ "unit": "℃",
6292
+ "decimals": 1,
6293
+ "min": 150,
6294
+ "max": 200,
6295
+ "deviceBindingId": null,
6296
+ "driverConfig": {},
6297
+ "lineId": "",
6298
+ "value": 180,
6299
+ "readValue": 170,
6300
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6301
+ "lastReadError": null,
6302
+ "lastAckAt": "2026-09-06T02:05:17.300+08:00",
6303
+ "lastWriteAt": "2026-09-06T02:05:17.300+08:00",
6304
+ "state": "ok",
6305
+ "lastError": null,
6306
+ "createdAt": "2026-09-06T02:05:17.267+08:00"
6307
+ },
6308
+ {
6309
+ "id": "dw-ab1897d8",
6310
+ "templateRef": "dcw-temp-sp",
6311
+ "name": "lx6-dcw",
6312
+ "driver": "mock",
6313
+ "enabled": true,
6314
+ "holdIntervalMs": null,
6315
+ "readIntervalMs": null,
6316
+ "unit": "℃",
6317
+ "decimals": 1,
6318
+ "min": 150,
6319
+ "max": 200,
6320
+ "deviceBindingId": null,
6321
+ "driverConfig": {},
6322
+ "lineId": "",
6323
+ "value": 180,
6324
+ "readValue": 170,
6325
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6326
+ "lastReadError": null,
6327
+ "lastAckAt": "2026-09-06T02:06:14.631+08:00",
6328
+ "lastWriteAt": "2026-09-06T02:06:14.631+08:00",
6329
+ "state": "ok",
6330
+ "lastError": null,
6331
+ "createdAt": "2026-09-06T02:06:14.607+08:00"
6332
+ },
6333
+ {
6334
+ "id": "dw-bb330d90",
6335
+ "templateRef": "dcw-temp-sp",
6336
+ "name": "dbg2-dcw",
6337
+ "driver": "mock",
6338
+ "enabled": true,
6339
+ "holdIntervalMs": null,
6340
+ "readIntervalMs": null,
6341
+ "unit": "℃",
6342
+ "decimals": 1,
6343
+ "min": 150,
6344
+ "max": 200,
6345
+ "deviceBindingId": null,
6346
+ "driverConfig": {},
6347
+ "lineId": "",
6348
+ "value": 180,
6349
+ "readValue": 170,
6350
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6351
+ "lastReadError": null,
6352
+ "lastAckAt": "2026-09-06T02:19:22.196+08:00",
6353
+ "lastWriteAt": "2026-09-06T02:19:22.196+08:00",
6354
+ "state": "ok",
6355
+ "lastError": null,
6356
+ "createdAt": "2026-09-06T02:19:22.148+08:00"
6357
+ },
6358
+ {
6359
+ "id": "dw-82b6f604",
6360
+ "templateRef": "dcw-temp-sp",
6361
+ "name": "lx8-dcw",
6362
+ "driver": "mock",
6363
+ "enabled": true,
6364
+ "holdIntervalMs": null,
6365
+ "readIntervalMs": null,
6366
+ "unit": "℃",
6367
+ "decimals": 1,
6368
+ "min": 150,
6369
+ "max": 200,
6370
+ "deviceBindingId": null,
6371
+ "driverConfig": {},
6372
+ "lineId": "ln-1acc1a0c",
6373
+ "value": 180,
6374
+ "readValue": 170,
6375
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6376
+ "lastReadError": null,
6377
+ "lastAckAt": "2026-09-06T02:22:23.212+08:00",
6378
+ "lastWriteAt": "2026-09-06T02:22:23.212+08:00",
6379
+ "state": "ok",
6380
+ "lastError": null,
6381
+ "createdAt": "2026-09-06T02:22:23.163+08:00"
6382
+ },
6383
+ {
6384
+ "id": "dw-64d896c9",
6385
+ "templateRef": "dcw-temp-sp",
6386
+ "name": "lx8-dcw",
6387
+ "driver": "mock",
6388
+ "enabled": true,
6389
+ "holdIntervalMs": null,
6390
+ "readIntervalMs": null,
6391
+ "unit": "℃",
6392
+ "decimals": 1,
6393
+ "min": 150,
6394
+ "max": 200,
6395
+ "deviceBindingId": null,
6396
+ "driverConfig": {},
6397
+ "lineId": "ln-917490c1",
6398
+ "value": 180,
6399
+ "readValue": 170,
6400
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6401
+ "lastReadError": null,
6402
+ "lastAckAt": "2026-09-06T02:24:50.584+08:00",
6403
+ "lastWriteAt": "2026-09-06T02:24:50.584+08:00",
6404
+ "state": "ok",
6405
+ "lastError": null,
6406
+ "createdAt": "2026-09-06T02:24:50.547+08:00"
6407
+ },
6408
+ {
6409
+ "id": "dw-4416bdb1",
6410
+ "templateRef": "dcw-temp-sp",
6411
+ "name": "cfg-dcw",
6412
+ "driver": "mock",
6413
+ "enabled": true,
6414
+ "holdIntervalMs": null,
6415
+ "readIntervalMs": null,
6416
+ "unit": "℃",
6417
+ "decimals": 1,
6418
+ "min": 150,
6419
+ "max": 200,
6420
+ "deviceBindingId": null,
6421
+ "driverConfig": {},
6422
+ "lineId": "",
6423
+ "value": 180,
6424
+ "readValue": 170,
6425
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6426
+ "lastReadError": null,
6427
+ "lastAckAt": "2026-09-06T02:26:09.243+08:00",
6428
+ "lastWriteAt": "2026-09-06T02:26:09.243+08:00",
6429
+ "state": "ok",
6430
+ "lastError": null,
6431
+ "createdAt": "2026-09-06T02:26:09.194+08:00"
6432
+ },
6433
+ {
6434
+ "id": "dw-f1b8aa79",
6435
+ "templateRef": "dcw-temp-sp",
6436
+ "name": "cfg-dcw",
6437
+ "driver": "mock",
6438
+ "enabled": true,
6439
+ "holdIntervalMs": null,
6440
+ "readIntervalMs": null,
6441
+ "unit": "℃",
6442
+ "decimals": 1,
6443
+ "min": 150,
6444
+ "max": 200,
6445
+ "deviceBindingId": null,
6446
+ "driverConfig": {},
6447
+ "lineId": "",
6448
+ "value": 180,
6449
+ "readValue": 170,
6450
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6451
+ "lastReadError": null,
6452
+ "lastAckAt": "2026-09-06T02:29:04.476+08:00",
6453
+ "lastWriteAt": "2026-09-06T02:29:04.476+08:00",
6454
+ "state": "ok",
6455
+ "lastError": null,
6456
+ "createdAt": "2026-09-06T02:29:04.427+08:00"
6457
+ },
6458
+ {
6459
+ "id": "dw-91f1cac6",
6460
+ "templateRef": "dcw-temp-sp",
6461
+ "name": "cfg-dcw",
6462
+ "driver": "mock",
6463
+ "enabled": true,
6464
+ "holdIntervalMs": null,
6465
+ "readIntervalMs": null,
6466
+ "unit": "℃",
6467
+ "decimals": 1,
6468
+ "min": 150,
6469
+ "max": 200,
6470
+ "deviceBindingId": null,
6471
+ "driverConfig": {},
6472
+ "lineId": "",
6473
+ "value": 180,
6474
+ "readValue": 170,
6475
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6476
+ "lastReadError": null,
6477
+ "lastAckAt": "2026-09-06T02:40:12.879+08:00",
6478
+ "lastWriteAt": "2026-09-06T02:40:12.879+08:00",
6479
+ "state": "ok",
6480
+ "lastError": null,
6481
+ "createdAt": "2026-09-06T02:40:12.826+08:00"
6482
+ },
6483
+ {
6484
+ "id": "dw-a4ac3308",
6485
+ "templateRef": "dcw-temp-sp",
6486
+ "name": "cfg-dcw",
6487
+ "driver": "mock",
6488
+ "enabled": true,
6489
+ "holdIntervalMs": null,
6490
+ "readIntervalMs": null,
6491
+ "unit": "℃",
6492
+ "decimals": 1,
6493
+ "min": 150,
6494
+ "max": 200,
6495
+ "deviceBindingId": null,
6496
+ "driverConfig": {},
6497
+ "lineId": "",
6498
+ "value": 180,
6499
+ "readValue": 170,
6500
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6501
+ "lastReadError": null,
6502
+ "lastAckAt": "2026-09-06T02:53:10.791+08:00",
6503
+ "lastWriteAt": "2026-09-06T02:53:10.791+08:00",
6504
+ "state": "ok",
6505
+ "lastError": null,
6506
+ "createdAt": "2026-09-06T02:53:10.743+08:00"
6507
+ },
6508
+ {
6509
+ "id": "dw-e7b38428",
6510
+ "templateRef": "dcw-temp-sp",
6511
+ "name": "PLC-SP温度-mtpbat7b",
6512
+ "driver": "modbus-tcp",
6513
+ "enabled": true,
6514
+ "holdIntervalMs": null,
6515
+ "readIntervalMs": null,
6516
+ "unit": "℃",
6517
+ "decimals": 1,
6518
+ "min": 150,
6519
+ "max": 200,
6520
+ "deviceBindingId": null,
6521
+ "driverConfig": {
6522
+ "host": "127.0.0.1",
6523
+ "port": 15040,
6524
+ "unitId": 1,
6525
+ "register": 40021,
6526
+ "dataType": "float32",
6527
+ "byteOrder": "big"
6528
+ },
6529
+ "lineId": "",
6530
+ "value": 180,
6531
+ "readValue": 182,
6532
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6533
+ "lastReadError": null,
6534
+ "lastAckAt": "2026-09-06T12:44:52.294+08:00",
6535
+ "lastWriteAt": "2026-09-06T12:44:52.294+08:00",
6536
+ "state": "ok",
6537
+ "lastError": null,
6538
+ "createdAt": "2026-09-06T12:44:30.137+08:00"
6539
+ },
6540
+ {
6541
+ "id": "dw-e1935319",
6542
+ "templateRef": "dcw-temp-sp",
6543
+ "name": "OPCUA-SP-mtpbat7b",
6544
+ "driver": "opcua",
6545
+ "enabled": true,
6546
+ "holdIntervalMs": null,
6547
+ "readIntervalMs": null,
6548
+ "unit": "℃",
6549
+ "decimals": 1,
6550
+ "min": 150,
6551
+ "max": 200,
6552
+ "deviceBindingId": null,
6553
+ "driverConfig": {
6554
+ "endpoint": "opc.tcp://127.0.0.1:4840",
6555
+ "nodeId": "ns=2;s=AW.SetTemp"
6556
+ },
6557
+ "lineId": "",
6558
+ "value": null,
6559
+ "readValue": 172.5,
6560
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6561
+ "lastReadError": null,
6562
+ "lastAckAt": null,
6563
+ "lastWriteAt": null,
6564
+ "state": "idle",
6565
+ "lastError": null,
6566
+ "createdAt": "2026-09-06T12:44:30.165+08:00"
6567
+ },
6568
+ {
6569
+ "id": "dw-954cf29b",
6570
+ "templateRef": "dcw-temp-sp",
6571
+ "name": "MQTT-SP-mtpbat7b",
6572
+ "driver": "mqtt",
6573
+ "enabled": true,
6574
+ "holdIntervalMs": null,
6575
+ "readIntervalMs": null,
6576
+ "unit": "℃",
6577
+ "decimals": 1,
6578
+ "min": 150,
6579
+ "max": 200,
6580
+ "deviceBindingId": null,
6581
+ "driverConfig": {
6582
+ "host": "127.0.0.1",
6583
+ "port": 18830,
6584
+ "topic": "aw/sim/setpoint-mtpbat7b",
6585
+ "jsonKey": "setpoint",
6586
+ "qos": 1
6587
+ },
6588
+ "lineId": "",
6589
+ "value": null,
6590
+ "readValue": null,
6591
+ "lastReadAt": null,
6592
+ "lastReadError": null,
6593
+ "lastAckAt": null,
6594
+ "lastWriteAt": null,
6595
+ "state": "idle",
6596
+ "lastError": null,
6597
+ "createdAt": "2026-09-06T12:44:30.197+08:00"
6598
+ },
6599
+ {
6600
+ "id": "dw-27d3553e",
6601
+ "templateRef": "dcw-temp-sp",
6602
+ "name": "HTTP-SP-mtpbat7b",
6603
+ "driver": "http",
6604
+ "enabled": true,
6605
+ "holdIntervalMs": null,
6606
+ "readIntervalMs": null,
6607
+ "unit": "℃",
6608
+ "decimals": 1,
6609
+ "min": 150,
6610
+ "max": 200,
6611
+ "deviceBindingId": null,
6612
+ "driverConfig": {
6613
+ "url": "http://127.0.0.1:1889/api/setpoint",
6614
+ "bodyKey": "setpoint"
6615
+ },
6616
+ "lineId": "",
6617
+ "value": null,
6618
+ "readValue": null,
6619
+ "lastReadAt": null,
6620
+ "lastReadError": null,
6621
+ "lastAckAt": null,
6622
+ "lastWriteAt": null,
6623
+ "state": "idle",
6624
+ "lastError": null,
6625
+ "createdAt": "2026-09-06T12:44:30.228+08:00"
6626
+ },
6627
+ {
6628
+ "id": "dw-55d2256a",
6629
+ "templateRef": "dcw-temp-sp",
6630
+ "name": "PLC-SP温度-mtpd7kfb",
6631
+ "driver": "modbus-tcp",
6632
+ "enabled": true,
6633
+ "holdIntervalMs": null,
6634
+ "readIntervalMs": null,
6635
+ "unit": "℃",
6636
+ "decimals": 1,
6637
+ "min": 150,
6638
+ "max": 200,
6639
+ "deviceBindingId": null,
6640
+ "driverConfig": {
6641
+ "host": "127.0.0.1",
6642
+ "port": 15040,
6643
+ "unitId": 1,
6644
+ "register": 40021,
6645
+ "dataType": "float32",
6646
+ "byteOrder": "big"
6647
+ },
6648
+ "lineId": "",
6649
+ "value": 182,
6650
+ "readValue": 182,
6651
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6652
+ "lastReadError": null,
6653
+ "lastAckAt": "2026-09-06T13:33:38.761+08:00",
6654
+ "lastWriteAt": "2026-09-06T13:33:38.761+08:00",
6655
+ "state": "ok",
6656
+ "lastError": null,
6657
+ "createdAt": "2026-09-06T13:32:54.646+08:00"
6658
+ },
6659
+ {
6660
+ "id": "dw-c6d18283",
6661
+ "templateRef": "dcw-temp-sp",
6662
+ "name": "OPCUA-SP-mtpd7kfb",
6663
+ "driver": "opcua",
6664
+ "enabled": true,
6665
+ "holdIntervalMs": null,
6666
+ "readIntervalMs": null,
6667
+ "unit": "℃",
6668
+ "decimals": 1,
6669
+ "min": 150,
6670
+ "max": 200,
6671
+ "deviceBindingId": null,
6672
+ "driverConfig": {
6673
+ "endpoint": "opc.tcp://127.0.0.1:4840",
6674
+ "nodeId": "ns=2;s=AW.SetTemp"
6675
+ },
6676
+ "lineId": "",
6677
+ "value": 172.5,
6678
+ "readValue": 172.5,
6679
+ "lastReadAt": "2026-09-06T14:29:02.882+08:00",
6680
+ "lastReadError": null,
6681
+ "lastAckAt": "2026-09-06T13:33:37.493+08:00",
6682
+ "lastWriteAt": "2026-09-06T13:33:37.493+08:00",
6683
+ "state": "ok",
6684
+ "lastError": null,
6685
+ "createdAt": "2026-09-06T13:32:54.666+08:00"
6686
+ },
6687
+ {
6688
+ "id": "dw-9c17cd7d",
6689
+ "templateRef": "dcw-temp-sp",
6690
+ "name": "MQTT-SP-mtpd7kfb",
6691
+ "driver": "mqtt",
6692
+ "enabled": true,
6693
+ "holdIntervalMs": null,
6694
+ "readIntervalMs": null,
6695
+ "unit": "℃",
6696
+ "decimals": 1,
6697
+ "min": 150,
6698
+ "max": 200,
6699
+ "deviceBindingId": null,
6700
+ "driverConfig": {
6701
+ "host": "127.0.0.1",
6702
+ "port": 18830,
6703
+ "topic": "aw/sim/setpoint-mtpd7kfb",
6704
+ "jsonKey": "setpoint",
6705
+ "qos": 1
6706
+ },
6707
+ "lineId": "",
6708
+ "value": 165.5,
6709
+ "readValue": null,
6710
+ "lastReadAt": null,
6711
+ "lastReadError": null,
6712
+ "lastAckAt": "2026-09-06T13:33:26.425+08:00",
6713
+ "lastWriteAt": "2026-09-06T13:33:26.425+08:00",
6714
+ "state": "ok",
6715
+ "lastError": null,
6716
+ "createdAt": "2026-09-06T13:32:54.693+08:00"
6717
+ },
6718
+ {
6719
+ "id": "dw-3794be6e",
6720
+ "templateRef": "dcw-temp-sp",
6721
+ "name": "HTTP-SP-mtpd7kfb",
6722
+ "driver": "http",
6723
+ "enabled": true,
6724
+ "holdIntervalMs": null,
6725
+ "readIntervalMs": null,
6726
+ "unit": "℃",
6727
+ "decimals": 1,
6728
+ "min": 150,
6729
+ "max": 200,
6730
+ "deviceBindingId": null,
6731
+ "driverConfig": {
6732
+ "url": "http://127.0.0.1:1889/api/setpoint",
6733
+ "bodyKey": "setpoint"
6734
+ },
6735
+ "lineId": "",
6736
+ "value": 168.3,
6737
+ "readValue": null,
6738
+ "lastReadAt": null,
6739
+ "lastReadError": null,
6740
+ "lastAckAt": "2026-09-06T13:33:37.475+08:00",
6741
+ "lastWriteAt": "2026-09-06T13:33:37.475+08:00",
6742
+ "state": "ok",
6743
+ "lastError": null,
6744
+ "createdAt": "2026-09-06T13:32:54.740+08:00"
6057
6745
  }
6058
6746
  ]