rroller / dahua

Dahua Camera and Doorbell Home Assistant Integration
MIT License
382 stars 73 forks source link

EmpireTech DB2X-WP (rebranded Dahua VTO2311R-WP) not recognized as doorbell. #308

Closed brussene closed 8 months ago

brussene commented 10 months ago

I have two doorbells, both are Dahua VTO2311R-WP models and are using the same Dahua firmware, but one is rebranded as an EmpireTech DB2X-WP. The rebranded one is not recognized as an doorbell by the Dahua integration (probably because of the modelnumber being different) and therefore missing entities. The most important one being button_pressed binary sensor.

Can you add the EmpireTech DB2X-WP to the Dahua integration so that it is recognized as a doorbell? (with the exact same features as the Dahua VTO2311R-WP).

Details: Home Assistant 2023.10.3 Supervisor 2023.10.0 Operating System 11.0 Frontend 20231005.0 - latest Home Assistant Dahua Integration 0.9.49 Dahua firmware: 4.510.0000002.1.R,build:2022-06-13

Info camera's:

dahua_vto2311r-wp empiretech_db2x-wp

brussene commented 9 months ago

Any updates on this issue? Is there another way to fix this other than waiting for an update on the integration?

JoshDev commented 8 months ago

Are you able to pull any other logs in home assistant? The VTO connection is being made on port 5000. I wonder if the empiretech model changed the ports in the rebrand.

        # This thread will connect to VTO devices (Dahua doorbells)
        self.dahua_vto_event_thread = DahuaVtoEventThread(hass, self.client, self.on_receive_vto_event, host=address,
                                                          port=5000, username=username, password=password)

Maybe look for something like:

Connection to VTO failed will try to connect in 30 seconds
JoshDev commented 8 months ago

ah nvm, it's actually this code block that's not going to return true:

    def is_doorbell(self) -> bool:
        """ Returns true if this is a doorbell (VTO) """
        m = self.model.upper()
        return m.startswith("VTO") or m.startswith("DH-VTO") or (
                    "NVR" not in m and m.startswith("DHI")) or self.is_amcrest_doorbell()