Skip to content

Custom Recipe Scripts

Andrew J Freyer edited this page May 8, 2024 · 7 revisions

⚠️ DEPRECATION WARNING: This entry relates to v1 of this project and has been deprecated/updated as of v2.

Recipe/Automation/Scripts

Each of these are sequences of commands that track status of the machine while simulating button presses. In this way, no risk of accidentally damaging the machine is present (no greater risk than a user pressing buttons randomly at random times).

Consider these steps as "rising edge" automations - once an underlying condition is satisfied for a particular instruction, the next instruction is immediately started. So a "msg" command followed by another "msg" command will show the first command for only a fraction of a second. Similarly, "wait ready" will clear immediately once the bridge recognizes the machine is in a ready state. Pump state is for turn-on.

Reminder that we cannot change the display when the machine takes over the display (e.g., "READY / M-RINSE" or "READY / FILTER"). This is because the display control board will immediately overwrite whatever we write. Any instructions that need to be seen by a user need to be shown at a different time or by a different method.

These commands are case sensitive:

Command Format Description Notes
"msg" ["msg", "MESSAGE"] What to show on the display Must be 10 characters or less (otherwise will be trimmed), recommend padding front with spaces to center on display.
"wait press" ["wait press", 30] Require pressing of "secret menu" button; time in seconds for a timeout
"delay" ["delay", 1000] Delay in milliseconds
"wait ready" ["wait ready"] Advance to next step only when machine is ready Recommend slight delay after this command
"wait heat" ["wait heat"] Wait for thermoblock to be at brew temp Not necessary in almost all cases
"wait water" ["wait water", 60] wait for N ml of water to be dispensed Should always be followed by an interrupt
"wait foam" ["wait foam", 60, 0.23] wait for N ml of foam to be dispensed Needs to include a scaling factor in addition to the target foam volume because the machine reports water volume dispensed through the Venturi as steam; for milk this number is 0.23, but the scaling factor will vary from foam precursor to foam precursor depending upon the density of the product and the propensity to foam. Should always be followed by an interrupt
"wait pump" ["wait pump"] Wait for pumping to begin
"press espresso" ["press espresso"] Cause the bridge to press the appropriate button Typically will be followed by a foam instruction
"press cappuccino" ["press cappuccino"] Cause the bridge to press the appropriate button Not as useful; Interrupt and dispense meters will not work as expected; recommend do not use.
"press macchiato" ["press macchiato"] Cause the bridge to press the appropriate button Not as useful; Interrupt and dispense meters will not work as expected; recommend do not use.
"press water" ["press water"] Cause the bridge to press the appropriate button Typically will be followed by a foam instruction
"press milk" ["press milk"] Cause the bridge to press the appropriate button Typically will be followed by a foam instruction
"interrupt" ["interrupt"] Interrupt whatever ongoing pumping process is happening

Example Recipes

Double Ristretto Custom Recipe

Topic:    jurabridge/command
Payload:    
          [
            ["msg", " MORNING!"],
            ["delay", 1000],
            ["msg", "  STEP 1"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg", "  STEP 2"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg", "    :)"],
            ["delay", 5000]
          ]

Double Ristretto with Cup Pre-warming

Topic:    jurabridge/command
Payload:    
          [
            ["msg", " MORNING!"],
            ["wait ready"],
            ["delay", 1000],
            ["msg", " PRE-WARM "],
            ["delay", 1000],
            ["press water"],
            ["delay", 4000],
            ["wait pump"],
            ["wait water", 100],
            ["msg", "   WAIT"],
            ["interrupt"],
            ["wait ready"],
            ["delay", 4000],
            ["msg", " EMPTY CUP"],
            ["delay", 3000],
            ["msg", " EMPTY 5"],
            ["delay", 1000],
            ["msg", " EMPTY 4"],
            ["delay", 1000],
            ["msg", " EMPTY 3"],
            ["delay", 1000],
            ["msg", " EMPTY 2"],
            ["delay", 1000],
            ["msg", " EMPTY 1"],
            ["delay", 3000],
            ["msg", " STEP 1/2"],
            ["delay", 3000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg", " STEP 2/2"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg", "    :)"],
            ["delay", 5000]
          ]

Cup Pre-Warming

Topic:    jurabridge/command
Payload:    
          [
            ["msg", " MORNING!"],
            ["wait ready"],
            ["delay", 1000],
            ["msg", " PRE-WARM "],
            ["delay", 1000],
            ["press water"],
            ["delay", 4000],
            ["wait pump"],
            ["wait water", 100],
            ["msg", "   WAIT"],
            ["interrupt"],
            ["wait ready"],
            ["delay", 4000],
            ["msg", " EMPTY CUP"],
            ["delay", 5000]
          ]

Short Cappuccino

Topic:    jurabridge/command
Payload:    
          [
            ["delay", 1000],
            ["msg", " STEP 1/3"],
            ["delay", 2000],
            ["wait ready"],
            ["press milk"],
            ["wait pump"],
            ["wait foam", 60, 0.23],
            ["interrupt"],
            ["wait ready"],
            ["msg", " STEP 2/3"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg"," STEP 3/3"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg", "    :)"],
            ["delay", 5000]
          ]

Short Americano

Topic:    jurabridge/command
Payload:    
          [
            ["delay", 1000],
            ["msg", " STEP 1/3"],
            ["delay", 2000],
            ["wait ready"],
            ["press water"],
            ["wait pump"],
            ["wait water", 60],
            ["interrupt"],
            ["wait ready"],
            ["msg", " STEP 2/3"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg"," STEP 3/3"],
            ["delay", 2000],
            ["wait ready"],
            ["press espresso"],
            ["wait pump"],
            ["wait water", 30],
            ["interrupt"],
            ["msg", "    :)"],
            ["delay", 5000]
          ]