Beschreibung der userConfig.h

Inhaltsverzeichnis

userConfig.h

Im Ordner rancilio-pid/rancilio-pid befindet sich eine für euch wichtige Datei:

  • userConfig_sample.h

In dieser Datei könnt ihr alle grundlegenden Einstellungen vornehmen, wie beispielsweise die genutzten Pins auf dem Mikrocontroller. Diese Einstellungen werden nun gleich genauer erläutert. Die userConfig_sample.h muss in userConfig.h umbenannt werden und mit euren Werten anpasste werden.

Hinweis: Bei einem Update auf eine neuere PID-Version bitte unbedingt auch die neuste Version der userConfig_sample.h nehmen und mit euren Werten aus der alten userConfig.h anpassen. Wenn Ihr das nicht tut, kann dies Fehler beim Kompilieren verursachen oder zu unspezifischem, nicht erwünschtem Verhalten an der Maschine kommen: Display hängt, PID startet nicht und weitere Probleme können auftreten.

Die Parameter in der userConfig.h

Die userConfig.h ist in mehrere Abschnitte unterteilt.

Liste der unterstützten Maschinen

Die Aufzählung MACHINE enthält alle bislang unterstützen Maschinentypen.

enum MACHINE {
  RancilioSilvia,   // MACHINEID 0
  RancilioSilviaE,  // MACHINEID 1
  Gaggia,           // MACHINEID 2
  QuickMill         // MACHINEID 3
};

MACHINEID

Hier müsst ihr die ID eurer Maschine eintragen. Dieser Parameter steuert die Logodarstellung auf dem Display (wenn angeschlossen) und bei der Quick Mill die Erkennung des Brühvorgangs sowie den Dampfmodus bei BREWDETECTION 3.

#define MACHINEID 0                //  see above list of supported machines

DISPLAY

Hier werden alle für das Display relevanten Einstellungen vorgenommen.

#define OLED_DISPLAY 2             // 0 = deactivated, 1 = SH1106 (e.g. 1.3 "128x64), 2 = SSD1306 (e.g. 0.96" 128x64)
#define OLED_I2C 0x3C              // I2C address for OLED, 0x3C by default
#define DISPLAYTEMPLATE 1          // 1 = Standard Display Template, 2 = Minimal Template, 3 = only Temperature, 4 = Scale Template, 20 = vertical Display see git Handbook for further information
#define DISPLAYROTATE U8G2_R2      // rotate display clockwise: U8G2_R0 = no rotation; U8G2_R1 = 90°; U8G2_R2 = 180°; U8G2_R3 = 270°
#define SHOTTIMER 1                // 0 = deactivated, 1 = activated 2 = with scale
#define HEATINGLOGO 1              // 0 = deactivated, 1 = Rancilio, 2 = Gaggia
#define OFFLINEGLOGO 1             // 0 = deactivated, 1 = activated
#define BREWSWITCHDELAY 3000       // time in ms that the brew switch will be delayed (shot timer will show that much longer after switching off)
#define LANGUAGE 0                 // LANGUAGE = 0 (DE), LANGUAGE = 1 (EN), LANGUAGE = 2 (ES)
#define VERBOSE 0                  // 1 = Show verbose output (serial connection), 0 = show less

OLED_DISPLAY definiert den Displaytyp.

OLED_I2C gibt die I2C Adresse an, hier muss in der Regel nichts angepasst werden.

DISPLAYTEMPLATE definiert das Template das ihr verwenden möchtet, siehe Displayausgabe.

DISPLAYROTATE lässt das Display rotieren. Beim Hochformat muss ein entsprechendes vertikales Displaytemplate (20) verwendet werden.

SHOTTIMER (1) aktiviert den Shot Timer, bei der Verwendung einer Waage kann (2) ausgewählt werden, um auch das Gewicht zu sehen.

HEATINGLOGO zeigt euch bis kurz vor Erreichen der Solltemperatur ein entsprechendes Logo an, siehe Displayausgabe.

OFFLINEGLOGO zeigt euch beim Deaktivieren des PIDs ein Logo an, siehe Displayausgabe.

BREWSWITCHDELAY ermöglicht euch einzustellen, wie lange die Dauer des Bezugs im Display noch angezeigt werden soll, nachdem der Brühvorgang bereits beendet ist.

LANGUAGE erlaubt es die Sprache für Displayausgaben auszuwählen.

VERBOSE (…)

PID & Hardware

Hier sind die wichtigsten Parameter für die PID/Hardware definiert.

#define ONLYPID 1                  // 1 = Only PID, 0 = PID and preinfusion
#define ONLYPIDSCALE 0             // 0 = off , 1 = OnlyPID with Scale
#define BREWMODE 1                 // 1 = Brew by time (with preinfusion); 2 = Brew by weight (from scale)
#define BREWDETECTION 0            // 0 = off, 1 = Software (Onlypid 1), 2 = Hardware (Onlypid 0), 3 = Sensor/Hardware for Only PID
#define BREWSWITCHTYPE 1           // 1 = normal Switch, 2 = Trigger Switch
#define TRIGGERTYPE HIGH           // LOW = low trigger, HIGH = high trigger relay
#define VOLTAGESENSORTYPE HIGH     // BREWDETECTION 3 configuration
#define PINMODEVOLTAGESENSOR INPUT // Mode INPUT_PULLUP, INPUT or INPUT_PULLDOWN_16 (Only Pin 16)
#define PRESSURESENSOR 0           // 1 = pressure sensor connected to A0; PINBREWSWITCH must be set to the connected input!
#define TEMPLED 0                  // set led pin high when brew or steam set point is within range

ONLYPID definiert, ob ihr “OnlyPID” (1) oder den “Vollausbau” mit den Relais nutzt (0).

ONLYPIDSCALE (1) erlaubt es beim OnlyPID (1) auch die Waage zu nutzen.

BREWMODE definiert, ob ihr nur das Ventil und die Pumpe steuert (1) oder auch eine Waage verbaut habt (2). Dazu wird in der Zukunft im Handbuch noch mehr stehen.

BREWDETECTION definiert, ob die Brüherkennung per Software (1), Brühschalter beim Vollausbau (2) oder per Sensor bei OnlyPID (3) realisiert ist. Diese ist hier Brüherkennung genauer erläutert.

TRIGGERTYPE HIGH es gibt LOW und HIGH Trigger für das Ventil/Pumpe. Dies wird hier definiert.

VOLTAGESENSORTYPE und PINMODEVOLTAGESENSOR ist für die Konfiguration vom Voltagesensor hier dazu mehr: Brüherkennung bei Only PID

PRESSURESENSOR (…)

TEMPLED (…)

TOF Sensor für Wasserstandmessung

#define TOF 0                      // 0 = no TOF sensor connected; 1 = water level by TOF sensor
#define TOF_I2C 0x29               // I2C address of TOF sensor; 0x29 by default
#define CALIBRATION_MODE 0         // 1 = enable to obtain water level calibration values; 0 = disable for normal PID operation; can also be done in Blynk
#define WATER_FULL 102             // value for full water tank (=100%) obtained in calibration procedure (in mm); can also be set in Blynk
#define WATER_EMPTY 205            // value for empty water tank (=0%) obtained in calibration procedure (in mm); can also be set in Blynk

Habt ihr keinen TOF Sensor, könnt ihr diesen Teil ignorieren und TOF (0) einstellen.

E-Trigger

#define ETRIGGER 0                 // 0 = no trigger (for Rancilio except Rancilio E), 1 = trigger for CPU of Rancilio E
#define ETRIGGERTIME 60            // seconds, time between trigger signal
#define TRIGGERRELAYTYPE HIGH      // LOW = low trigger, HIGH = high trigger relay for E-Trigger

Die Silvia E hat ein Energiesparmodul, dieses kann überbrückt werden mit einem Relais. Dieses kann hier definiert werden, wenn ETRIGGER (1) gewählt wird. Der zugehörige Pin wird später im Abschnitt Pin Layout definiert.

ETRIGGERTIME ist die Zeitdauer zwischen den Signalen.

TRIGGERRELAYTYPE ist der Relaistyp (HIGH oder LOW).

Weight Scale

#define WEIGHTSETPOINT 30          // Gramm

Hier wird mit WEIGHTSETPOINT das Sollgewicht für die Waage definiert.

WiFi

#define HOSTNAME "rancilio"
#define MAXWIFIRECONNECTS 5        // maximum number of reconnection attempts, use -1 to deactivate
#define WIFICINNECTIONDELAY 10000  // delay between reconnects in ms

HOSTNAME ist der Name des Access Points während der WiFiManager läuft.

MAXWIFIRECONNECTS definiert wie viele Reconnects gemacht werden, bis der Fallback aktiviert wird (bei Start der Maschine) oder bis der Offline-Modus aktiviert wird (nach dem erfolgreichen Start).

WIFICONNECTIONDELAY ist die Zeitspanne bis der nächste Reconnect probiert wird.

OTA

#define OTA true                   // true = OTA activated, false = OTA deactivated
#define OTAHOST "rancilio"         // Name to be shown in ARUDINO IDE Port
#define OTAPASS "otapass"          // Password for OTA updates

MQTT

#define MQTT 0                             // 0 = MQTT disabled, 1 = MQTT enabled
#define MQTT_USERNAME "mymqttuser"
#define MQTT_PASSWORD "mymqttpass"
#define MQTT_TOPIC_PREFIX "custom/Küche."  // Topic will be "<MQTT_TOPIC_PREFIX><HOSTNAME>/<READING>"
#define MQTT_SERVER_IP "XXX.XXX.XXX.XXX"   // IP address of locally installed MQTT server
#define MQTT_SERVER_PORT 1883

Backflush values

#define MAXFLUSHCYCLES 5           // Number of cycles the backflush should run, 0 = disabled
#define FILLTIME 3000              // Time in ms the pump is running
#define FLUSHTIME 6000             // Time in ms the 3-way valve is open -> backflush

Pin Layout

Das Pin Layout wird ab Version 3.1.3 automatisch aufgrund des verwendeten ESPs ausgewählt.

Für den ESP32 wird automatisch das zu unserem PCB passende Mapping vorgenommen. Grundsätzlich müssen hier keine Änderungen vorgenommen werden. Wenn doch muss das in der esp32devkitcv4.h gemacht werden.

Für den ESP8266 wird automatisch das zu unserem PCB passende Mapping vorgenommen. Da der ESP8266 aber grundsätzlich nicht genügend Anschlüsse für alle Funktionen hat, müsst ihr hier möglicherweise Hand anlegen. Die Grundfunktionen sind schon fertig belegt, für die Waage, Powerswitch, Steamswitch und TempLED müsst ihr die Pins erst noch konfigurieren. Das ist in der esp8266nodemcuv2.h zu erledigen.