MQTT communication packages: Difference between revisions
mNo edit summary |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Communication packages]] [[Category:MQTT]] [[Category:OPC UA PubSub]] | [[Category:Communication packages]] [[Category:MQTT]] [[Category:OPC UA PubSub]] [[Category:Python]] | ||
There are various software libraries that provide MQTT communication capability, and they differ in many aspects such as the protocol versions and features supported, target platforms, licensing etc. OPC Labs software uses pluggable MQTT communication packages, and therefore you can decide which of these libraries to use. Each MQTT library is wrapped in a communication package, which provides interface to the rest of OPC Labs software. Some communication packages are built-in, i.e. they are always available, do not require additional artifacts for their operation, and are licensed together with the base product and under the same conditions. | There are various software libraries that provide MQTT communication capability, and they differ in many aspects such as the protocol versions and features supported, target platforms, licensing etc. OPC Labs software uses pluggable MQTT communication packages, and therefore you can decide which of these libraries to use. Each MQTT library is wrapped in a communication package, which provides interface to the rest of OPC Labs software. Some communication packages are built-in, i.e. they are always available, do not require additional artifacts for their operation, and are licensed together with the base product and under the same conditions. | ||
Line 14: | Line 14: | ||
|[[OpcLabs.Mqtt communication package]] | |[[OpcLabs.Mqtt communication package]] | ||
|[[OpcLabs.MqttNet communication package]] | |[[OpcLabs.MqttNet communication package]] | ||
|rowspan=" | |rowspan="6" style="text-align:center;"|Will be developed if need arises | ||
|[[File-based MQTT emulation]] | |[[File-based MQTT emulation]] | ||
|- | |- | ||
|Roles | |Roles | ||
|Client | |MQTT Client | ||
|Client | |MQTT Client | ||
|Client | |MQTT Client | ||
|- | |- | ||
|Target platforms | |Target platforms | ||
|.NETFramework 4.7.2, . | |.NETFramework 4.7.2, net6.0 | ||
|.NETFramework 4.7.2, . | |.NETFramework 4.7.2, net6.0 | ||
|.NETFramework 4.7.2, . | |.NETFramework 4.7.2, net6.0 | ||
|- | |- | ||
|NuGet package | |NuGet package | ||
|https://www.nuget.org/packages/OpcLabs.Mqtt/ | |[https://www.nuget.org/packages/OpcLabs.Mqtt/ OpcLabs.Mqtt] | ||
|https://www.nuget.org/packages/OpcLabs.MqttNet/ | |[https://www.nuget.org/packages/OpcLabs.MqttNet/ OpcLabs.MqttNet] | ||
|rowspan=" | |rowspan="3"|The package is built-in | ||
|- | |||
|Python package | |||
|[https://pypi.org/project/opclabs-mqtt/ opclabs-mqtt] | |||
|[https://pypi.org/project/opclabs-mqttnet/ opclabs-mqttnet] | |||
|- | |- | ||
|ZIP package (for COM) | |ZIP package (for COM) | ||
|https://www.opclabs.com/files/downloads/OpcLabs.Mqtt/ | |[https://www.opclabs.com/files/downloads/OpcLabs.Mqtt/ OpcLabs.Mqtt] | ||
|https://www.opclabs.com/files/downloads/OpcLabs.MqttNet/ | |[https://www.opclabs.com/files/downloads/OpcLabs.MqttNet/ OpcLabs.MqttNet] | ||
|- | |- | ||
!Underlying software | !Underlying software | ||
Line 48: | Line 52: | ||
|Version used | |Version used | ||
|0.6.0-beta | |0.6.0-beta | ||
|3.0.8 | |4.3.3.952<ref>3.0.8 up to QuickOPC 2023.2.</ref> | ||
|1.0.8 | |1.0.8 | ||
|- | |- | ||
|Current version<ref>As of | |Current version<ref>As of 2024-01-30.</ref> | ||
|0.6.16-beta | |0.6.16-beta | ||
|4. | |4.3.3.952 | ||
|1.1.0 | |1.1.0 | ||
|- | |- | ||
Line 92: | Line 96: | ||
|- | |- | ||
|NuGet packages | |NuGet packages | ||
|https://www.nuget.org/packages/System.Net.Mqtt | |[https://www.nuget.org/packages/System.Net.Mqtt System.Net.Mqtt] | ||
|https://www.nuget.org/packages/MQTTnet,<br>https://www.nuget.org/packages/MQTTnet.Extensions.ManagedClient | |[https://www.nuget.org/packages/MQTTnet MQTTnet],<br>[https://www.nuget.org/packages/MQTTnet.Extensions.ManagedClient MQTTnet.Extensions.ManagedClient] | ||
|https://www.nuget.org/packages/M2MqttDotnetCore/ | |[https://www.nuget.org/packages/M2MqttDotnetCore/ M2MqttDotnetCore] | ||
|} | |} | ||
Currently, we recommend to use the '''OpcLabs.MqttNet''' communication package, and it is set as default. The underlying library has most features. You can switch to a different communication package if you like (see [[Using communication packages]]). You can even develop your own communication package if needed (contact us for information to that). | Currently, we recommend to use the '''OpcLabs.MqttNet''' communication package, and it is set as default. The underlying library has most features, and is it the only one that appears to be under active development. You can switch to a different communication package if you like (see [[Using communication packages]]). You can even develop your own communication package if needed (contact us for information to that). | ||
For details on how to work with a particular communication package (such as what is the format of the URL strings used, or how to configure it), see the links in the Documentation row under Communication package in the table above. | For details on how to work with a particular communication package (such as what is the format of the URL strings used, or how to configure it), see the links in the Documentation row under Communication package in the table above. |
Latest revision as of 16:28, 30 May 2024
There are various software libraries that provide MQTT communication capability, and they differ in many aspects such as the protocol versions and features supported, target platforms, licensing etc. OPC Labs software uses pluggable MQTT communication packages, and therefore you can decide which of these libraries to use. Each MQTT library is wrapped in a communication package, which provides interface to the rest of OPC Labs software. Some communication packages are built-in, i.e. they are always available, do not require additional artifacts for their operation, and are licensed together with the base product and under the same conditions.
The available MQTT communication packages are described in the table below, together with the underlying software (library) they use. The table may also contain columns for MQTT libraries for which no communication package is available yet, but is in consideration or development.
Communication package | OpcLabs.Mqtt | OpcLabs.MqttNet | n/a | file-based emulation |
---|---|---|---|---|
Documentation | OpcLabs.Mqtt communication package | OpcLabs.MqttNet communication package | Will be developed if need arises | File-based MQTT emulation |
Roles | MQTT Client | MQTT Client | MQTT Client | |
Target platforms | .NETFramework 4.7.2, net6.0 | .NETFramework 4.7.2, net6.0 | .NETFramework 4.7.2, net6.0 | |
NuGet package | OpcLabs.Mqtt | OpcLabs.MqttNet | The package is built-in | |
Python package | opclabs-mqtt | opclabs-mqttnet | ||
ZIP package (for COM) | OpcLabs.Mqtt | OpcLabs.MqttNet | ||
Underlying software | System.Net.Mqtt (code name Hermes) | MQTTnet, MQTTnet.Extensions.ManagedClient |
M2MqttDotnetCore | |
Author | Xamarin (Microsoft) | Christian Kratky | ||
Version used | 0.6.0-beta | 4.3.3.952[1] | 1.0.8 | |
Current version[2] | 0.6.16-beta | 4.3.3.952 | 1.1.0 | |
License | MIT License | MIT License | Eclipse Public License 1.0 | |
Project site/documentation | https://github.com/xamarin/mqtt | https://github.com/chkr1011/MQTTnet/wiki | https://m2mqtt.wordpress.com/ | |
Code repository | https://github.com/xamarin/mqtt | https://github.com/chkr1011/MQTTnet | https://github.com/mohaqeq/paho.mqtt.m2mqtt | |
MQTT versions | 3.1.1 | 3.1.0, 3.1.1, 5.0.0 | ||
Roles | Client, Server | Client, Server | Client | |
Transport protocols | TCP | TCP, TCP+TLS, WS, WSS | TCP, TCP+TLS | |
Target platform | .NETFramework 4.6, .NETStandard2.0 | .NETStandard 1.3, .NETStandard 2.0, UAP 10.0 | .NETStandard 2.0 | |
NuGet packages | System.Net.Mqtt | MQTTnet, MQTTnet.Extensions.ManagedClient |
M2MqttDotnetCore |
Currently, we recommend to use the OpcLabs.MqttNet communication package, and it is set as default. The underlying library has most features, and is it the only one that appears to be under active development. You can switch to a different communication package if you like (see Using communication packages). You can even develop your own communication package if needed (contact us for information to that).
For details on how to work with a particular communication package (such as what is the format of the URL strings used, or how to configure it), see the links in the Documentation row under Communication package in the table above.