La Marzocco GS/3 & Linea Mini support

That’s good to hear. It’s mainly just a peek/poke interface and I would be very surprised if they changed anything in the existing memory map. There appeared to be a lot of unused/unchanging space, so I suspect they just filled some of it in.

I’m periodically annoyed by the display saying “12:xx AM” when it’s noon, so hopefully they fixed that :slight_smile: .

Hi Rob, since the update it is also possible to deactivate the service boiler via the app. A corresponding automation in combination with a schedule (cappuccino in the morning, espresso in the evening) would be a real added value if the entity could be made available.

I finally got my machine to update and I can see a few cosmetic things that need attention in addition to the new functionality. I’ll try to do some research over the weekend.

1 Like

Boo:

STAND-BY 12 26a

Damn! I think iot things it not their forte.

I assume the update will also mean we can trigger the cleaning cycle from HA?

I’m slowly wiping away the cobwebs from the last time I collected app<->machine transactions and I’m making some progress. I can see how they’re enabling preinfusion for plumbed machines (it’s essentially treated as another variant of prebrewing, which uses the pump instead of line pressure) and I can see how they kick off a cleaning cycle:

App: W 00 E1 00 01 82 58 
Machine: W 00 E1 00 01 OK 88

For those playing along at home, that’s “write 1 byte of 0x82 to address 0x00E1”, and the machine reporting success.

On both the GS/3 and LM you still need to physically hit a button on the GS/3 or use the paddle on the LM to start the cleaning cycle once you’ve told the machine to expect it. The command that initiates the process could be easily exposed as a button entity in HA.

Teaser:

And yes, it all works. I wonder what turning off the steam boiler is going to do for temperature stability. At least on the GS/3, the steam boiler is used as a heat exchanger to pre-heat the incoming water (which is then cooled down by mixing with more incoming water :slight_smile: ) before flowing into the brew boiler. The coffee temp is rock solid with that water path.

Also, this may all just be for the GS/3, but the new 1.40 firmware changes the way the brew temperature and offset are calculated. You used to set the brew boiler temperature (at a higher temperature) and then set the offset to adjust for loss from there to the grouphead. Now you set the water temperature you want at the grouphead via the app or machine controls and then set the offset for how much higher the boiler temp needs to be to deliver it. It generally means that you should set a lower brew temperature (what you really want) and flip the sign of the offset from negative to positive, but it’s also a good time to re-measure the group water temp and calibrate the offset. This is how it should have always been, in my humble opinion, so it alone is a good reason to upgrade.

That change was also reflected in a curious way when the machine reports the brew temperature, and required a bunch of hacking and reverse engineering to fix. I finally have it reporting and displaying the right temperature on my GS/3 AV, but I don’t know how it will behave on a LM. I’ll publish the update in a bit and let you guys tell me :slight_smile: .

3 Likes

Can’t wait to test it. Will let you know how it goes on the LM.

I just released v0.9.0 as a beta/prerelease, and it should show up on HACS if you manually update the info for the integration or just wait until it polls again. Let me know how it goes, specifically the temp setting/reporting on an LM. I’ve been running it on my prod HA instance for a week or so with my GS/3 AV, so hopefully it’s in good shape.


Temp on LM looks to be +10 deg C, my machine is set at 93C and shows that temp in LM app. But on 0.90 beta shows as 103C.

I’m seeing a similar temperature reading using Fahrenheit on my LM as well. Prior to the update it would hover around 202ºF and after its 220ºF.

Ok, I’ll need to think about how to debug this.

The problem is that the temperature reports are now based on the brew boiler temp and not the actual temp at the puck (which is what the GS/3 display shows, and I confirmed with a Scace device), so I try to take the offset specified in the GS/3 config options into account to calculate the right temperature. While I found the offset and reverse engineered how it’s represented, all the config values change based on whether the machine is set for Celsius or Fahrenheit. I suspect that you can’t set an offset on the LM at all, so I don’t know what that data looks like. It’s all very complicated.

Do you LM owners have a way to specify a temperature offset from coffee boiler->grouphead?

I’m also almost done updating the Lovelace card to enable/disable preinfusion and set the time. And I already found a small bug in the code to set the preinfusion time.

It’s about 10c above my configured temp. There is only one temp setting on the LM. No offsets.

Could either of you replace api.py in /config/custom_components/lamarzocco with this one and enable debug with custom_components.lamarzocco: debug?

api.py (4.7 KB)

You should get a large data structure in your log every so often with all the data lmdirect has collected. I’m looking for the values of these in there:

'brew_group_offset'
't_unit'
'coffee_temp'
'steam_temp'

Edit: okay, good to test now

Thanks for your efforts!

My LM is outputting:

'brew_group_offset': -10.0
't_unit': 0
'coffee_temp': 101.0
'steam_temp': 0.0

Note:

  1. Both boilers are turned on so the steam_temp is not correct.
  2. 101.0 is the correct configured temp which is output in the log but not on the card.

Ok, thanks. That’s useful. I think the steam boiler in an LM is controlled via a pressurestat and not a PID, so it doesn’t know what the temperature is. I was just curious what it reported.

What card are you using for the temperature? Does coffee_temp change over time to what’s displayed on the card? The data is collected over time and I do the math as it becomes available, so it may take a couple of minutes to settle down. I adjust coffee_temp based on brew_group_offset when it shows up and it sounds like you may have an in-between reading where the offset is available, but hasn’t been acted on yet.

Edit: Try v0.9.1, which I just published. I think I understand the values in the data better and it should assume zero offset for the LM.

It would also be really helpful if someone else with a GS/3 AV or MP could run the same experiment above and tell me what you get for t_unit. I suspect that it’s the factory-set offset, but I don’t know if it varies from machine to machine. If it does, I need to find a better way to handle it.

Updated to v0.9.1 and it appears the temperature is now reporting correctly on my LM. Steam Boiler state also reflecting correctly. Excellent work, thanks!

2 Likes

Working for me too.

1 Like

Secret installation stats:

Total: 17
0.9.1: 3
0.9.3: 3
0.7.5: 11

I encourage all the “0.7.5” stragglers to update to 0.9.3!

I knew there was something fishy about their new temp calculation. From an email today:

We have found a bug in the most recent version of the GS3 firmware, which is included as part of the v2.0 release of the La Marzocco Home App, and would like to explain you how to quickly fix it.

This bug, which was accidentally introduced with the latest firmware update, causes the actual brew temperature to differ from the expected value.
The issue is related to how the firmware manages the coffee boiler temperature offset, which represents the delta between the temperature measured by the coffee boiler temperature probe and the value displayed as “brewing temperature”.

The proposed fix is to manually return the offset to the “factory default” of 2.0C/3.6F, which I still don’t think results in the real temp matching the displayed temp (I have my measured offset at 0.5C/0.9F). It sounds like their planned “fix” is just to force the offset back to that factory value via another firmware update. Hopefully that’s all it does and doesn’t require any changes to my library.

I may be the only one using it (which is fine, since I wrote it for me!), but I updated the dashboard card to support preinfusion: