public string subscribe(string uid, string topic_filter, Action <PythonDictionary> callback)
        {
            if (topic_filter == null)
            {
                throw new ArgumentNullException(nameof(topic_filter));
            }
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }

            return(_mqttService.Subscribe(uid, topic_filter, message =>
            {
                var pythonMessage = new PythonDictionary
                {
                    ["client_id"] = message.ClientId,
                    ["topic"] = message.ApplicationMessage.Topic,
                    ["payload"] = message.ApplicationMessage.Payload,
                    ["qos"] = (int)message.ApplicationMessage.QualityOfServiceLevel,
                    ["retain"] = message.ApplicationMessage.Retain
                };

                callback(pythonMessage);
            }));
        }