prefixkit Ask an engineerAsk Support RU

Zigbee devices Motion and presence sensors

Heiman HS9MS-E

Smart motion sensor. Works with Zigbee2MQTT with no vendor hub or cloud: it pairs with a Zigbee stick and shows up in Home Assistant.

Vendor
Heiman
Model
HS9MS-E
Type
Motion and presence sensors
Power
battery: an end device, does not extend the mesh
Firmware updates (OTA)
no

Find it in shops: AliExpress

Links open a search in the shop; some are affiliate links: buying through them costs you nothing extra and supports this site. We do not sell devices or get them from manufacturers.

What it exposes

FeaturePropertyValuesControl
Motionoccupancy—read only
Tampertamper—read only
Low batterybattery_low—read only
Batterybattery% · 0…100read only
Camera test triggercamera_test_triggertestsettable
Camera active triggercamera_active_triggeractivesettable
Ambient lightambient_lightLxread only
Wifi ssidwifi_ssid—settable
Wifi passwordwifi_password—settable
Wifi ssid candidatewifi_ssid_candidate—settable
Wifi password candidatewifi_password_candidate—settable
Server urlserver_url—settable
Server url candidateserver_url_candidate—settable
Picture quantitypicture_quantity1…20settable
Picture qualitypicture_quality0…100settable
Mcu software versionmcu_software_version0…255read only
Illuminance thresholdilluminance_thresholdLx · 0…1000settable
Sensor armedsensor_armed—settable
Pir sensitivity levelpir_sensitivity_leveldisabled, low, medium, highsettable
Wifi statuswifi_statusunconfigurated, unconnected, connected, connection_timeoutread only
Wifi candidate statuswifi_candidate_statusunconfigurated, unconnected, connected, connection_timeoutread only
Server statusserver_statusunconfigurated, unconnected, connected, api_timeoutread only
Server candidate statusserver_candidate_statusunconfigurated, unconnected, connected, api_timeoutread only
Camera readycamera_readyunavailable, low_power, normal, advancedread only
Wifi rssiwifi_rssi-127…127settable

MQTT: state and commands

Zigbee2MQTT publishes the device state to zigbee2mqtt/my_device (my_device is the name you give the device). An example message:

{
  "occupancy": false,
  "tamper": false,
  "battery_low": false,
  "battery": 87,
  "camera_test_trigger": "test",
  "camera_active_trigger": "active",
  "ambient_light": 0,
  "picture_quantity": 11,
  "picture_quality": 50,
  "mcu_software_version": 128,
  "illuminance_threshold": 500,
  "sensor_armed": false,
  "pir_sensitivity_level": "disabled",
  "wifi_status": "unconfigurated",
  "linkquality": 120
}

Send commands to zigbee2mqtt/my_device/set:

mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"sensor_armed":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"pir_sensitivity_level":"low"}'

Watch the topics live from the browser: MQTT client.

Home Assistant automation example

Zigbee2MQTT creates Home Assistant entities from the device name. If it is called my_device, an automation in automations.yaml can look like this:

- alias: "Light on motion"
  mode: single
  triggers:
    - trigger: state
      entity_id: binary_sensor.my_device_occupancy
      to: "on"
  conditions:
    - condition: sun
      after: sunset
  actions:
    - action: light.turn_on
      target:
        entity_id: light.hallway

Check the YAML: YAML checker.

How to pair it

  1. In Zigbee2MQTT click Permit join.
  2. Put the device in pairing mode: usually a long press of the reset button (5–10 s) until the LED blinks; bulbs: switch the power off and on 5–6 times.
  3. Keep the device close to the coordinator or a router while pairing.
  4. Give it a clear name: MQTT topics and Home Assistant entities are built from it.

Exact procedure and model notes: the device page in the Zigbee2MQTT docs. No coordinator yet: coordinator picker.

Similar devices

Idea?