From 1acbb5963d735be3ba7f04b8c61653c94597312c Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Fri, 22 Nov 2024 20:04:53 +0000 Subject: [PATCH] chore: release v6.4.0 * (bluefox) Moved GUI compilation to vite * (bluefox) Added error message if the response length is invalid --- README.md | 2 +- .../{index-CpB_NMR3.js => index-IjDYuufQ.js} | 8 +- admin/index_m.html | 2 +- io-package.json | 530 +++++++++--------- package-lock.json | 4 +- package.json | 2 +- src/package.json | 4 +- 7 files changed, 281 insertions(+), 271 deletions(-) rename admin/assets/{index-CpB_NMR3.js => index-IjDYuufQ.js} (99%) diff --git a/README.md b/README.md index b4b14dc..1ae9c48 100644 --- a/README.md +++ b/README.md @@ -307,7 +307,7 @@ There are some programs in folder `test` to test the TCP communication: ### **WORK IN PROGRESS** --> ## Changelog -### **WORK IN PROGRESS** +### 6.4.0 (2024-11-22) * (bluefox) Moved GUI compilation to vite * (bluefox) Added error message if the response length is invalid diff --git a/admin/assets/index-CpB_NMR3.js b/admin/assets/index-IjDYuufQ.js similarity index 99% rename from admin/assets/index-CpB_NMR3.js rename to admin/assets/index-IjDYuufQ.js index 9fb1248..5b7f5af 100644 --- a/admin/assets/index-CpB_NMR3.js +++ b/admin/assets/index-IjDYuufQ.js @@ -1585,9 +1585,9 @@ If this option is active, the addresses will not be aligned.`,blt="Used for bina This flag allows updating the value's timestamp by every cycle.`,Tlt="Do not add address in the generated ioBroker iD. `10_Input10` vs `Input10`.",Mlt="With this flag the Name will be `Inputs.Input10`. Without => `Inputs_Input10`.",Alt="Cyclic poll interval in milliseconds (Only relevant for master)",Dlt=`Reconnection interval in milliseconds. (Only relevant for master) If no connection established, master will try every X milliseconds to connect.`,Olt={"Add DB":"Add DB",Address:Lat,"All entries will be deleted. Are you sure?":"All entries will be deleted. Are you sure?","Are you sure?":"Are you sure?","Baud rate":"Baud rate",CW:Pat,Cancel:Fat,Close:jat,Coils:zat,"Connection parameters":"Connection parameters","Cyclic write":"Cyclic write","Data bits":"Data bits",Delete:Wat,"Delete address":"Delete address","Delete all entries":"Delete all entries",Description:Bat,"Device ID":"Device ID","Do not align addresses to word":"Do not align addresses to 16 bits","Enable polling of data point":"Poll this data point periodically",Export:Hat,"Export to CSV":"Export to CSV",Factor:Uat,General:Vat,"Holding Registers":"Holding Registers",Import:Gat,"Import DB file":"Import DB file","Import from CSV":"Import from CSV","Import symbols file":"Import symbols file","Input Registers":"Input Registers",Inputs:Xat,Length:Yat,"Load Symbols":"Load symbols",Master:Kat,"Max read request length (booleans)":"Max read request length (booleans)","Max read request length":"Max read request length (float)","Multi device IDs":"Multiple device IDs",Name:Jat,Offset:qat,"PLC Connection":"PLC Connection","PLC IP Address":"PLC IP Address","PLC Rack":"PLC Rack","PLC Slot":"PLC Slot",Parity:Zat,"Partner IP Address":"Partner IP Address","Poll delay":"Data polling interval",Port:Qat,"Pulse time":"Pulse time","RTU over TCP":"RTU over TCP",RW:elt,"Read timeout":"Read timeout","Reconnect time":"Reconnect delay",Role:tlt,Room:nlt,"Round Real to":"Round real to",SF:rlt,'Say "yes" for the next minute':'"Yes" for the next minute',"Select port":"Select serial port",Serial:olt,Slave:ilt,"Start address":"Start address","Stop bits":"Stop bits",TCP:slt,"TCP/Serial RTU":"TCP/Serial RTU","Text copied to clipboard. Click to close the window":"Text copied to clipboard. Click to close the window.","Toggle RW":"Toggle RW","Toggle WP":"Toggle WP","Toggle poll":"Toggle poll",Type:alt,Unit:llt,"Update unchanged states":"Update unchanged states","Use aliases as address":"Use aliases","Use direct addresses by aliases":"Use direct addresses (when aliases)",WP:clt,"Wait time":"Wait time","Write access allowed":"Write access allowed","Write interval":"Write interval",deviceId:ult,"do not include address in ID":"Do not include address in ID",formula:dlt,ms:plt,poll:hlt,"preserve dots in ID":"Preserve dots in ID",registers:flt,"Discrete inputs":"Discrete inputs","Binary inputs (read-only)":"Binary inputs (read-only)","Binary inputs and outputs":"Binary inputs and outputs","Input registers (8-64 bit values, read-only)":"Input registers (8-64 bit values, read-only)","Input/output registers (8-64 bit values)":"Input/output registers (8-64 bit values)","Add line":"Add line","Edit as TSV (Tab separated values)":"Edit as TSV (Tab separated values)","Edit mode":"Edit mode","Toggle extended mode":"Toggle extended mode",Formula:mlt,"Change all":"Change all",Poll:glt,"Delete all":"Delete all",Nothing:vlt,"Delete item":"Delete item","Don't show this message in 5 minutes":"Don't show this message for 5 minutes",'Are you sure to delete item with address "%s"?':'Are you sure to delete item with address "%s"?',"Store this value as scaling factor":"Store this value as scaling factor","Write pulses (true → false edge)":"Write pulses (true → false edge)","Delete all items":"Delete all items","Are you sure to delete all items?":"Are you sure to delete all items?","Edit data as TSV":"Edit data as TSV","You can copy, paste and edit data as TSV.":"You can copy, paste and edit data as TSV.","Copy to clipboard":"Copy to clipboard","TSV was copied to clipboard":"Data was copied to clipboard",'Do not use "Write multiple registers"':'Do not use "Write multiple registers"','Use only "Write multiple registers"':'Use only "Write multiple registers"',"Write only with FC5/FC6":"Write only with FC5/FC6","Write only with FC15/FC16":"Write only with FC15/FC16","Slave IP address":"Slave IP address","Listen on all IPs":"Listen on all IPs","Read interval":"Read interval","Slave ID":"Slave ID",aliases_help:_lt,doNotRoundAddressToWord_help:ylt,directAddresses_help:blt,doNotUseWriteMultipleRegisters_help:wlt,waitTime_help:Slt,timeout_help:$lt,pulsetime_help:xlt,readInterval_help:Clt,writeInterval_help:klt,alwaysUpdate_help:Elt,doNotIncludeAdrInId_help:Tlt,preserveDotsInId_help:Mlt,poll_help:Alt,recon_help:Dlt},Ilt="Adresse",Rlt="CW",Nlt="Abbrechen",Llt="Schließen",Plt="Diskrete Ausgänge",Flt="Löschen",jlt="Beschreibung",zlt="Export",Wlt="Faktor",Blt="Allgemeines",Hlt="Import",Ult="Diskrete Eingänge",Vlt="Länge",Glt="Master",Xlt="Name",Ylt="Offset",Klt="Parität",Jlt="Port",qlt="RW",Zlt="Rolle",Qlt="Raum",ect="SF",tct="Seriell",nct="Slave",rct="TCP",oct="Typ",ict="Einheit",sct="WP",act="Slave-ID",lct="Formel",cct="ms",uct="Poll",dct="Register",pct="Formel",hct="Abfrage",fct="Nichts",mct=`Normalerweise können alle Register Adressen von 0 bis 65535 haben. Mithilfe von Aliasnamen können Sie virtuelle Adressfelder für jeden Registertyp definieren. Normalerweise: - Die diskreten Eingänge reichen von 10001 bis 20000 -- Spulen sind von 1 bis 1000 -- Eingaberegister liegen zwischen 30001 und 40000 -- Die Bestandsregister reichen von 40001 bis 60000 +- Diskrete Ausgänge sind von 1 bis 1000 +- Eingangsregister liegen zwischen 30001 und 40000 +- Die Holding-Register reichen von 40001 bis 60000 Jeder Alias wird intern einer Adresse zugeordnet, z. B. 30011 wird dem Eingaberegister 10 zugeordnet und so weiter.`,gct=`Normalerweise sind die Adressen der diskrete Ausgänge und der diskreten Eingänge auf 16 Bit ausgerichtet. Gleiche Adressen von 3 bis 20 werden auf 0 bis 32 ausgerichtet. Wenn diese Option aktiv ist, werden die Adressen nicht abgeglichen.`,vct=`Wird für Diskrete Eingänge und Diskrete Ausgänge verwendet. @@ -1675,4 +1675,4 @@ Jeśli nie zostanie nawiązane żadne połączenie, master będzie próbował po 每个别名都将在内部映射到地址,例如,30011 将映射到输入寄存器 10,依此类推。`,Hvt=`通常,线圈和离散输入地址对齐为 16 位。从 3 到 20 的类似地址将与 0 到 32 对齐。 如果此选项处于活动状态,则地址将不会对齐。`,Uvt="用于二进制输入和线圈。\n如果没有这个标志,这些位的寻址方式如下:`0 => 15, 1 => 14, 2 => 13, ..., 15 => 0`。\n激活此标志后,位将被寻址为:“0 => 0, 1 => 1, 2 => 2, ..., 15 => 15”。",Vvt="如果从机不支持“写入多个寄存器”命令,您可以激活它以在多个寄存器将被写入时收到警告。",Gvt="轮询两个不同设备 ID 之间的等待时间(以毫秒为单位)。",Xvt="读取请求的超时时间(以毫秒为单位)。如果这段时间内没有收到从站的响应,连接将被终止。",Yvt="如果脉冲用于线圈,则定义脉冲的时间间隔(以毫秒为单位)。",Kvt="两个读取请求之间的延迟(以毫秒为单位)。默认 0。",Jvt="两个写入请求之间的延迟(以毫秒为单位)。默认 0。",qvt=`通常情况下,如果该值没有改变,则不会写入ioBroker。 该标志允许在每个周期更新值的时间戳。`,Zvt="不要在生成的 ioBroker iD 中添加地址。 “10_Input10”与“Input10”。",Qvt="使用此标志,名称将为“Inputs.Input10”。没有 => `Inputs_Input10`。",e_t="循环轮询间隔(以毫秒为单位)(仅与主站相关)",t_t=`重新连接间隔(以毫秒为单位)。 (仅与master相关) -如果没有建立连接,master 将每隔 X 毫秒尝试连接。`,n_t={"Add DB":"添加数据库",Address:svt,"All entries will be deleted. Are you sure?":"所有条目将被删除。你确定吗?","Are you sure?":"你确定吗?","Baud rate":"波特率",CW:avt,Cancel:lvt,Close:cvt,Coils:uvt,"Connection parameters":"连接参数","Cyclic write":"循环写","Data bits":"数据位",Delete:dvt,"Delete address":"删除地址","Delete all entries":"删除所有条目",Description:pvt,"Device ID":"设备编号","Do not align addresses to word":"不要将地址按16位对齐","Enable polling of data point":"启用数据点轮询",Export:hvt,"Export to CSV":"导出为CSV",Factor:fvt,General:mvt,"Holding Registers":"持有登记册",Import:gvt,"Import DB file":"导入数据库文件","Import from CSV":"从CSV导入","Import symbols file":"导入符号","Input Registers":"输入寄存器",Inputs:vvt,Length:_vt,"Load Symbols":"加载符号",Master:yvt,"Max read request length (booleans)":"最大读取请求长度(布尔值)","Max read request length":"最大读取请求长度(浮动)","Multi device IDs":"多设备ID",Name:bvt,Offset:wvt,"PLC Connection":"PLC连接","PLC IP Address":"PLC IP地址","PLC Rack":"PLC机架:","PLC Slot":"PLC插槽",Parity:Svt,"Partner IP Address":"同伴IP地址","Poll delay":"轮询延迟",Port:$vt,"Pulse time":"脉冲时间","RTU over TCP":"TCP上的RTU",RW:xvt,"Read timeout":"读取超时","Reconnect time":"重新连接延时",Role:Cvt,Room:kvt,"Round Real to":"舍入为",SF:Evt,'Say "yes" for the next minute':"在下一分钟说“是”","Select port":"选择串口",Serial:Tvt,Slave:Mvt,"Start address":"起始地址","Stop bits":"停止位",TCP:Avt,"TCP/Serial RTU":"TCP /串行RTU","Text copied to clipboard. Click to close the window":"文本已复制到剪贴板。点击关闭窗口。","Toggle RW":"切换RW","Toggle WP":"切换WP","Toggle poll":"切换民意调查",Type:Dvt,Unit:Ovt,"Update unchanged states":"更新未更改状态","Use aliases as address":"使用别名","Use direct addresses by aliases":"通过别名使用直接地址",WP:Ivt,"Wait time":"等待时间","Write access allowed":"允许写访问","Write interval":"写间隔",deviceId:Rvt,"do not include address in ID":"在ID中不包含地址",formula:Nvt,ms:Lvt,poll:Pvt,"preserve dots in ID":"保留ID中的点",registers:Fvt,"Discrete inputs":"离散输入","Binary inputs (read-only)":"二进制输入(只读)","Binary inputs and outputs":"二进制输入和输出","Input registers (8-64 bit values, read-only)":"输入寄存器(8-64 位值,只读)","Input/output registers (8-64 bit values)":"输入/输出寄存器(8-64 位值)","Add line":"添加行","Edit as TSV (Tab separated values)":"编辑为 TSV(制表符分隔值)","Edit mode":"编辑模式","Toggle extended mode":"切换扩展模式",Formula:jvt,"Change all":"全部更改",Poll:zvt,"Delete all":"删除所有",Nothing:Wvt,"Delete item":"删除项目","Don't show this message in 5 minutes":"5 分钟内不要显示此消息",'Are you sure to delete item with address "%s"?':"您确定要删除地址为“%s”的项目吗?","Store this value as scaling factor":"将此值存储为比例因子","Write pulses (true → false edge)":"写脉冲(真→假边沿)","Delete all items":"删除所有项目","Are you sure to delete all items?":"您确定要删除所有项目吗?","Edit data as TSV":"将数据编辑为 TSV","You can copy, paste and edit data as TSV.":"您可以将数据复制、粘贴和编辑为 TSV。","Copy to clipboard":"复制到剪贴板","TSV was copied to clipboard":"TSV 被复制到剪贴板",'Do not use "Write multiple registers"':"不要使用“写入多个寄存器”",'Use only "Write multiple registers"':"仅使用“写入多个寄存器”","Write only with FC5/FC6":"仅使用 FC5/FC6 写入","Write only with FC15/FC16":"仅使用 FC15/FC16 写入","Slave IP address":"从IP地址","Listen on all IPs":"侦听所有 IP","Read interval":"读取间隔","Slave ID":"从机 ID",aliases_help:Bvt,doNotRoundAddressToWord_help:Hvt,directAddresses_help:Uvt,doNotUseWriteMultipleRegisters_help:Vvt,waitTime_help:Gvt,timeout_help:Xvt,pulsetime_help:Yvt,readInterval_help:Kvt,writeInterval_help:Jvt,alwaysUpdate_help:qvt,doNotIncludeAdrInId_help:Zvt,preserveDotsInId_help:Qvt,poll_help:e_t,recon_help:t_t},Xp={tabContent:{padding:10,height:"calc(100% - 64px - 48px - 20px)",overflow:"auto"},tabContentIFrame:{padding:10,height:"calc(100% - 64px - 48px - 20px - 38px)",overflow:"auto"},selected:e=>({color:e.palette.mode==="dark"?void 0:"#FFF !important"}),indicator:e=>({backgroundColor:e.palette.mode==="dark"?e.palette.secondary.main:"#FFF"})},Yp=[{name:"general",title:"General",component:xI},{name:"discrete-inputs",title:"Discrete inputs",component:UI,icon:F.jsx(gx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Binary inputs (read-only)"},{name:"coils",title:"Coils",component:VI,icon:F.jsx(gx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Binary inputs and outputs"},{name:"input-registers",title:"Input Registers",component:BI,icon:F.jsx(vx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Input registers (8-64 bit values, read-only)"},{name:"holding-registers",title:"Holding Registers",component:HI,icon:F.jsx(vx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Input/output registers (8-64 bit values)"}];function Kp(e){e.sort((t,n)=>{t.deviceId=parseInt(t.deviceId,10)||1,n.deviceId=parseInt(n.deviceId,10)||1,t._address=parseInt(t._address,10)||0,n._address=parseInt(n._address,10)||0;const r=parseInt(t.deviceId,10)<<16|parseInt(t._address,10),o=parseInt(n.deviceId,10)<<16|parseInt(n._address,10);return ro?1:0})}class r_t extends ki{constructor(t){const n={...t};n.encryptedFields=["pass"],n.translations={en:Olt,de:Mct,ru:kut,pt:$dt,nl:bpt,fr:vht,it:fft,es:dmt,pl:lgt,uk:ivt,"zh-cn":n_t},n.sentryDSN=window.sentryDSN,super(t,n),this.state.moreLoaded=!1,this.state.rooms=null}onPrepareSave(t){return t.disInputs&&Kp(t.disInputs),t.coils&&Kp(t.coils),t.inputRegs&&Kp(t.inputRegs),t.holdingRegs&&Kp(t.holdingRegs),t}onConnectionReady(){super.onConnectionReady(),this.socket.getEnums("rooms").then(t=>this.setState({moreLoaded:!0,rooms:t}))}getSelectedTab(){const t=this.state.selectedTab;return t?Yp.findIndex(n=>n.name===t):0}render(){return!this.state.loaded||!this.state.moreLoaded?F.jsx(LS,{injectFirst:!0,children:F.jsx(i$,{theme:this.state.theme,children:F.jsx(ED,{themeType:this.state.themeType})})}):F.jsx(LS,{injectFirst:!0,children:F.jsx(i$,{theme:this.state.theme,children:F.jsx(CF,{children:F.jsxs("div",{className:"App",style:{background:this.state.theme.palette.background.default,color:this.state.theme.palette.text.primary},children:[F.jsx(hA,{position:"static",children:F.jsx(WA,{indicatorColor:"secondary",value:this.state.selectedTab||Yp[0].name,onChange:(t,n)=>this.setState({selectedTab:n}),variant:"scrollable",scrollButtons:"auto",sx:{"&.Mui-indicator":Xp.indicator},children:Yp.map(t=>F.jsx(Ss,{value:t.name,sx:{"&.Mui-selected":Xp.selected},label:t.icon?F.jsxs(F.Fragment,{children:[t.icon,G.t(t.title)]}):G.t(t.title),"data-name":t.name,title:t.tooltip?G.t(t.tooltip):void 0},t.name))})}),F.jsx("div",{style:this.isIFrame?Xp.tabContentIFrame:Xp.tabContent,children:Yp.map((t,n)=>{const r=t.component;if(this.state.selectedTab){if(this.state.selectedTab!==t.name)return null}else if(n!==0)return null;return F.jsx(r,{formulaDisabled:this.state.native.params.slave==="1"||this.state.native.params.slave===1,common:this.common,socket:this.socket,native:this.state.native,onError:o=>this.setState({errorText:(o||o===0)&&typeof o!="string"?o.toString():o}),onLoad:o=>this.onLoadConfig(o),instance:this.instance,adapterName:this.adapterName,changed:this.state.changed,onChange:(o,i,s)=>this.updateNativeValue(o,i,s),changeNative:o=>this.setState({native:o,changed:this.getIsChanged(o)}),rooms:this.state.rooms},t.name)})}),this.renderError(),this.renderSaveCloseButtons()]})})})})}}window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/);function o_t(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(e=>{e.unregister()})}const i_t="modebus-admin",s_t="6.3.2",a_t={"@iobroker/adapter-react-v5":"^7.4.1","@mui/icons-material":"^6.1.8","@mui/material":"^6.1.8","@vitejs/plugin-react":"^4.3.3",notistack:"^3.0.1",react:"^18.3.1","react-ace":"^13.0.0","react-dom":"^18.3.1","react-icons":"^5.3.0","tsv-json":"^2.0.0"},l_t={lint:"eslint -c eslint.config.mjs",start:"vite",build:"vite build"},c_t={extends:"react-app"},u_t=".",d_t=[">0.2%","not dead","not ie <= 11","not op_mini all"],p_t={name:i_t,version:s_t,private:!0,dependencies:a_t,scripts:l_t,eslintConfig:c_t,homepage:u_t,browserslist:d_t};window.adapterName="modbus";window.sentryDSN="https://19469f9280bd4b18a3e960e79cb01df2@sentry.iobroker.net/196";console.log(`iobroker.${window.adapterName}@${p_t.version}`);const FE=document.getElementById("root");FE&&q2(FE).render(F.jsx(r_t,{}));o_t()});export default h_t(); +如果没有建立连接,master 将每隔 X 毫秒尝试连接。`,n_t={"Add DB":"添加数据库",Address:svt,"All entries will be deleted. Are you sure?":"所有条目将被删除。你确定吗?","Are you sure?":"你确定吗?","Baud rate":"波特率",CW:avt,Cancel:lvt,Close:cvt,Coils:uvt,"Connection parameters":"连接参数","Cyclic write":"循环写","Data bits":"数据位",Delete:dvt,"Delete address":"删除地址","Delete all entries":"删除所有条目",Description:pvt,"Device ID":"设备编号","Do not align addresses to word":"不要将地址按16位对齐","Enable polling of data point":"启用数据点轮询",Export:hvt,"Export to CSV":"导出为CSV",Factor:fvt,General:mvt,"Holding Registers":"持有登记册",Import:gvt,"Import DB file":"导入数据库文件","Import from CSV":"从CSV导入","Import symbols file":"导入符号","Input Registers":"输入寄存器",Inputs:vvt,Length:_vt,"Load Symbols":"加载符号",Master:yvt,"Max read request length (booleans)":"最大读取请求长度(布尔值)","Max read request length":"最大读取请求长度(浮动)","Multi device IDs":"多设备ID",Name:bvt,Offset:wvt,"PLC Connection":"PLC连接","PLC IP Address":"PLC IP地址","PLC Rack":"PLC机架:","PLC Slot":"PLC插槽",Parity:Svt,"Partner IP Address":"同伴IP地址","Poll delay":"轮询延迟",Port:$vt,"Pulse time":"脉冲时间","RTU over TCP":"TCP上的RTU",RW:xvt,"Read timeout":"读取超时","Reconnect time":"重新连接延时",Role:Cvt,Room:kvt,"Round Real to":"舍入为",SF:Evt,'Say "yes" for the next minute':"在下一分钟说“是”","Select port":"选择串口",Serial:Tvt,Slave:Mvt,"Start address":"起始地址","Stop bits":"停止位",TCP:Avt,"TCP/Serial RTU":"TCP /串行RTU","Text copied to clipboard. Click to close the window":"文本已复制到剪贴板。点击关闭窗口。","Toggle RW":"切换RW","Toggle WP":"切换WP","Toggle poll":"切换民意调查",Type:Dvt,Unit:Ovt,"Update unchanged states":"更新未更改状态","Use aliases as address":"使用别名","Use direct addresses by aliases":"通过别名使用直接地址",WP:Ivt,"Wait time":"等待时间","Write access allowed":"允许写访问","Write interval":"写间隔",deviceId:Rvt,"do not include address in ID":"在ID中不包含地址",formula:Nvt,ms:Lvt,poll:Pvt,"preserve dots in ID":"保留ID中的点",registers:Fvt,"Discrete inputs":"离散输入","Binary inputs (read-only)":"二进制输入(只读)","Binary inputs and outputs":"二进制输入和输出","Input registers (8-64 bit values, read-only)":"输入寄存器(8-64 位值,只读)","Input/output registers (8-64 bit values)":"输入/输出寄存器(8-64 位值)","Add line":"添加行","Edit as TSV (Tab separated values)":"编辑为 TSV(制表符分隔值)","Edit mode":"编辑模式","Toggle extended mode":"切换扩展模式",Formula:jvt,"Change all":"全部更改",Poll:zvt,"Delete all":"删除所有",Nothing:Wvt,"Delete item":"删除项目","Don't show this message in 5 minutes":"5 分钟内不要显示此消息",'Are you sure to delete item with address "%s"?':"您确定要删除地址为“%s”的项目吗?","Store this value as scaling factor":"将此值存储为比例因子","Write pulses (true → false edge)":"写脉冲(真→假边沿)","Delete all items":"删除所有项目","Are you sure to delete all items?":"您确定要删除所有项目吗?","Edit data as TSV":"将数据编辑为 TSV","You can copy, paste and edit data as TSV.":"您可以将数据复制、粘贴和编辑为 TSV。","Copy to clipboard":"复制到剪贴板","TSV was copied to clipboard":"TSV 被复制到剪贴板",'Do not use "Write multiple registers"':"不要使用“写入多个寄存器”",'Use only "Write multiple registers"':"仅使用“写入多个寄存器”","Write only with FC5/FC6":"仅使用 FC5/FC6 写入","Write only with FC15/FC16":"仅使用 FC15/FC16 写入","Slave IP address":"从IP地址","Listen on all IPs":"侦听所有 IP","Read interval":"读取间隔","Slave ID":"从机 ID",aliases_help:Bvt,doNotRoundAddressToWord_help:Hvt,directAddresses_help:Uvt,doNotUseWriteMultipleRegisters_help:Vvt,waitTime_help:Gvt,timeout_help:Xvt,pulsetime_help:Yvt,readInterval_help:Kvt,writeInterval_help:Jvt,alwaysUpdate_help:qvt,doNotIncludeAdrInId_help:Zvt,preserveDotsInId_help:Qvt,poll_help:e_t,recon_help:t_t},Xp={tabContent:{padding:10,height:"calc(100% - 64px - 48px - 20px)",overflow:"auto"},tabContentIFrame:{padding:10,height:"calc(100% - 64px - 48px - 20px - 38px)",overflow:"auto"},selected:e=>({color:e.palette.mode==="dark"?void 0:"#FFF !important"}),indicator:e=>({backgroundColor:e.palette.mode==="dark"?e.palette.secondary.main:"#FFF"})},Yp=[{name:"general",title:"General",component:xI},{name:"discrete-inputs",title:"Discrete inputs",component:UI,icon:F.jsx(gx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Binary inputs (read-only)"},{name:"coils",title:"Coils",component:VI,icon:F.jsx(gx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Binary inputs and outputs"},{name:"input-registers",title:"Input Registers",component:BI,icon:F.jsx(vx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Input registers (8-64 bit values, read-only)"},{name:"holding-registers",title:"Holding Registers",component:HI,icon:F.jsx(vx,{style:{width:18,height:18,marginRight:4,display:"inline-block"}}),tooltip:"Input/output registers (8-64 bit values)"}];function Kp(e){e.sort((t,n)=>{t.deviceId=parseInt(t.deviceId,10)||1,n.deviceId=parseInt(n.deviceId,10)||1,t._address=parseInt(t._address,10)||0,n._address=parseInt(n._address,10)||0;const r=parseInt(t.deviceId,10)<<16|parseInt(t._address,10),o=parseInt(n.deviceId,10)<<16|parseInt(n._address,10);return ro?1:0})}class r_t extends ki{constructor(t){const n={...t};n.encryptedFields=["pass"],n.translations={en:Olt,de:Mct,ru:kut,pt:$dt,nl:bpt,fr:vht,it:fft,es:dmt,pl:lgt,uk:ivt,"zh-cn":n_t},n.sentryDSN=window.sentryDSN,super(t,n),this.state.moreLoaded=!1,this.state.rooms=null}onPrepareSave(t){return t.disInputs&&Kp(t.disInputs),t.coils&&Kp(t.coils),t.inputRegs&&Kp(t.inputRegs),t.holdingRegs&&Kp(t.holdingRegs),t}onConnectionReady(){super.onConnectionReady(),this.socket.getEnums("rooms").then(t=>this.setState({moreLoaded:!0,rooms:t}))}getSelectedTab(){const t=this.state.selectedTab;return t?Yp.findIndex(n=>n.name===t):0}render(){return!this.state.loaded||!this.state.moreLoaded?F.jsx(LS,{injectFirst:!0,children:F.jsx(i$,{theme:this.state.theme,children:F.jsx(ED,{themeType:this.state.themeType})})}):F.jsx(LS,{injectFirst:!0,children:F.jsx(i$,{theme:this.state.theme,children:F.jsx(CF,{children:F.jsxs("div",{className:"App",style:{background:this.state.theme.palette.background.default,color:this.state.theme.palette.text.primary},children:[F.jsx(hA,{position:"static",children:F.jsx(WA,{indicatorColor:"secondary",value:this.state.selectedTab||Yp[0].name,onChange:(t,n)=>this.setState({selectedTab:n}),variant:"scrollable",scrollButtons:"auto",sx:{"&.Mui-indicator":Xp.indicator},children:Yp.map(t=>F.jsx(Ss,{value:t.name,sx:{"&.Mui-selected":Xp.selected},label:t.icon?F.jsxs(F.Fragment,{children:[t.icon,G.t(t.title)]}):G.t(t.title),"data-name":t.name,title:t.tooltip?G.t(t.tooltip):void 0},t.name))})}),F.jsx("div",{style:this.isIFrame?Xp.tabContentIFrame:Xp.tabContent,children:Yp.map((t,n)=>{const r=t.component;if(this.state.selectedTab){if(this.state.selectedTab!==t.name)return null}else if(n!==0)return null;return F.jsx(r,{formulaDisabled:this.state.native.params.slave==="1"||this.state.native.params.slave===1,common:this.common,socket:this.socket,native:this.state.native,onError:o=>this.setState({errorText:(o||o===0)&&typeof o!="string"?o.toString():o}),onLoad:o=>this.onLoadConfig(o),instance:this.instance,adapterName:this.adapterName,changed:this.state.changed,onChange:(o,i,s)=>this.updateNativeValue(o,i,s),changeNative:o=>this.setState({native:o,changed:this.getIsChanged(o)}),rooms:this.state.rooms},t.name)})}),this.renderError(),this.renderSaveCloseButtons()]})})})})}}window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/);function o_t(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(e=>{e.unregister()})}const i_t="modebus-admin",s_t="6.4.0",a_t={"@iobroker/adapter-react-v5":"^7.4.1","@mui/icons-material":"^6.1.8","@mui/material":"^6.1.8","@vitejs/plugin-react":"^4.3.3",notistack:"^3.0.1",react:"^18.3.1","react-ace":"^13.0.0","react-dom":"^18.3.1","react-icons":"^5.3.0","tsv-json":"^2.0.0"},l_t={lint:"eslint -c eslint.config.mjs",start:"vite",build:"vite build"},c_t={extends:"react-app"},u_t=".",d_t=[">0.2%","not dead","not ie <= 11","not op_mini all"],p_t={name:i_t,version:s_t,private:!0,dependencies:a_t,scripts:l_t,eslintConfig:c_t,homepage:u_t,browserslist:d_t};window.adapterName="modbus";window.sentryDSN="https://19469f9280bd4b18a3e960e79cb01df2@sentry.iobroker.net/196";console.log(`iobroker.${window.adapterName}@${p_t.version}`);const FE=document.getElementById("root");FE&&q2(FE).render(F.jsx(r_t,{}));o_t()});export default h_t(); diff --git a/admin/index_m.html b/admin/index_m.html index 340f0f8..1fc707f 100644 --- a/admin/index_m.html +++ b/admin/index_m.html @@ -11,7 +11,7 @@ Modbus - + diff --git a/io-package.json b/io-package.json index e86b818..9ea591f 100644 --- a/io-package.json +++ b/io-package.json @@ -1,268 +1,278 @@ { - "common": { - "name": "modbus", - "version": "6.3.2", - "news": { - "6.3.2": { - "en": "Corrected the error with alignment of addresses", - "de": "Korrektur des Fehlers bei der Ausrichtung von Adressen", - "ru": "Исправлена ошибка с выравниванием адресов", - "pt": "Corrigido o erro com o alinhamento de endereços", - "nl": "De fout gecorrigeerd met het uitlijnen van adressen", - "fr": "Correction de l'erreur avec l'alignement des adresses", - "it": "Corretto l'errore con allineamento degli indirizzi", - "es": "Corregido el error con la alineación de direcciones", - "pl": "Poprawiono błąd z ustawieniem adresów", - "uk": "Виправлено помилку з вирівнюванням адрес", - "zh-cn": "在地址对齐时纠正了错误" - }, - "6.3.0": { - "en": "Fix Timeout management to prevent leaking memory\nAdded information about connected clients in the server mode\nTried to fix error with aligning addresses\nGUI was migrated to admin 7", - "de": "Fix Timeout-Management, um zu verhindern, dass Leckspeicher\nWeitere Informationen zu verbundenen Clients im Servermodus\nVersuche, Fehler mit Ausrichtadressen zu beheben\nGUI wurde zu admin 7 migriert", - "ru": "Управление тайм-аутом для предотвращения утечки памяти\nДобавлена информация о подключенных клиентах в серверном режиме\nПопытка исправить ошибку с выравниванием адресов\nGUI был перенесен на admin 7", - "pt": "Corrigir gerenciamento de tempo limite para evitar vazamento de memória\nInformaçÃμes adicionais sobre clientes conectados no modo servidor\nTentei corrigir o erro com os endereços de alinhamento\nGUI foi migrado para admin 7", - "nl": "Fix Timeout management om het lekken van geheugen te voorkomen\nInformatie over verbonden clients toegevoegd in de servermodus\nProbeerde fout te herstellen met uitlijnen van adressen\nGUI is gemigreerd naar admin 7", - "fr": "Correction de la gestion du délai pour éviter les fuites de mémoire\nAjout d'informations sur les clients connectés en mode serveur\nEssai de corriger l'erreur avec les adresses d'alignement\nGUI a été migré vers admin 7", - "it": "Fissare la gestione Timeout per evitare perdite di memoria\nAggiunte informazioni sui client connessi nella modalità server\nHo cercato di correggere l'errore con gli indirizzi di allineamento\nGUI è stata migrata ad admin 7", - "es": "Arreglar la gestión del tiempo para evitar fugas de memoria\nInformación adicional sobre clientes conectados en el modo servidor\nTrató de corregir el error con direcciones alineadas\nGUI was migrated to admin 7", - "pl": "Zarządzanie timeout, aby zapobiec wyciekom pamięci\nDodano informacje o podłączonych klientach w trybie serwera\nPróbowano naprawić błąd z adresami dostosowującymi\nGUI został przeniesiony do admin 7", - "uk": "Виправлення часу управління для запобігання витоку пам'яті\nДодано інформацію про підключені клієнти в режимі сервера\nПеревірити помилку з вирівнюванням адрес\nGUI був мігрований до адмін 7", - "zh-cn": "修正超时管理以防止内存泄漏\n在服务器模式中添加了连接客户端的信息\n尝试用对齐地址修正错误\nGUI 已迁移到管理员 7" - }, - "6.2.3": { - "en": "Fixed error at aligning addresses to word\nAdded device id to some errors", - "de": "Fehler beim Ausrichten von Adressen zu Wort behoben\nHinzugefügt Gerät id zu einigen Fehlern", - "ru": "Исправленная ошибка при выравнивании адресов к слову\nДобавлено устройство id к некоторым ошибкам", - "pt": "Erro fixo em endereços de alinhamento à palavra\nAdicionado dispositivo id a alguns erros", - "nl": "Fout bij het uitlijnen van adressen naar woord\nApparaat-id toegevoegd aan enkele fouten", - "fr": "Erreur corrigée à l'alignement des adresses sur le mot\nAjout de l'identifiant du périphérique à certaines erreurs", - "it": "Errore fisso allineando gli indirizzi alla parola\nAggiunto dispositivo id a alcuni errori", - "es": "Error fijo en alinear direcciones a palabra\nDispositivo añadido id a algunos errores", - "pl": "Naprawiony błąd przy dostosowywaniu adresów do słowa\nDodano id urządzenia do niektórych błędów", - "uk": "Виправлена помилка при вирівнюванні адрес в слово\nДодано пристрій id до деяких помилок", - "zh-cn": "对齐地址和单词时的固定错误\n添加到一些错误中的设备 ID" - }, - "6.2.2": { - "en": "Downgrade gulp to 4.0.2 to fix build", - "de": "Downgrade Gulp auf 4.0.2 zu reparieren Build", - "ru": "4.0.2 для фиксации сборки", - "pt": "Downgrade gulp para 4.0.2 para corrigir a compilação", - "nl": "Downgrade gulp naar 4.0.2 om build te repareren", - "fr": "Goupe de qualité inférieure à 4.0.2 pour fixer la construction", - "it": "Golp downgrade a 4.0.2 per fissare la costruzione", - "es": "Golp degradado a 4.0.2 para fijar la construcción", - "pl": "Przewód downgrade do 4.0.2, aby naprawić budowę", - "uk": "Downgrade gulp до 4.0.2 для кріплення", - "zh-cn": "将gulp降级为4. 0.2,以修复建筑" - }, - "6.2.1": { - "en": "Warning regarding scale factor due to incorrect check: \"Calculation of a scaleFactor which is based on another scaleFactor seems strange.\"", - "de": "Warnung bezüglich des Skalenfaktors durch falsche Überprüfung: \"Kalkulation einer SkalaFactor, die auf einer anderen Skala basiertFactor scheint seltsam.\"", - "ru": "Предупреждение о факторе шкалы из-за неправильной проверки: «Calculation of a scaleFactor which is based on another scaleFactor seems Strange»", - "pt": "Aviso sobre o fator de escala devido à verificação incorreta: \"Calculação de uma escalaFactor que é baseado em outra escalaFactor parece estranho.\"", - "nl": "Waarschuwing met betrekking tot schaalfactor vanwege onjuiste controle: \"Berekenen van een schaalFactor die gebaseerd is op een andere schaalFactor lijkt vreemd.\"", - "fr": "Avertissement concernant le facteur d'échelle en raison d'une vérification incorrecte: \"Calcul d'une échelleFactor qui est basée sur une autre échelleFactor semble étrange.\"", - "it": "Avvertenza sul fattore di scala a causa di un controllo errato: \"Calcolo di una scalaFattore che si basa su un'altra scalaFattore sembra strano.\"", - "es": "Advertencia sobre el factor de escala debido a la comprobación incorrecta: \"Calculación de una escalaFactor que se basa en otra escalaEl actor parece extraño\"", - "pl": "Ostrzeżenie dotyczące współczynnika skali z powodu nieprawidłowego sprawdzenia: \"Obliczanie skaleFactor, który jest oparty na innym skaleFactor wydaje się dziwne\"", - "uk": "Попередження про фактор масштабу за рахунок неправильної перевірки: «Калкуляція масштабуФактора, який базується на іншому масштабіФактор здається дивним»", - "zh-cn": "因检查不正确而显示比例表因素的警告 : \"计算一个尺度的Factor 它基于另一个尺度的Factor似乎很奇怪。\"" - }, - "6.2.0": { - "en": "String based on 16 bit values big endian as well as little endian\nRaw data as a hex string\nFix issue stringle was always converted to number for slave\nEnable formula for strings and hex strings", - "de": "String basierend auf 16 Bit Werten große Endian sowie wenig Endian\nDaten als Hexenzeichen\nFix Problem stringle wurde immer in Nummer für Slave umgewandelt\nFormel aktivieren für Strings und Hexenstrings", - "ru": "Стринг основан на 16-битных значениях большого кондиана, а также маленького кондиана\nСырные данные как строка гекса\nФикс-лидер всегда был конвертирован в число для раба\nВключить формулу для строк и строк", - "pt": "String baseado em 16 bits valores grande endian, bem como pouco endian\nDados brutos como uma cadeia hex\nCorrigir problema stringle foi sempre convertido em número para escravo\nHabilite a fórmula para strings e caracteres hex", - "nl": "Tekenreeks gebaseerd op 16 bit waarden grote endiaan en kleine endiaan\nRaw data als hex string\nFix probleem stringle werd altijd omgezet naar nummer voor slave\nFormule voor tekenreeksen en hextekenreeksen inschakelen", - "fr": "String basé sur les valeurs 16 bits grand endian ainsi que peu d'endian\nDonnées brutes comme une chaîne de caractères hexagonaux\nCorrection de la chaîne d'émission a toujours été convertie en nombre pour esclave\nActiver la formule pour les chaînes de caractères et les chaînes de caractères", - "it": "String basato su 16 bit valori big endian e piccolo endian\nDati grezzi come stringa esagonale\nFisso problema stringle è sempre stato convertito in numero per schiavo\nAttiva la formula per stringhe e stringhe di esagonale", - "es": "Pendiente basado en 16 valores de bits grandes endian así como poco endian\nDatos brutos como cadena hexagonal\nCorrección de números siempre se convirtió en número para esclavo\nActivar fórmula para cadenas y cadenas hexagonales", - "pl": "String w oparciu o 16-bitowe wartości duże endian, jak również małe endian\nSurowe dane jako ciąg szesnastkowy\nPoprawiony numer utworu był zawsze przeliczany na numer dla niewolnika\nWłącz formułę dla ciągów i ciągów hex", - "uk": "String на основі 16 біт значень великого ендоріана, а також маленького ендоріана\nСирі дані як рядок шестигранної\nВиправлено помилку питання stringle завжди перетворено на номер для раба\nУвімкнути формулу для рядків і шестигранних рядків", - "zh-cn": "基于 16 位值的字符串\n作为十六进制字符串的原始数据\nFix issue stringle 总是被转换成奴隶的数字\n启用字符串和十六进制字符串的公式" - }, - "6.1.0": { - "en": "Implement the connection keepAlive", - "de": "Implementieren der Verbindung halten Alive", - "ru": "Внедрить соединение держать Живой", - "pt": "Implementar a conexão manter Vivo", - "nl": "Impliceer de connectie Levend", - "fr": "Mettre en œuvre la connexion Alive", - "it": "Implementare la connessione mantenere Vivo", - "es": "Implementar la conexión Alive", - "pl": "Umożliwia to, że połączenie zachowuje połączenie. Alive", - "uk": "Реалізація з'єднання тримати Напляскване", - "zh-cn": "执行联络系统 活 活" - } - }, - "titleLang": { - "en": "ModBus", - "de": "ModBus", - "ru": "ModBus", - "pt": "ModBus", - "nl": "ModBus", - "fr": "ModBus", - "it": "ModBus", - "es": "ModBus", - "pl": "ModBus", - "uk": "ModBus", - "zh-cn": "ModBus" - }, - "desc": { - "en": "ModBus connection Slave or Master", - "de": "ModBus Verbindung Slave oder Master", - "ru": "ModBus соединение Slave или Master", - "pt": "Conexão ModBus Escravo ou Mestre", - "nl": "ModBus-verbinding Slave of Master", - "fr": "Connexion ModBus Esclave ou Maître", - "it": "Connessione ModBus Slave o Master", - "es": "Conexión ModBus Slave o Master", - "pl": "Połączenie ModBus Slave lub Master", - "zh-cn": "ModBus连接从站或主站" - }, - "authors": ["bluefox "], - "licenseInformation": { - "license": "MIT", - "type": "free" + "common": { + "name": "modbus", + "version": "6.4.0", + "news": { + "6.4.0": { + "en": "Moved GUI compilation to vite\nAdded error message if the response length is invalid", + "de": "Versetzte GUI-Compilation zu vite\nFehlermeldung hinzugefügt, wenn die Antwortlänge ungültig ist", + "ru": "Перемещение GUI-компиляция в vite\nДобавить сообщение об ошибке, если длина ответа недействительна", + "pt": "Compilação de GUI movido para vite\nAdicionado mensagem de erro se o comprimento de resposta é inválido", + "nl": "GUI compilatie verplaatst naar vite\nFoutmelding toegevoegd als de responslengte ongeldig is", + "fr": "Compilation GUI déplacée sur rite\nAjout du message d'erreur si la longueur de réponse est invalide", + "it": "Spostato compilazione GUI a vite\nAggiunto messaggio di errore se la lunghezza di risposta è invalida", + "es": "Mueve la compilación GUI para vite\nMensaje de error añadido si la longitud de respuesta es inválida", + "pl": "Przeniesiony GUI kompilacja vite\nDodano komunikat błędu, jeśli długość odpowiedzi jest nieprawidłowa", + "uk": "Переміщення графічних інтерфейсів для vite\nДодано повідомлення про помилку, якщо довжина відповіді недійсна", + "zh-cn": "将 GUI 编译为 vite\n如果响应长度无效, 则添加错误消息" + }, + "6.3.2": { + "en": "Corrected the error with alignment of addresses", + "de": "Korrektur des Fehlers bei der Ausrichtung von Adressen", + "ru": "Исправлена ошибка с выравниванием адресов", + "pt": "Corrigido o erro com o alinhamento de endereços", + "nl": "De fout gecorrigeerd met het uitlijnen van adressen", + "fr": "Correction de l'erreur avec l'alignement des adresses", + "it": "Corretto l'errore con allineamento degli indirizzi", + "es": "Corregido el error con la alineación de direcciones", + "pl": "Poprawiono błąd z ustawieniem adresów", + "uk": "Виправлено помилку з вирівнюванням адрес", + "zh-cn": "在地址对齐时纠正了错误" + }, + "6.3.0": { + "en": "Fix Timeout management to prevent leaking memory\nAdded information about connected clients in the server mode\nTried to fix error with aligning addresses\nGUI was migrated to admin 7", + "de": "Fix Timeout-Management, um zu verhindern, dass Leckspeicher\nWeitere Informationen zu verbundenen Clients im Servermodus\nVersuche, Fehler mit Ausrichtadressen zu beheben\nGUI wurde zu admin 7 migriert", + "ru": "Управление тайм-аутом для предотвращения утечки памяти\nДобавлена информация о подключенных клиентах в серверном режиме\nПопытка исправить ошибку с выравниванием адресов\nGUI был перенесен на admin 7", + "pt": "Corrigir gerenciamento de tempo limite para evitar vazamento de memória\nInformaçÃμes adicionais sobre clientes conectados no modo servidor\nTentei corrigir o erro com os endereços de alinhamento\nGUI foi migrado para admin 7", + "nl": "Fix Timeout management om het lekken van geheugen te voorkomen\nInformatie over verbonden clients toegevoegd in de servermodus\nProbeerde fout te herstellen met uitlijnen van adressen\nGUI is gemigreerd naar admin 7", + "fr": "Correction de la gestion du délai pour éviter les fuites de mémoire\nAjout d'informations sur les clients connectés en mode serveur\nEssai de corriger l'erreur avec les adresses d'alignement\nGUI a été migré vers admin 7", + "it": "Fissare la gestione Timeout per evitare perdite di memoria\nAggiunte informazioni sui client connessi nella modalità server\nHo cercato di correggere l'errore con gli indirizzi di allineamento\nGUI è stata migrata ad admin 7", + "es": "Arreglar la gestión del tiempo para evitar fugas de memoria\nInformación adicional sobre clientes conectados en el modo servidor\nTrató de corregir el error con direcciones alineadas\nGUI was migrated to admin 7", + "pl": "Zarządzanie timeout, aby zapobiec wyciekom pamięci\nDodano informacje o podłączonych klientach w trybie serwera\nPróbowano naprawić błąd z adresami dostosowującymi\nGUI został przeniesiony do admin 7", + "uk": "Виправлення часу управління для запобігання витоку пам'яті\nДодано інформацію про підключені клієнти в режимі сервера\nПеревірити помилку з вирівнюванням адрес\nGUI був мігрований до адмін 7", + "zh-cn": "修正超时管理以防止内存泄漏\n在服务器模式中添加了连接客户端的信息\n尝试用对齐地址修正错误\nGUI 已迁移到管理员 7" + }, + "6.2.3": { + "en": "Fixed error at aligning addresses to word\nAdded device id to some errors", + "de": "Fehler beim Ausrichten von Adressen zu Wort behoben\nHinzugefügt Gerät id zu einigen Fehlern", + "ru": "Исправленная ошибка при выравнивании адресов к слову\nДобавлено устройство id к некоторым ошибкам", + "pt": "Erro fixo em endereços de alinhamento à palavra\nAdicionado dispositivo id a alguns erros", + "nl": "Fout bij het uitlijnen van adressen naar woord\nApparaat-id toegevoegd aan enkele fouten", + "fr": "Erreur corrigée à l'alignement des adresses sur le mot\nAjout de l'identifiant du périphérique à certaines erreurs", + "it": "Errore fisso allineando gli indirizzi alla parola\nAggiunto dispositivo id a alcuni errori", + "es": "Error fijo en alinear direcciones a palabra\nDispositivo añadido id a algunos errores", + "pl": "Naprawiony błąd przy dostosowywaniu adresów do słowa\nDodano id urządzenia do niektórych błędów", + "uk": "Виправлена помилка при вирівнюванні адрес в слово\nДодано пристрій id до деяких помилок", + "zh-cn": "对齐地址和单词时的固定错误\n添加到一些错误中的设备 ID" + }, + "6.2.2": { + "en": "Downgrade gulp to 4.0.2 to fix build", + "de": "Downgrade Gulp auf 4.0.2 zu reparieren Build", + "ru": "4.0.2 для фиксации сборки", + "pt": "Downgrade gulp para 4.0.2 para corrigir a compilação", + "nl": "Downgrade gulp naar 4.0.2 om build te repareren", + "fr": "Goupe de qualité inférieure à 4.0.2 pour fixer la construction", + "it": "Golp downgrade a 4.0.2 per fissare la costruzione", + "es": "Golp degradado a 4.0.2 para fijar la construcción", + "pl": "Przewód downgrade do 4.0.2, aby naprawić budowę", + "uk": "Downgrade gulp до 4.0.2 для кріплення", + "zh-cn": "将gulp降级为4. 0.2,以修复建筑" + }, + "6.2.1": { + "en": "Warning regarding scale factor due to incorrect check: \"Calculation of a scaleFactor which is based on another scaleFactor seems strange.\"", + "de": "Warnung bezüglich des Skalenfaktors durch falsche Überprüfung: \"Kalkulation einer SkalaFactor, die auf einer anderen Skala basiertFactor scheint seltsam.\"", + "ru": "Предупреждение о факторе шкалы из-за неправильной проверки: «Calculation of a scaleFactor which is based on another scaleFactor seems Strange»", + "pt": "Aviso sobre o fator de escala devido à verificação incorreta: \"Calculação de uma escalaFactor que é baseado em outra escalaFactor parece estranho.\"", + "nl": "Waarschuwing met betrekking tot schaalfactor vanwege onjuiste controle: \"Berekenen van een schaalFactor die gebaseerd is op een andere schaalFactor lijkt vreemd.\"", + "fr": "Avertissement concernant le facteur d'échelle en raison d'une vérification incorrecte: \"Calcul d'une échelleFactor qui est basée sur une autre échelleFactor semble étrange.\"", + "it": "Avvertenza sul fattore di scala a causa di un controllo errato: \"Calcolo di una scalaFattore che si basa su un'altra scalaFattore sembra strano.\"", + "es": "Advertencia sobre el factor de escala debido a la comprobación incorrecta: \"Calculación de una escalaFactor que se basa en otra escalaEl actor parece extraño\"", + "pl": "Ostrzeżenie dotyczące współczynnika skali z powodu nieprawidłowego sprawdzenia: \"Obliczanie skaleFactor, który jest oparty na innym skaleFactor wydaje się dziwne\"", + "uk": "Попередження про фактор масштабу за рахунок неправильної перевірки: «Калкуляція масштабуФактора, який базується на іншому масштабіФактор здається дивним»", + "zh-cn": "因检查不正确而显示比例表因素的警告 : \"计算一个尺度的Factor 它基于另一个尺度的Factor似乎很奇怪。\"" + }, + "6.2.0": { + "en": "String based on 16 bit values big endian as well as little endian\nRaw data as a hex string\nFix issue stringle was always converted to number for slave\nEnable formula for strings and hex strings", + "de": "String basierend auf 16 Bit Werten große Endian sowie wenig Endian\nDaten als Hexenzeichen\nFix Problem stringle wurde immer in Nummer für Slave umgewandelt\nFormel aktivieren für Strings und Hexenstrings", + "ru": "Стринг основан на 16-битных значениях большого кондиана, а также маленького кондиана\nСырные данные как строка гекса\nФикс-лидер всегда был конвертирован в число для раба\nВключить формулу для строк и строк", + "pt": "String baseado em 16 bits valores grande endian, bem como pouco endian\nDados brutos como uma cadeia hex\nCorrigir problema stringle foi sempre convertido em número para escravo\nHabilite a fórmula para strings e caracteres hex", + "nl": "Tekenreeks gebaseerd op 16 bit waarden grote endiaan en kleine endiaan\nRaw data als hex string\nFix probleem stringle werd altijd omgezet naar nummer voor slave\nFormule voor tekenreeksen en hextekenreeksen inschakelen", + "fr": "String basé sur les valeurs 16 bits grand endian ainsi que peu d'endian\nDonnées brutes comme une chaîne de caractères hexagonaux\nCorrection de la chaîne d'émission a toujours été convertie en nombre pour esclave\nActiver la formule pour les chaînes de caractères et les chaînes de caractères", + "it": "String basato su 16 bit valori big endian e piccolo endian\nDati grezzi come stringa esagonale\nFisso problema stringle è sempre stato convertito in numero per schiavo\nAttiva la formula per stringhe e stringhe di esagonale", + "es": "Pendiente basado en 16 valores de bits grandes endian así como poco endian\nDatos brutos como cadena hexagonal\nCorrección de números siempre se convirtió en número para esclavo\nActivar fórmula para cadenas y cadenas hexagonales", + "pl": "String w oparciu o 16-bitowe wartości duże endian, jak również małe endian\nSurowe dane jako ciąg szesnastkowy\nPoprawiony numer utworu był zawsze przeliczany na numer dla niewolnika\nWłącz formułę dla ciągów i ciągów hex", + "uk": "String на основі 16 біт значень великого ендоріана, а також маленького ендоріана\nСирі дані як рядок шестигранної\nВиправлено помилку питання stringle завжди перетворено на номер для раба\nУвімкнути формулу для рядків і шестигранних рядків", + "zh-cn": "基于 16 位值的字符串\n作为十六进制字符串的原始数据\nFix issue stringle 总是被转换成奴隶的数字\n启用字符串和十六进制字符串的公式" + } + }, + "titleLang": { + "en": "ModBus", + "de": "ModBus", + "ru": "ModBus", + "pt": "ModBus", + "nl": "ModBus", + "fr": "ModBus", + "it": "ModBus", + "es": "ModBus", + "pl": "ModBus", + "uk": "ModBus", + "zh-cn": "ModBus" + }, + "desc": { + "en": "ModBus connection Slave or Master", + "de": "ModBus Verbindung Slave oder Master", + "ru": "ModBus соединение Slave или Master", + "pt": "Conexão ModBus Escravo ou Mestre", + "nl": "ModBus-verbinding Slave of Master", + "fr": "Connexion ModBus Esclave ou Maître", + "it": "Connessione ModBus Slave o Master", + "es": "Conexión ModBus Slave o Master", + "pl": "Połączenie ModBus Slave lub Master", + "zh-cn": "ModBus连接从站或主站" + }, + "authors": [ + "bluefox " + ], + "licenseInformation": { + "license": "MIT", + "type": "free" + }, + "platform": "Javascript/Node.js", + "mode": "daemon", + "loglevel": "info", + "messagebox": true, + "icon": "modbus.png", + "keywords": [ + "ModBus" + ], + "enabled": true, + "extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.modbus/master/admin/modbus.png", + "readme": "https://github.com/ioBroker/ioBroker.modbus/blob/master/README.md", + "type": "protocols", + "plugins": { + "sentry": { + "dsn": "https://0c7b6d766435448cbf4908f615efe683@sentry.iobroker.net/84" + } + }, + "compact": true, + "connectionType": "local", + "dataSource": "poll", + "tier": 2, + "eraseOnUpload": true, + "adminUI": { + "config": "materialize" + }, + "dependencies": [ + { + "js-controller": ">=5.0.19" + } + ], + "globalDependencies": [ + { + "admin": ">=5.1.28" + } + ], + "messages": [ + { + "condition": { + "operand": "and", + "rules": [ + "oldVersion<5.0.0", + "newVersion>=5.0.0" + ] }, - "platform": "Javascript/Node.js", - "mode": "daemon", - "loglevel": "info", - "messagebox": true, - "icon": "modbus.png", - "keywords": ["ModBus"], - "enabled": true, - "extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.modbus/master/admin/modbus.png", - "readme": "https://github.com/ioBroker/ioBroker.modbus/blob/master/README.md", - "type": "protocols", - "plugins": { - "sentry": { - "dsn": "https://0c7b6d766435448cbf4908f615efe683@sentry.iobroker.net/84" - } + "title": { + "en": "Objects IDs will change with update!", + "de": "Objekt-IDs ändern sich mit dem Update!", + "ru": "ID объектов изменятся с обновлением!", + "pt": "Os IDs de objetos mudarão com a atualização!", + "nl": "Object-ID's veranderen met de update!", + "fr": "Les ID d'objets changeront avec la mise à jour !", + "it": "Gli ID degli oggetti cambieranno con l'aggiornamento!", + "es": "¡Los ID de los objetos cambiarán con la actualización!", + "pl": "Identyfikatory obiektów zmienią się wraz z aktualizacją!", + "zh-cn": "对象 ID 会随着更新而改变!" }, - "compact": true, - "connectionType": "local", - "dataSource": "poll", - "tier": 2, - "eraseOnUpload": true, - "adminUI": { - "config": "materialize" + "text": { + "en": "This update makes sure that all space characters are correctly replaced by underscores on Object-IDs. This means that they will change after this update if you use more then one space in the names of your registers. You need to manually delete the old Object names.", + "de": "Dieses Update stellt sicher, dass alle Leerzeichen bei Objekt-IDs korrekt durch Unterstriche ersetzt werden. Das bedeutet, dass sie sich nach diesem Update ändern, wenn mehr als ein Leerzeichen im Namen der Register verwendet wird. Alte Objektnamen müssen manuell gelöscht werden.", + "ru": "Это обновление обеспечивает правильную замену всех символов пробела символами подчеркивания в идентификаторах объектов. Это означает, что они изменятся после этого обновления, если вы используете более одного пробела в именах ваших регистров. Вам необходимо вручную удалить старые имена объектов.", + "pt": "Essa atualização garante que todos os caracteres de espaço sejam substituídos corretamente por sublinhados em IDs de objeto. Isso significa que eles serão alterados após esta atualização se você usar mais de um espaço nos nomes dos seus registros. Você precisa excluir manualmente os nomes de objetos antigos.", + "nl": "Deze update zorgt ervoor dat alle spatietekens correct worden vervangen door onderstrepingstekens op Object-ID's. Dit betekent dat ze na deze update zullen veranderen als u meer dan één spatie gebruikt in de namen van uw registers. U moet de oude objectnamen handmatig verwijderen.", + "fr": "Cette mise à jour garantit que tous les espaces sont correctement remplacés par des traits de soulignement sur les ID d'objet. Cela signifie qu'ils changeront après cette mise à jour si vous utilisez plus d'un espace dans les noms de vos registres. Vous devez supprimer manuellement les anciens noms d'objet.", + "it": "Questo aggiornamento assicura che tutti i caratteri spazio siano sostituiti correttamente da caratteri di sottolineatura sugli ID oggetto. Ciò significa che cambieranno dopo questo aggiornamento se utilizzi più di uno spazio nei nomi dei tuoi registri. È necessario eliminare manualmente i vecchi nomi degli oggetti.", + "es": "Esta actualización garantiza que todos los caracteres de espacio se reemplacen correctamente por guiones bajos en los ID de objetos. Esto significa que cambiarán después de esta actualización si usa más de un espacio en los nombres de sus registros. Debe eliminar manualmente los nombres de objetos antiguos.", + "pl": "Ta aktualizacja zapewnia, że wszystkie znaki spacji są poprawnie zastępowane podkreśleniami w identyfikatorach obiektów. Oznacza to, że zmienią się one po tej aktualizacji, jeśli użyjesz więcej niż jednej spacji w nazwach swoich rejestrów. Musisz ręcznie usunąć stare nazwy obiektów.", + "zh-cn": "此更新确保所有空格字符都正确替换为对象 ID 上的下划线。这意味着如果您在寄存器名称中使用超过一个空格,它们将在此更新后更改。您需要手动删除旧的对象名称。" }, - "dependencies": [ - { - "js-controller": ">=5.0.19" - } - ], - "globalDependencies": [ - { - "admin": ">=5.1.28" - } - ], - "messages": [ - { - "condition": { - "operand": "and", - "rules": ["oldVersion<5.0.0", "newVersion>=5.0.0"] - }, - "title": { - "en": "Objects IDs will change with update!", - "de": "Objekt-IDs ändern sich mit dem Update!", - "ru": "ID объектов изменятся с обновлением!", - "pt": "Os IDs de objetos mudarão com a atualização!", - "nl": "Object-ID's veranderen met de update!", - "fr": "Les ID d'objets changeront avec la mise à jour !", - "it": "Gli ID degli oggetti cambieranno con l'aggiornamento!", - "es": "¡Los ID de los objetos cambiarán con la actualización!", - "pl": "Identyfikatory obiektów zmienią się wraz z aktualizacją!", - "zh-cn": "对象 ID 会随着更新而改变!" - }, - "text": { - "en": "This update makes sure that all space characters are correctly replaced by underscores on Object-IDs. This means that they will change after this update if you use more then one space in the names of your registers. You need to manually delete the old Object names.", - "de": "Dieses Update stellt sicher, dass alle Leerzeichen bei Objekt-IDs korrekt durch Unterstriche ersetzt werden. Das bedeutet, dass sie sich nach diesem Update ändern, wenn mehr als ein Leerzeichen im Namen der Register verwendet wird. Alte Objektnamen müssen manuell gelöscht werden.", - "ru": "Это обновление обеспечивает правильную замену всех символов пробела символами подчеркивания в идентификаторах объектов. Это означает, что они изменятся после этого обновления, если вы используете более одного пробела в именах ваших регистров. Вам необходимо вручную удалить старые имена объектов.", - "pt": "Essa atualização garante que todos os caracteres de espaço sejam substituídos corretamente por sublinhados em IDs de objeto. Isso significa que eles serão alterados após esta atualização se você usar mais de um espaço nos nomes dos seus registros. Você precisa excluir manualmente os nomes de objetos antigos.", - "nl": "Deze update zorgt ervoor dat alle spatietekens correct worden vervangen door onderstrepingstekens op Object-ID's. Dit betekent dat ze na deze update zullen veranderen als u meer dan één spatie gebruikt in de namen van uw registers. U moet de oude objectnamen handmatig verwijderen.", - "fr": "Cette mise à jour garantit que tous les espaces sont correctement remplacés par des traits de soulignement sur les ID d'objet. Cela signifie qu'ils changeront après cette mise à jour si vous utilisez plus d'un espace dans les noms de vos registres. Vous devez supprimer manuellement les anciens noms d'objet.", - "it": "Questo aggiornamento assicura che tutti i caratteri spazio siano sostituiti correttamente da caratteri di sottolineatura sugli ID oggetto. Ciò significa che cambieranno dopo questo aggiornamento se utilizzi più di uno spazio nei nomi dei tuoi registri. È necessario eliminare manualmente i vecchi nomi degli oggetti.", - "es": "Esta actualización garantiza que todos los caracteres de espacio se reemplacen correctamente por guiones bajos en los ID de objetos. Esto significa que cambiarán después de esta actualización si usa más de un espacio en los nombres de sus registros. Debe eliminar manualmente los nombres de objetos antiguos.", - "pl": "Ta aktualizacja zapewnia, że wszystkie znaki spacji są poprawnie zastępowane podkreśleniami w identyfikatorach obiektów. Oznacza to, że zmienią się one po tej aktualizacji, jeśli użyjesz więcej niż jednej spacji w nazwach swoich rejestrów. Musisz ręcznie usunąć stare nazwy obiektów.", - "zh-cn": "此更新确保所有空格字符都正确替换为对象 ID 上的下划线。这意味着如果您在寄存器名称中使用超过一个空格,它们将在此更新后更改。您需要手动删除旧的对象名称。" - }, - "level": "warn", - "buttons": ["agree", "cancel"] - } + "level": "warn", + "buttons": [ + "agree", + "cancel" ] + } + ] + }, + "native": { + "params": { + "type": "tcp", + "bind": "127.0.0.1", + "port": 502, + "comName": "", + "baudRate": 9600, + "dataBits": 8, + "stopBits": 1, + "parity": "none", + "deviceId": 1, + "timeout": 5000, + "slave": 0, + "poll": 1000, + "recon": 60000, + "keepAliveInterval": 0, + "maxBlock": 100, + "maxBoolBlock": 128, + "multiDeviceId": false, + "pulsetime": 1000, + "waitTime": 50, + "disInputsOffset": 10001, + "coilsOffset": 1, + "inputRegsOffset": 30001, + "holdingRegsOffset": 40001, + "showAliases": true, + "directAddresses": false, + "doNotIncludeAdrInId": false, + "preserveDotsInId": false, + "round": 2, + "doNotRoundAddressToWord": false, + "doNotUseWriteMultipleRegisters": false, + "onlyUseWriteMultipleRegisters": false, + "writeInterval": 0, + "readInterval": 0 }, - "native": { - "params": { - "type": "tcp", - "bind": "127.0.0.1", - "port": 502, - "comName": "", - "baudRate": 9600, - "dataBits": 8, - "stopBits": 1, - "parity": "none", - "deviceId": 1, - "timeout": 5000, - "slave": 0, - "poll": 1000, - "recon": 60000, - "keepAliveInterval": 0, - "maxBlock": 100, - "maxBoolBlock": 128, - "multiDeviceId": false, - "pulsetime": 1000, - "waitTime": 50, - "disInputsOffset": 10001, - "coilsOffset": 1, - "inputRegsOffset": 30001, - "holdingRegsOffset": 40001, - "showAliases": true, - "directAddresses": false, - "doNotIncludeAdrInId": false, - "preserveDotsInId": false, - "round": 2, - "doNotRoundAddressToWord": false, - "doNotUseWriteMultipleRegisters": false, - "onlyUseWriteMultipleRegisters": false, - "writeInterval": 0, - "readInterval": 0 - }, - "disInputs": [], - "coils": [], - "inputRegs": [], - "holdingRegs": [] + "disInputs": [], + "coils": [], + "inputRegs": [], + "holdingRegs": [] + }, + "instanceObjects": [ + { + "_id": "", + "type": "meta", + "common": { + "type": "meta" + }, + "native": {} }, - "instanceObjects": [ - { - "_id": "", - "type": "meta", - "common": { - "type": "meta" - }, - "native": {} - }, - { - "_id": "info", - "type": "channel", - "common": { - "name": "Information" - }, - "native": {} - }, - { - "_id": "info.connection", - "type": "state", - "common": { - "role": "indicator.connected", - "name": "If master connected", - "type": "boolean", - "read": true, - "write": false, - "def": false - }, - "native": {} - } - ] + { + "_id": "info", + "type": "channel", + "common": { + "name": "Information" + }, + "native": {} + }, + { + "_id": "info.connection", + "type": "state", + "common": { + "role": "indicator.connected", + "name": "If master connected", + "type": "boolean", + "read": true, + "write": false, + "def": false + }, + "native": {} + } + ] } diff --git a/package-lock.json b/package-lock.json index 787829d..de8f761 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "iobroker.modbus", - "version": "6.3.2", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "iobroker.modbus", - "version": "6.3.2", + "version": "6.4.0", "license": "MIT", "dependencies": { "@iobroker/adapter-core": "^3.2.2", diff --git a/package.json b/package.json index 9c5dbef..a15d5ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iobroker.modbus", - "version": "6.3.2", + "version": "6.4.0", "description": "Connect devices oder Modbus protocol to ioBroker", "author": { "name": "bluefox", diff --git a/src/package.json b/src/package.json index 65f170e..c446580 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "modebus-admin", - "version": "6.3.2", + "version": "6.4.0", "private": true, "dependencies": { "@iobroker/adapter-react-v5": "^7.4.1", @@ -29,4 +29,4 @@ "not ie <= 11", "not op_mini all" ] -} +} \ No newline at end of file