====== 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. {{:projekte:picafe:dsc_0506.jpg?200|}} Anhand bereits verfügbarer [[#Quellen|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. {{:projekte:picafe:dsc_0502.jpg?200|}} ==== 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. [[http://www.amazon.de/dp/B00MHUCVQC/ref=pe_386171_38075861_TE_item|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 ==== * [[https://github.com/oliverk71/Coffeemaker-Payment-System]] * [[https://github.com/Q42/coffeehack/blob/master/jura.py]] * [[https://web.archive.org/web/20150403060309/http://protocol-jura.do.am/index/serial_interfaces/0-6]] * [[https://web.archive.org/web/20150131054155/http://protocol-jura.do.am/index/protocol_to_coffeemaker/0-7]] * [[https://web.archive.org/web/20150131045302/http://protocol-jura.do.am/index/commands_for_coffeemakers/0-5]]