-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Coffee machine Philips EP5444/90 5400 Series LatteGo #6
Comments
I used a IRLZ44N mosfet, which I had laying around from a different project. Anything that can switch the 5v/gnd should be able to do the job. The picoflex connector looks like the one on my machine. The esp is supposed to go in-between the display and the Mainboard. You can remove the connector or split the ribbon cable to achieve this. That being said, I have no idea if this external component will work on your machine, as mine does not have a display. |
There are several transistors, which in your opinion are the most suitable and why did you use the IRLZ44N mosfet and not the BC33725TFR?
|
Do I understand correctly?
|
I used the IRLZ44N because it was the one unused mosfet I had laying around. I cannot recommend a specific mosfet or transistor as I am not familiar enough with the related electronics topic.
Yes, the ESP is an intermediary. Without the firmware generated by ESPHome the coffee machine will not work properly as the communication between the Display and Mainboard is stopped. This component will take anything on the display UART and forward it to the mainboard UART (and vice versa). In case youre machine uses different commands, but the same wiring, this component should not stop the machine from working (assuming the wiring is the same).
You can use the ESPHome UART debug functionality to log the communication on the bus.
Maybe. Turning on the coffee machine is both a combination of sending a command and temporarily removing power from the display on my unit. I cannot say if the behavior will be the same on your device.
On my machine the wiring inside the ribbon cable is stranded wiring which can be tinned and soldered easily. The wires inside the ribbon are small but not as small as headphone cables. |
So, I connected it and it worked, but somehow strangely. It works both with a transistor and without a transistor. Since the BS170 and BC337-40 transistors are on the way and should arrive soon, I decided not to wait, but to use the existing IRF520 MOSFET. If you do not enable debugging (remove debug from the code:), then the screen turns on without a transistor and you can fully control the coffee machine, and through the ESPHome web interface, the Power switch is constantly on and off. It's the same with a transistor. The coffee machine does not pour coffee through ESP Home. Select play/pause does not work.
If you enable debugging. The debugging code looks like this (see below), then when you try to press the button via the web ESPHome, the control panel on the coffee machine turns off, although there are logs in the ESPHome. Can you help me set up the esp to work with the coffee machine? How to understand from the log that the coffee machine is pouring coffee? Can you add a philip_series_5400 coffee machine to the component?
|
I figured out how to create my component for the 5400 series, it remains to understand why the screen turns off when debugging. There is an assumption that the IRF520 MOSFET transistor does not open at 3.3V. As soon as I get the BS170 and BC337-40 transistor, I will check them in action. As I understand how to split messages. We turn on the debugging mode, click on the buttons and see what message arrives in the esp, we break this message into parts and insert it in the same way as your version https://github.com/TillFleisch/ESPHome-Philips-Smart-Coffee/blob/main/protocol.md |
Based on the uart logs it looks like the ep5444 is using a different protocol for communication. The protocol has been reverse engineered using the uart debug functionality. You can find more information on the messages in protocol.md. Unfortunately, I cannot help you develop support for the ep5444 as I don't have access to that machine. |
Tell me, how do you have a timer implemented? I turn on the coffee machine via the control panel, in the settings it is set to turn off after 180 minutes, and the esp turns off after 5-10 minutes. Is there any way to turn it off? Nothing is working for me yet and I'm trying to understand the sequence from the logs, but the coffee machine turns off and I have to turn it on. If I comment out this code, then I can't turn on the coffee machine and the control panel doesn't respond, but if I comment out, then the control panel works
|
I did something similar to the wiring configuration you've commented above and listened to what the machine does.
This should not happen. Make sure it has stable power. Maybe the coffee machine disables power for the display after a given time period.
For debugging/reverse engineering the protocol I would recommended the following things:
|
On my ep2220 the display is constantly sending update requests to the Mainboard. If the machine is turned off, the display stops sending requests. This behaviour may be different on your machine.
The The wiring may be different on your machine. Thus the display and mainboard names may not be correct. |
You give good advice and it gives me a reason to think, so you even help a lot 😄 |
Hello, i have also this project and bought a 5000 Philips - will give it try on Weekend with a ETH-32. |
Your posted shematic "Front Panel" is same as "Sensors"? |
What do you mean? If it's about sensors with this integration, then no, it doesn't work and the control doesn't work either. That's why I use debugging to find the commands in the logs that are responsible for sensors and controls, and at the moment nothing comes out for me. I haven't seen what the logs on the 2000 and 3000 series coffee machines look like to understand what to look for |
Mean this: "Below I lay out the scheme for the board 1.9.30.330.00._v10" |
All circuits for the motherboard 1.9.30.330.00_v10.pdf |
I have looked on your debbuged codes - it looks like the start and the stop of the message >> bytes not correct. On the first code overview this "Preamble AA AA etc" is on the beginning - the next is on the end or split in parts - looks like the Baudrate is not correct - it is more random when it starts... but it looks like it is a logic in this preamble. I will check this on weekend with my ozsilloskop - hope i find the time. |
So is there some englich version instead of russia on the shematic-descriptors? Something is english and something not... |
This information is not found on the Internet. I received it in the Russian-speaking community in telegram, where one person received these schemes through his connections. So that's what I posted. You can use a translator |
Wonder how do you can translate this shematic - it is a image on pdf and i can not mark any letters... or words to copy to google. Somebody here can read this? |
@nighteagle1974 .. I think the schematics are great but not necessary. Knowing that the panel-communication part is the same on all devices is good. On the ep2220 the panel is constantly requesting status updates from the mainboard which responds with a status update. As @nighteagle1974 has pointed, the baud rate may be different. You can either verify with an oscilloscope or try other common baud rates. |
I ordered and am waiting for the Fnirsi-1013D oscilloscope, it will arrive one of these days, I will try |
Have you read this about your Fnirsi-1013D |
Below are the working buttons for turning off and turning on the coffee machine. I can turn off the coffee machine, but I can't turn it on and it turns on exactly as you wrote. I can solder a transistor, but how do I make a switch then?
This is how it starts when I click on the enable button, but then the activation process stops |
I would suggest using a momentary GPIO switch. The power-trick may not work on your machine, as the display (with the built in display) may be built differently. |
It's still worth a try, maybe it will work. I don't quite understand about the switch and there are questions. I'm not a programmer, so I apologize for the fact that I can't figure out how to do this correctly. Here is your component and power_pin: GPIO12 is used here. I can't turn off your component, because without it the coffee machine does not turn on at all, and the uart_mitm component is not suitable.
Do I understand correctly that I can not use power_pin: GPIO12, but specify another pin, for example GPIO14? What should I do first, turn it off and then turn it on, or turn it on first and then turn it off? Did I write the code correctly? Could you write the right code?
And more. I can't comment out |
Connected the BS170 transistor. About the scheme in a little more detail will be below. The output voltage is +5V, so it should be I added a switch to control the transistor, which, in theory, should interrupt the power supply to the screen and feed it again. When we do this, we see from the logs that the coffee machine is trying to start, but this does not happen. The coffee machine does not turn on and the screen does not turn on either.
I created a button to turn on the coffee machine, through which commands are sent every 18.536000000ms, and then a command is sent to restart the display. The coffee machine does not turn on because there is no answer about the motherboard I made a lot of different combinations for the test. Here is an example of two commands Option 1
Option 2
Where did I get the delay of 18.536 ms? When I was taking data through a logic analyzer and viewing data through the Pulse View program, I decided to measure the time between sending a command from the screen and receiving a response from the motherboard, and this time was 18.536000000 ms When we press the touch button on the coffee machine, I see the following data The command being sent is AA:AA:AA:FE:00:00:C8:87:1B:40:55:AA:AA:AA:FF:00:01:00:AC:E8:5A:E6:55 Answer AA:AA:AA:FE:00:00:C8:87:1B:40:55 from the motherboard after 18.536000000 ms and after that the coffee machine turns on This is the data from the logs when the coffee machine is turned on from the touch button and I highlighted in red where the screen sends a command and receives a response from the motherboard, and in blue, after a successful greeting, the coffee machine turns on I tried to repeat this case, but it turns out unsuccessfully, the coffee machine does not turn on, because it does not respond. When sending a command from ESPHome AA:AA:AA:FE:00:00:C8:87:1B:40:55:AA:AA:AA:FF:00:01:00:AC:E8:5A:E6:55, then there is no response from the motherboard Now about the scheme itself. Where did this data come from? I took it from here Based on this scheme, I redid the wiring pinout scheme. I decided to check the 4 wire that WakeUP, assuming that he could somehow turn on the coffee machine and decided to measure the signals through an oscilloscope and a logic analyzer, and that's what I saw.
Measurement through an oscilloscopeI managed to fix a signal where the voltage is applied up to 200 mv Measurement of data through a logic analyzerAs you can see, there is no data, there are only 0, which means that only voltage up to 200mv is supplied via 4 wires In general, I can't figure out how to make the coffee machine turn on. I will be glad if you offer options on how to do this. |
If you do not send commands, but simply restart the screen with a switch, then this is what will happen. The coffee machine does not turn on According to my observations from all logs, when we turn on the coffee machine with the touch button, it looks like this The control panel sends the command
next, the motherboard should answer us as well
then there is an exchange
and the final stage, after that the coffee machine starts to turn on
|
Here are a couple ideas in no particular order: Is there something happening on the RX2/TX2 lines? This could be some sort of debug port. Where is the wake up Signal coming from? Does the Mainboard wake up the display or vice versa? In the image where you tried to repeat the turn on commands the last one is not duplicated. Multiple copies may be necessary. Can you verify that the transistors removes the power using you switch configuration on gpio14? The response message of the Mainboard starts after 18.5ms. You could also choose a larger delay (22 ms for instance). If the Mainboard isn't to picky about the timing this may work as well. |
Judging by the scheme, this is a programmable port, I will check it and try to look through the analyzer
It comes from both sides, both from the screen and from the motherboard. If you break the wire, then the coffee machine turns on, so it put me in doubt that this wire makes any sense. I broke the wire and measured both from the screen and from the motherboard and they both showed the same voltage up to 200 mv
Yes, it turns off the power. If I turn off the transistor, there will be no voltage and the coffee machine will not turn on through the touch button As for the rest of the questions, they are still open, as I am going through various options for sending commands. I know that there are only 4 of them AA:AA:AA:FE:00:00:C8:87:1B:40:55:AA:AA:AA:FF:00:01:00:AC:E8:5A:E6:55 |
So it looks like this wire is an Interrupt-Wire? Can you log this wire all the time on your Analyzer? |
It is unlikely that we will see something with a logic analyzer, since the logic analyzer does not measure the voltage of the controlled signals, the logic analyzer shows in what state a particular node is in, in the state of logical 1 or logical 0. There are no controlled signals on the 4th wire, so it makes no sense to measure with a logic analyzer, if only with an oscilloscope to see what will happen at that moment, when the coffee machine goes into standby mode. When the coffee machine goes into standby mode, the voltage drops. I disassembled the control panel and examined it, and also removed the sticker from the chip and found out what kind of chip. I published the details here |
I figured out a bit about the bytes and found the bytes responsible for the sensors of the drink counter. Here's what happened
Now I have another problem, I do not know how to write sensors with variables for bytes in esphome. Bytes that carry information on the coffee counter, they change as we make a cup of coffee and it is wrong to use static conditions. Now my code looks like this
Below I made a config with the iron-specified bits. For example bytes[9]==0xC5 is the number 197 if translated from HEX to a number. So the data bytes[7]==XX && bytes[8]==XX && bytes[9]==XX && bytes[10]==XX change here, but it needs to be displayed in the sensor as numbers That's what GhatGPT offers me, utter nonsense. I will give examples to understand why I don't trust GhatGPT
and when you try to upload the firmware, I get this error
|
I managed to partially decrypt the protocol. I found almost all the sensors and they work. I wrote the code as best I could, I can't do more, since I don't know these lambdas and I can't use custom sensors. Those interested can use this data and write a working project. You can read how I decoded the protocol here. I tried to describe in detail how to search for the necessary bytes Function Description
|
Hooray 🥳, I found how to operate a coffee machine. To make coffee, we look in the logs for the address and functions that are listed below, this is the command to start making coffee. Start recording in the log, select the parameters we need (strength, amount of water, number of cups) to make coffee and run, then we find the command in the logs. Why is that? Because then we run what we set in the settings, so you can create a lot of different scripts with different parameters.
The commands must go strictly in this order, although they may be scattered in the logs, but in ESPHome we specify in this sequence
Example of a button to run a command from a log in ESPHome
|
@DivanX10 Thanks for your awesome work! I've just received my 5400 and can't wait to connect everything. I appreciate the work you have put into the 3d print for a part that will keep the cleaning water away from the cup. However, I was wondering if you ever tried to capture the command that is send from the control panel to the main board when the on button is pressed not to long after a shutdown. Since if the temperature is still high the machine will startup without a cleaning cycle. If I understand correctly from @TillFleisch this works for the 2200 version. I've tested and if I turn the 5400 on after waiting not to long after a shutdown it will indeed start without a cleaning cycle, so this should be possible. Would be great if you could help. Thanks! |
I have tried many times to find a way to turn on the coffee machine remotely without using a relay to turn on the coffee machine. Then I was helped with this question by a person who is well versed in electronics and he is also a C++ programmer. He wrote the code to control the coffee machine and thanks to him a project appeared. I was offered this connection option, but I didn't try it, because I made the relay before I met him and before he offered me this option |
Thanks! I'll give it a try once all parts have arrived |
If you manage to turn on/off remotely and save the operation of the touch button of the coffee machine, let me know |
I'm connecting an ESP32 using the below mentioned diagram as mentioned on this project with an IRLZ44N Mosfet. Of course the gpio pins are different. The code you (@DivanX10 ) have for power on and off at the moment (for the 5400) is this:
I need to change the power on to send the packets with and without cleaning cycle. For this project (the 2200) the code used is this (written bij @TillFleisch ):
TillFleisch states the following on how he found the startup with and without cleaning commands:
@DivanX10 Could you help me in the right direct how to implement this for the 5400 in your code? How would you go on finding these packets for startup without cleaning since the 5400 seems to have a different protocol? I don't mind testing it out if you could help with finding the command and giving an example on how to adjust your power on/off code. Thanks! |
I described all my actions on the Home Assistant forum. He also showed how to decrypt the protocol. I described in detail all the protocols on the ESP Philips 5400. You will not be able to turn it on via mosfet and this method is not suitable for the 5400. To wake up the coffee machine, you must first apply voltage to the chip, and after the processor wakes up, it begins to communicate with the motherboard. When we pull the mosfet, we wake up the motherboard, but the chip itself continues to sleep and the coffee machine does not turn on. I used this code for a relay to simulate pressing a touch button. I empirically determined the time to turn on and off the coffee machine. If you touch the touch button that turns on the coffee machine with your finger and hold it for more than 2 seconds, it will reset to default settings; if you hold it for 1 second, it turns on; if you hold it for 2 seconds, it turns off.
|
@DivanX10 Thanks for the quick reply. I have missed that information while reading through your posts. I might go experimenting a bit with it in January. In the mean time, using the relay switch will that break the manual usage of the power button? Or can you still use the power button as normal after implementing that? Thanks! |
I can't turn on the coffee machine via a physical button. Having soldered a wire to a resistor R110 with a nominal value of 4.7 kOhm, I inadvertently tore off the resistor along with the track. Somehow I managed to restore the track and solder a softer wire. I damaged resistor R110, so I replaced it with another 10 kOhm one that I had on hand. I'm not very good at soldering and I'm afraid of ruining everything again. That's why I don't want to touch the board. I was offered a scheme where you can keep the physical button working and at the same time be able to turn it on remotely, but this is in theory, and I have not tested it, and no one has yet unsubscribed whether this scheme works or not. So I don't know. The diagram can be found here |
|
|
I don't know what kind of connector it is. You can try to find out what kind of connector it is from a PHILIPS service center or contact PHILIPS technical support if they tell you, but, as usual, PHILIPS will recommend contacting a service center, and the service center is unlikely to tell you what kind of connector it is. |
The more interesting "connector"/pads would be the one on the left labeled TX/RX/GND/5V. |
23.04.2023 purchased a new Philips EP5444/90 5400 Series LatteGo coffee machine and I'm going to repeat your experience. The withdrawal of the warranty does not frighten me, I can repair it myself if something happens to it. I would like to clarify about connecting the display to the ESP8266 WeMos D1 Mini. You write about the transistor, but you did not specify which transistor to connect.
Which transistor should I connect? I have a TIP120 transistor
This is how the wiring to the display looks, just like you do, which may have a chance to control remotely. Do you think it will work?
Do I understand correctly that it is necessary to disconnect this cable from the display, connect some of the wires to the ESP8266 WeMos D1 Mini, and already pull the wiring from the ESP8266 WeMos D1 Mini to the connector?
The text was updated successfully, but these errors were encountered: