Old Imou bullet + new PTZ for a hallway light — bullet works, PTZ never fires

Two cameras on imou_life here: an old Dahua bullet in the garden (it’s been sitting in the Imou app for years — ancient model, but the live stream still works) and a PTZ I swapped in at the front door this year.

All I want is the boring version: either camera thinks there’s someone there → hallway light on for 90 seconds. README mentions imou_life_alarm, and event push is on in the integration.

Person detection is off on the old bullet in the app (too many trees, too many false positives). Developer tools shows a real push of videoMotion, I copied that into YAML, first trigger works.

Person detection is on for the door PTZ in the app, but I never see its events in Developer tools. The Open Platform alarm type table has human (person appeared) and videoMotion (picture change), so I put human on the PTZ — figured if the app has person detection on, the type name should line up. Second trigger’s trace is always empty, even though the phone app is firing person alerts for the PTZ.

automation looks roughly like this (SNs redacted):

triggers:
  - trigger: event
    event_type: imou_life_alarm
    event_data:
      device_id: 5L0123…CDEF
      channel_id: "0"
      msg_type: videoMotion          # old bullet, copied from a real Developer tools push
  - trigger: event
    event_type: imou_life_alarm
    event_data:
      device_id: 8A09AB…3456
      channel_id: "0"
      msg_type: human                # PTZ, from the Open Platform docs — never seen this in HA

Diagnostics recent_msg_type_counts only ever increments videoMotion — no PTZ-related keys at all. Anyone mixing old and new cameras in automations hit a gotcha like this?

Old bullets and new PTZs often aren’t on the same push path. Let’s check the config first.

If you can, look at Integration → Configure → Alarms, notifications & recordings — which Subscription types are checked right now? Is IoT device messages on? New PTZs usually need that one. Leave it off and you get exactly this: app alerts fire, HA counts don’t move, nothing shows up in Developer tools — doesn’t matter how correctly you spelled human from the docs.

Feel free to paste the event_push block from diagnostics as well (redact it). For the automation, I’d go off a real Developer tools event rather than guessing from the Open Platform type table.

Jumping in. I’ve only got one Imou PTZ, no old bullet. IoT device messages has been on for a while, and I do see events in Developer tools.

I just want the light on when the picture changes. Open Platform alarm table says videoMotion (picture change), so I set it up from the docs:

event_type: imou_life_alarm
event_data:
  device_id: ……
  msg_type: videoMotion

Trace is always empty. OP’s bullet lights up on videoMotion. Same string on my PTZ does nothing. Kind of lost. Do I still need to check something else?

Replying to the above. Subscription types — I’d only checked “Device alarms” and “Device online/offline”. “IoT device messages” was off. I figured if it was a camera, Device alarms would cover it. Diagnostics had:

"event_push_types": ["alarm", "device_status"]
"recent_msg_type_counts": { "videoMotion": 12 }

Just turned on IoT device messages, saved, waited a minute or two, now it’s:

"event_push_types": ["alarm", "device_status", "iot"]
"recent_msg_type_counts": { "videoMotion": 18, "e_multiVideoAiPerArea": 3 }

PTZ finally shows up as imou_life_alarm in Developer tools. Automation still doesn’t turn the light on — second trigger is still human from the docs, doesn’t match the event.

Real push in Developer tools (trimmed):

  "device_id": "8A09AB…3456",
  "channel_id": 0,
  "msg_type": "e_multiVideoAiPerArea",
  "product_id": "mhpf7Dsz",
  "device_name": "Front door PTZ"

Open Platform alarm table says human. HA says e_multiVideoAiPerArea. Completely different strings. Changing it to the real-push value is what actually made the light reliable.

Pretty deflating, honestly. Old bullet videoMotion just worked. PTZ I followed the docs and wrote human — then I needed an extra subscription, and the type name still doesn’t match the docs. App calls both “person appeared”. Old bullet comes into HA as videoMotion. PTZ comes in as e_multiVideoAiPerArea.

Do new PTZs all need you to scrape the string out of Developer tools? Can’t share the Open Platform type table across devices?

This is exactly the gotcha a lot of people hit mixing an old bullet with a new PTZ. Sorry the docs didn’t spell it out more clearly.

Checklist:

  1. Integration subscriptions: “Device alarms” covers the old-bullet type; new PTZs also need “IoT device messages”. I’d leave all three on (Device alarms, Device online/offline, IoT device messages).
  2. Automation: device_id + channel_id + the actual Developer tools msg_type all have to match. Open Platform table human / videoMotion often lines up on older cameras. New PTZ person detection is commonly e_multiVideoAiPerArea — don’t guess from the docs alone.
  3. Diagnostics counts: if both videoMotion and e_multiVideoAiPerArea are climbing, both paths are live.

Don’t copy the Open Platform type table onto every camera as-is. If the phone is too noisy, mute a single camera with “Notify on alarm” on the device page — don’t strip a subscription and starve the other camera.

Jumping in. I’ve only got one Imou PTZ, no old bullet. IoT device messages has been on for a while, and I do see events in Developer tools.

I just want the light on when the picture changes. Open Platform alarm table says videoMotion (picture change), so I set it up from the docs:

event_type: imou_life_alarm
event_data:
  device_id: ……
  msg_type: videoMotion

Trace is always empty. OP’s bullet lights up on videoMotion. Same string on my PTZ does nothing. Kind of lost. Do I still need to check something else?

If IoT is already checked, it’s usually not another missing checkbox.

“Picture change” on your PTZ is probably not the docs’ videoMotion in HA — it’s e_videoMotion (with the e_ prefix). Not the same string as the OP’s bullet videoMotion. App and docs both say picture change; HA gets two different families.

Change it to the msg_type from a real Developer tools event, or look for e_videoMotion in diagnostics recent_msg_type_counts. Same idea as the OP’s person-detection case with e_multiVideoAiPerArea.

Both cameras finally fire together. Writing it down so I don’t forget.

Final config:
· Subscription types: Device alarms + Device online/offline + IoT device messages (keep all three; drop one and the PTZ goes mute)
· Diagnostics counts: videoMotion 47, e_multiVideoAiPerArea 23

Final automation (SNs redacted):

triggers:
  - trigger: event
    event_type: imou_life_alarm
    event_data:
      device_id: 5L0123…CDEF
      channel_id: "0"
      msg_type: videoMotion
  - trigger: event
    event_type: imou_life_alarm
    event_data:
      device_id: 8A09AB…3456
      channel_id: 0
      msg_type: e_multiVideoAiPerArea
actions:
  - action: light.turn_on
    target:
      entity_id: light.hallway
  - delay: "00:01:30"
  - action: light.turn_off
    target:
      entity_id: light.hallway

Traces pass, but the post above makes it even weirder — person detection is human vs e_multiVideoAiPerArea, picture change is videoMotion vs e_videoMotion. Same Open Platform table, old bullet and new PTZ each honor their own strings. README tells you to listen for imou_life_alarm. I didn’t realize subscriptions and msg_type were two separate layers, and I definitely didn’t realize you can’t just paste the docs type names. Maybe that’s on me — either way this was more of a slog than pairing a Xiaomi switch.

I used Ezviz in a rental before. Two cameras, pick a motion sensor on each, done. I get that Imou events are more granular, but for “someone’s there / something moved, turn on a light,” is stacking msg_type triggers the only way? Or did I miss a way to combine them?

Just trying to check: is this the deal for now, or is there a path later to a per-camera motion.