I currently have an “old fashioned” doorbell that I want to automate. It’s mains connected and the chimes run on 8V in parallel via a transformer (I will post this in my next post).
My goal is to create a doorbell that triggers an event when pressed, and then selectively (again, programmatically) chimes when I want it to. Perhaps something like this:
Where the smart bell is a Hikvision DB-120A-IW, although I’m not sure that matters at this point. I’m also thinking that if I upgrade my chimes to 24V then I can get rid of the second transformer.
The magic component here is the “USB smart relay”. I want it to do two things:
Programmatically disable the relay so that even if the circuit is completed by the Hikvision, the bells won’t chime. This should fail to enable (ie if the USB control goes away, the bells should work!), and of course the operation of the Hikvision should be unaffected.
Raise a programmatic event via the USB connection when the Hikvision is pressed (regardless of 1, above).
If such a relay doesn’t exist, how can I achieve my goal? I have seen USB relays that can turn a circuit on and off, which I guess I can use to control the chime circuit, but that still leaves the signalling part.
If 1, 2 and 3 can be found in a single device (I dunno, like a smart relay that has both I and O) then that would be pretty neat and tidy.
But if not… I figure that 1 (the relay) exists already, and I think I’ve seen USB activated relays that can be used for 2 (by connecting in series with the chimes) for relatively cheap.
3 is the bugger though. I can’t even find a USB device that detects when an arbitrary circuit is closed - and I would have thought such devices exist, we have mouse buttons after all ;).
Does it have to be USB? There are plenty of TCP/IP relays. From cheap eBay modules (that HA can control with shell or restful commands) to more expensive but reliable and HA integrated Global Cache units.
The Global Cache Flex is cheaper than the gc100 and uses the same protocol so should work.
I use the GC Flex infra-red bridge and it works perfectly even though the component was written for the GC100.
Or if you are using a Raspi the GPIO component can be used to switch a standard relay (you’ll need a transistor or optocoupler to get the current required by the relay, the port probably wont be powerful enough on its own.
It can absolutely be tcpip. For some reason I assumed usb would be more available. I’ll have a dig around.
Edit: I had a quick look and the situation seems as it does for usb - I can see relays controllable by tcpip but not one that can sense when the relay has been activated. Any tips?
The problem with this circuit is you will not be able to sense the doorbell button if the chimes are disabled with the relay. Also the sense logic is inverted (0v = button press). So you could do this:
In this case you would have to automate the chime relay on detection of a button press. To disable the chimes just disable the automation. You can still detect button presses and use them elsewhere (notification automations for example).
Additionally if you get the PoE (power over Ethernet) version of the GC FLEX and your switch/router supports PoE you won’t need an additional power supply (5vDC) for the GC Flex.
Note: there is a much cheaper way to do this if you are using a raspi to host your HA server.
The problem with this circuit is that the raspi can have trouble detecting button presses shorter than 2 seconds. See here: Pi GPIO Binary Sesnsor
One way around this is to use a 555 timer IC configured in monostable mode with a period of 2 seconds connected to the doorbell button. This circuit is beyond my paint skills to draw, so have a read of this: http://www.circuitbasics.com/555-timer-basics-monostable-mode/
The main advantage of this circuit is that it will cost you dollars as opposed to hundreds of dollars with the Global Cache units. The disadvantage is that it requires a little electronics knowledge to build.
This is great and it looks like I have my homework to do. In the meantime I figured out what I needed to search for - “usb relay gpio” gave me a few options… But it seems that the pi route would be easier, more maintainable/extensible and cheaper.
Thanks for the tips!
EDIT 1: it just occurred to me that you used my original bell diagram as a base. It looks like your solution can still apply to the diagram in my OP - that should also sort the issues with disabling the chimes not disabling the button presses.
Also since the smart bell will draw 24v all the time, I’m guessing I need another relay to actuate the gpio instead of hitting it directly?
EDIT 2: For completion (in case anyone else had the use), here are the components I found in searching:
The 0.1uF capacitor (any type) is used to cover the gap in voltage as the AC waveform crosses zero.
Depending on the smart doorbell output, you may not need the 555 circuit to stretch the pulse to 2 seconds.
The doorbell detect logic is inverted (0v = switch closed, 3.3v = switch open). HA has an option for this in the GPIO binary sensor component.
EDIT: also there is a mistake in the diagram. The chime disable relay at the bottom should use the Common and Normally Closed contacts. You turn the relay on to disable the chimes and if the relay circuit fails the chimes will still work as the contacts will close without power to the coil.
Again, amazing post Tom. I’m going to try to understand the circuit before building it, but will probably go the Rasbpi route (and now I’m thinking about alarm integration and other things down the rabbit hole!)
There’s another big error I’ve just noticed in the Veroboard layout. IC1 is not oriented correctly. Pin 1 and 2 should go to the relay not the GPIO and GND. Correct orientation:
Wow…nice info! Definitely want to look into a little simpler design as I don’t need to toggle it, just detect the button pushes on a standard front and back doorbell with the AC transformer. I was probably going to do it with a pair of properly placed (lots of trial and error) reed switches but man what a pain it is to position those when I have two terminals right there I could tag on to. I wasn’t sure how to do it though since I believe the bell wire just shorts out? I need to do some more digging along with your info.
Thanks again for all the help! The situation has changed since I posted though: the smart doorbell isn’t an option anymore and also I’ve fallen into the maker rabbithole while looking for components.
If anyone was interested I’ve adapted the requirements and circuit and created a new thread here.