Thanks guys. I have had some success with the Jura X9 Impressa.
There is a connector on the steam generator relay board beside the DB9 connector.
For the life of me, I could not make heads or tails of the read eeprom responses - they do not seem to reflect the brew counter counts shown on the display. Also the tray water/status is inconsistent and not representative of the machine.
The important part is that I can brew products and turn the machine on and off.
I used a NodeMCU clone without level shifters, getting the power from the same header (5v) to vin pin, and knock on wood - it’s chooching away with the 5v Rx and 3v Tx.
I created alexa voice routines to properly stack the multi-brews required and used the scheduler component to turn the machine on and off on work-mornings automatically.
# disable serial logging when using GPIO01/03
logger:
baud_rate: 0
uart:
tx_pin: GPIO1
rx_pin:
number: GPIO3
inverted: no
baud_rate: 9600
#debug:
#direction: BOTH
#dummy_receiver: false
#after:
# delimiter: "\n"
#sequence:
# - lambda: UARTDebug::log_string(direction, bytes);
id: uart_bus
#rx_buffer_size: 512
#stream_server:
# uart_id: uart_bus
# port: 1234
switch:
- platform: template
name: 'Coffee Maker'
icon: "mdi:coffee-maker"
id: jura_on_off_switch
turn_on_action:
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFF, 0xDB, 0xDF] ## 'N'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xFF, 0xDB] ## '1'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
turn_off_action:
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFF, 0xDB, 0xDF] ## 'N'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xFB, 0xDB, 0xFF, 0xDB] ## '2'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
optimistic: true
assumed_state: true
button:
- platform: template
name: 'Select Decaffe'
icon: "mdi:cup-water"
id: jura_select_decaffe
on_press:
- uart.write: [0xFB, 0xDF, 0xDB, 0xDF] ## 'F'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xFF, 0xDB, 0xFF, 0xDB] ## '3'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
- delay: 1000ms
- uart.write: [0xFB, 0xDF, 0xDB, 0xDF] ## 'F'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xFF, 0xDB, 0xFF, 0xDB] ## '3'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
- platform: template
name: 'Brew Coffee'
icon: "mdi:cup-water"
id: jura_make_coffee
on_press:
- uart.write: [0xFB, 0xDF, 0xDB, 0xDF] ## 'F'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xFF, 0xDB] ## '1'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
- platform: template
name: 'Brew Espresso'
icon: "mdi:cup-water"
id: jura_make_espresso
on_press:
- uart.write: [0xFB, 0xDF, 0xDB, 0xDF] ## 'F'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xFB, 0xDB, 0xFF, 0xDB] ## '2'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
- platform: template
name: 'Brew Double'
icon: "mdi:cup-water"
id: jura_make_double
on_press:
- uart.write: [0xFB, 0xDF, 0xDB, 0xDF] ## 'F'
- delay: 8ms
- uart.write: [0xDF, 0xDB, 0xDB, 0xDF] ## 'A'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xFF, 0xDB] ## ':'
- delay: 8ms
- uart.write: [0xDB, 0xDB, 0xFF, 0xDB] ## '0'
- delay: 8ms
- uart.write: [0xDB, 0xDF, 0xFF, 0xDB] ## '4'
- delay: 8ms
- uart.write: [0xDF, 0xFF, 0xDB, 0xDB] ## '\r'
- delay: 8ms
- uart.write: [0xFB, 0xFB, 0xDB, 0xDB] ## '\n'
sensor:
- platform: uptime
name: "Uptime"
- platform: wifi_signal
name: "WiFi Signal"
update_interval: 60s