models.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import logging
  2. logging.basicConfig()
  3. logger = logging.getLogger("kalliope")
  4. class Topic(object):
  5. def __init__(self, name=None, synapses=None, is_json=None):
  6. self.name = name
  7. self.synapses = synapses
  8. self.is_json = is_json
  9. def __eq__(self, other):
  10. """
  11. This is used to compare 2 objects
  12. :param other:
  13. :return:
  14. """
  15. return self.__dict__ == other.__dict__
  16. class Broker(object):
  17. def __init__(self, broker_ip=None, topics=None, port=None, client_id=None, keepalive=None,
  18. username=None, password=None, protocol=None, ca_cert=None, certfile=None, keyfile=None,
  19. tls_insecure=None):
  20. self.broker_ip = broker_ip
  21. self.topics = topics
  22. if self.topics is None:
  23. self.topics = list()
  24. # optional value
  25. self.port = port
  26. self.client_id = client_id
  27. self.keepalive = keepalive
  28. self.username = username
  29. self.password = password
  30. self.protocol = protocol
  31. self.ca_cert = ca_cert
  32. self.certfile = certfile
  33. self.keyfile = keyfile
  34. self.tls_insecure = tls_insecure
  35. def build_from_signal_dict(self, dict_parameters):
  36. """
  37. Build the Broker object from a received dict of parameters
  38. :param dict_parameters: dict of parameters used to build the Broker object
  39. """
  40. logger.debug("[Broker] Build broker object from received parameters: %s" % dict_parameters)
  41. self.broker_ip = dict_parameters["broker_ip"]
  42. if "broker_port" in dict_parameters:
  43. self.port = dict_parameters["broker_port"]
  44. # keep alive must be an integer
  45. if not isinstance(self.keepalive, int):
  46. try:
  47. self.port = int(self.port)
  48. except ValueError:
  49. logger.debug("[Broker] Invalid port value, fallback to 1883")
  50. self.port = 1883
  51. else:
  52. # set default port
  53. self.port = 1883
  54. if "client_id" in dict_parameters:
  55. self.client_id = dict_parameters["client_id"]
  56. else:
  57. self.client_id = "kalliope"
  58. if "username" in dict_parameters:
  59. self.username = dict_parameters["username"]
  60. if "password" in dict_parameters:
  61. self.password = dict_parameters["password"]
  62. if "keepalive" in dict_parameters:
  63. self.keepalive = dict_parameters["keepalive"]
  64. # keep alive must be an integer
  65. if not isinstance(self.keepalive, int):
  66. try:
  67. self.keepalive = int(self.keepalive)
  68. except ValueError:
  69. logger.debug("[Broker] Invalid keepalive value, fallback to 60")
  70. self.keepalive = 60
  71. else:
  72. # set default value
  73. self.keepalive = 60
  74. if "protocol" in dict_parameters:
  75. if dict_parameters["protocol"] not in ["MQTTv31", "MQTTv311"]:
  76. logger.debug("[Broker] Invalid protocol value, fallback to MQTTv311")
  77. self.protocol = "MQTTv311"
  78. else:
  79. self.protocol = dict_parameters["protocol"]
  80. else:
  81. self.protocol = "MQTTv311"
  82. if "ca_cert" in dict_parameters:
  83. self.ca_cert = dict_parameters["ca_cert"]
  84. if "certfile" in dict_parameters:
  85. self.certfile = dict_parameters["certfile"]
  86. if "keyfile" in dict_parameters:
  87. self.keyfile = dict_parameters["keyfile"]
  88. if "tls_insecure" in dict_parameters:
  89. self.tls_insecure = dict_parameters["tls_insecure"]
  90. self.tls_insecure = bool(self.tls_insecure)
  91. else:
  92. self.tls_insecure = False
  93. def __eq__(self, other):
  94. """
  95. This is used to compare 2 objects
  96. :param other:
  97. :return:
  98. """
  99. return self.__dict__ == other.__dict__