Actron Aircon / ESP32 Controller Help

An update from me.

I have put together the prototype on a breadboard. Uploaded the ESPHome configuration to the Atom.
Next I have removed the aircon control panel from the wall and wired up the Atom (all this after I switch off the power to the aircon of course). Turned the power on.

I can power on and off the aircon from HA.

Not all HA buttons work as they should for me. Some of the HA buttons do the same thing, others work as they should while others do do anything at all. This was just a quick test and I did not take notes on which buttons worked or not.

I guess it might have to do with the model of the aircon I have.

My Actron is a SRV190E ESP Plus, with 8 zones and 2 controllers (I could see the lights on the second controller going on/off as I was pressing buttons in HA). The Aircon controllers I have have are AM7-D8 WC

During my testing I was able to also use the second controller to control the Aircon and HA too (for the buttons that worked).
The Bitstring in HA - I see that changing as I press buttons on the second controller.

Any suggestions on how I can proceed form here and get the buttons working as they should?

Many thanks guys.

Connection is in parallel with existing wall panel(s).
My Actron does not have any zone controls, so I can’t help with decoding that. You will see if you look in the custom component code there are a number of bits where the function is ‘unknown’, these could well be additional zones.

Invalid responses are most likely related to noise - I sometimes read an invalid number of pulses.

Getting all the buttons to work for me was done by trial and error.
The values for the DAC in my YAML should be very close but may need slight adjustment.
You need to be able to measure the voltage on the KEY line with a meter for each physical button you press. Then (with no buttons pressed) adjust the DAC output value (via the DAC number output) until the voltage on the KEY line matches as close as possible with the voltage measured above. That would then be the value to use for the DAC output in your YAML. Repeat for each button.

Are the “unk” the unknowns?

My controller has zones or room buttons. I see in your YAML file that you have 4 rooms. I have 8 - I called them zones and seems you called yours rooms. Might be the same thing?
This is what my controller looks like:

Can you please post a pic of yours? So we can understand the similarities/differences?

Apologies but my inexperience in this area is showing again. I will run an example of what I thought the above is saying and please let me know if I am wrong or not.

  1. Use a multimeter, on the key line of the aircon controller, to measure the voltage when a button is pressed
  2. Move the multimeter to the key wire that comes out of the Atom (the yellow wire), adjust the DAC Output Value, see what the output is on the multimeter. Repeat this till the voltage is as close as possible to the measured voltage in step one (at this point in time the Atom device is NOT connected to the aircon wires at all).
  3. Update the yaml with the value and update the Atom device via ESPHome.
  4. Connect Atom to aircon and test
  5. Repeat for other buttons

If the above is not correct please let me know how to do this - dont wanna fry anything :slight_smile:

Many thanks again.

PLEASE NOTE THIS IS ALL DONE AT YOUR OWN RISK - I AM NOT RESPONSIBLE IF YOU DAMAGE ANYTHING!

Now that we’ve got that out of the way… :upside_down_face:
You really should make sure you know what you are doing with this sort of thing or you may damage something. That being said there should only be low voltage present at the keypad.

You have basically got it correct except that with point 2 - the Atom must still be connected to the keypad - so you do not have to move the multimeter - it stays on the KEY wire. (If it is not connected you will not measure anything).

I first measured all buttons and wrote them down - then adjusted the DAC to get the number for for each button and wrote that down.
The AC only seems to “take” a new command when you return the voltage to the idle state of 5v (equivalent to releasing a button) - so you “shouldn’t” get it confused by varying the voltage if you don’t return the voltage to idle between adjustments.

My keypad looks the same as yours except the bottom section where you have the room/zone buttons is blanked off (when I opened the keypad - there are actually buttons under there but they are not used in my system), and I don’t have any of the LEDs related to sheduling days of the week.

Thanks
I understand the risks and they are my own risks :slight_smile:

Ok - I will connect it all in parallel as you have mentioned and start measuring.

Not too sure what happens when the DAC is adjusted - assume the button lights up on the panel and therefore will now that the voltage on the DAC is correct.

You should not see anything on the panel when you adjust the DAC - as mentioned the AC only takes the command when you “release the button” - i.e. return the DAC voltage so the Key voltage is back to 5V.

OK - still confused about it. I cant seem to grasp the DAC concept.

Lets assume I have it all connected in parallel and the multimeter is on the aircon panel monitoring voltages.
I go in HA and in DAC Output miliVolts I enter a value there. What do I need to do after? How do I know if the value does anything?

Steps modified from your post:

  1. Make sure the DAC output is 0V (“DAC Output miliVolts” input component)
  2. Use a multimeter, on the key line of the aircon controller, to measure the voltage when a button is pressed, record the voltage.
  3. Repeat for each button
  4. Adjust the DAC Output Value, see what the output is on the multimeter (still on the key line) - keep adjusting till you get as close as possible to the voltage measured when pressing the button - record the DAC value.
  5. Update the yaml with the DAC values recorded for each button and update the Atom device via ESPHome.

The important part to understand is that when the DAC output is 0 - it is as if there is no button pressed. When you adjust the DAC output - this adjusts the voltage on the KEY line (equivalent to switching a resistor between KEY and 0V - which is what the buttons do). When you return the DAC output to 0 - the KEY voltage returns to 5V which is the same as releasing the button. This is why the ESPHome logic for a button press sets the dac output, waits a short duration then resets it to 0.

You could actually test the DAC number recorderd for each button before writing the YAML by setting the DAC output to the recorded number, waiting one second then setting the DAC back to 0.

This calibration is the reason I have the input component for “DAC Output miliVolts” - in the final version I would remove that.

Thanks @brentk for the detailed steps.
I will test some buttons tonight.

Really appreciate your help!!

1 Like

There’s been a number of places where people posted voltages from their wall panels, from memory they are the same between all controllers within a margin of error.

For the sake of completeness I’ll repost them here:

#1 (4-zone)
Button “KEY” Voltage
ON/OFF 0.000 V
FAN 0.452 V
Temp Up 1.509 V
Timer 1.854 V
UP 2.234 V
DOWN 2.530 V
Temp Down 2.872 V
FAN 3.220 V
Zone 1 3.650 V
Zone 3 3.875 V
Zone 2 4.237 V
Zone 4 4.681 V

#2 (8-Zone)
Button “KEY” Voltage
idle 4.98
r1 3.55
r2 4.237
r3 3.875
r4 4.681
r5 0.65
r6 0.83
r7 1
r8 1.15
ONOFF 0 (short to gnd)
FAN 3.2
MODE 0.45
T UP 1.5
T DOWN 2.85

#3 (8-Zone)
| Button | Volts |
| idle | 4.99 |
| Zone 1 | 3.57 |
| Zone 2 | 4.24 |
| Zone 3 | 3.88 |
| Zone 4 | 4.69 |
| Zone 5 | 0.65 |
| Zone 6 | 0.84 |
| Zone 7 | 1.00 |
| Zone 8 | 1.16 |
| On/Off | 0.00 |
| Fan | 3.23 |
| Mode | 0.47 |
| Temp Up | 1.63 |
| Temp Down | 2.88 |
| Timer | 1.85 |
| Display | no change from idle |
| Select Up | 2.23 |
| Select Down | 2.53 |

1 Like

I have been doing testing for the past couple of days.
I am seeing some different behavior than expected. Ill try and explain.

I will focus only on 1 single button - Temp Up.
I measured the voltage on that and for me it is 1.493v.
So I started paying with the DAC values. Initially I thought that I nailed down to 950. However, a few hours later it did not work (meaning a 950 in DAC did not produce anywhere close to 1.493v as it did initially).

So I started measuring again. New DAC value of 880. However some time later same issue. I did the tests a few times and found DAC values of 950, 880, 980, 1020, 960 and 950 would work at some point in time (to put the temp up) but then some time later it will not.
I have noticed that if I manually press the ON button on the aircon controller I would need a different DAC value than if I press the ON button in Home Assistant. I could not find a pattern at all.

It was the same story with all the buttons. I was pretty happy to finish finding the DAC values for all of them but then I found out that the same values later on returned different voltages than they did initially.

Not really sure what is causing this. I will try a different power supply for the Atom and see. Maybe the resistors - maybe for 8 zones needs different value resistors? I have no idea.

I didn’t have any issues like that.
One possibility could be due to a poor connection somewhere in your circuit. If you are still testing on a breadboard I would suggest soldering everything onto a veroboard.

I finally got around to having another go at getting this all working and happy to say that I have had a lot more success this time!

A big thank you @brentk all your hard work it resulted in me getting a lot more success than last time.

I managed to get a partially working configuration was able to turn the aircon on and off and change mode, temperature etc.

However like @MnM I was getting some really weird inconstant results with the DAC values. I thought I had all the values all locked in and working and then once I upload the finalised Esphome code with the DAC values after the restart I got all kinds of different values.

For this round of testing I ended up using the inbuilt DAC on my DIGISHUO ep32 and I am wondering if this isn’t providing the best results I will have another crack on the weekend using a MCP4725 DAC that I ended up purchasing as well.

However I also agree that it could just be poor connection on the veroboard somewhereI will double check all that soldering when I swap the DAC over.

I am quite happy with the progress that I made and I think I super close to be having a working setup!

Happy to say that the led_proto2 code all worked perfectly any changes made on the control panel updated and reflected in Home assistant and changes in HA also update correctly on the panel. Which was awesome so happy to have that two way communication with HA.

@MnM just wondering did you ended up fixing up your DAC issues with the strange results at all?

I have just moved all the components from breadboard to veroboard.
I attached the veroboard to the aircon and it does turn it on and off. I think I got it all soldered pretty good.
No measurements yet - sometimes this week. Will be interesting to see if I get different values again.
However, before I test the DAC values again I am thinking to turn off my 8 zones and sort of have my air con controller similar to what @brentk had. I am thinking this way the ESP32 code he posted should work out of the box with my controller. This way I would see if the DAC values are moving around.

@lordvorta - how many zones have you got on your controller?

The MCP4725 DAC may work a little better as it has a higher resolution so will be able to get smaller increments in changes to the KEY voltage. Unfortunately the voltage of KEY vs DAC voltage was definitely not linear across the range - obviously related to the non linearity in the transistor.

@MnM mine is the 8 zone one. I only have 2 in use zones but.

@brentk yeah I am hoping that the MCP4725 will be a bit better was doing a bit of reading and it sounds like the DAC resolution on the esp32 is a bit hit and miss like you said.