123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- import logging
- logging.basicConfig()
- logger = logging.getLogger("kalliope")
- class Topic(object):
- def __init__(self, name=None, synapses=None, is_json=False):
- self.name = name
- self.synapses = synapses
- self.is_json = is_json
- def serialize(self):
- """
- This method allows to serialize in a proper way this object
- :return: A dict of name and parameters
- :rtype: Dict
- """
- return {
- 'name': self.name,
- 'is_json': self.is_json,
- 'synapses': [e.serialize() for e in self.synapses],
- }
- def __str__(self):
- return str(self.serialize())
- def __eq__(self, other):
- """
- This is used to compare 2 objects
- :param other:
- :return:
- """
- return self.__dict__ == other.__dict__
- class Broker(object):
- def __init__(self, broker_ip=None, topics=None, port=1883, client_id="kalliope", keepalive=60,
- username=None, password=None, protocol="MQTTv311", ca_cert=None, certfile=None, keyfile=None,
- tls_insecure=False):
- self.broker_ip = broker_ip
- self.topics = topics
- if self.topics is None:
- self.topics = list()
- # optional value
- self.port = port
- self.client_id = client_id
- self.keepalive = keepalive
- self.username = username
- self.password = password
- self.protocol = protocol
- self.ca_cert = ca_cert
- self.certfile = certfile
- self.keyfile = keyfile
- self.tls_insecure = tls_insecure
- def serialize(self):
- """
- This method allows to serialize in a proper way this object
- :return: A dict of name and parameters
- :rtype: Dict
- """
- return {
- 'broker_ip': self.broker_ip,
- 'port': self.port,
- 'client_id': self.client_id,
- 'keepalive': self.keepalive,
- 'username': self.username,
- 'password': self.password,
- 'protocol': self.protocol,
- 'ca_cert': self.ca_cert,
- 'certfile': self.certfile,
- 'keyfile': self.keyfile,
- 'tls_insecure': self.tls_insecure,
- 'topics': [e.serialize() for e in self.topics],
- }
- def __str__(self):
- return str(self.serialize())
- def build_from_signal_dict(self, dict_parameters):
- """
- Build the Broker object from a received dict of parameters
- :param dict_parameters: dict of parameters used to build the Broker object
- """
- logger.debug("[Broker] Build broker object from received parameters: %s" % dict_parameters)
- self.broker_ip = dict_parameters["broker_ip"]
- if "broker_port" in dict_parameters:
- self.port = dict_parameters["broker_port"]
- # keep alive must be an integer
- if not isinstance(self.keepalive, int):
- try:
- self.port = int(self.port)
- except ValueError:
- logger.debug("[Broker] Invalid port value, fallback to 1883")
- self.port = 1883
- else:
- # set default port
- self.port = 1883
- if "client_id" in dict_parameters:
- self.client_id = dict_parameters["client_id"]
- else:
- self.client_id = "kalliope"
- if "username" in dict_parameters:
- self.username = dict_parameters["username"]
- if "password" in dict_parameters:
- self.password = dict_parameters["password"]
- if "keepalive" in dict_parameters:
- self.keepalive = dict_parameters["keepalive"]
- # keep alive must be an integer
- if not isinstance(self.keepalive, int):
- try:
- self.keepalive = int(self.keepalive)
- except ValueError:
- logger.debug("[Broker] Invalid keepalive value, fallback to 60")
- self.keepalive = 60
- else:
- # set default value
- self.keepalive = 60
- if "protocol" in dict_parameters:
- if dict_parameters["protocol"] not in ["MQTTv31", "MQTTv311"]:
- logger.debug("[Broker] Invalid protocol value, fallback to MQTTv311")
- self.protocol = "MQTTv311"
- else:
- self.protocol = dict_parameters["protocol"]
- else:
- self.protocol = "MQTTv311"
- if "ca_cert" in dict_parameters:
- self.ca_cert = dict_parameters["ca_cert"]
- if "certfile" in dict_parameters:
- self.certfile = dict_parameters["certfile"]
- if "keyfile" in dict_parameters:
- self.keyfile = dict_parameters["keyfile"]
- if "tls_insecure" in dict_parameters:
- self.tls_insecure = dict_parameters["tls_insecure"]
- self.tls_insecure = bool(self.tls_insecure)
- else:
- self.tls_insecure = False
- def __eq__(self, other):
- """
- This is used to compare 2 objects
- :param other:
- :return:
- """
- return self.__dict__ == other.__dict__
|