static CoapRequest CreateRequest(PythonDictionary parameters) { var method = Convert.ToString(parameters.get("method", "get")); var path = Convert.ToString(parameters.get("path", string.Empty)); var payload = parameters.get("payload", Array.Empty <byte>()); return(new CoapRequestBuilder() .WithMethod((CoapRequestMethod)Enum.Parse(typeof(CoapRequestMethod), method, true)) .WithPath(path) .WithPayload(PythonConvert.ToPayload(payload)) .Build()); }
public void publish(PythonDictionary parameters) { if (parameters is null) { throw new ArgumentNullException(nameof(parameters)); } var topic = Convert.ToString(parameters.get("topic")); var payload = parameters.get("payload", Array.Empty <byte>()); var qos = Convert.ToInt32(parameters.get("qos", 0)); var retain = Convert.ToBoolean(parameters.get("retain", false)); _mqttService.Publish(new MqttPublishParameters { Topic = topic, Payload = PythonConvert.ToPayload(payload), QualityOfServiceLevel = (MqttQualityOfServiceLevel)qos, Retain = retain }); }
public static PythonDictionary publish_external(PythonDictionary parameters) { if (parameters is null) { throw new ArgumentNullException(nameof(parameters)); } var server = Convert.ToString(parameters.get("server")); var port = Convert.ToInt32(parameters.get("port", 1883)); var username = Convert.ToString(parameters.get("username")); var password = Convert.ToString(parameters.get("password")); var clientId = Convert.ToString(parameters.get("client_id", Guid.NewGuid().ToString("N"))); var topic = Convert.ToString(parameters.get("topic")); var qos = Convert.ToInt32(parameters.get("qos", 0)); var retain = Convert.ToBoolean(parameters.get("retain", false)); var tls = Convert.ToBoolean(parameters.get("tls", false)); var timeout = Convert.ToInt32(parameters.get("timeout", 5000)); var payload = parameters.get("payload", null); var mqttClient = new MqttFactory().CreateMqttClient(); try { var options = new MqttClientOptionsBuilder().WithTcpServer(server, port).WithCredentials(username, password).WithClientId(clientId) .WithTimeout(TimeSpan.FromMilliseconds(timeout)).WithTls(new MqttClientOptionsBuilderTlsParameters { UseTls = tls }).Build(); mqttClient.ConnectAsync(options).GetAwaiter().GetResult(); var message = new MqttApplicationMessageBuilder().WithTopic(topic).WithPayload(PythonConvert.ToPayload(payload)) .WithQualityOfServiceLevel((MqttQualityOfServiceLevel)qos).WithRetainFlag(retain).Build(); mqttClient.PublishAsync(message).GetAwaiter().GetResult(); return(new PythonDictionary { ["type"] = "success" }); } catch (MqttConnectingFailedException) { return(new PythonDictionary { ["type"] = "exception.connecting_failed" }); } catch (Exception exception) { return(PythonConvert.ToPythonDictionary(new ExceptionPythonModel(exception).ToDictionary())); } finally { mqttClient?.DisconnectAsync().GetAwaiter().GetResult(); mqttClient?.Dispose(); } }