Control your Jura coffee machine

Same thing here, bought ENA 8 together with the wifi dongle. Just to be disappointed they don’t work together. Following this topic with interest.

1 Like

same here with ena8

following

1 Like

Same here with E8

1 Like

Hi all. Glad to see this thread is still active.

ESPhome can be flashed to the WiFi dongle relatively easily:

You’ll need:

  • A USB to TTL serial converter, such as a CP2104, plus jumpers
    CP2104

  • 6 x P75-E2 “Spring Test Probe” Pogo Pins
    pogo

  • An ESP-01 Breakout Board
    (we use this for it’s 8-pin header, to hold the pogo pins in alignment. Ignore the printing on the PCB.)
    breakout

  • Esptool (e.g. pip3 install esptool) (Optional, in case you want to back up the dongle’s software first)

  • ESPhome Flasher

  • A multimeter will probably help

Place the pogo pins into the ESP-01 breakout adapter. I had to press rather hard to get them to seat properly. Wire up the USB-TTL converter to the breakout adapter using 3.3v (NOT 5v).

1
2

Before you begin, make a barebones ESPhome yaml config:

  • In the ESPhome console, click “New Device” and select ESP32 as your device type
  • Choose Install → Manual Download → Legacy Format
  • After compilation completes, save the binary locally

For those not accustomed to programming ESPs:
To enter programming mode, the ESP32 on the dongle must have GPIO0 held low (grounded) at power-up. Thus, through each of the following steps (backup, erasure, programming), you’ll need to physically touch GPIO0 (the blue wire in the photos) to ground while plugging in the USB cable. You can remove it right after applying power (i.e. after plugging in the USB cable).

Test that you have a good connection to the ESP:
esptool.py flash_id

Backup the factory firmware:
esptool.py --baud 115200 --port [your port here] read_flash 0x0 0x400000 jura-backup-4M.bin

Erase the ESP32:
esptool.py erase_flash

Flash the ESPhome binary you compiled using the GUI-based esphome-flasher tool:

Once booted, you can set the following in yaml:

status_led:
  pin:
    number: GPIO2
    inverted: False

uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600
  id: uart_bus

I previously posted an ESPhome custom component in this thread to communicate with a J6 machine. If you have an older machine, the component and an ESPhome-flashed WiFi dongle should be all you need to make coffee from Home Assistant. That is, if the WiFi dongle physically fits onto the older machine’s service port.

However I now have a new Z10 which uses some sort of encryption, which they are woking on here.

Until the encryption is sorted out, I have found I can only successfully perform the following:

AN:01 - ok: (nothing happens)
AN:02 - ok: (Shuts Down, or ask to Clean because shutdown initiated)
TY: - Prints machine info: "ty:EF545M V02.01"
T1 - Starts encrypted handshake process

2 Likes

Can this port also be used to read/write the firmware of the machine itself? Or is there a separate port/pins/test pads that would allow for this? I know that newer models of the E8 have new drinks added (Cortado and Americano). I asked Jura about a firmware update to add these drink options to my machine (2020 model) and they said there isn’t a firmware update.
So, the logical next step is to try and do it myself.

2 Likes

Hello, I have a question, is it possible to make or buy an interface that could connect the JURA Impressa A5 to a computer to read errors and what program does it support?
greetings

1 Like

I have just purchased a new ENA 8 and it is working fine with the WiFi dongle. I believe this is a newer model as it is touchscreen without the physical buttons either side of the screen. The SKU is 15510 as shown here: ENA 8 - JURA United Kingdom. There is also an all white model, SKU 15509.

Has anybody manage to hack the Wifi dongle yet?

2 Likes

@Blueforcer

I am trying to emulate and understand your function. can you explain what is going on here? it looks like maybe you’re building an NRZ to RZ conversion.

Code

        int w = 0;
	outbytes = "AN:01";
	outbytes += "\r\n";
	for (int i = 0; i < outbytes.length(); i++) {
		for (int s = 0; s < 8; s += 2) {
			char rawbyte = 255;
			bitWrite(rawbyte, 2, bitRead(outbytes.charAt(i), s + 0));
			bitWrite(rawbyte, 5, bitRead(outbytes.charAt(i), s + 1));
			//softserial.write(rawbyte);
		}
		delay(8);

Edit:
I found this:
https://protocol-jura.at.ua/index/protocol_to_coffeemaker/0-8

UPDATE: IT works!
I got the basics to work on my 2018 ish “Jura ENA Micro 1” AKA Jura A1
So far I have tested:
Power ON (but wont actually work unless you hit the big mechanical button and only works if you provide 5 V) AN:01

Power OFF:                           FA:01 or AN:02

Select Bean amount Large:   FA:04
Select Bean amount Small:    FA:06
Make Large Cup:                   FA:09
Make Medium Cup:               FA:08
Make Small Cup:                   FA:07
turn on pump:   FN:01
turn off pump:   FN:02
turn on Grinder:   FN:07 
turn off Grinder:   FN:08
init brewgroup  : FN:0D
TL: →    tl:R8C Loader V1.04
TZ: → ty:EF509M V01.24
AN:18: initiate Filter change..
1 Like

Found a solution for the z9?

1 Like

Hello!

Does anyone know if there’s a service-port to the E8 and where it is located?? Searching the whole web since days, but can’t find any descriptions…

:((

1 Like

I have a Z10 and there you have to lift the manual coffee feeder on the back (no indication that it is possible though) and there you have access to it.

2 Likes

Hello ryanalden,
hello everybody,

I am really a newbie, so please excuse my poor english and even poorer technical skills… :slight_smile:

I´ve soldered my USB-TTL-UART-adapter directly to the jura-ESPRESSIF-device: GND, RX, TX, and 3V3 (plus extra GPIO0 for getting device to programming mode) as described. Is it correct that EN (Pin3) is not needed, right?

When I connect it to my mac´s USB-port the UART-adapter is found and ESPRESSIF-device gets powered up as a blue LED begins to flash on the board.

When grounding GPIO0 (just touching does not work, need to connect it to GND) while powering up, the blue LED stays off indicating device is in program-mode - am I right?

But when I try to evaluate its connection status using

python3 esptool.py flash_id

I always get

Serial port /dev/cu.usbserial-1460
Connecting........_____....._____....._____....._____....._____....._____....._____
/dev/cu.usbserial-1460 failed to connect: Failed to connect to Espressif device: Timed out waiting for packet header

Any help would be appreciated!
Thank you all!

Kay

1 Like

Hello everybody,

I successfully flashed an NODE MCU (ESP8266) with the ESPhome jura component (thank you @ryanalden).

Connected it to the E8 (7-PIN) service-port as follows:

As shown above I provided extra 5V via NODE MCUs micro USB.

Yipeee!!! :smile: got this results that have been read out correctly:

  • Only the “Missing Tray” does not seem to be correct.

Unfortunately the HA buttons don’t provoke the right actions (except the turn-off button):

  • The button “Make coffee” results in E8 using the lower right button (*).

  • The button “Hot water” results in E8 switching to displays “Maintenance Screen”; this is the lower left button (*).

  • The button “Turn on” stays without effect.

(*) confirming this code page:

I will now proceed trying the different in this forum discovered codes (thank you all!!) to the ESPhome component and post what works! :slight_smile:

3 Likes

I have the same error message. How did you manage to get the connection working?
My blue led is flashing but it says

Serial port /dev/cu.usbserial-210
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header

@ryanalden @Blueforcer

Has Anyone worked out a code that returns the state of the machine? My codes are different than others but hopefully there is overlap

The ENA1 has a momentary switch to turn on and off. I can bypass it to the esp and use it to send codes to turn on and off. BUT I need a way to know the state of teh machine. I tried soldering to an LED but the levels don;t work out. Software fix would be ideal imo

I also have an E8 and have the same results.

@rmeekers @braaak

This error is just how you’re flashing the device.
Flash your ESP or whatever controller while it is ONLY connected to the PC (USB).
Disconnect the controller from the kaffemaschine while flashing.

That is the case with me. Pogo pins in place and connected directly to my laptop through USB.

i hav the same machine e8 (eb) and try it with an wemos di mini without level converter and use external power. I have no error in my log, but i dont receive any information from my machine. i try allready to change TX and RX, nothing works. Do you have used a special jura_coffee.yaml ?

I can communicate with my E6 (using ESPhome and an ESP8266 dongle; no level-shifter needed, very simple). But apparently, since it’s a newer model (EC), the number of unlocked commands is very limited.

The only commands that work, however, are (so far):

  • Request the machine version (TY:)
  • Request the firmware version (TL:)
  • Switch off the machine (AN:02 or FN:51)
  • Initiate some ID handshake mechanism (@T1:)

There is no way to switch it on (makes sense, as then the ESP is not powered, nor would the machine be in a state to receive commands). Nor to request machine and consumable status, get machine statistics, start making coffee, control the machine elements.
I’m afraid that for the newer model’s software, this handshake mechanism with the @T1: needs to be followed to authorize the controller to actually do more the just shutdown or ask for a model ID.
Does anyone experience the same with newer Jura models, or am I just doing something wrong?