diff --git a/IoT/Connector/Data/Mqtt/ConnectorDataMqtt.csproj b/ConnectorDataMqtt/ConnectorDataMqtt/ConnectorDataMqtt.csproj similarity index 97% rename from IoT/Connector/Data/Mqtt/ConnectorDataMqtt.csproj rename to ConnectorDataMqtt/ConnectorDataMqtt/ConnectorDataMqtt.csproj index 8ffdeba..975113d 100644 --- a/IoT/Connector/Data/Mqtt/ConnectorDataMqtt.csproj +++ b/ConnectorDataMqtt/ConnectorDataMqtt/ConnectorDataMqtt.csproj @@ -1,51 +1,51 @@ - - - - - Debug - AnyCPU - {EE6C8F68-ED46-4C1C-ABDD-CFCDF75104F2} - Library - Properties - BlubbFish.Utils.IoT.Connector.Data - ConnectorDataMqtt - v4.7.1 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - {a11aef5a-b246-4fe8-8330-06db73cc8074} - M2Mqtt_4.7.1 - - - {b870e4d5-6806-4a0b-b233-8907eedc5afc} - Utils-IoT - - - - - - + + + + + Debug + AnyCPU + {EE6C8F68-ED46-4C1C-ABDD-CFCDF75104F2} + Library + Properties + BlubbFish.Utils.IoT.Connector.Data + ConnectorDataMqtt + v4.7.1 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + {a11aef5a-b246-4fe8-8330-06db73cc8074} + M2Mqtt_4.7.1 + + + {b870e4d5-6806-4a0b-b233-8907eedc5afc} + Utils-IoT + + + + + + \ No newline at end of file diff --git a/IoT/Connector/Data/Mqtt/Mqtt.cs b/ConnectorDataMqtt/ConnectorDataMqtt/Mqtt.cs similarity index 97% rename from IoT/Connector/Data/Mqtt/Mqtt.cs rename to ConnectorDataMqtt/ConnectorDataMqtt/Mqtt.cs index 2a25880..0ebd821 100644 --- a/IoT/Connector/Data/Mqtt/Mqtt.cs +++ b/ConnectorDataMqtt/ConnectorDataMqtt/Mqtt.cs @@ -1,83 +1,83 @@ -using System; -using System.Collections.Generic; -using System.Text; -using BlubbFish.Utils.IoT.Events; -using uPLibrary.Networking.M2Mqtt; -using uPLibrary.Networking.M2Mqtt.Messages; - -namespace BlubbFish.Utils.IoT.Connector.Data { - public class Mqtt : ADataBackend, IDisposable { - private MqttClient client; - - public Mqtt(Dictionary settings) : base(settings) { - Int32 port = 1883; - if(this.settings.ContainsKey("port")) { - port = Int32.Parse(this.settings["port"]); - } - this.client = new MqttClient(this.settings["server"], port, false, null, null, MqttSslProtocols.None); - Connect(); - } - - private void Connect() { - this.client.MqttMsgPublishReceived += this.Client_MqttMsgPublishReceived; - if (this.settings.ContainsKey("user") && this.settings.ContainsKey("pass")) { - this.client.Connect(Guid.NewGuid().ToString(), this.settings["user"], this.settings["pass"]); - } else { - this.client.Connect(Guid.NewGuid().ToString()); - } - if (this.settings.ContainsKey("topic")) { - Int32 l = this.settings["topic"].Split(';').Length; - Byte[] qos = new Byte[l]; - for (Int32 i = 0; i < qos.Length; i++) { - qos[i] = MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE; - } - this.client.Subscribe(this.settings["topic"].Split(';'), qos); - } else { - this.client.Subscribe(new String[] { "#" }, new Byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE }); - } - } - - private void Client_MqttMsgPublishReceived(Object sender, MqttMsgPublishEventArgs e) { - this.NotifyClientIncomming(new DataEvent(Encoding.UTF8.GetString(e.Message), e.Topic, DateTime.Now)); - } - - public override void Send(String topic, String data) { - this.client.Publish(topic, Encoding.UTF8.GetBytes(data)); - this.NotifyClientSending(new DataEvent(data, topic, DateTime.Now)); - } - - #region IDisposable Support - private Boolean disposedValue = false; - - public override Boolean IsConnected { - get { - if(this.client != null) { - return this.client.IsConnected; - } else { - return false; - } - } - } - - protected virtual void Dispose(Boolean disposing) { - if(!this.disposedValue) { - if(disposing) {try { - this.client.MqttMsgPublishReceived -= this.Client_MqttMsgPublishReceived; - this.client.Unsubscribe(new String[] { "#" }); - this.client.Disconnect(); - } catch (Exception) { } - } - - this.client = null; - - this.disposedValue = true; - } - } - - public override void Dispose() { - Dispose(true); - GC.SuppressFinalize(this); - } - #endregion - } -} +using System; +using System.Collections.Generic; +using System.Text; +using BlubbFish.Utils.IoT.Events; +using uPLibrary.Networking.M2Mqtt; +using uPLibrary.Networking.M2Mqtt.Messages; + +namespace BlubbFish.Utils.IoT.Connector.Data { + public class Mqtt : ADataBackend, IDisposable { + private MqttClient client; + + public Mqtt(Dictionary settings) : base(settings) { + Int32 port = 1883; + if(this.settings.ContainsKey("port")) { + port = Int32.Parse(this.settings["port"]); + } + this.client = new MqttClient(this.settings["server"], port, false, null, null, MqttSslProtocols.None); + Connect(); + } + + private void Connect() { + this.client.MqttMsgPublishReceived += this.Client_MqttMsgPublishReceived; + if (this.settings.ContainsKey("user") && this.settings.ContainsKey("pass")) { + this.client.Connect(Guid.NewGuid().ToString(), this.settings["user"], this.settings["pass"]); + } else { + this.client.Connect(Guid.NewGuid().ToString()); + } + if (this.settings.ContainsKey("topic")) { + Int32 l = this.settings["topic"].Split(';').Length; + Byte[] qos = new Byte[l]; + for (Int32 i = 0; i < qos.Length; i++) { + qos[i] = MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE; + } + this.client.Subscribe(this.settings["topic"].Split(';'), qos); + } else { + this.client.Subscribe(new String[] { "#" }, new Byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE }); + } + } + + private void Client_MqttMsgPublishReceived(Object sender, MqttMsgPublishEventArgs e) { + this.NotifyClientIncomming(new DataEvent(Encoding.UTF8.GetString(e.Message), e.Topic, DateTime.Now)); + } + + public override void Send(String topic, String data) { + this.client.Publish(topic, Encoding.UTF8.GetBytes(data)); + this.NotifyClientSending(new DataEvent(data, topic, DateTime.Now)); + } + + #region IDisposable Support + private Boolean disposedValue = false; + + public override Boolean IsConnected { + get { + if(this.client != null) { + return this.client.IsConnected; + } else { + return false; + } + } + } + + protected virtual void Dispose(Boolean disposing) { + if(!this.disposedValue) { + if(disposing) {try { + this.client.MqttMsgPublishReceived -= this.Client_MqttMsgPublishReceived; + this.client.Unsubscribe(new String[] { "#" }); + this.client.Disconnect(); + } catch (Exception) { } + } + + this.client = null; + + this.disposedValue = true; + } + } + + public override void Dispose() { + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + } +} diff --git a/IoT/Connector/Data/Mqtt/Properties/AssemblyInfo.cs b/ConnectorDataMqtt/ConnectorDataMqtt/Properties/AssemblyInfo.cs similarity index 97% rename from IoT/Connector/Data/Mqtt/Properties/AssemblyInfo.cs rename to ConnectorDataMqtt/ConnectorDataMqtt/Properties/AssemblyInfo.cs index a43a5ad..d73f1be 100644 --- a/IoT/Connector/Data/Mqtt/Properties/AssemblyInfo.cs +++ b/ConnectorDataMqtt/ConnectorDataMqtt/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die einer Assembly zugeordnet sind. -[assembly: AssemblyTitle("ConnectorDataMqtt")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ConnectorDataMqtt")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly -// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von -// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("ee6c8f68-ed46-4c1c-abdd-cfcdf75104f2")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, -// indem Sie "*" wie unten gezeigt eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("ConnectorDataMqtt")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ConnectorDataMqtt")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("ee6c8f68-ed46-4c1c-abdd-cfcdf75104f2")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")]