Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
IoTSharp
IoTSharp
提交
6de37671
IoTSharp
项目概览
IoTSharp
/
IoTSharp
8 个月 前同步成功
通知
15
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
IoTSharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6de37671
编写于
5月 18, 2020
作者:
麦壳饼
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改mqtt
上级
0a4b404d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
87 addition
and
126 deletion
+87
-126
IoTSharp/Controllers/MqttServerController.cs
IoTSharp/Controllers/MqttServerController.cs
+0
-118
IoTSharp/Extensions/MqttExtension.cs
IoTSharp/Extensions/MqttExtension.cs
+0
-1
IoTSharp/IoTSharp.csproj
IoTSharp/IoTSharp.csproj
+13
-7
IoTSharp/Services/ModbusTCPService.cs
IoTSharp/Services/ModbusTCPService.cs
+70
-0
IoTSharp/Startup.cs
IoTSharp/Startup.cs
+4
-0
未找到文件。
IoTSharp/Controllers/MqttServerController.cs
已删除
100644 → 0
浏览文件 @
0a4b404d
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
IoTSharp.Data
;
using
IoTSharp.Handlers
;
using
IoTSharp.MQTT
;
using
IoTSharp.Services
;
using
Microsoft.AspNetCore.Http
;
using
Microsoft.AspNetCore.Mvc
;
using
MQTTnet
;
using
MQTTnet.AspNetCoreEx
;
using
MQTTnet.Protocol
;
using
MQTTnet.Server
;
using
MQTTnet.Server.Status
;
namespace
IoTSharp.Controllers
{
[
Route
(
"api/[controller]/[action]"
)]
[
ApiController
]
public
class
MqttServerController
:
ControllerBase
{
private
readonly
MQTTServerHandler
_mqttService
;
public
MqttServerController
(
MQTTServerHandler
mqttService
)
{
_mqttService
=
mqttService
;
}
[
HttpPost
]
public
async
Task
Publish
(
string
topic
,
string
Payload
,
int
qos
=
0
,
bool
retain
=
false
)
{
if
(
topic
==
null
)
throw
new
ArgumentNullException
(
nameof
(
topic
));
await
_mqttService
.
Publish
(
new
MqttPublishParameters
<
string
>()
{
Payload
=
Payload
,
QualityOfServiceLevel
=
(
MqttQualityOfServiceLevel
)
qos
,
Retain
=
retain
,
Topic
=
topic
});
}
[
HttpGet
]
public
List
<
string
>
Imports
()
{
return
_mqttService
.
GetTopicImportUids
();
}
[
HttpPost
(
"{uid}"
)]
public
void
Import
(
string
uid
,
[
FromBody
]
MqttImportTopicParameters
parameters
)
{
if
(
uid
==
null
)
throw
new
ArgumentNullException
(
nameof
(
uid
));
if
(
parameters
==
null
)
throw
new
ArgumentNullException
(
nameof
(
parameters
));
_mqttService
.
StartTopicImport
(
uid
,
parameters
);
}
[
HttpDelete
(
"{uid}"
)]
[
ApiExplorerSettings
(
GroupName
=
"v1"
)]
public
void
DeleteImport
(
string
uid
)
{
if
(
uid
==
null
)
throw
new
ArgumentNullException
(
nameof
(
uid
));
_mqttService
.
StopTopicImport
(
uid
);
}
[
HttpGet
]
public
Task
<
IList
<
IMqttClientStatus
>>
Clients
()
{
return
_mqttService
.
GetClientsAsync
();
}
[
HttpGet
]
public
Task
<
IList
<
IMqttSessionStatus
>>
Sessions
()
{
return
_mqttService
.
GetSessionsAsync
();
}
[
HttpGet
]
public
Dictionary
<
string
,
MqttSubscriberModel
>
Subscriptions
()
{
return
_mqttService
.
GetSubscribers
().
ToDictionary
(
s
=>
s
.
Uid
,
s
=>
new
MqttSubscriberModel
{
TopicFilter
=
s
.
TopicFilter
});
}
[
HttpDelete
(
"{uid}"
)]
public
void
Subscriber
(
string
uid
)
{
_mqttService
.
Unsubscribe
(
uid
);
}
[
HttpGet
]
public
Task
<
IList
<
MqttApplicationMessage
>>
RetainedMessages
()
{
return
_mqttService
.
GetRetainedMessagesAsync
();
}
[
HttpDelete
(
"{topic}"
)]
public
async
Task
RetainedMessage
(
string
topic
)
{
await
_mqttService
.
Publish
(
new
MqttPublishParameters
<
byte
[
]>
{
Topic
=
topic
,
Payload
=
new
byte
[
0
],
QualityOfServiceLevel
=
MqttQualityOfServiceLevel
.
AtMostOnce
,
Retain
=
true
});
}
[
HttpDelete
]
public
Task
CleanRetainedMessages
()
{
return
_mqttService
.
DeleteRetainedMessagesAsync
();
}
}
public
class
MqttSubscriberModel
{
public
string
TopicFilter
{
get
;
set
;
}
}
}
IoTSharp/Extensions/MqttExtension.cs
浏览文件 @
6de37671
...
...
@@ -53,7 +53,6 @@ namespace IoTSharp
}
public
static
void
UseIotSharpMqttServer
(
this
IApplicationBuilder
app
)
{
app
.
UseMqttEndpoint
();
var
mqttEvents
=
app
.
ApplicationServices
.
CreateScope
().
ServiceProvider
.
GetService
<
MQTTServerHandler
>();
IMqttServerStorage
storage
=
app
.
ApplicationServices
.
CreateScope
().
ServiceProvider
.
GetService
<
IMqttServerStorage
>();
app
.
UseMqttServerEx
(
server
=>
...
...
IoTSharp/IoTSharp.csproj
浏览文件 @
6de37671
...
...
@@ -46,18 +46,23 @@
<PackageReference Include="IoTSharp.X509Extensions" Version="1.4.9" />
<PackageReference Include="kimbus" Version="2.0.1" />
<PackageReference Include="LiteDB" Version="5.0.8" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
<PackageReference Include="MQTTnet" Version="3.0.
9
" />
<PackageReference Include="MQTTnet.AspNetCore" Version="3.0.
9
" />
<PackageReference Include="MQTTnet.Extensions.Rpc" Version="3.0.
9
" />
<PackageReference Include="MQTTnet" Version="3.0.
11
" />
<PackageReference Include="MQTTnet.AspNetCore" Version="3.0.
11
" />
<PackageReference Include="MQTTnet.Extensions.Rpc" Version="3.0.
11
" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.3" />
<PackageReference Include="NSwag.AspNetCore" Version="13.5.0" />
<PackageReference Include="QuartzHostedServiceEx" Version="0.0.7" />
<PackageReference Include="Silkier" Version="1.0.
23
" />
<PackageReference Include="Silkier.AspNetCore" Version="1.0.
23
" />
<PackageReference Include="Silkier.EFCore" Version="1.0.
23
" />
<PackageReference Include="Silkier" Version="1.0.
110
" />
<PackageReference Include="Silkier.AspNetCore" Version="1.0.
110
" />
<PackageReference Include="Silkier.EFCore" Version="1.0.
110
" />
<PackageReference Include="System.ServiceModel.Primitives" Version="4.7.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" />
<PackageReference Include="CoAP.NET.Core" Version="1.1.0" />
...
...
@@ -76,7 +81,7 @@
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.4" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="3.1.4" />
<PackageReference Include="MQTTnet.AspNetCoreEx" Version="3.0.9" />
<PackageReference Include="MQTTnet.Extensions.ManagedClient" Version="3.0.
9
" />
<PackageReference Include="MQTTnet.Extensions.ManagedClient" Version="3.0.
11
" />
</ItemGroup>
<ItemGroup>
...
...
@@ -85,6 +90,7 @@
<EmbeddedResource Remove="Migrations\**" />
<None Remove="Migrations\**" />
<Content Remove="appsettings.Production.json" />
<None Remove=".gitignore" />
<None Remove="healthchecksdb" />
<None Remove="healthchecksdb-shm" />
<None Include="..\docs\images\200x200.png">
...
...
IoTSharp/Services/ModbusTCPService.cs
0 → 100644
浏览文件 @
6de37671
using
CoAP.Server
;
using
IoTSharp.Data
;
using
IoTSharp.Handlers
;
using
Kimbus
;
using
Kimbus.Slave
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Hosting
;
using
Microsoft.Extensions.Logging
;
using
MQTTnet.Client
;
using
MQTTnet.Client.Connecting
;
using
MQTTnet.Client.Disconnecting
;
using
MQTTnet.Client.Options
;
using
MQTTnet.Client.Receiving
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
IoTSharp.Services
{
public
class
ModbusTCPService
:
IHostedService
{
private
readonly
ILogger
_logger
;
private
MbTcpSlave
_slave
;
private
ApplicationDbContext
_dbContext
;
private
IServiceScope
_serviceScope
;
public
ModbusTCPService
(
ILogger
<
ModbusTCPService
>
logger
,
IServiceScopeFactory
scopeFactor
)
{
_slave
=
new
MbTcpSlave
(
"*"
,
502
);
_logger
=
logger
;
_serviceScope
=
scopeFactor
.
CreateScope
();
_dbContext
=
_serviceScope
.
ServiceProvider
.
GetRequiredService
<
ApplicationDbContext
>();
}
public
Task
StartAsync
(
CancellationToken
cancellationToken
)
{
_slave
.
OnWriteHoldingRegisters
=
(
_
,
start
,
hrs
)
=>
{
Console
.
WriteLine
(
"Write holding registers at {0}, len: {1}"
,
start
,
hrs
.
Length
);
for
(
var
i
=
0
;
i
<
hrs
.
Length
;
++
i
)
{
Console
.
WriteLine
(
"{0}: {1}"
,
i
+
start
,
hrs
[
i
]);
}
return
MbExceptionCode
.
Ok
;
};
_slave
.
OnReadHoldingRegisters
=
(
_
,
start
,
count
)
=>
{
var
buffer
=
new
ushort
[
count
];
for
(
var
i
=
0
;
i
<
count
;
++
i
)
{
buffer
[
i
]
=
(
ushort
)(
i
+
start
);
}
return
(
buffer
,
MbExceptionCode
.
Ok
);
};
return
_slave
.
Listen
();
}
public
Task
StopAsync
(
CancellationToken
cancellationToken
)
{
return
Task
.
CompletedTask
;
}
}
}
\ No newline at end of file
IoTSharp/Startup.cs
浏览文件 @
6de37671
...
...
@@ -37,6 +37,9 @@ using System.Reflection;
using
System.Text
;
using
System.Threading.Tasks
;
using
MQTTnet.Server
;
using
System.Runtime.InteropServices.ComTypes
;
using
SshNet.Security.Cryptography
;
namespace
IoTSharp
{
public
class
Startup
...
...
@@ -177,6 +180,7 @@ namespace IoTSharp
app
.
UseEndpoints
(
endpoints
=>
{
endpoints
.
MapControllers
();
endpoints
.
MapMqtt
(
"/mqtt"
);
});
app
.
UseSwaggerUi3
();
app
.
UseOpenApi
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录