Xiaomi Zero Intelligent Video Doorbell

I would like to see integration of this doorbell into home assistant.


Features:
Face identification: Yes
Battery type: ALR61.5V (No. 5 alkaline dry battery)
Wireless connection: Wi-F, 433 MHZ RF
Resolution: 1280×720p
Lens angle: 105°
Aperture: F2.0
Night Vision Light: 4 850nm Infrared Lights

Specification:
Product Name: Xiaomi Zero Intelligent Video Doorbell
Product model: FJO2MLWJ
Working temperature: 0~45°C
Support system: Android4.4 or OS9.0 and above
Executive standard: GB/T 31070
Power supply mode: 100240V, 50-60Hz
Wireless connection: 433 MHZ RE

You’ll need to tell us more about the underlying technology and hopefully point to a documented API.

My doorbell has not yet arrived

I’m also very interested in this feature.

I’m also would like to see it working with home assistant!

I received mine today and there is almost no change to integrate this on hassio, using the same method for other Xiaomi products that use tokens.

Even the RF 433 MHz code that it sends to the indoor chime uses a rolling code that is pretty much useless to trigger an event via MQTT by the Sonoff Bridge RF.

If anyone would be interested on integrating roughly this doorbell into HA, use this MQTT sensor with a Sonoff Bridge RF (with Tasmota):

# Xiaomi doorbell
  - platform: mqtt
    name: "Xiaomi Zero"
    state_topic: "tele/RF_Bridge/RESULT"
    payload_on: "41"
    payload_off: "41_off"
    value_template: '{{ value_json.RfReceived.Data[:2] }}'
    device_class: light
    qos: 1
1 Like

Are you able to see the image?

Sorry, but I can’t open the device to get direct access to the chipset. As we all could see on the FCC pictures, probably, the only method to get there is destructive: https://fccid.io/2AJ2LFJ02MLWJ/Internal-Photos/Internal-photos-4102961

So did you manage to add it to home assistant using the token? I’m also considering buying it

Sorry, but there’s no known way for integrating this on HA other than using a Sonoff RF gateway with Tasmota and MQTT, via 433 MHz to the indoor chime.

I already searched for a token within the android app (older versions) and there’s none.

Unless someone comes with an innovative and reverse engineering solution, I see only the above way for achieving this, as I did on mine.

Digoo has some smart doorbells (e.g., SB-XYA) with BLE and 433 MHz, with success only via BLE.

The mqtt and rf are fine with me, the problem is getting the image/video into home assistant, not the ringing indication.
I’ve looked into all the Chinese smart bells and haven’t found one with home assistant integration.

im interested too

Can you confirm whether the 433mhz codes can be picked up by a Sonoff RF Bridge? I’m happy to buy one of these to get video through the MI app, but would still need integration to HA so my Google Home Mini’s ring when the door bell is pressed.

See the above Mqtt configuration.

Hi All.
I’m currently holding this device in hands and i’m kinda disappointed.
First of all, even via Mi Home it is very unresponsive. Sometimes i am getting push notifications / sometimes not. I can assume that it is because of Chinese cloud.

From other side, i faced another issue:
433 signals are not being sent every time. Only 2 of 3-4 are being caught by RF Bridge. Others are just ignored. Am i the only one who experience this issues or it’s a common problem?

Hi @gorenuru. I too had these issues but found a way to resolve them.

To figure out why this happens you have to understand the power saving tactics most wifi doorbells use in order to run on batteries for a prolonged amount of time.

This is what I make of it: in idle state the device is not connected to wifi in order to conserve energy. Therefore, if someone presses the doorbell, the device has to use RF to be able to send out a ring signal immediately, and only then it activates wifi to transfer the image it captured. When the wifi connection is established, which can take some time and last a while, all doorbell rings are relayed over wifi, not RF, until the wifi connection is dropped (to conserve energy) and then it’s back on RF again.

My workaround to expose both ring types to HA involves a xiaomi smart (zigbee) plug that is used as a kind of input boolean that is controlled by the Mi Home app. In the xiaomi app make an automation that turns on the smart plug whenever a ring is detected. This is to have HA detect ‘wifi rings’. The ‘RF rings’ are detected through a binary sensor acting on the MQTT messages from the sonoff bridge. Ultimately, create an automation to have your home respond to both triggers/rings in whatever way you like. Don’t forget to include automations that resets both the states of the plug and the binary sensor.

This is how i’ve set it up:


configuration.yaml

binary_sensor:
  - platform: mqtt
    name: "Xiaomi Doorbell"
    state_topic: "tele/sonoff/RESULT"
    payload_on: "ACD805"
    payload_off: "ACD805_off"
    value_template: '{{ value_json.RfReceived.Data }}'
    device_class: sound
    qos: 1


automations.yaml


- alias: Doorbell bordes ring
  initial_state: 'on'
  trigger:
  - platform: state
    entity_id: switch.plug_158d000285xxxx
    to: 'on'
  - platform: state
    entity_id: binary_sensor.xiaomi_doorbell
    to: 'on'
  condition:
  - condition: or
    conditions:
      - condition: template
        value_template: '{{ as_timestamp(now()) - as_timestamp(states.automation.doorbell_bordes_ring.attributes.last_triggered) | int > 7 }}'
      - condition: template
        value_template: '{% if states.automation.doorbell_bordes_ring.attributes.last_triggered == none %}True{% else %}False{% endif %}'
  action:
  - service: xiaomi_aqara.play_ringtone
    data_template:
      gw_mac: 7811DCB8xxxx
      ringtone_id: 10
      ringtone_vol: '{% if now().hour > 22 %}25{% elif now().hour > 20 %}50{% elif
        now().hour < 7 %}50{% elif now().hour < 9 %}55{% else %}75{% endif %}'
  - service: xiaomi_aqara.play_ringtone
    data_template:
      gw_mac: 7811DCDAxxxx
      ringtone_id: 10
      ringtone_vol: '{% if now().hour > 22 %}15{% elif now().hour > 20 %}40{% elif
        now().hour < 7 %}40{% elif now().hour < 9 %}45{% else %}65{% endif %}'
  - service: notify.notify
    data:
      message: "Er wordt aangebeld bij de voordeur"

- alias: Doorbell reset state RF
  hide_entity: true
  initial_state: 'on'
  trigger:
  - platform: state
    entity_id: binary_sensor.xiaomi_doorbell
    from: 'off'
    to: 'on'
    for:
      seconds: 2
  action:
  - service: mqtt.publish
    data:
      topic: tele/sonoff/RESULT
      payload: ACD805_off


- alias: Doorbell reset state plug
  hide_entity: true
  initial_state: 'on'
  trigger:
  - platform: state
    entity_id: switch.plug_158d000285xxxx
    from: 'off'
    to: 'on'
    for:
      seconds: 2
  action:
  - service: switch.turn_off
    entity_id: switch.plug_158d000285xxxx
  - service: switch.turn_off
    entity_id: switch.plug_158d000285xxxx


Probably not the prettiest solution and the dependency on the Mi Home app is a nuisance, but it works well for quite some time now.
4 Likes

Hoi Jeroen and thanks for your reply. What a brilliant idea! And i have one unused zigbee smart socket! Will definitely try.

One more question is about rf payload. i see that you use it as - is. Doesn’t it change for you every time?

For me it is every time different with Tasmota.

What firmware are you using on Sonoff RF Bridge?

Nope, it doesn’t change every time. I’ll check my Tasmota version later.

Fun fact regarding the Xiaomi zigbee smart plug: it acts as a zigbee repeater (on or off). I initially installed it to reach my mailbox in the front yard.

Yeah, i know about repeater capabilities.
I have 3 hubs and more then 100 Xiaomi smart devices :slight_smile:
Regarding rf code - i have Sonoff RF Bridge with Tasmota v6.6 and rf key is every time different.

Sonoff Bridge, same switch returns different data codes (Tasmota) here i found that people have the same issues with some Sonoff smart plugs. I am thinking of trying another sonoff firmware but disassembling it every time is annoying:)