实例介绍
IoTSharp是一个开放源代码的物联网平台,用于数据采集、处理、可视化以及设备管理。它支持多种数据库,包括PostgreSql、MySql、Oracle、SQLServer、Sqlite和Cassandra,以及多种时间序列数据库如InfluxDB、IoTDB、TDengine、TimescaleDB和PinusDB。此外,IoTSharp还支持多种事件总线消息队列,例如RabbitMQ、Kafka、InMemory、ZeroMQ、NATS、Pulsar和RedisStreams等。
IoTSharp平台的前端使用Vue3实现,提供了丰富的部署和配置选项,包括Docker部署、Linux部署和Windows部署。平台还提供了IoTSharp.SDKs,包括IoTSharp.Sdk.Http和IoTSharp.Sdk.MQTT,以及专门的客户端SDK,如IoTSharp-C-Client-Sdk和IoTSharp for nanoFramework,适用于不同的开发需求。
IoTSharp致力于构建一个健康的生态系统,包括IoTSharp.EntityFrameworkCore.Taos、IoTSharp.X509Extensions等多个扩展库,旨在为开发者提供一个全面、灵活的物联网解决方案。
【实例截图】
【核心代码】
文件清单
└── IoTSharp-6235677c8161de50b6c2c15298a44eeb25559ae7
├── appsettings.Development.json
├── appveyor.yml
├── BACKERS.md
├── buildimage.cmd
├── buildimageuixe.cmd
├── ClientApp
│ ├── aspnetcore-https.js
│ ├── CHANGELOG.md
│ ├── ClientApp.esproj
│ ├── index.html
│ ├── LICENSE
│ ├── package.json
│ ├── plugins.d.ts
│ ├── public
│ │ ├── 200x200.png
│ │ ├── 32x32.png
│ │ ├── 350x100.png
│ │ ├── 512x512.png
│ │ ├── 64x64.png
│ │ ├── 677x130.png
│ │ ├── 96x96.png
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── docusaurus.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── favicon.svg
│ │ ├── iotsharp.png
│ │ ├── logo_dark.svg
│ │ ├── logo.svg
│ │ ├── logo_white.svg
│ │ └── site.webmanifest
│ ├── README.md
│ ├── shim.d.ts
│ ├── source.d.ts
│ ├── src
│ │ ├── api
│ │ │ ├── account
│ │ │ │ └── index.ts
│ │ │ ├── alarm
│ │ │ │ └── index.ts
│ │ │ ├── asset
│ │ │ │ └── index.ts
│ │ │ ├── customer
│ │ │ │ └── index.ts
│ │ │ ├── dashboard
│ │ │ │ └── index.ts
│ │ │ ├── devices
│ │ │ │ └── index.ts
│ │ │ ├── flows
│ │ │ │ └── index.ts
│ │ │ ├── iapiresult.ts
│ │ │ ├── installer
│ │ │ │ └── index.ts
│ │ │ ├── login
│ │ │ │ └── index.ts
│ │ │ ├── menu
│ │ │ │ └── index.ts
│ │ │ ├── produce
│ │ │ │ └── index.ts
│ │ │ ├── tenants
│ │ │ │ └── index.ts
│ │ │ └── user
│ │ │ └── index.ts
│ │ ├── App.vue
│ │ ├── assets
│ │ │ ├── login-icon-two.svg
│ │ │ ├── logo-icon.svg
│ │ │ ├── logo-mini.svg
│ │ │ └── logo-text.svg
│ │ ├── components
│ │ │ ├── AdvancedKeyValue
│ │ │ │ ├── AdvancedKeyValue.vue
│ │ │ │ ├── readme.md
│ │ │ │ ├── z-select.vue
│ │ │ │ └── z-switch.vue
│ │ │ ├── AppLogo.vue
│ │ │ ├── auth
│ │ │ │ ├── authAll.vue
│ │ │ │ ├── auths.vue
│ │ │ │ └── auth.vue
│ │ │ ├── card
│ │ │ │ └── index.vue
│ │ │ ├── cropper
│ │ │ │ └── index.vue
│ │ │ ├── editor
│ │ │ │ ├── index.vue
│ │ │ │ └── toolbar.ts
│ │ │ ├── iconSelector
│ │ │ │ └── index.vue
│ │ │ ├── monaco
│ │ │ │ └── monaco.vue
│ │ │ ├── noticeBar
│ │ │ │ └── index.vue
│ │ │ └── svgIcon
│ │ │ └── index.vue
│ │ ├── components.d.ts
│ │ ├── dtos
│ │ │ ├── deviceaddoreditdto.ts
│ │ │ ├── devicepropdto.ts
│ │ │ ├── produceaddoreditdto.ts
│ │ │ ├── ruleaddoreditdtodto.ts
│ │ │ └── tenantaddoreditdto.ts
│ │ ├── i18n
│ │ │ ├── index.ts
│ │ │ ├── lang
│ │ │ │ ├── en.ts
│ │ │ │ ├── zh-cn.ts
│ │ │ │ └── zh-tw.ts
│ │ │ └── pages
│ │ │ ├── formI18n
│ │ │ │ ├── en.ts
│ │ │ │ ├── zh-cn.ts
│ │ │ │ └── zh-tw.ts
│ │ │ └── login
│ │ │ ├── en.ts
│ │ │ ├── zh-cn.ts
│ │ │ └── zh-tw.ts
│ │ ├── layout
│ │ │ ├── component
│ │ │ │ ├── aside.vue
│ │ │ │ ├── columnsAside.vue
│ │ │ │ ├── header.vue
│ │ │ │ └── main.vue
│ │ │ ├── footer
│ │ │ │ └── index.vue
│ │ │ ├── index.vue
│ │ │ ├── lockScreen
│ │ │ │ └── index.vue
│ │ │ ├── logo
│ │ │ │ └── index.vue
│ │ │ ├── main
│ │ │ │ ├── classic.vue
│ │ │ │ ├── columns.vue
│ │ │ │ ├── defaults.vue
│ │ │ │ └── transverse.vue
│ │ │ ├── navBars
│ │ │ │ ├── breadcrumb
│ │ │ │ │ ├── breadcrumb.vue
│ │ │ │ │ ├── closeFull.vue
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── search.vue
│ │ │ │ │ ├── setings.vue
│ │ │ │ │ ├── userNews.vue
│ │ │ │ │ └── user.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── tagsView
│ │ │ │ ├── contextmenu.vue
│ │ │ │ └── tagsView.vue
│ │ │ ├── navMenu
│ │ │ │ ├── horizontal.vue
│ │ │ │ ├── menu-icons-config.js
│ │ │ │ ├── subItem.vue
│ │ │ │ └── vertical.vue
│ │ │ └── routerView
│ │ │ ├── iframes.vue
│ │ │ ├── link.vue
│ │ │ └── parent.vue
│ │ ├── main.ts
│ │ ├── router
│ │ │ ├── backEnd.ts
│ │ │ ├── frontEnd.ts
│ │ │ ├── index.ts
│ │ │ └── route.ts
│ │ ├── stores
│ │ │ ├── appInfo.ts
│ │ │ ├── index.ts
│ │ │ ├── interface
│ │ │ │ └── index.ts
│ │ │ ├── keepAliveNames.ts
│ │ │ ├── requestOldRoutes.ts
│ │ │ ├── routesList.ts
│ │ │ ├── tagsViewRoutes.ts
│ │ │ ├── themeConfig.ts
│ │ │ └── userInfo.ts
│ │ ├── theme
│ │ │ ├── app.scss
│ │ │ ├── common
│ │ │ │ └── transition.scss
│ │ │ ├── dark.scss
│ │ │ ├── element.scss
│ │ │ ├── iconSelector.scss
│ │ │ ├── index.scss
│ │ │ ├── loading.scss
│ │ │ ├── media
│ │ │ │ ├── chart.scss
│ │ │ │ ├── cityLinkage.scss
│ │ │ │ ├── date.scss
│ │ │ │ ├── dialog.scss
│ │ │ │ ├── error.scss
│ │ │ │ ├── form.scss
│ │ │ │ ├── home.scss
│ │ │ │ ├── index.scss
│ │ │ │ ├── layout.scss
│ │ │ │ ├── login.scss
│ │ │ │ ├── media.scss
│ │ │ │ ├── pagination.scss
│ │ │ │ ├── personal.scss
│ │ │ │ ├── scrollbar.scss
│ │ │ │ └── tagsView.scss
│ │ │ ├── mixins
│ │ │ │ └── index.scss
│ │ │ ├── other.scss
│ │ │ └── waves.scss
│ │ ├── utils
│ │ │ ├── arrayOperation.ts
│ │ │ ├── authDirective.ts
│ │ │ ├── authFunction.ts
│ │ │ ├── commonFunction.ts
│ │ │ ├── customDirective.ts
│ │ │ ├── dateUtil.ts
│ │ │ ├── directive.ts
│ │ │ ├── download.ts
│ │ │ ├── formatTime.ts
│ │ │ ├── getStyleSheets.ts
│ │ │ ├── loading.ts
│ │ │ ├── other.ts
│ │ │ ├── request.ts
│ │ │ ├── setIconfont.ts
│ │ │ ├── storage.ts
│ │ │ ├── theme.ts
│ │ │ ├── toolsValidate.ts
│ │ │ └── wartermark.ts
│ │ └── views
│ │ ├── dashboard
│ │ │ ├── homeCardItems.ts
│ │ │ ├── HomeCardItem.vue
│ │ │ ├── index.vue
│ │ │ └── v1.vue
│ │ ├── error
│ │ │ ├── 401.vue
│ │ │ └── 404.vue
│ │ ├── iot
│ │ │ ├── alarms
│ │ │ │ ├── alarmlist.vue
│ │ │ │ ├── alarmSearchOptions.ts
│ │ │ │ └── model.ts
│ │ │ ├── assets
│ │ │ │ ├── assetdetail.vue
│ │ │ │ ├── assetlist.vue
│ │ │ │ ├── crudOptions
│ │ │ │ │ └── assetListCrudOptions.ts
│ │ │ │ ├── designer
│ │ │ │ │ ├── assetdesigner.vue
│ │ │ │ │ ├── contextmenu
│ │ │ │ │ │ ├── edgemenu.vue
│ │ │ │ │ │ └── shapemenu.vue
│ │ │ │ │ ├── drawercontainer.vue
│ │ │ │ │ ├── models
│ │ │ │ │ │ └── assetdesignermodel.ts
│ │ │ │ │ ├── panels
│ │ │ │ │ │ ├── assetpanel.vue
│ │ │ │ │ │ ├── devicepanel.vue
│ │ │ │ │ │ └── mapping.vue
│ │ │ │ │ └── shapes
│ │ │ │ │ ├── asset.ts
│ │ │ │ │ └── device.ts
│ │ │ │ ├── detail
│ │ │ │ │ ├── AssetDetailProps.vue
│ │ │ │ │ ├── AssetDetailTelemetry.vue
│ │ │ │ │ ├── assetPropsCrudOptions.ts
│ │ │ │ │ └── assetTelemetryRealtimeCrudOptions.ts
│ │ │ │ └── model
│ │ │ │ └── assetList.ts
│ │ │ ├── devices
│ │ │ │ ├── AddDevice.vue
│ │ │ │ ├── addRules.vue
│ │ │ │ ├── designer
│ │ │ │ │ ├── contextmenu
│ │ │ │ │ │ ├── menuconnector.vue
│ │ │ │ │ │ └── menunode.vue
│ │ │ │ │ ├── models
│ │ │ │ │ │ ├── clientdto.ts
│ │ │ │ │ │ ├── constants.ts
│ │ │ │ │ │ ├── drawerparams.ts
│ │ │ │ │ │ ├── gatewaydesignermodel.ts
│ │ │ │ │ │ ├── modbusmapping.ts
│ │ │ │ │ │ └── opcuamapping.ts
│ │ │ │ │ ├── pannels
│ │ │ │ │ │ ├── basic
│ │ │ │ │ │ │ └── basic.vue
│ │ │ │ │ │ ├── connector
│ │ │ │ │ │ │ ├── connectorprofile.ts
│ │ │ │ │ │ │ └── connector.vue
│ │ │ │ │ │ ├── device
│ │ │ │ │ │ │ ├── deviceprofile.ts
│ │ │ │ │ │ │ └── device.vue
│ │ │ │ │ │ ├── drawercontainer.vue
│ │ │ │ │ │ ├── modbus
│ │ │ │ │ │ │ ├── modbuspointlist.vue
│ │ │ │ │ │ │ ├── modbusprofile.ts
│ │ │ │ │ │ │ └── modbus.vue
│ │ │ │ │ │ ├── opcua
│ │ │ │ │ │ │ ├── opcuapointlist.vue
│ │ │ │ │ │ │ ├── opcuaprofile.ts
│ │ │ │ │ │ │ └── opcua.vue
│ │ │ │ │ │ └── point
│ │ │ │ │ │ └── point.vue
│ │ │ │ │ └── shapes
│ │ │ │ │ ├── device.ts
│ │ │ │ │ └── gateway.ts
│ │ │ │ ├── detail
│ │ │ │ │ ├── deviceDetailBaseInfoColumns.ts
│ │ │ │ │ ├── DeviceDetailProps.vue
│ │ │ │ │ ├── DeviceDetailRules.vue
│ │ │ │ │ ├── DeviceDetailTelemetryHistory.vue
│ │ │ │ │ ├── DeviceDetailTelemetry.vue
│ │ │ │ │ ├── devicePropsCrudOptions.ts
│ │ │ │ │ ├── deviceRulesCrudOptions.ts
│ │ │ │ │ ├── deviceTelemetryRealtimeCrudOptions.ts
│ │ │ │ │ ├── maps
│ │ │ │ │ │ └── bmap
│ │ │ │ │ │ └── BMap.vue
│ │ │ │ │ ├── propform.vue
│ │ │ │ │ └── telemetryHistoryChartOptions.ts
│ │ │ │ ├── deviceBackup.vue
│ │ │ │ ├── deviceCrudOptions.ts
│ │ │ │ ├── DeviceDetail.vue
│ │ │ │ ├── devicegraph.vue
│ │ │ │ ├── devicelist.vue
│ │ │ │ ├── gatewaydesigner.vue
│ │ │ │ ├── gatewaylist.vue
│ │ │ │ ├── model.ts
│ │ │ │ └── propeditor.vue
│ │ │ ├── forms
│ │ │ │ └── edit.vue
│ │ │ ├── gateway
│ │ │ │ ├── gatewaydesignermodel.ts
│ │ │ │ ├── gatewaydesigner.vue
│ │ │ │ ├── gatewaylist.vue
│ │ │ │ └── shapes
│ │ │ │ ├── device.ts
│ │ │ │ └── gateway.ts
│ │ │ ├── produce
│ │ │ │ ├── deviceform.vue
│ │ │ │ ├── producedatadictionaryform.vue
│ │ │ │ ├── produceform.vue
│ │ │ │ ├── producelist.vue
│ │ │ │ └── producepropform.vue
│ │ │ ├── rules
│ │ │ │ ├── addflow.vue
│ │ │ │ ├── component
│ │ │ │ │ ├── contextmenu
│ │ │ │ │ │ ├── line.vue
│ │ │ │ │ │ └── node.vue
│ │ │ │ │ ├── drawer
│ │ │ │ │ │ ├── basic.vue
│ │ │ │ │ │ ├── executor.vue
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── line.vue
│ │ │ │ │ │ └── script.vue
│ │ │ │ │ └── tool
│ │ │ │ │ ├── help.vue
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── simulator.vue
│ │ │ │ ├── flowdesigner.vue
│ │ │ │ ├── flowevents.vue
│ │ │ │ ├── flowlist.vue
│ │ │ │ ├── flowsimulator.vue
│ │ │ │ ├── js
│ │ │ │ │ ├── config.ts
│ │ │ │ │ ├── leftNavList.ts
│ │ │ │ │ └── mock.ts
│ │ │ │ └── models.ts
│ │ │ └── settings
│ │ │ ├── certmgr.vue
│ │ │ ├── crudOptions
│ │ │ │ ├── customerListCrudOptions.ts
│ │ │ │ ├── tenantListCrudOptions.ts
│ │ │ │ └── userListCrudOptions.ts
│ │ │ ├── customerlist.vue
│ │ │ ├── dictionarygrouplist.vue
│ │ │ ├── dictionarylist.vue
│ │ │ ├── model
│ │ │ │ ├── tenantListModel.ts
│ │ │ │ └── userListModel.ts
│ │ │ ├── tenantlist.vue
│ │ │ └── userlist.vue
│ │ ├── login
│ │ │ ├── component
│ │ │ │ └── account.vue
│ │ │ ├── index.vue
│ │ │ ├── signup_form_option.ts
│ │ │ ├── signup_form_rules.ts
│ │ │ └── signup.vue
│ │ ├── profile
│ │ │ ├── index.vue
│ │ │ ├── password_form_rules.ts
│ │ │ ├── profile_form_option.ts
│ │ │ └── profile_form_rules.ts
│ │ └── setup
│ │ ├── index.vue
│ │ ├── setup_form_option.json
│ │ └── setup_form_rules.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ ├── types
│ │ └── global.d.ts
│ └── vite.config.ts
├── Deployments
│ ├── rabbit_mongo_influx
│ │ ├── appsettings.Production.json
│ │ ├── catlog.sh
│ │ ├── data
│ │ │ └── servers.json
│ │ ├── default.dcproj.user
│ │ ├── docker-compose.yml
│ │ ├── login.sh
│ │ ├── mongodb-init.sh
│ │ ├── rabbit_mongo_influx.dcproj
│ │ ├── README.md
│ │ ├── upgrade.sh
│ │ └── zeromq_taos.dcproj.user
│ ├── README.md
│ ├── zeromq_sharding
│ │ ├── appsettings.Production.json
│ │ ├── catlog.sh
│ │ ├── docker-compose.yml
│ │ ├── loginbash.sh
│ │ ├── README.md
│ │ ├── servers.json
│ │ ├── upgrade.sh
│ │ ├── zeromq_sharding.dcproj
│ │ └── zeromq_sharding.dcproj.user
│ └── zeromq_taos
│ ├── appsettings.Production.json
│ ├── catlog.sh
│ ├── default.dcproj.user
│ ├── docker-compose.yml
│ ├── login.sh
│ ├── README.md
│ ├── servers.json
│ ├── upgrade.sh
│ ├── zeromq_taos.dcproj
│ └── zeromq_taos.dcproj.user
├── docker-compose.dcproj
├── docker-compose.override.yml
├── docker-compose.yml
├── docs
│ ├── babel.config.js
│ ├── blog
│ │ ├── 2022-02-14-first-version-doc.md
│ │ ├── 2023-01-11_img
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ └── 3.png
│ │ ├── 2023-01-11.md
│ │ ├── 2023-02-14-videos_1.md
│ │ ├── 2023-02-14-videos_2.md
│ │ └── authors.yml
│ ├── docs
│ │ ├── intro.md
│ │ ├── tutorial-basics
│ │ │ ├── aggregate.md
│ │ │ ├── appsettings.md
│ │ │ ├── _category_.json
│ │ │ ├── connectivity.md
│ │ │ ├── debug.md
│ │ │ ├── deploy_by_docker.md
│ │ │ ├── deploy_linux.md
│ │ │ ├── deploy_win.md
│ │ │ ├── gateway.md
│ │ │ ├── influxdb.md
│ │ │ ├── iotsharp.md
│ │ │ ├── scriptuse.md
│ │ │ ├── sourcecode.md
│ │ │ └── webapi.md
│ │ └── tutorial-extras
│ │ ├── _category_.json
│ │ ├── http.md
│ │ ├── mqtt.md
│ │ ├── mqtt_tls.md
│ │ └── raw_data_gateway.md
│ ├── docusaurus.config.js
│ ├── package.json
│ ├── README.md
│ ├── sidebars.js
│ ├── src
│ │ ├── components
│ │ │ ├── HomepageFeatures.js
│ │ │ └── HomepageFeatures.module.css
│ │ ├── css
│ │ │ └── custom.css
│ │ └── pages
│ │ ├── index.js
│ │ ├── index.module.css
│ │ └── markdown-page.md
│ ├── static
│ │ ├── CNAME
│ │ └── img
│ │ ├── 200x200.png
│ │ ├── 20190615010003.jpg
│ │ ├── 20190615010115.jpg
│ │ ├── 20221118224640.jpg
│ │ ├── 32x32.png
│ │ ├── 350x100.png
│ │ ├── 512x512.png
│ │ ├── 64x64.png
│ │ ├── 677x130.png
│ │ ├── 96x96.png
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── docusaurus.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── InfluxDB2.PNG
│ │ ├── iotsharp
│ │ │ ├── add-gateway.png
│ │ │ ├── alarm-rule-design.png
│ │ │ ├── alarm-rule-function.png
│ │ │ ├── alarm-rule-mqtt-test.png
│ │ │ ├── alarm-rule-result.png
│ │ │ ├── bgweb.png
│ │ │ ├── csharp-function.png
│ │ │ ├── csharp-result.png
│ │ │ ├── csharp-test.png
│ │ │ ├── docker-run.png
│ │ │ ├── font-login.png
│ │ │ ├── gateway-config.png
│ │ │ ├── gateway-online.png
│ │ │ ├── gateway-token.png
│ │ │ ├── influxdb-addtoken.png
│ │ │ ├── influxdb-copytoken.png
│ │ │ ├── influxdb-data.png
│ │ │ ├── influxdb-ini.png
│ │ │ ├── iotsharp-dashboard.png
│ │ │ ├── iotsharp-regeist.png
│ │ │ ├── javascript-function.png
│ │ │ ├── javascript-result.png
│ │ │ ├── javascript-test.png
│ │ │ ├── kep_iotgateway2.png
│ │ │ ├── kep_iotgateway.png
│ │ │ ├── lua-function.png
│ │ │ ├── lua-result.png
│ │ │ ├── lua-test.png
│ │ │ ├── mqtt_x509.png
│ │ │ ├── project-appsettings.png
│ │ │ ├── python-function.png
│ │ │ ├── python-result.png
│ │ │ ├── python-test.png
│ │ │ ├── rules-list.png
│ │ │ ├── script-type.png
│ │ │ ├── sql-code.png
│ │ │ ├── sql-function.png
│ │ │ ├── sql-result.png
│ │ │ ├── sql-test.png
│ │ │ ├── webapi-auth.png
│ │ │ ├── webapi-deviceid.png
│ │ │ ├── webapi-login.png
│ │ │ └── webapi-telemetry.png
│ │ ├── iotsharp128.png
│ │ ├── iotsharp32.png
│ │ ├── iotsharp64.png
│ │ ├── iotsharp.png
│ │ ├── IoTSharpQQGruop.png
│ │ ├── logo_dark.svg
│ │ ├── logo.svg
│ │ ├── logo_white.svg
│ │ ├── maikebing_wxpay.png
│ │ ├── mstile-144x144.png
│ │ ├── mstile-150x150.png
│ │ ├── mstile-310x150.png
│ │ ├── mstile-310x310.png
│ │ ├── mstile-70x70.png
│ │ ├── qrcode.jpg
│ │ ├── qyqun.jpg
│ │ ├── screenshot.png
│ │ ├── site.webmanifest
│ │ ├── tn.png
│ │ ├── tutorial
│ │ │ ├── docsVersionDropdown.png
│ │ │ └── localeDropdown.png
│ │ ├── undraw_docusaurus_mountain.svg
│ │ ├── undraw_docusaurus_react.svg
│ │ └── undraw_docusaurus_tree.svg
│ └── yarn.lock
├── IoTSharp
│ ├── appsettings.Cassandra.json
│ ├── appsettings.ClickHouse.json
│ ├── appsettings.DefaultSettings.json
│ ├── appsettings.Development.json
│ ├── appsettings.InfluxDB.json
│ ├── appsettings.InMemory.json
│ ├── appsettings.json
│ ├── appsettings.MySql.json
│ ├── appsettings.Oracle.json
│ ├── appsettings.PostgreSql.json
│ ├── appsettings.Production.json
│ ├── appsettings.Sqlite.json
│ ├── appsettings.SQLServer.json
│ ├── appsettings.Taos.json
│ ├── appsettings.TimescaleDB.json
│ ├── Controllers
│ │ ├── AccountController.cs
│ │ ├── AlarmController.cs
│ │ ├── AssetController.cs
│ │ ├── AuthorizedKeysController.cs
│ │ ├── BlobStorageController.cs
│ │ ├── CaptchaController.cs
│ │ ├── CustomersController.cs
│ │ ├── DeviceModelController.cs
│ │ ├── DevicesController.cs
│ │ ├── DictionaryController.cs
│ │ ├── DictionaryGroupController.cs
│ │ ├── DynamicFormInfoController.cs
│ │ ├── DynamicFormRemoteApiController.cs
│ │ ├── HealthChecksController.cs
│ │ ├── HomeController.cs
│ │ ├── InstallerController.cs
│ │ ├── MenuController.cs
│ │ ├── MetricsController.cs
│ │ ├── ProducesController.cs
│ │ ├── RulesController.cs
│ │ ├── SubscriptionController.cs
│ │ └── TenantsController.cs
│ ├── Dockerfile
│ ├── Dtos
│ │ ├── AccountDto.cs
│ │ ├── AttributeDataDto.cs
│ │ ├── AttributeLatestByKeyNameAndDeviceIdDto.cs
│ │ ├── AuthorizedKeyDto.cs
│ │ ├── BaseEventDto.cs
│ │ ├── CreateDeviceByProduceDto.cs
│ │ ├── CreateRootCertificateDto.cs
│ │ ├── CreateUserDto.cs
│ │ ├── CreateUserInput.cs
│ │ ├── CustomerDto.cs
│ │ ├── DeviceAttrEditDto.cs
│ │ ├── DeviceAttributeDto.cs
│ │ ├── DeviceDetailDto.cs
│ │ ├── DeviceModelDto.cs
│ │ ├── DevicePostDto.cs
│ │ ├── DevicePutDto.cs
│ │ ├── DeviceRuleDto.cs
│ │ ├── FlowOperationDto.cs
│ │ ├── GatewayDeviceStatus.cs
│ │ ├── GatewayPlayload.cs
│ │ ├── HomeKanbanDto.cs
│ │ ├── InstallDto.cs
│ │ ├── InstanceDto.cs
│ │ ├── LockDto.cs
│ │ ├── MenuItem.cs
│ │ ├── ProduceAddDto.cs
│ │ ├── ProduceDataEditDto.cs
│ │ ├── ProduceDictionaryEditDto.cs
│ │ ├── ProduceDto.cs
│ │ ├── RefreshTokenDto.cs
│ │ ├── RemoveDeviceAttributeInput.cs
│ │ ├── RuleTaskExecutorDto.cs
│ │ ├── TelemetryDataDto.cs
│ │ ├── TimeSpanConverter.cs
│ │ ├── TimespanConverterNewtonsoft.cs
│ │ └── UserInfoDto.cs
│ ├── Extensions
│ │ ├── ApplicationDBInitializer.cs
│ │ ├── CachingExtension.cs
│ │ ├── FlowExtension.cs
│ │ ├── IoTSharpExtension.cs
│ │ ├── JwtControllerExtension.cs
│ │ ├── MqttExtension.cs
│ │ ├── QueryExtensions.cs
│ │ └── RpcClient.cs
│ ├── FlowRuleEngine
│ │ ├── ConditionTestResult.cs
│ │ ├── DynamicData.cs
│ │ ├── FlowRuleProcessor.cs
│ │ ├── Models.cs
│ │ ├── SimpleFLowExcutor.cs
│ │ └── TaskExecutorHelper.cs
│ ├── Gateways
│ │ ├── KepServerEx.cs
│ │ └── RawDataGateway.cs
│ ├── IoTSharp.csproj
│ ├── iotsharp.service
│ ├── IoTSharp.xml
│ ├── Jobs
│ │ ├── CachingJob.cs
│ │ └── CheckDevices.cs
│ ├── Models
│ │ ├── BaiduTranslateProfile.cs
│ │ ├── FieldData.cs
│ │ ├── FormFieldTypes
│ │ │ ├── NzOption.cs
│ │ │ └── NzUploadFile.cs
│ │ ├── Graph
│ │ │ ├── Body.cs
│ │ │ ├── DeviceProp.cs
│ │ │ ├── Mapping.cs
│ │ │ ├── MappingObject.cs
│ │ │ ├── ModelDiagram.cs
│ │ │ ├── Position.cs
│ │ │ ├── Shape.cs
│ │ │ ├── Size.cs
│ │ │ └── Text.cs
│ │ ├── ModelAssetDevice.cs
│ │ ├── ModelCaptcha.cs
│ │ ├── ModelOriginatorSearch.cs
│ │ ├── ModelRefreshToken.cs
│ │ ├── ModelRuleBind.cs
│ │ ├── PagedData.cs
│ │ ├── QueryDto.cs
│ │ ├── Rule
│ │ │ ├── ModelFlow.cs
│ │ │ ├── ModelWorkFlow.cs
│ │ │ └── Params
│ │ │ └── InputParam.cs
│ │ └── UserProfile.cs
│ ├── Program.cs
│ ├── Properties
│ │ ├── launchSettings.json
│ │ ├── PublishProfiles
│ │ │ ├── linux-arm32.pubxml
│ │ │ ├── linux-arm64.pubxml
│ │ │ ├── linux-x64.pubxml
│ │ │ ├── osx-x64.pubxml
│ │ │ └── win7-x64.pubxml
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── buzzle-template.png
│ │ ├── Logo.ico
│ │ ├── slide10.jpg
│ │ ├── slide11.jpg
│ │ ├── slide12.jpg
│ │ ├── slide13.jpg
│ │ ├── slide14.jpg
│ │ ├── slide15.jpg
│ │ ├── slide16.jpg
│ │ ├── slide1.jpg
│ │ ├── slide2.jpg
│ │ ├── slide3.jpg
│ │ ├── slide4.jpg
│ │ ├── slide5.jpg
│ │ ├── slide6.jpg
│ │ ├── slide7.jpg
│ │ ├── slide8.jpg
│ │ └── slide9.jpg
│ ├── Services
│ │ ├── CoApResources
│ │ │ └── CoAPResource.cs
│ │ ├── CoAPService.cs
│ │ ├── MQTTControllers
│ │ │ ├── AlarmController.cs
│ │ │ ├── AttributesController.cs
│ │ │ ├── DataController.cs
│ │ │ ├── GatewayController.cs
│ │ │ ├── RpcController.cs
│ │ │ └── TelemetryController.cs
│ │ └── MQTTService.cs
│ ├── Startup.cs
│ ├── TaskActions
│ │ ├── PublishAlarmDataTask.cs
│ │ ├── PublishAttributeDataTask.cs
│ │ └── PublishTelemetryDataTask.cs
│ └── wwwroot
│ └── favicon.ico
├── IoTSharp.Contracts
│ ├── AlarmDto.cs
│ ├── ApiResult.cs
│ ├── AppSettings.cs
│ ├── AssetDto.cs
│ ├── Constants.cs
│ ├── Enums.cs
│ ├── IoTSharp.Contracts.csproj
│ ├── MqttBrokerSetting.cs
│ └── TelemetryDataDto.cs
├── IoTSharp.Data
│ ├── Alarm.cs
│ ├── ApplicationDbContext.cs
│ ├── Asset.cs
│ ├── AssetRelation.cs
│ ├── AttributeLatest.cs
│ ├── AuditLog.cs
│ ├── AuthorizedKey.cs
│ ├── BaseDictionary.cs
│ ├── BaseDictionaryGroup.cs
│ ├── BaseEvent.cs
│ ├── BaseFunction.cs
│ ├── BASEI18N.cs
│ ├── Configurations
│ │ ├── DataStorageConfiguration.cs
│ │ └── TelemetryDataConfiguration.cs
│ ├── Customer.cs
│ ├── DataExtension.cs
│ ├── DataStorage.cs
│ ├── Device.cs
│ ├── DeviceDiagram.cs
│ ├── DeviceGraph.cs
│ ├── DeviceGraphToolBox.cs
│ ├── DeviceIdentity.cs
│ ├── DeviceModelCommand.cs
│ ├── DeviceModel.cs
│ ├── DevicePort.cs
│ ├── DevicePortMapping.cs
│ ├── DeviceRule.cs
│ ├── DynamicFormFieldInfo.cs
│ ├── DynamicFormFieldValueInfo.cs
│ ├── DynamicFormInfo.cs
│ ├── Extensions
│ │ ├── AlarmExtension.cs
│ │ ├── DBExtension.cs
│ │ ├── DeviceExtension.cs
│ │ └── PlayloadExtension.cs
│ ├── Flow.cs
│ ├── FlowOperation.cs
│ ├── FlowRule.cs
│ ├── Gateway.cs
│ ├── IDataBaseModelBuilderOptions.cs
│ ├── IJustMy.cs
│ ├── IoTSharp.Data.csproj
│ ├── PlayloadData.cs
│ ├── Produce.cs
│ ├── ProduceData.cs
│ ├── ProduceDictionary.cs
│ ├── RefreshToken.cs
│ ├── Relationship.cs
│ ├── RuleTaskExecutor.cs
│ ├── Shardings
│ │ ├── Routes
│ │ │ ├── TelemetryDataDayRoute.cs
│ │ │ ├── TelemetryDataHourRoute.cs
│ │ │ ├── TelemetryDataMinuteRoute.cs
│ │ │ ├── TelemetryDataMonthRoute.cs
│ │ │ └── TelemetryDataYearRoute.cs
│ │ └── ShardingDbContext.cs
│ ├── SubscriptionEvent.cs
│ ├── SubscriptionTask.cs
│ ├── TelemetryData.cs
│ ├── TelemetryLatest.cs
│ └── Tenant.cs
├── IoTSharp.Data.Storage
│ ├── IoTSharp.Data.Cassandra
│ │ ├── CassandraModelBuilderOptions.cs
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ ├── IoTSharp.Data.Cassandra.csproj
│ │ └── readme.txt
│ ├── IoTSharp.Data.ClickHouse
│ │ ├── ClickHouseModelBuilderOptions.cs
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ ├── IoTSharp.Data.ClickHouse.csproj
│ │ └── readme.txt
│ ├── IoTSharp.Data.InMemory
│ │ ├── InMemoryModelBuilderOptions.cs
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ └── IoTSharp.Data.InMemory.csproj
│ ├── IoTSharp.Data.MySQL
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ ├── IoTSharp.Data.MySQL.csproj
│ │ ├── Migrations
│ │ │ ├── 20211210180317_CreateIdentitySchema.cs
│ │ │ ├── 20211210180317_CreateIdentitySchema.Designer.cs
│ │ │ ├── 20211221075652_addmodelcommand.cs
│ │ │ ├── 20211221075652_addmodelcommand.Designer.cs
│ │ │ ├── 20220212100754_FixTenantInfo.cs
│ │ │ ├── 20220212100754_FixTenantInfo.Designer.cs
│ │ │ ├── 20220329035025_AddAlarm.cs
│ │ │ ├── 20220329035025_AddAlarm.Designer.cs
│ │ │ ├── 20220329045201_AddAsset.cs
│ │ │ ├── 20220329045201_AddAsset.Designer.cs
│ │ │ ├── 20220329045835_AddAssetName.cs
│ │ │ ├── 20220329045835_AddAssetName.Designer.cs
│ │ │ ├── 20220914122820_Produce.cs
│ │ │ ├── 20220914122820_Produce.Designer.cs
│ │ │ ├── 20220915040624_Produce2.cs
│ │ │ ├── 20220915040624_Produce2.Designer.cs
│ │ │ ├── 20220922124340_AddProduceDictionary.cs
│ │ │ ├── 20220922124340_AddProduceDictionary.Designer.cs
│ │ │ ├── 20221006071634_remove_online_status.cs
│ │ │ ├── 20221006071634_remove_online_status.Designer.cs
│ │ │ ├── 20221107071736_LogicallyDeleted.cs
│ │ │ ├── 20221107071736_LogicallyDeleted.Designer.cs
│ │ │ ├── 20221109174343_addflowexfield.cs
│ │ │ ├── 20221109174343_addflowexfield.Designer.cs
│ │ │ ├── 20221202074318_ModifyEmailSpell.cs
│ │ │ ├── 20221202074318_ModifyEmailSpell.Designer.cs
│ │ │ ├── 20230313073928_ProduceModify.cs
│ │ │ ├── 20230313073928_ProduceModify.Designer.cs
│ │ │ └── ApplicationDbContextModelSnapshot.cs
│ │ ├── MySqlModelBuilderOptions.cs
│ │ └── readme.md
│ ├── IoTSharp.Data.Oracle
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ ├── IoTSharp.Data.Oracle.csproj
│ │ ├── Migrations
│ │ │ ├── 20220211164637_AddOracle2022.cs
│ │ │ ├── 20220211164637_AddOracle2022.Designer.cs
│ │ │ └── ApplicationDbContextModelSnapshot.cs
│ │ ├── OracleModelBuilderOptions.cs
│ │ └── readme.md
│ ├── IoTSharp.Data.PostgreSQL
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ ├── IoTSharp.Data.PostgreSQL.csproj
│ │ ├── Migrations
│ │ │ ├── 00000000000000_CreateIdentitySchema.cs
│ │ │ ├── 00000000000000_CreateIdentitySchema.Designer.cs
│ │ │ ├── 20190103085249_AddDataTable.cs
│ │ │ ├── 20190103085249_AddDataTable.Designer.cs
│ │ │ ├── 20190103092505_AddDiscriminator.cs
│ │ │ ├── 20190103092505_AddDiscriminator.Designer.cs
│ │ │ ├── 20190104081406_ModifyRelationship.cs
│ │ │ ├── 20190104081406_ModifyRelationship.Designer.cs
│ │ │ ├── 20190108071914_AddRole.cs
│ │ │ ├── 20190108071914_AddRole.Designer.cs
│ │ │ ├── 20190118115805_AddDeviceIdentity.cs
│ │ │ ├── 20190118115805_AddDeviceIdentity.Designer.cs
│ │ │ ├── 20190129085237_AuditLog.cs
│ │ │ ├── 20190129085237_AuditLog.Designer.cs
│ │ │ ├── 20190131022355_Value_DateTime.cs
│ │ │ ├── 20190131022355_Value_DateTime.Designer.cs
│ │ │ ├── 20190518035335_Gateway.cs
│ │ │ ├── 20190518035335_Gateway.Designer.cs
│ │ │ ├── 20190518041926_DeviceOwner.cs
│ │ │ ├── 20190518041926_DeviceOwner.Designer.cs
│ │ │ ├── 20190624102543_RetainedMessage.cs
│ │ │ ├── 20190624102543_RetainedMessage.Designer.cs
│ │ │ ├── 20190903070558_ReDesingerDataStorage.cs
│ │ │ ├── 20190903070558_ReDesingerDataStorage.Designer.cs
│ │ │ ├── 20190903070959_ModifyColumnOrder.cs
│ │ │ ├── 20190903070959_ModifyColumnOrder.Designer.cs
│ │ │ ├── 20200623084401_addAuthorizedKey.cs
│ │ │ ├── 20200623084401_addAuthorizedKey.Designer.cs
│ │ │ ├── 20200728110511_DateTimeModify.cs
│ │ │ ├── 20200728110511_DateTimeModify.Designer.cs
│ │ │ ├── 20200731125037_RemoveAttributeData.cs
│ │ │ ├── 20200731125037_RemoveAttributeData.Designer.cs
│ │ │ ├── 20200923043726_AddTelemetryDataPrimaryKey.cs
│ │ │ ├── 20200923043726_AddTelemetryDataPrimaryKey.Designer.cs
│ │ │ ├── 20200923101729_RemoveTelemetryDataPrimaryKey.cs
│ │ │ ├── 20200923101729_RemoveTelemetryDataPrimaryKey.Designer.cs
│ │ │ ├── 20200924163054_RunSqlScript.cs
│ │ │ ├── 20200924163054_RunSqlScript.Designer.cs
│ │ │ ├── 20201024123604_AddDeviceStatus.cs
│ │ │ ├── 20201024123604_AddDeviceStatus.Designer.cs
│ │ │ ├── 20210214112844_RemoveRetainedMessage.cs
│ │ │ ├── 20210214112844_RemoveRetainedMessage.Designer.cs
│ │ │ ├── 20220215180407_AddSchema2021.cs
│ │ │ ├── 20220215180407_AddSchema2021.Designer.cs
│ │ │ ├── 20220329034818_AddAlarm.cs
│ │ │ ├── 20220329034818_AddAlarm.Designer.cs
│ │ │ ├── 20220329045120_AddAsset.cs
│ │ │ ├── 20220329045120_AddAsset.Designer.cs
│ │ │ ├── 20220329050121_AddAssetName.cs
│ │ │ ├── 20220329050121_AddAssetName.Designer.cs
│ │ │ ├── 20220914112335_Produce.cs
│ │ │ ├── 20220914112335_Produce.Designer.cs
│ │ │ ├── 20220915040519_Produce2.cs
│ │ │ ├── 20220915040519_Produce2.Designer.cs
│ │ │ ├── 20220922115449_AddProduceDictionary.cs
│ │ │ ├── 20220922115449_AddProduceDictionary.Designer.cs
│ │ │ ├── 20221006071345_remove_online_status.cs
│ │ │ ├── 20221006071345_remove_online_status.Designer.cs
│ │ │ ├── 20221107071615_LogicallyDeleted.cs
│ │ │ ├── 20221107071615_LogicallyDeleted.Designer.cs
│ │ │ ├── 20221202074042_ModifyEmailSpell.cs
│ │ │ ├── 20221202074042_ModifyEmailSpell.Designer.cs
│ │ │ ├── 20230313073609_ProduceModify.cs
│ │ │ ├── 20230313073609_ProduceModify.Designer.cs
│ │ │ └── ApplicationDbContextModelSnapshot.cs
│ │ ├── NpgsqlModelBuilderOptions.cs
│ │ └── readme.md
│ ├── IoTSharp.Data.Sqlite
│ │ ├── IoTSharpDataBuilderExtensions.cs
│ │ ├── IoTSharp.Data.Sqlite.csproj
│ │ ├── Migrations
│ │ │ ├── 20220812062443_CreateIdentitySchema.cs
│ │ │ ├── 20220812062443_CreateIdentitySchema.Designer.cs
│ │ │ ├── 20220914122629_Produce.cs
│ │ │ ├── 20220914122629_Produce.Designer.cs
│ │ │ ├── 20220915040147_Produce2.cs
│ │ │ ├── 20220915040147_Produce2.Designer.cs
│ │ │ ├── 20220922124423_AddProduceDictionary.cs
│ │ │ ├── 20220922124423_AddProduceDictionary.Designer.cs
│ │ │ ├── 20221006071746_remove_online_status.cs
│ │ │ ├── 20221006071746_remove_online_status.Designer.cs
│ │ │ ├── 20221107071801_LogicallyDeleted.cs
│ │ │ ├── 20221107071801_LogicallyDeleted.Designer.cs
│ │ │ ├── 20221202074402_ModifyEmailSpell.cs
│ │ │ ├── 20221202074402_ModifyEmailSpell.Designer.cs
│ │ │ ├── 20230313051417_ProduceModify.cs
│ │ │ ├── 20230313051417_ProduceModify.Designer.cs
│ │ │ └── ApplicationDbContextModelSnapshot.cs
│ │ └── SqliteModelBuilderOptions.cs
│ └── IoTSharp.Data.SqlServer
│ ├── IoTSharpDataBuilderExtensions.cs
│ ├── IoTSharp.Data.SqlServer.csproj
│ ├── Migrations
│ │ ├── 20220212100016_SQLServerSchema2022.cs
│ │ ├── 20220212100016_SQLServerSchema2022.Designer.cs
│ │ ├── 20220329035141_AddAlarm.cs
│ │ ├── 20220329035141_AddAlarm.Designer.cs
│ │ ├── 20220329045427_AddAsset.cs
│ │ ├── 20220329045427_AddAsset.Designer.cs
│ │ ├── 20220329045806_AddAssetName.cs
│ │ ├── 20220329045806_AddAssetName.Designer.cs
│ │ ├── 20220915040739_Produce2.cs
│ │ ├── 20220915040739_Produce2.Designer.cs
│ │ ├── 20220922124831_AddProduceDictionary.cs
│ │ ├── 20220922124831_AddProduceDictionary.Designer.cs
│ │ ├── 20221006071915_remove_online_status.cs
│ │ ├── 20221006071915_remove_online_status.Designer.cs
│ │ ├── 20221107071845_LogicallyDeleted.cs
│ │ ├── 20221107071845_LogicallyDeleted.Designer.cs
│ │ ├── 20221202074541_ModifyEmailSpell.cs
│ │ ├── 20221202074541_ModifyEmailSpell.Designer.cs
│ │ └── ApplicationDbContextModelSnapshot.cs
│ └── MsSqlModelBuilderOptions.cs
├── IoTSharp.Data.TimeSeries
│ ├── AggregateDataHelpers.cs
│ ├── DependencyInjection.cs
│ ├── EFStorage.cs
│ ├── InfluxDBStorage.cs
│ ├── IoTDBStorage.cs
│ ├── IoTSharp.Data.TimeSeries.csproj
│ ├── IStorage.cs
│ ├── PinusDBStorage.cs
│ ├── ShardingStorage.cs
│ ├── TaosStorage.cs
│ └── TimescaleDBStorage.cs
├── IoTSharp.EasyUse
│ ├── frmMain.cs
│ ├── frmMain.Designer.cs
│ ├── frmMain.resx
│ ├── IoTSharp.EasyUse.csproj
│ └── Program.cs
├── IoTSharp.EventBus
│ ├── DeviceActivityStatus.cs
│ ├── DeviceConnectStatus.cs
│ ├── EventBusMetrics.cs
│ ├── EventBusOption.cs
│ ├── EventBusPublisher.cs
│ ├── EventBusSubscriber.cs
│ ├── EventsBusDependencyInjection.cs
│ ├── IoTSharp.EventBus.csproj
│ ├── IPublisher.cs
│ └── ISubscriber.cs
├── IoTSharp.EventBus.CAP
│ ├── CapPublisher.cs
│ ├── CapSubscriber.cs
│ ├── DependencyInjection.cs
│ └── IoTSharp.EventBus.CAP.csproj
├── IoTSharp.EventBus.NServiceBus
│ ├── DependencyInjection.cs
│ ├── IoTSharp.EventBus.NServiceBus.csproj
│ ├── NSBusPublisher.cs
│ └── NSBusSubscriber.cs
├── IoTSharp.EventBus.Shashlik
│ ├── DependencyInjection.cs
│ ├── Events.cs
│ ├── IoTSharp.EventBus.Shashlik.csproj
│ ├── ShashlikEvent.cs
│ ├── ShashlikPublisher.cs
│ └── ShashlikSubscriber.cs
├── IoTSharp.Extensions
│ ├── BitVector32Extensions.cs
│ ├── EndianExtensions.cs
│ ├── EnumerableExtensions.cs
│ ├── FileExtension.cs
│ ├── Hex.cs
│ ├── IoTSharp.Extensions.csproj
│ ├── MarshalExtension.cs
│ ├── Retry.cs
│ ├── StorageExtensions.cs
│ ├── StringExtension.cs
│ ├── TaskExtension.cs
│ ├── TypeExtensions.cs
│ └── XmlExtensions.cs
├── IoTSharp.Extensions.AspNetCore
│ ├── DependencyInjectionExtension.cs
│ ├── HostExtension.cs
│ ├── IdentityExtension.cs
│ ├── IoTSharp.Extensions.AspNetCore.csproj
│ └── MVCExtensions.cs
├── IoTSharp.Extensions.BouncyCastle
│ ├── IoTSharp.Extensions.BouncyCastle.csproj
│ ├── RSAExtensions.cs
│ └── RSAHelper.cs
├── IoTSharp.Extensions.DependencyInjection
│ ├── IoTSharp.Extensions.DependencyInjection.csproj
│ └── ObjectPoolExtension.cs
├── IoTSharp.Extensions.EFCore
│ ├── CollectionsExtension.cs
│ ├── DataExtension.cs
│ ├── DbReaderExtensions.cs
│ ├── EFCoreExtension.cs
│ ├── IoTSharp.Extensions.EFCore.csproj
│ ├── QueryCollection.cs
│ ├── readme.md
│ └── SqlQuery.cs
├── IoTSharp.Extensions.QuartzJobScheduler
│ ├── IoTSharp.Extensions.QuartzJobScheduler.csproj
│ ├── QuartzJobSchedulerAttribute.cs
│ ├── QuartzJobSchedulerExtensions.cs
│ └── readme.md
├── IoTSharp.Extensions.RESTful
│ ├── IoTSharp.Extensions.RESTful.csproj
│ ├── NewtonsoftRestClientExtensions.cs
│ └── SystemTextJsonRestClientExtensions.cs
├── IoTSharp.Extensions.X509
│ ├── CryptoBase.cs
│ ├── Helpers.cs
│ ├── IoTSharp.Extensions.X509.csproj
│ ├── PemSigner.cs
│ ├── PemUtils.cs
│ ├── TextCrypter.cs
│ ├── X509PemExtensions.cs
│ └── X509SelfExtensions.cs
├── IoTSharp.Interpreter
│ ├── BASICScriptEngine.cs
│ ├── CScriptEngine.cs
│ ├── CSharpScriptEngine.cs
│ ├── EngineSetting.cs
│ ├── IoTSharp.Interpreter.csproj
│ ├── JavaScriptEngine.cs
│ ├── LuaScriptEngine.cs
│ ├── Properties
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── PythonScriptEngine.cs
│ ├── Resources
│ │ └── jsonDB.js
│ ├── ScriptEngineBase.cs
│ ├── ScriptEnginesExtensions.cs
│ └── SQLEngine.cs
├── IoTSharp.SDKs
│ ├── docs
│ │ └── 200x200.png
│ ├── IoTSharp.Sdk.CSharp
│ │ ├── ApiClients.cs
│ │ ├── ApiExtension.cs
│ │ ├── IoTSharpClient.cs
│ │ ├── IoT.Sharp.Hub.nswag
│ │ ├── IoTSharp.Sdk.Http.csproj
│ │ ├── Partials.cs
│ │ ├── SdkClient.cs
│ │ └── Session.cs
│ ├── IoTSharp.Sdk.MQTT
│ │ ├── IoTSharp.Sdk.MQTT.csproj
│ │ └── MQTTClient.cs
│ ├── IoTSharp.Sdks.sln
│ ├── IoTSharp.Sdk.TS
│ │ └── IoTSharp.Sdk.ts
│ ├── LICENSE
│ ├── MQTTDemo
│ │ ├── MQTTDemo.csproj
│ │ └── Program.cs
│ └── README.md
├── IoTSharp.sln
├── IoTSharp.TaskActions
│ ├── AlarmPullExcutor.cs
│ ├── CustomeAlarmPullExcutor.cs
│ ├── DeviceActionExcutor.cs
│ ├── IoTSharp.TaskActions.csproj
│ ├── MessagePullExcutor.cs
│ ├── RangerCheckExcutor.cs
│ ├── TaskAction.cs
│ ├── TaskActionInput.cs
│ ├── TaskActionOutput.cs
│ └── TelemetryArrayPullExcutor.cs
├── IoTSharp.Test
│ ├── InstallerTest.cs
│ ├── IoTSharp.Test.csproj
│ ├── JsonConverTest.cs
│ ├── ScriptEngineTest.cs
│ └── TestIoTSharp.cs
├── launchSettings.json
├── LICENSE
├── nuget.config
├── README.md
├── README.zh.md
├── roadmap.md
├── servers.json
└── tools
├── ef_db_drop.cmd
├── ef_mg_add.cmd
├── ef_mg_remove.cmd
├── setnpm.cmd
└── upgrade_ef.cmd
186 directories, 996 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论