Halo Smart Labs HALO
| Model | HALO |
| Vendor | Halo Smart Labs |
| Description | Halo smart smoke & CO detector |
| Exposes | smoke, carbon_monoxide, tamper, battery_low, test, mains_power_connected, halo_alert_state, room, halo_test_result, test_in_progress, halo_hush_state, hush_active, hush, test_cycle, co_ppm, light (state, brightness, color_hs), battery, voltage, temperature, humidity, pressure |
| Picture | ![]() |
Options
How to use device type specific configuration
temperature_calibration: Calibrates the temperature value (absolute offset), takes into effect on next report of device. The value must be a number.temperature_precision: Number of digits after decimal point for temperature, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3humidity_calibration: Calibrates the humidity value (absolute offset), takes into effect on next report of device. The value must be a number.humidity_precision: Number of digits after decimal point for humidity, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3pressure_calibration: Calibrates the pressure value (absolute offset), takes into effect on next report of device. The value must be a number.pressure_precision: Number of digits after decimal point for pressure, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of0and with a maximum value of3transition: Controls the transition time (in seconds) of on/off, brightness, color temperature (if applicable) and color (if applicable) changes. Defaults to0(no transition). The value must be a number with a minimum value of0color_sync: When enabled colors will be synced, e.g. if the light supports both color x/y and color temperature a conversion from color x/y to color temperature will be done when setting the x/y color (default true). The value must betrueorfalsestate_action: State actions will also be published as 'action' when true (default false). The value must betrueorfalse
Exposes
Smoke (binary)
Indicates whether the device detected smoke. Value can be found in the published state on the smoke property. It's not possible to read (/get) or write (/set) this value. If value equals true smoke is ON, if false OFF.
Carbon monoxide (binary)
Indicates if CO (carbon monoxide) is detected. Value can be found in the published state on the carbon_monoxide property. It's not possible to read (/get) or write (/set) this value. If value equals true carbon monoxide is ON, if false OFF.
Tamper (binary)
Indicates whether the device is tampered. Value can be found in the published state on the tamper property. It's not possible to read (/get) or write (/set) this value. If value equals true tamper is ON, if false OFF.
Battery low (binary)
Indicates if the battery of this device is almost empty. Value can be found in the published state on the battery_low property. It's not possible to read (/get) or write (/set) this value. If value equals true battery low is ON, if false OFF.
Test (binary)
Indicates whether the device is being tested. Value can be found in the published state on the test property. It's not possible to read (/get) or write (/set) this value. If value equals true test is ON, if false OFF.
Mains power connected (binary)
Indicates whether mains power is currently available. Value can be found in the published state on the mains_power_connected property. It's not possible to read (/get) or write (/set) this value. If value equals true mains power connected is ON, if false OFF.
Halo alert state (enum)
Device state reported by the manufacturer cluster. Value can be found in the published state on the halo_alert_state property. It's not possible to read (/get) or write (/set) this value. The possible values are: safe, pre_smoke, smoke, carbon_monoxide, weather, interconnect_smoke, interconnect_carbon_monoxide, silenced, low_battery, very_low_battery, failed_battery, end_of_life, other, co_test, smoke_test.
Room (enum)
Spoken room name used in Halo announcements. Value can be found in the published state on the room property. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"room": NEW_VALUE}. The possible values are: none, basement, bedroom, den, dining_room, downstairs, entryway, family_room, game_room, guest_bedroom, hallway, kids_bedroom, living_room, master_bedroom, office, study, upstairs, workout_room.
Halo test result (enum)
Result of the most recent self-test. Value can be found in the published state on the halo_test_result property. It's not possible to read (/get) or write (/set) this value. The possible values are: idle, running, success, fail_ion, fail_photo, fail_co, fail_temperature, fail_weather, fail_other.
Test in progress (binary)
Indicates whether a test is running. Value can be found in the published state on the test_in_progress property. It's not possible to read (/get) or write (/set) this value. If value equals true test in progress is ON, if false OFF.
Halo hush state (enum)
Current hush status. Value can be found in the published state on the halo_hush_state property. It's not possible to read (/get) or write (/set) this value. The possible values are: ready, success, timeout, disabled.
Hush active (binary)
Indicates whether the alarm is hushed. Value can be found in the published state on the hush_active property. It's not possible to read (/get) or write (/set) this value. If value equals true hush active is ON, if false OFF.
Hush (enum)
Start or cancel hush mode. Value will not be published in the state. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"hush": NEW_VALUE}. The possible values are: start, stop.
Test cycle (enum)
Start or cancel the built-in test. Value will not be published in the state. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"test_cycle": NEW_VALUE}. The possible values are: start, cancel.
Co ppm (numeric)
Current CO concentration reported by the detector. Value can be found in the published state on the co_ppm property. It's not possible to read (/get) or write (/set) this value. The unit of this value is ppm.
Light (light endpoint)
This light supports the following features: state, brightness, color_hs.
state: To control the state publish a message to topiczigbee2mqtt/FRIENDLY_NAME/setwith payload{"state_light": "ON"},{"state_light": "OFF"}or{"state_light": "TOGGLE"}. To read the state send a message tozigbee2mqtt/FRIENDLY_NAME/getwith payload{"state_light": ""}.brightness: To control the brightness publish a message to topiczigbee2mqtt/FRIENDLY_NAME/setwith payload{"brightness_light": VALUE}whereVALUEis a number between0and254. To read the brightness send a message tozigbee2mqtt/FRIENDLY_NAME/getwith payload{"brightness_light": ""}.color_hs: To control the hue/saturation (color) publish a message to topiczigbee2mqtt/FRIENDLY_NAME/setwith payload{"color_light": {"hue": HUE, "saturation": SATURATION}}(e.g.{"color":{"hue":360,"saturation":100}}). To read the hue/saturation send a message tozigbee2mqtt/FRIENDLY_NAME/getwith payload{"color_light":{"hue":"","saturation":""}}. Alternatively it is possible to set the hue/saturation via:- HSB space (hue, saturation, brightness):
{"color": {"h": H, "s": S, "b": B}}e.g.{"color":{"h":360,"s":100,"b":100}}or{"color": {"hsb": "H,S,B"}}e.g.{"color":{"hsb":"360,100,100"}} - HSV space (hue, saturation, value):
{"color": {"h": H, "s": S, "v": V}}e.g.{"color":{"h":360,"s":100,"v":100}}or{"color": {"hsv": "H,S,V"}}e.g.{"color":{"hsv":"360,100,100"}} - HSL space (hue, saturation, lightness)
{"color": {"h": H, "s": S, "l": L}}e.g.{"color":{"h":360,"s":100,"l":100}}or{"color": {"hsl": "H,S,L"}}e.g.{"color":{"hsl":"360,100,100"}}
- HSB space (hue, saturation, brightness):
On with timed off
When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the light will not answer to other on with timed off commands. Support depends on the light firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.
Transition
For all of the above mentioned features it is possible to do a transition of the value over time. To do this add an additional property transition to the payload which is the transition time in seconds. Examples: {"brightness":156,"transition":3}, {"color_temp":241,"transition":1}.
Moving/stepping
Instead of setting a value (e.g. brightness) directly it is also possible to:
- move: this will automatically move the value over time, to stop send value
stopor0. - step: this will increment/decrement the current value by the given one.
The direction of move and step can be either up or down, provide a negative value to move/step down, a positive value to move/step up. To do this send a payload like below to zigbee2mqtt/FRIENDLY_NAME/set
NOTE: brightness move/step will stop at the minimum brightness and won't turn on the light when it's off. In this case use brightness_move_onoff/brightness_step_onoff
{
"brightness_move": -40, // Starts moving brightness down at 40 units per second
"brightness_move": 0, // Stop moving brightness
"brightness_step": 40 // Increases brightness by 40
"hue_move": 40, // Starts moving hue up at 40 units per second, will endlessly loop (allowed value range: -255 till 255)
"hue_step": -90, // Decrease hue by 90 (allowed value range: -255 till 255)
"saturation_move": -55, // Starts moving saturation down at -55 units per second (allowed value range: -255 till 255)
"saturation_step": 66, // Increase saturation by 66 (allowed value range: -255 till 255)
}
Battery (numeric)
Remaining battery in %. Value can be found in the published state on the battery property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"battery": ""}. It's not possible to write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.
Voltage (numeric)
Reported battery voltage in millivolts. Value can be found in the published state on the voltage property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"voltage": ""}. It's not possible to write (/set) this value. The unit of this value is mV.
Temperature (numeric)
Measured temperature value. Value can be found in the published state on the temperature property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temperature": ""}. It's not possible to write (/set) this value. The unit of this value is °C.
Humidity (numeric)
Measured relative humidity. Value can be found in the published state on the humidity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"humidity": ""}. It's not possible to write (/set) this value. The unit of this value is %.
Pressure (numeric)
The measured atmospheric pressure. Value can be found in the published state on the pressure property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"pressure": ""}. It's not possible to write (/set) this value. The unit of this value is kPa.

