▲ 6 r/Coffee_Machines+1 crossposts

My DIY coffee machine controller ESP32, PID, dual temperature sensing, flow monitoring & Wi-Fi

​

I built a smart coffee machine controller using an ESP32 ☕

The idea was to turn the machine into a connected system where I can monitor and control it from my phone or laptop instead of having everything handled by a basic standalone controller.

The controller currently includes:

• ESP32 WROOM-32

• Dual NTC temperature monitoring

• ADS1115 for temperature sensing

• AC SSR heater control

• 8-channel relay control

• Flow meter monitoring

• Ambient light sensing

• LCD + rotary encoder

• Wi-Fi connectivity

• OTA firmware updates

The interesting part for me is the Wi-Fi side.

Once the ESP32 is connected to the network, I can open the web dashboard and see the machine's status in real time.

The dashboard is designed to show:

🌡️ Live boiler/grouphead temperature

💧 Flow information

🔥 Heater/SSR status

⚡ Machine outputs and relay states

☕ Current machine state

💡 Ambient light level

⚙️ Temperature settings and controls

The ambient light is there to make the machine a little more interactive. the lights can be configured via web portal . We can set different colours for different modes . whenever a sensor error occurs it wil start blinking red.

I can also control different machine functions remotely through the dashboard instead of physically interacting with the controller.

u/Froster_navendu — 12 days ago
▲ 9 r/scrcpy

I built a new --app-only privacy feature for scrcpy to auto-blackout other apps while mirroring. Here is my first contribution!

I accidentally exposed my private chats during a client demo... so I added an "app-only" mode to scrcpy.

I'm a Flutter developer, and I use scrcpy every day to mirror my Android test devices during development, demos, and client meetings.

A few days ago, I was on a client call and instinctively swiped back to the home screen to check something. Unfortunately, that also revealed notifications and a private chat for a moment. Nothing serious happened, but it was definitely one of those "I wish that never happened" moments.

That got me thinking: scrcpy mirrors the entire screen, but there isn't a way to mirror just a single application while hiding everything else.

So I decided to dive into the codebase and build it.

This also turned into my first contribution to the scrcpy project.

The feature

I added a new option:

scrcpy --app-only com.example.app

When the specified app is in the foreground, everything works normally.

The moment you switch to another app (launcher, Settings, WhatsApp, Chrome, etc.), the mirrored stream turns into a black screen. As soon as you return to the target app, the video resumes automatically.

How it's implemented

  • Desktop client (C):
    • Added CLI parsing for --app-only
    • Validates unsupported modes (camera/OTG)
  • Android server (Java):
    • Periodically checks the current foreground package using IActivityTaskManager via reflection to support multiple Android versions.
    • Determines whether the target package is currently active.
  • Rendering:
    • Instead of freezing the last frame, OpenGLRunner clears the rendering surface with glClear(), so viewers only see a black screen whenever another app is opened.

What I learned

This was my first time contributing to a fairly large native/Android open-source project. Coming from Flutter, it was a great opportunity to understand how scrcpy is structured across its C desktop client and Java Android server, and how the two communicate.

More importantly, it solved a problem I actually ran into during my own workflow.

I'd love to hear what you think. Have you ever had a similar "screen-sharing panic" moment?

PR: https://github.com/Genymobile/scrcpy/pull/6933

u/Froster_navendu — 1 month ago