Inhaltsverzeichnis

Raspberry Pi ⚭ Siemens surpresso S40

Nur versuchen nachzubauen, wenn du notfalls auch ohne Kaffee(maschine) überlebst…

Überblick

Bei der Reparatur eines Kaffeevollautomaten Siemens surpresso S40 fiel ein, offensichtlich zu Wartungszwecken zugänglicher, Stecker auf.

Anhand bereits verfügbarer Informationen zu ähnlich aufgebauten Maschinen lies sich ein Raspberry Pi damit verbinden. Unter anderem ist es darüber möglich den Betriebszustand (Stand-By, An) zu ändern oder den Kaffeebezug zu starten.

Verkabelung

Beim ausgeführten Diagnoseanschluss handelt es sich um eine UART-Schnittstelle mit 5 V Pegel. Zur Anpassungen auf die 3,3 V des RPi benötigt es einen Level Converter (z.B. Amazon, 3.3V 5V 2 Channel IIC I2C Logic Level Converter TTL Bidirectional Breadboard)

Kabel braun rot orange - gelb
Stecker [TxD] [GND] [RxD] [n/c] [+5V]
Level Conv HV RXI GND TXO - HV
Level Converter
Level Conv LV RXO GND TXI - LV
RPi Pin 10 6 8 - 1

Besonders Mutige können die 5 V der Kaffeemaschine auch zur Stromversorgung des RPi über einen der 5 V Pins nutzen.

Raspberry Pi

RPi mit Linux der Wahl vorbereiten und sicherstellen, dass /dev/ttyATA0 nicht durch das System selbst genutzt wird (getty in /etc/inittab deaktivieren, Linux Kerneldebugging & -konsole in /boot/cmdline.txt deaktivieren).

PoC Script

#!/bin/bash

stty -F /dev/ttyAMA0 raw 9600

function func() {
echo -en "$1"'\r\n' | xxd -p -c 1 | \
  sed 's/^0/ db db /; s/^1/ db df /; s/^2/ db fb /; s/^3/ db ff /;
      s/^4/ df db /; s/^5/ df df /; s/^6/ df fb /; s/^7/ df ff /;
      s/^8/ fb db /; s/^9/ fb df /; s/^a/ fb fb /; s/^b/ fb ff /;
      s/^c/ ff db /; s/^d/ ff df /; s/^e/ ff fb /; s/^f/ ff ff /;

      s/0$/db db /; s/1$/db df /; s/2$/db fb /; s/3$/db ff /;
      s/4$/df db /; s/5$/df df /; s/6$/df fb /; s/7$/df ff /;
      s/8$/fb db /; s/9$/fb df /; s/a$/fb fb /; s/b$/fb ff /;
      s/c$/ff db /; s/d$/ff df /; s/e$/ff fb /; s/f$/ff ff /;
    ' | xargs -n4 | awk '{ print $4, $3, $2, $1}'  | \
  while read l; do xxd -p -r <<<$l > /dev/ttyAMA0 ; sleep 0.08; done
}

case "$1" in
     an) func AN:01;;
    aus) func AN:02;;
  start) func FA:03;;
esac
# Aufrufbeispiele
./cafe an     # Maschine an
./cafe start  # Kaffeebezug
./cafe aus    # Maschine aus

Befehle

Ausgewählte Befehle für die Siemens surpresso S40

Befehl Funktion
AN:01 Maschine an
AN:02 Maschine aus
FA:03 Kaffeebezug (siehe unten)
FA:02 Fernbedienung ein/stand-by
FA:03 Fernbedienung cafe
FA:04 Fernbedienung clean
FA:05 Fernbedienung calc
FA:06 Fernbedienung Menü rechts
FA:07 Fernbedienung Menü links
FA:08 Fernbedienung Menü Exit
FA:09 Fernbedienung Menü P
FA:0A Fernbedienung Menü P, enter

Quellen