Module: MQTT::HomeAssistant
- Defined in:
- lib/mqtt/home_assistant.rb,
lib/mqtt/home_assistant/client.rb,
lib/mqtt/home_assistant/version.rb
Defined Under Namespace
Modules: Client
Constant Summary collapse
- ABBREVIATIONS =
{ act_t: "action_topic", act_tpl: "action_template", act_stat_t: "activity_state_topic", act_val_tpl: "activity_value_template", atype: "automation_type", av_tones: "available_tones", avty: "availability", avty_mode: "availability_mode", avty_t: "availability_topic", avty_tpl: "availability_template", b_tpl: "blue_template", bri_cmd_tpl: "brightness_command_template", bri_cmd_t: "brightness_command_topic", bri_scl: "brightness_scale", bri_stat_t: "brightness_state_topic", bri_tpl: "brightness_template", bri_val_tpl: "brightness_value_template", clr_temp_cmd_tpl: "color_temp_command_template", clrm: "color_mode", clrm_stat_t: "color_mode_state_topic", clrm_val_tpl: "color_mode_value_template", clr_temp_cmd_t: "color_temp_command_topic", clr_temp_k: "color_temp_kelvin", clr_temp_stat_t: "color_temp_state_topic", clr_temp_tpl: "color_temp_template", clr_temp_val_tpl: "color_temp_value_template", cmd_off_tpl: "command_off_template", cmd_on_tpl: "command_on_template", cmd_t: "command_topic", cmd_tpl: "command_template", cmps: "components", cod_arm_req: "code_arm_required", cod_dis_req: "code_disarm_required", cod_form: "code_format", cod_trig_req: "code_trigger_required", cont_type: "content_type", curr_hum_t: "current_humidity_topic", curr_hum_tpl: "current_humidity_template", curr_temp_t: "current_temperature_topic", curr_temp_tpl: "current_temperature_template", def_ent_id: "default_entity_id", dev: "device", dev_cla: "device_class", dir_cmd_t: "direction_command_topic", dir_cmd_tpl: "direction_command_template", dir_stat_t: "direction_state_topic", dir_val_tpl: "direction_value_template", dsp_prc: "display_precision", dock_cmd_t: "dock_command_topic", dock_cmd_tpl: "dock_command_template", e: "encoding", en: "enabled_by_default", ent_cat: "entity_category", ent_pic: "entity_picture", evt_typ: "event_types", fanspd_lst: "fan_speed_list", flsh: "flash", flsh_tlng: "flash_time_long", flsh_tsht: "flash_time_short", fx_cmd_tpl: "effect_command_template", fx_cmd_t: "effect_command_topic", fx_list: "effect_list", fx_stat_t: "effect_state_topic", fx_tpl: "effect_template", fx_val_tpl: "effect_value_template", exp_aft: "expire_after", fan_mode_cmd_tpl: "fan_mode_command_template", fan_mode_cmd_t: "fan_mode_command_topic", fan_mode_stat_tpl: "fan_mode_state_template", fan_mode_stat_t: "fan_mode_state_topic", frc_upd: "force_update", g_tpl: "green_template", hs_cmd_t: "hs_command_topic", hs_cmd_tpl: "hs_command_template", hs_stat_t: "hs_state_topic", hs_val_tpl: "hs_value_template", ic: "icon", img_e: "image_encoding", img_t: "image_topic", init: "initial", hum_cmd_t: "target_humidity_command_topic", hum_cmd_tpl: "target_humidity_command_template", hum_stat_t: "target_humidity_state_topic", hum_state_tpl: "target_humidity_state_template", json_attr: "json_attributes", json_attr_t: "json_attributes_topic", json_attr_tpl: "json_attributes_template", lrst_val_tpl: "last_reset_value_template", max: "max", min: "min", max_hum: "max_humidity", min_hum: "min_humidity", max_mirs: "max_mireds", min_mirs: "min_mireds", max_k: "max_kelvin", min_k: "min_kelvin", max_temp: "max_temp", min_temp: "min_temp", migr_discvry: "migrate_discovery", mode: "mode", mode_cmd_tpl: "mode_command_template", mode_cmd_t: "mode_command_topic", mode_stat_t: "mode_state_topic", mode_stat_tpl: "mode_state_template", modes: "modes", name: "name", o: "origin", obj_id: "object_id", off_dly: "off_delay", on_cmd_type: "on_command_type", ops: "options", opt: "optimistic", osc_cmd_t: "oscillation_command_topic", osc_cmd_tpl: "oscillation_command_template", osc_stat_t: "oscillation_state_topic", osc_val_tpl: "oscillation_value_template", p: "platform", pause_cmd_t: "pause_command_topic", pause_mw_cmd_tpl: "pause_command_template", pct_cmd_t: "percentage_command_topic", pct_cmd_tpl: "percentage_command_template", pct_stat_t: "percentage_state_topic", pct_val_tpl: "percentage_value_template", pl: "payload", pl_arm_away: "payload_arm_away", pl_arm_home: "payload_arm_home", pl_arm_nite: "payload_arm_night", pl_arm_vacation: "payload_arm_vacation", pl_arm_custom_b: "payload_arm_custom_bypass", pl_avail: "payload_available", pl_cln_sp: "payload_clean_spot", pl_cls: "payload_close", pl_disarm: "payload_disarm", pl_home: "payload_home", pl_lock: "payload_lock", pl_loc: "payload_locate", pl_not_avail: "payload_not_available", pl_not_home: "payload_not_home", pl_off: "payload_off", pl_on: "payload_on", pl_open: "payload_open", pl_osc_off: "payload_oscillation_off", pl_osc_on: "payload_oscillation_on", pl_paus: "payload_pause", pl_prs: "payload_press", pl_rst: "payload_reset", pl_rst_hum: "payload_reset_humidity", pl_rst_mode: "payload_reset_mode", pl_rst_pct: "payload_reset_percentage", pl_rst_pr_mode: "payload_reset_preset_mode", pl_stop: "payload_stop", pl_stop_tilt: "payload_stop_tilt", pl_strt: "payload_start", pl_ret: "payload_return_to_base", pl_toff: "payload_turn_off", pl_ton: "payload_turn_on", pl_trig: "payload_trigger", pl_unlk: "payload_unlock", pos: "reports_position", pos_clsd: "position_closed", pos_open: "position_open", pow_cmd_t: "power_command_topic", pow_cmd_tpl: "power_command_template", pr_mode_cmd_t: "preset_mode_command_topic", pr_mode_cmd_tpl: "preset_mode_command_template", pr_mode_stat_t: "preset_mode_state_topic", pr_mode_val_tpl: "preset_mode_value_template", pr_modes: "preset_modes", ptrn: "pattern", r_tpl: "red_template", rel_s: "release_summary", rel_u: "release_url", ret: "retain", rgb_cmd_tpl: "rgb_command_template", rgb_cmd_t: "rgb_command_topic", rgb_stat_t: "rgb_state_topic", rgb_val_tpl: "rgb_value_template", rgbw_cmd_tpl: "rgbw_command_template", rgbw_cmd_t: "rgbw_command_topic", rgbw_stat_t: "rgbw_state_topic", rgbw_val_tpl: "rgbw_value_template", rgbww_cmd_tpl: "rgbww_command_template", rgbww_cmd_t: "rgbww_command_topic", rgbww_stat_t: "rgbww_state_topic", rgbww_val_tpl: "rgbww_value_template", send_cmd_t: "send_command_topic", send_if_off: "send_if_off", set_fan_spd_t: "set_fan_speed_topic", set_pos_tpl: "set_position_template", set_pos_t: "set_position_topic", pos_t: "position_topic", pos_tpl: "position_template", spd_rng_min: "speed_range_min", spd_rng_max: "speed_range_max", src_type: "source_type", stat_cla: "state_class", stat_clsd: "state_closed", stat_closing: "state_closing", stat_jam: "state_jammed", stat_off: "state_off", stat_on: "state_on", stat_open: "state_open", stat_opening: "state_opening", stat_stopped: "state_stopped", stat_locked: "state_locked", stat_locking: "state_locking", stat_unlocked: "state_unlocked", stat_unlocking: "state_unlocking", stat_t: "state_topic", stat_tpl: "state_template", stat_val_tpl: "state_value_template", step: "step", strt_mw_cmd_t: "start_mowing_command_topic", strt_mw_cmd_tpl: "start_mowing_command_template", stype: "subtype", sug_dsp_prc: "suggested_display_precision", sup_dur: "support_duration", sup_vol: "support_volume_set", sup_feat: "supported_features", sup_clrm: "supported_color_modes", swing_h_mode_cmd_tpl: "swing_horizontal_mode_command_template", swing_h_mode_cmd_t: "swing_horizontal_mode_command_topic", swing_h_mode_stat_tpl: "swing_horizontal_mode_state_template", swing_h_mode_stat_t: "swing_horizontal_mode_state_topic", swing_h_modes: "swing_horizontal_modes", swing_mode_cmd_tpl: "swing_mode_command_template", swing_mode_cmd_t: "swing_mode_command_topic", swing_mode_stat_tpl: "swing_mode_state_template", swing_mode_stat_t: "swing_mode_state_topic", swing_modes: "swing_modes", temp_cmd_tpl: "temperature_command_template", temp_cmd_t: "temperature_command_topic", temp_hi_cmd_tpl: "temperature_high_command_template", temp_hi_cmd_t: "temperature_high_command_topic", temp_hi_stat_tpl: "temperature_high_state_template", temp_hi_stat_t: "temperature_high_state_topic", temp_lo_cmd_tpl: "temperature_low_command_template", temp_lo_cmd_t: "temperature_low_command_topic", temp_lo_stat_tpl: "temperature_low_state_template", temp_lo_stat_t: "temperature_low_state_topic", temp_stat_tpl: "temperature_state_template", temp_stat_t: "temperature_state_topic", temp_unit: "temperature_unit", tilt_clsd_val: "tilt_closed_value", tilt_cmd_t: "tilt_command_topic", tilt_cmd_tpl: "tilt_command_template", tilt_max: "tilt_max", tilt_min: "tilt_min", tilt_opnd_val: "tilt_opened_value", tilt_opt: "tilt_optimistic", tilt_status_t: "tilt_status_topic", tilt_status_tpl: "tilt_status_template", tit: "title", t: "topic", trns: "transition", uniq_id: "unique_id", unit_of_meas: "unit_of_measurement", url_t: "url_topic", url_tpl: "url_template", val_tpl: "value_template", whit_cmd_t: "white_command_topic", whit_scl: "white_scale", xy_cmd_t: "xy_command_topic", xy_cmd_tpl: "xy_command_template", xy_stat_t: "xy_state_topic", xy_val_tpl: "xy_value_template", l_ver_t: "latest_version_topic", l_ver_tpl: "latest_version_template", pl_inst: "payload_install" }.invert.freeze
- DEVICE_ABBREVIATIONS =
{ cns: "connections", cu: "configuration_url", ids: "identifiers", name: "name", mf: "manufacturer", mdl: "model", mdl_id: "model_id", hw: "hw_version", sw: "sw_version", sa: "suggested_area", sn: "serial_number" }.invert.freeze
- ORIGIN_ABBREVIATIONS =
{ name: "name", sw: "sw_version", url: "support_url" }.invert.freeze
- SPECIAL_ATTRIBUTES =
{ common: i[ availability availability_mode availability_template availability_topic device enabled_by_default entity_category entity_picture icon json_attributes_template json_attributes_topic name object_id optimistic origin payload_available payload_not_available platform qos retain unique_id ].freeze, availability: i[ payload_available payload_not_available topic value_template ].freeze, device: i[ configuration_url connections hw_version identifiers manufacturer model model_id name serial_number suggested_area sw_version via_device ].freeze, origin: i[ name support_url sw_version ].freeze }.freeze
- KNOWN_ATTRIBUTES =
{ binary_sensor: i[ state_topic device_class expire_after force_update off_delay payload_off payload_on ].freeze, button: i[ command_template command_topic device_class payload_press ].freeze, climate: i[ action_template action_topic current_humidity_template current_humidity_topic current_temperature_template current_temperature_topic fan_mode_command_template fan_mode_command_topic fan_mode_state_template fan_mode_state_topic fan_modes humidity_range initial max_humidity max_temp min_humidity min_temp mode_command_template mode_command_topic mode_state_template mode_state_topic modes payload_off payload_on power_command_template power_command_topic power_state_template power_state_topic precision preset_mode_command_template preset_mode_command_topic preset_mode_state_topic preset_mode_value_template preset_modes swing_mode_command_template swing_mode_command_topic swing_mode_state_template swing_mode_state_topic swing_modes target_humidity_command_template target_humidity_command_topic target_humidity_state_template target_humidity_state_topic temp_range temp_step temperature_command_template temperature_command_topic temperature_high_command_template temperature_high_command_topic temperature_high_state_template temperature_high_state_topic temperature_low_command_template temperature_low_command_topic temperature_low_state_template temperature_low_state_topic temperature_state_template temperature_state_topic temperature_unit value_template ].freeze, cover: i[ command_topic device_class payload_close payload_open payload_stop position_closed position_open position_template position_topic set_position_template set_position_topic state_closed state_closing state_open state_opening state_stopped state_topic tilt_closed_value tilt_command_topic tilt_max tilt_min tilt_opened_value tilt_optimistic tilt_range tilt_status_template value_template ].freeze, device: i[ availability availability_mode availability_template availability_topic command_topic device encoding origin payload_available payload_not_available qos state_topic ].freeze, fan: i[ command_topic: command_template direction_command_template direction_command_topic direction_state_topic direction_value_template oscillation_command_template oscillation_command_topic oscillation_state_topic oscillation_value_template payload_off payload_on payload_oscillation_off payload_oscillation_on payload_reset_percentage payload_reset_preset_mode percentage_command_template percentage_command_topic percentage_state_topic percentage_value_template preset_mode_command_template preset_mode_command_topic preset_mode_state_topic preset_mode_value_template preset_modes speed_range state_topic state_value_template ].freeze, humidifier: i[ action_template action_topic current_humidity_template current_humidity_topic command_template command_topic device_class mode_command_template mode_command_topic mode_staet_template mode_state_topic modes payload_off payload_on payload_reset_humidity payload_reset_mode state_topic target_humidity_command_template target_humidity_command_topic target_humidity_state_topic target_humidity_state_template ].freeze, light: { default: i[ brightness_command_template brightness_command_topic brightness_scale brightness_state_topic brightness_value_template color_mode_state_topic color_mode_value_template color_temp_command_template color_temp_command_topic color_temp_state_topic color_temp_value_template command_topic effect_command_topic effect_command_template effect_list effect_state_topic effect_value_template hs_command_template hs_command_topic hs_state_topic hs_value_template max_mireds min_mireds mireds_range on_command_type payload_off payload_on rgb_command_template rgb_command_topic rgb_state_topic rgb_value_template rgbw_command_template rgbw_command_topic rgbw_state_topic rgbw_value_template rgbww_command_template rgbww_command_topic rgbww_state_topic rgbww_value_template state_topic white_command_topic white_scale xy_command_template xy_command_topic xy_state_topic xy_value_template ].freeze, json: i[ brightness brightness_scale command_topic effect effect_list flash_time_long flash_time_short max_mireds min_mireds mireds_range state_topic supported_color_modes white_scale ].freeze, template: i[ blue_template brightness_template color_temp_template command_off_template command_on_template command_topic effect_list effect_template green_template max_mireds min_mireds mireds_range red_template state_template state_topic ].freeze }.freeze, number: i[ command_template command_topic min max mode payload_reset range state_topic step unit_of_measurement value_template ].freeze, scene: i[ command_topic payload_on ].freeze, select: i[ command_template command_topic state_topic value_template ].freeze, sensor: i[ device_class expire_after force_update last_reset_value_template suggested_display_precision state_class state_topic unit_of_measurement value_template ].freeze, switch: i[ command_template command_topic device_class payload_off payload_on state_off state_on state_topic value_template ].freeze, text: i[ command_template command_topic min max range mode pattern state_topic value_template ].freeze, water_heater: i[ current_temperature_template current_temperature_topic initial max_temp min_temp mode_command_template mode_command_topic mode_state_template mode_state_topic modes payload_off payload_on power_command_template power_command_topic precision range temperature_command_template temperature_command_topic temperature_state_template temperature_state_topic temperature_unit value_template ] }.freeze
- RANGE_ATTRIBUTES =
{ climate: { humidity: :prefix, temp: :prefix }.freeze, cover: { tilt: :suffix }.freeze, fan: { speed: :suffix }.freeze, humidifier: { humidity: :prefix }.freeze, light: { mireds: :prefix }.freeze, number: { range: :singleton }.freeze, text: { range: :singleton }.freeze, water_heater: { range: :singleton }.freeze }.freeze
- REQUIRED_ATTRIBUTES =
Hash.new([].freeze).merge( { binary_sensor: i[state_topic].freeze, button: i[command_topic].freeze, device: i[components device origin].freeze, humidifier: i[command_topic target_humidity_command_topic].freeze, light: { default: i[command_topic].freeze, json: i[command_topic].freeze, template: i[command_off_template command_on_template command_topic] }.freeze, number: i[command_topic].freeze, select: i[command_topic ].freeze, sensor: i[state_topic].freeze, switch: i[command_topic].freeze, text: i[command_topic].freeze } ).freeze
- DISALLOWED_COMPONENT_ATTRIBUTES_WHEN_DEVICE =
%w[ availability device ].freeze
- DEFAULTS =
{ binary_sensor: { payload_off: "OFF", payload_on: "ON" }.freeze, button: { payload_press: "PRESS" }.freeze, climate: { fan_modes: %w[auto low medium high].freeze, modes: %w[auto off cool heat dry fan_only].freeze, swing_modes: %w[on off].freeze }.freeze, cover: { payload_close: "CLOSE", payload_open: "OPEN", payload_stop: "STOP", state_closed: "closed", state_closing: "closing", state_open: "open", state_opening: "opening", state_stopped: "stopped" }.freeze, fan: { payload_off: "off", payload_on: "on" }.freeze, humidifier: { device_class: "humidifier", payload_off: "OFF", payload_on: "ON", payload_reset_humidity: "None", payload_reset_mode: "None" }.freeze, light: { payload_off: "OFF", payload_on: "ON" }.freeze, number: { mode: "auto", payload_reset: "None" }.freeze, scene: { payload_on: "ON" }, switch: { payload_off: "OFF", payload_on: "ON" }.freeze, text: { mode: "text" }.freeze, water_heater: { modes: i[off eco electric gas heat_pump high_demand performance].freeze, payload_off: "OFF", payload_on: "ON" }.freeze }.freeze
- VALIDATIONS =
{ light: lambda do |supported_color_modes: nil, **| if supported_color_modes && supported_color_modes.length > 1 && (supported_color_modes.include?(:onoff) || supported_color_modes.include?(:brightness)) raise ArgumentError, "Multiple color modes are not supported for platform light if onoff or brightness are specified" end end }.freeze
- SUBSET_VALIDATIONS =
{ climate: { modes: DEFAULTS[:climate][:modes] }.freeze, light: { supported_color_modes: i[onoff brightness color_temp hs xy rgb rgbw rgbww white].freeze }.freeze, water_heater: { modes: DEFAULTS[:water_heater][:modes] } }.freeze
- INCLUSION_VALIDATIONS =
{ common: { entity_category: i[config diagnostic system].freeze }.freeze, binary_sensor: { device_class: i[ battery battery_charging carbon_monoxide cold connectivity door garage_door gas heat light lock moisture motion moving occupancy opening plug power presence problem running safety smoke sound tamper update vibration window ].to_set.freeze }.freeze, button: { device_class: i[ identify restart update ].freeze }.freeze, cover: { device_class: i[ awning blind curtain damper door garage gate shade shutter window ].freeze }.freeze, humidifier: { device_class: i[ humidifier dehumidifier ].freeze }.freeze, light: { on_command_type: i[last first brightness].freeze }.freeze, sensor: { device_class: i[ apparent_power aqi atmospheric_pressure battery carbon_dioxide carbon_monoxide current data_rate data_size date distance duration energy energy_storage enum frequency gas humidity illuminance irradiance moisture monetary nitrogen_dioxide nitrogen_monoxide nitrous_oxide ozone ph pm1 pm10 pm25 power_factor power precipitation precipitation_intensity pressure reactive_power signal_strength sound_pressure speed sulphur_dioxide temperature volatile_organic_compounds volatile_organic_compounds_parts voltage volume volume_storage water weight wind_speed ].to_set.freeze, state_class: i[measurement total total_increasing].freeze }.freeze, text: { mode: i[text password].freeze } }.freeze
- ENTITY_PLATFORMS =
i[alarm_control_panel binary_sensor camera climate cover device_tracker event fan humidifier image light lawn_mower lock notify number scene select sensor siren switch text update vacuum valve water_heater].freeze
- MIGRATE_DISCOVERY_JSON =
{ migrate_discovery: true }.to_json.freeze
- VERSION =
"1.2.1"