# Simplifying this circuit using optotriacs?

I'm currently trying to create an interface between my Arduino-compatible (NodeMCU) and my OpenTherm boiler. OpenTherm is a protocol used by some boilers (mainly in Europe) which allows for the control of boiler temperature and other things like the boiler state; this is usually done by a stand-alone OpenTherm-compatible thermostat wired into the boiler. The protocol allows you to send and receive information from the boiler. However, the protocol operates on AC, and at a much higher voltage than an Arduino, thus, an OpenTherm to TTL levels adapter is needed

I've found myself upon this tutorial which seems to be the only one available relating exactly to what I am trying to accomplish. The writer of the article has made an Arduino Library which allows for the Arduino to communicate directly with OpenTherm via this circuit:

X1 & X2 are the Opentherm wires (doesn't matter which); the IN and OUT go directly into the Arduino's GPIOs. Finally, the VCC goes to Arduino 3.3 or 5v and the GND to Arduino ground.

Whilst the circuit does function perfectly, I felt that this was slightly overcomplicated as it involved numerous different components like multiple diodes. This would require the purchasing of a wide range of components which is not desired. As a result, I did some more digging and found myself upon this question on the forum. Whilst the question is not the same as mine, the top answer notes that:

• any of these parts will the same or better job.

That circuit provides a DC current shunt to an AC rectified source and series load from a 24Vac furnace transformer. All it has to drive is a logic driver to activate the furnace, the same way a reed relay might work.

Now, whilst it does seem that the original poster of the question asked for more clarity on how exactly the optotriacs could be used in this situation, I feel the person answering does not give a sufficient enough answer for the skill level of the person asking.

Similarly, I am not super skilled with electronics and found the explanation of the proposed solution rather lacking. As a result, I am asking this question.

My question is: How can the above circuit be replaced with a simpler solution? Is all that circuitry required to allow the communication from 5v DC to 24v AC and back? The answer linked above mentions optotriacs, how could they be used in this situation to simplify the circuit?

Best, John

P.S. The NodeMCUs logic voltage is 3.3V

• I'm not sure I follow what exactly you're trying to do here. Do you recognise that the circuit you're wanting to "simplify using optoisolators" already uses optoisolators? If so, are you wanting to add more somehow? And how do you anticipate that helping? I don't understand what this circuit is meant to do, either, though, so perhaps it's obvious to someone who can see what it's meant to do and I'm just not seeing it. – Hearth Feb 14 '19 at 23:05
• Can you edit your question to make it very clear what the real question is? Are you trying to sense 24 V AC signals from the boiler or switch 24 V AC signals to the boiler or both? Your text mentions opto-triacs but the schematic shows transistor opto-isolators. Which is it? – Transistor Feb 14 '19 at 23:07
• @Transistor Hopefully the edits I have made add some clarity to my question. – John Greeny Feb 14 '19 at 23:21
• All linked scematics are almost exactly the same. I don't understand the question. And you can't remove any of the components + optotriacs are not optocouplers, also no simplification can be realized with use of optotriacs. – Marko Buršič Feb 14 '19 at 23:25
• @JohnGreeny, i think that you are misunderstanding what the circuit actually does ..... the circuit sends voltage signals to the boiler ..... the boiler responds by sending current signals ...... also, why would you ask your first and third questions if you do not know the answer to your second question? – jsotola Feb 15 '19 at 1:39

The circuit you post is already quite simple and clever for what it does. The "optotriacs" suggestion you saw was probably a misunderstanding on how this circuit operates, which was already described in this site.

In OpenTherm/plus communication, the master (e.g. a thermostat) sends data to a slave (e.g. a boiler) by "pulling down" the bus voltage. The slave answers back by changing the bus current. The voltages need to be between specified limits; hence the specific zener diodes.

The diode bridge (4 x 1N4148 diodes) is not absolutely necessary if you know the polarity of the slave, but the OpenTherm specification mandates that X1 and X2 could be swapped, for convenience.

The opto-isolators could also be removed from the circuit, however, you will be connecting systems with different power supplies that do not share a common ground; it is safer to maintain these circuits isolated.

I have seen other OpenTherm interfaces with less components, but they certainly would not be compliant with the OpenTherm spec. A few cheap components will save you from lots of headaches, especially if you do not have an oscilloscope to figure out what does not work. I have also seen other more complicated ones, using op-amps. Or this one using comparators. The one you picked is the design used by the popular OTGW project, it is proven and I recommend that you stick with it.

• Thank you for your excellent answer, this is exactly what I've been looking for! On a slightly unrelated note, would it be possible to adapt the circuit to get a supply voltage for the master from the slave - if that's even possible - as opposed to having to supply the master and the slave separately? Or does the protocol not accommodate for this functionality? Thanks again! – John Greeny Apr 14 '20 at 17:55
• @JohnGreeny it's possible in theory, but difficult. In its version 2, OpenTherm specifies that you can use the idle current (5mA) to power the master. However, as you see in the signal graph, sometimes the master will have to do with just 25 mW! It would need to be a very low power device and use some form of storage (e.g. a supercap). OpenTherm > 3 defines a power delivery mode that can be negotiated over the line, but the specs are not public and I don't think this is widely supported yet, definitely not if your boiler is already a couple years old. – istepaniuk Apr 14 '20 at 18:48
• I also commented/corrected the "optotriac" answer that you linked to, that was indeed incorrect. – istepaniuk Apr 14 '20 at 18:53
• Shame that it's not a realistic option to use the idle current to power the master, thanks for clearing that up. As you say though, would be useful if that could be integrated into the circuit with OpenTherm 3 and later! – John Greeny Apr 14 '20 at 19:08