Files
ThingsGateway/handbook/build/docs/pluginmqttserver/index.html
2248356998 qq.com 85ce3be077 更新文档
2023-07-16 17:48:22 +08:00

16 lines
41 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-pluginmqttserver">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.3.1">
<title data-rh="true">MqttServer | thingsgateway</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://diego2098.gitee.io/thingsgateway/docs/pluginmqttserver"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="MqttServer | thingsgateway"><meta data-rh="true" name="description" content="一、设备扩展属性"><meta data-rh="true" property="og:description" content="一、设备扩展属性"><link data-rh="true" rel="icon" href="/thingsgateway/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://diego2098.gitee.io/thingsgateway/docs/pluginmqttserver"><link data-rh="true" rel="alternate" href="https://diego2098.gitee.io/thingsgateway/docs/pluginmqttserver" hreflang="en"><link data-rh="true" rel="alternate" href="https://diego2098.gitee.io/thingsgateway/docs/pluginmqttserver" hreflang="x-default"><link rel="stylesheet" href="/thingsgateway/assets/css/styles.2663bcc5.css">
<link rel="preload" href="/thingsgateway/assets/js/runtime~main.a585ab4c.js" as="script">
<link rel="preload" href="/thingsgateway/assets/js/main.d639c723.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/thingsgateway/"><div class="navbar__logo"><img src="/thingsgateway/img/ThingsGatewayLogo.png" alt="ThingsGateway Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/thingsgateway/img/ThingsGatewayLogo.png" alt="ThingsGateway Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">ThingsGateway</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/thingsgateway/docs">文档</a><a class="navbar__item navbar__link" href="/thingsgateway/docs/upgrade">更新日志</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">源码</a><ul class="dropdown__menu"><li><a href="https://gitee.com/dotnetchina/ThingsGateway" target="_blank" rel="noopener noreferrer" class="dropdown__link">Gitee主库<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://github.com/kimdiego2098/ThingsGateway" target="_blank" rel="noopener noreferrer" class="dropdown__link">GitHub<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.nuget.org/profiles/kimdiego" target="_blank" rel="noopener noreferrer" class="dropdown__link">Nuget<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><a href="https://gitee.com/dotnetchina" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">社区<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div><div class="searchHintContainer_Pkmr"><kbd class="searchHint_iIMx">ctrl</kbd><kbd class="searchHint_iIMx">K</kbd></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/thingsgateway/"><img src="/thingsgateway/img/ThingsGatewayLogo.png" alt="ThingsGateway Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/thingsgateway/img/ThingsGatewayLogo.png" alt="ThingsGateway Logo" class="themedImage_ToTc themedImage--dark_i4oU"><b>ThingsGateway</b></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/thingsgateway/docs/">01、说明使用前必要阅读</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/thingsgateway/docs/upgrade">02、历史更新</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/donate">03、支持作者及Pro版</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/thingsgateway/docs/startguide">04、入门指南</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/pluginconfig">05、网关配置</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/runtimestate">06、网关状态</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/rpclog">07、网关日志</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/thingsgateway/docs/otherpage">08、其他页面</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/pluginmodbus">09、采集插件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/thingsgateway/docs/pluginopcuaserver">10、上传插件</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/thingsgateway/docs/pluginopcuaserver">10.1 OPCUAServer</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/thingsgateway/docs/pluginmodbusserver">10.2 ModbusServer</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/thingsgateway/docs/pluginmqttserver">10.3 MqttServer</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/thingsgateway/docs/pluginmqttclient">10.4 MqttClient</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/thingsgateway/docs/pluginrabbitmqclient">10.5 RabbitMQ</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/thingsgateway/docs/pluginkafka">10.6 Kafka</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/release">11、部署说明</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/thingsgateway/docs/modbustcpdemo/">12、案例</a></div></li></ul></nav><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_PEFL"><svg width="20" height="20" aria-hidden="true" class="collapseSidebarButtonIcon_kv0_"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/thingsgateway/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">10、上传插件</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">10.3 MqttServer</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>MqttServer</h1></header><h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="一设备扩展属性">一、设备扩展属性<a href="#一设备扩展属性" class="hash-link" aria-label="Direct link to 一、设备扩展属性" title="Direct link to 一、设备扩展属性"></a></h2><p><img loading="lazy" src="/thingsgateway/assets/images/pluginmqttserver-2-eb3c1e4bbca6c6bf16c2503a5035c6e1.png" width="602" height="1396" class="img_ev3q"></p><table><thead><tr><th>属性</th><th>说明</th><th>默认值/备注</th></tr></thead><tbody><tr><td>IP</td><td>ServerIP,为空时指任意IP</td><td></td></tr><tr><td>端口</td><td>连接端口</td><td>1883</td></tr><tr><td>允许连接的ID前缀</td><td>过滤ID例如Client端ID必须是ThingsGatewayId123456</td><td>ThingsGatewayId</td></tr><tr><td>允许Rpc写入</td><td>是否允许写入变量</td><td>True</td></tr><tr><td>线程循环间隔</td><td>上传线程的循环间隔,一般不需要更改(ms)</td><td>1000</td></tr><tr><td>列表分割大小</td><td>发布的实体列表按大小分割</td><td>1000</td></tr><tr><td>设备Topic</td><td>设备信息订阅Topic</td><td>ThingsGateway/Device</td></tr><tr><td>变量Topic</td><td>变量信息订阅Topic</td><td>ThingsGateway/Variable</td></tr><tr><td>Rpc返回Topic</td><td>客户端写入变量的订阅Topic返回写入结果信息</td><td>ThingsGateway/RpcSub</td></tr><tr><td>Rpc写入Topic</td><td>客户端写入变量的发布Topic</td><td>ThingsGateway/RpcWrite</td></tr></tbody></table><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p> 登录网关的MqttServer还需要配置第三方授权User并且在客户端填写对应的UserName与Password</p><p><img loading="lazy" src="/thingsgateway/assets/images/pluginmqttserver-1-2ca9923b7eac0595fbcb1c61bb4ac778.png" width="2561" height="1245" class="img_ev3q"></p></div></div><h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="二变量配置">二、变量配置<a href="#二变量配置" class="hash-link" aria-label="Direct link to 二、变量配置" title="Direct link to 二、变量配置"></a></h2><img loading="lazy" src="/thingsgateway/assets/images/pluginmqttserver-3-bb7ff75232f26fb73f8ee97624fd0821.png" width="400" class="img_ev3q"><h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="启用">启用<a href="#启用" class="hash-link" aria-label="Direct link to 启用" title="Direct link to 启用"></a></h3><p>启用变量后才能进行上传</p><h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="允许写入">允许写入<a href="#允许写入" class="hash-link" aria-label="Direct link to 允许写入" title="Direct link to 允许写入"></a></h3><p>单独配置变量是否允许写入</p><h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="三实体脚本">三、实体脚本<a href="#三实体脚本" class="hash-link" aria-label="Direct link to 三、实体脚本" title="Direct link to 三、实体脚本"></a></h2><h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="说明">说明<a href="#说明" class="hash-link" aria-label="Direct link to 说明" title="Direct link to 说明"></a></h3><p>脚本功能由cs-script实现</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"> //提供这个例子</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> //定义返回List</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> List&lt;dynamic&gt; newModelList=new List&lt;dynamic&gt;(); </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> //input为固定传入值在变量脚本中为变量实体类List在设备脚本中为设备实体类List查看上面的json说明</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> foreach (var item in input)</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> //添加自定义值</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> newModelList.Add(new</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> customName=item.name,//变量名称</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> customValue=item.value,//变量值</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> customCollectTime=item.collectTime.ToString(&quot;yyyy-MM-dd HH:mm:ss fffffff&quot;), //采集时间,这里格式化为自定义时间格式</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> });</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> return newModelList;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><img loading="lazy" src="/thingsgateway/assets/images/script2-bb71dfdd3ef867c7ec87d60968e71f88.png" width="400" class="img_ev3q"><p>可以看到mqtt上传内容已经改为以上脚本返回值</p><h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="dto定义">DTO定义<a href="#dto定义" class="hash-link" aria-label="Direct link to DTO定义" title="Direct link to DTO定义"></a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">#region copyright</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">//------------------------------------------------------------------------------</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 此代码版权除特别声明外的代码归作者本人Diego所有</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 源代码使用协议遵循本仓库的开源协议及附加协议</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 使用文档https://diego2098.gitee.io/thingsgateway-docs/</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// QQ群605534569</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">//------------------------------------------------------------------------------</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">#endregion</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">using ThingsGateway.Core;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">namespace ThingsGateway.Web.Foundation;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">/// &lt;summary&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">/// 上传DTO</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">/// &lt;/summary&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">public class VariableData</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">{</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;PrimaryIdEntity.Id&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public long Id { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;MemoryVariable.Name&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string Name { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;MemoryVariable.Description&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string Description { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariableRunTime.DeviceName&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string DeviceName { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariableRunTime.RawValue&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public object RawValue { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariableRunTime.Value&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public object Value { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariableRunTime.ChangeTime&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public DateTime ChangeTime { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariableRunTime.CollectTime&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public DateTime CollectTime { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariableRunTime.IsOnline&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public bool IsOnline { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;MemoryVariable.ReadExpressions&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string ReadExpressions { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariable.WriteExpressions&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string WriteExpressions { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariable.IntervalTime&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public int IntervalTime { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariable.OtherMethod&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string OtherMethod { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;DeviceVariable.VariableAddress&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string VariableAddress { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;MemoryVariable.ProtectTypeEnum&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public int ProtectTypeEnum { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;MemoryVariable.DataTypeEnum&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public int DataTypeEnum { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">#region copyright</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">//------------------------------------------------------------------------------</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 此代码版权除特别声明外的代码归作者本人Diego所有</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 源代码使用协议遵循本仓库的开源协议及附加协议</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// 使用文档https://diego2098.gitee.io/thingsgateway-docs/</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">// QQ群605534569</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">//------------------------------------------------------------------------------</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">#endregion</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">using ThingsGateway.Core;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">namespace ThingsGateway.Web.Foundation;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">/// &lt;summary&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">/// 设备上传DTO</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">/// &lt;/summary&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">public class DeviceData</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">{</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;PrimaryIdEntity.Id&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public long Id { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;CollectDeviceRunTime.PluginName&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string PluginName { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;CollectDeviceRunTime.DeviceVariableCount&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public int DeviceVariablesCount { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;CollectDeviceRunTime.ActiveTime&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public DateTime ActiveTime { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;CollectDeviceRunTime.DeviceStatus&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public int DeviceStatus { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;CollectDeviceRunTime.LastErrorMessage&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string LastErrorMessage { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;UploadDevice.Name&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string Name { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;UploadDevice.Description&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public string Description { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> /// &lt;inheritdoc cref=&quot;CollectDeviceRunTime.KeepRun&quot;/&gt;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> public bool KeepRun { get; set; }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://gitee.com/dotnetchina/ThingsGateway/tree/master/handbook/docs/pluginmqttserver.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><script src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><div class="col lastUpdated_VsjB">📖<span id="busuanzi_value_page_pv"></span><br></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/thingsgateway/docs/pluginmodbusserver"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">ModbusServer</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/thingsgateway/docs/pluginmqttclient"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">MqttClient</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#一设备扩展属性" class="table-of-contents__link toc-highlight">一、设备扩展属性</a></li><li><a href="#二变量配置" class="table-of-contents__link toc-highlight">二、变量配置</a><ul><li><a href="#启用" class="table-of-contents__link toc-highlight">启用</a></li><li><a href="#允许写入" class="table-of-contents__link toc-highlight">允许写入</a></li></ul></li><li><a href="#三实体脚本" class="table-of-contents__link toc-highlight">三、实体脚本</a><ul><li><a href="#说明" class="table-of-contents__link toc-highlight">说明</a></li><li><a href="#dto定义" class="table-of-contents__link toc-highlight">DTO定义</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">文档</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/thingsgateway/docs">入门</a></li><li class="footer__item"><a class="footer__link-item" href="/thingsgateway/docs">手册</a></li></ul></div><div class="col footer__col"><div class="footer__title">社区</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitee.com/dotnetchina/ThingsGateway/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">讨论<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://gitee.com/dotnetchina/ThingsGateway/board" target="_blank" rel="noopener noreferrer" class="footer__link-item">看板<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">更多</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitee.com/dotnetchina/ThingsGateway" target="_blank" rel="noopener noreferrer" class="footer__link-item">仓库<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2020-2023 Diego.</div></div></div></footer></div>
<script src="/thingsgateway/assets/js/runtime~main.a585ab4c.js"></script>
<script src="/thingsgateway/assets/js/main.d639c723.js"></script>
</body>
</html>