mqtt_helpers.rb 994 B

12345678910111213141516171819202122232425262728293031323334
  1. require 'mqtt_client'
  2. module MqttHelpers
  3. def mqtt_topic_prefix
  4. ENV.fetch('ESPMH_MQTT_TOPIC_PREFIX')
  5. end
  6. def mqtt_parameters(overrides = {})
  7. topic_prefix = mqtt_topic_prefix()
  8. {
  9. mqtt_server: ENV.fetch('ESPMH_MQTT_SERVER'),
  10. mqtt_username: ENV.fetch('ESPMH_MQTT_USERNAME'),
  11. mqtt_password: ENV.fetch('ESPMH_MQTT_PASSWORD'),
  12. mqtt_topic_pattern: "#{topic_prefix}commands/:device_id/:device_type/:group_id",
  13. mqtt_state_topic_pattern: "#{topic_prefix}state/:device_id/:device_type/:group_id",
  14. mqtt_update_topic_pattern: "#{topic_prefix}updates/:device_id/:device_type/:group_id"
  15. }.merge(overrides)
  16. end
  17. def create_mqtt_client(overrides = {})
  18. params =
  19. mqtt_parameters
  20. .merge({topic_prefix: mqtt_topic_prefix()})
  21. .merge(overrides)
  22. MqttClient.new(
  23. ENV['ESPMH_LOCAL_MQTT_SERVER'] || params[:mqtt_server],
  24. params[:mqtt_username],
  25. params[:mqtt_password],
  26. params[:topic_prefix]
  27. )
  28. end
  29. end