• Please visit and share your knowledge at our sister communities:
  • If you have not, please join our official Homebrewing Facebook Group!

    Homebrewing Facebook Group

BrewPi Remix – What’s Old is New Again

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Hey folks... I'm finally dusting off and unboxing my RaspberryPi 3 that I bought in 2017 with intentions of building a BrewPi.

Seems a lot has changed over the last 7 years. Any suggestions on how I pick back up on this? Can you save me hours of thread sorting and such by pointing me to current hardware I'll want etc..? Any good holistic guides I should read? I found https://www.brewpiremix.com/brewpi-hardware/ which seems concise enough but are there other references worth taking a look at?

I don't remember the details for what I bought back then and how its all supposed to go together. Should I use BrewPi Remix, FermenTrak or is there some other "better" path these days?
 
Hey folks... I'm finally dusting off and unboxing my RaspberryPi 3 that I bought in 2017 with intentions of building a BrewPi.
The strength of the BrewPi is that nothing has changed in what makes a PID a PID, and the BrewPi has always done that well. As such, the controller itself has not changed much. You can still do it with an Arduino Uno (clone.). While these cost a few bucks more than the Espressif line, their advantage lies in the person who appreciates a "large print" approach. The board is physically large, so easier to work with, it has a pin header that comes already attached, making connections simple, and is (almost) the only way a guy who does not want to or know how to solder can put a system together (with the recommended Wago-style connectors.)

With the I2C variant of the Arduino firmware, a person can create a controller with an LCD and maybe even a knob without any soldering if you source the parts well.

The downside to the Arduino is that the controller is physically attached to the Pi. This may or may not be a downside for most folks because, at some point, you have wires in and out of your fridge for something.

@Thorrak has ESP8266 and (maybe not looked) ESP32-based firmwares that work with BrewPi. These almost always require you to at least solder the pin headers on, but the main advantage is the controller will work on WiFI, letting you physically separate the controller and the Pi.

Then you get to the actual interface you use, where the choices are still mainly BrewPi Remix or Fermentrack. They behave differently but ultimately serve as the way for you to see and adjust your controller. Once set, the controllers themselves will work without the Pi and whatever software you choose.

The documentation I made is still correct. The only caveats I would give you is that you should stick with the slightly older Buster or Bullseye, as some minor changes cause errors in the install scripts. Also, stay with 32-bit variants (armhf vs arm64.) If you decide to use Fermentrack, you would want to follow John's instructions.

If you choose BPR and want to go "all in" with all of the possible features of the controller, you want an Uno because (I think this is still true) the ESP variants do not support the rotary encoder (knob), door switch and all that. While you can do this with the I2C variant of the firmware without any soldering, the cleanest way would be to use the shield (you will have to source a board from one of the hobby manufacturers.) Basically, this just makes it easier to connect all the wires and gives you a place to put the resistors and optional capacitors. There are very few for this variant, and there are mostly just a lot of pin connectors.

I do not have a BOM for this variant, but you can open the design in (free) Eagle, and export the BOM. There is also an RJ-45 on this board. You can use it without that, but what it does allow is using a regular Ethernet cable to connect all of the sensors and the door switch to a breakout board inside the fridge as a slightly cleaner option for some folks.

That's it - all the docs are still good and with the exception of "don't use the current Bookworm and stick with 32-bit," all the information is still valid.

I need to update the scripts to use Bookwork or whatever else is next, but honestly, I have more ideas than time. :)
 
I have to say that this stuff makes my head hurt. Probably why I've just now pulled out the hardware I bought in 2017 :p My trusty STC-1000 temp controller has worked for me well. But, I think I'm going to trudge forward now.

Wish me luck!
 
Last edited:
WAGO

Different configurations for different jobs.

1000010350.png
 
Does anyone have any suggestions for a good project box that I can use to mount both the RaspberryPi and Arduino UNO into for a "clean" controller enclosure?
 
Does anyone have any suggestions for a good project box that I can use to mount both the RaspberryPi and Arduino UNO into for a "clean" controller enclosure?
Here's one along the lines of one of the originals (rotary encode, LCD, etc.: https://www.thingiverse.com/thing:3416312

Here's a Tinkercad model for one with a different approach. It assumes the Shield with the RJ45 connector to the sensors: https://www.tinkercad.com/things/bV...e=OQO2XzzCFL8nYIv74kNzq-RXCCT45xABnKP3H-0V-bA

This is the lid for that box: https://www.tinkercad.com/things/5q...e=tykUhdZZCy50V-YjLNMuXrmfWiRnl1OAYlWBzyBQ4Ro

And for some reason I have these standoffs for the LCD, I assume there's a reason: https://www.tinkercad.com/things/lx...e=D8PRtcoy36qul4Kl_kQtd2F8YcKVnbPlTBci8CLV-T8
 
I’d take that Tinkercad one as an idea of how small you could go. I just bought a couple boxes like that for some outdoor WiFi access points, the grid is nice but you may find it’s off for smaller parts.
 
Just got BPR up and running to replace an Inkbird cool/heat 'dumb' controller, very neat, thanks for the work you all have put into it. I could not find an answer to this one in the documentation or forums.

How do you delete old 'Beer profiles' and old 'Beers/Previous beers'? I found the ones in /home/brewpi/data/ and deleted those, but that did not remove everything from the rest of the UI?

And some feedback on the install instructions, it would be good to call out that you need to have your Arduino attached and running with your RPi during install and explain the shields question from the install.

Finally, I use TiltPi running on a different RPi integrated into Brewfather for recording my fermentations. Does that preclude me from adding the Tilt to BPR as every time I try it fails to find it.
 
Hi all! After hearing about this, I had been meaning to install this for a long time, and only recently had some time to do so. I've been using my original install up until now, which is really impressive for an SD card...
All that is to say, I tried getting this to run on the latest version of Raspberry Pi OS Lite 64-bit Bookworm, and for the most part it seems to function, up until it starts failing to load the UI and the UI says the script isn't running (happens after awhile, not immediately). Going to the brewpi, nothing is happening (as in nigh zero readout on CPU, so after attempting to restart the brewpi.service, the logs output:

Bash:
2025-03-21 08:54:22 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 08:56:22 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 08:58:23 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 09:00:23 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 09:00:24 [E] Caught an unexpected exception.
2025-03-21 09:00:24 [E] Error info:
2025-03-21 09:00:24 [E]         Type: <class 'OSError'>
2025-03-21 09:00:24 [E]         Filename: brewpi.py
2025-03-21 09:00:24 [E]         LineNo: 1633
2025-03-21 09:00:24 [E]         Error: [Errno 24] Too many open files: '/var/www/html/data/My BrewPi Remix Run/My BrewPi Remix Run-20250321-1.json'
Traceback (most recent call last):
File "/home/brewpi/brewpi.py", line 1891, in <module>
main()
File "/home/brewpi/brewpi.py", line 1885, in main
shutdown()  # Process graceful shutdown
^^^^^^^^^^
File "/home/brewpi/brewpi.py", line 1837, in shutdown
tilt.stop()
File "/home/brewpi/Tilt.py", line 346, in stop
asyncio.gather(*asyncio.Task.all_tasks()).cancel()
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object '_asyncio.Task' has no attribute 'all_tasks'
2025-03-21 10:03:31 [E] Starting BrewPi.
/home/brewpi/Tilt.py:328: RuntimeWarning: coroutine 'BLEScanRequester.send_scan_request' was never awaited
self.btctrl.send_scan_request()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
/home/brewpi/brewpi.py:751: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
if LooseVersion(hwVersion.toString()) < LooseVersion(compatibleHwVersion):
2025-03-21 10:03:42 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
/home/brewpi/Tilt.py:343: RuntimeWarning: coroutine 'BLEScanRequester.stop_scan_request' was never awaited
self.btctrl.stop_scan_request()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
/home/brewpi/Tilt.py:345: RuntimeWarning: coroutine 'BLEScanRequester.send_command' was never awaited
self.btctrl.send_command(command)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
2025-03-21 10:05:43 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 10:07:44 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 10:09:45 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 10:11:46 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
2025-03-21 10:13:33 [E] Failed to retrieve Orange Tilt value, restarting Tilt.
I believe 09:00:24 is when it effectively crashes due to that too many open files error. The service (in journalctl) also spits out a bunch of:
Bash:
Mar 21 09:56:14 brewpi sshd[15094]: pam_env(sshd:session): deprecated reading of user environment enabled
Mar 21 10:01:34 brewpi sudo[15137]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/systemctl status brewpi.service
Mar 21 10:01:34 brewpi sudo[15137]: pam_unix(sudo:session): session opened for user root(uid=0) by pi(uid=1000)
Mar 21 10:01:34 brewpi sudo[15137]: pam_unix(sudo:session): session closed for user root
Mar 21 10:01:55 brewpi sudo[15142]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/journalctl -S today
Mar 21 10:01:55 brewpi sudo[15142]: pam_unix(sudo:session): session opened for user root(uid=0) by pi(uid=1000)
Mar 21 10:03:05 brewpi sudo[15142]: pam_unix(sudo:session): session closed for user root
Mar 21 10:03:10 brewpi sudo[15147]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/systemctl restart brewpi.service
Mar 21 10:03:10 brewpi sudo[15147]: pam_unix(sudo:session): session opened for user root(uid=0) by pi(uid=1000)
Mar 21 10:03:10 brewpi systemd[1]: Stopping brewpi.service - BrewPi Remix daemon for: brewpi...
Mar 21 10:03:10 brewpi systemd[1]: brewpi.service: Deactivated successfully.
Mar 21 10:03:10 brewpi systemd[1]: Stopped brewpi.service - BrewPi Remix daemon for: brewpi.
Mar 21 10:03:10 brewpi systemd[1]: brewpi.service: Consumed 2min 29.500s CPU time.
Mar 21 10:03:10 brewpi systemd[1]: Started brewpi.service - BrewPi Remix daemon for: brewpi.
Mar 21 10:03:10 brewpi sudo[15147]: pam_unix(sudo:session): session closed for user root
Mar 21 10:03:13 brewpi brewpi[15161]: Traceback (most recent call last):
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/brewpi.py", line 1891, in <module>
Mar 21 10:03:13 brewpi brewpi[15161]:     main()
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/brewpi.py", line 1874, in main
Mar 21 10:03:13 brewpi brewpi[15161]:     checkOthers()  # Check for other running brewpi
Mar 21 10:03:13 brewpi brewpi[15161]:     ^^^^^^^^^^^^^
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/brewpi.py", line 316, in checkOthers
Mar 21 10:03:13 brewpi brewpi[15161]:     allProcesses.update()
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/BrewPiProcess.py", line 137, in update
Mar 21 10:03:13 brewpi brewpi[15161]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:13 brewpi brewpi[15161]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/BrewPiProcess.py", line 137, in <listcomp>
Mar 21 10:03:13 brewpi brewpi[15161]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:13 brewpi brewpi[15161]:                                                                                                            ^^^^^^^^^^^
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/__init__.py", line 719, in cmdline
Mar 21 10:03:13 brewpi brewpi[15161]:     return self._proc.cmdline()
Mar 21 10:03:13 brewpi brewpi[15161]:            ^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1714, in wrapper
Mar 21 10:03:13 brewpi brewpi[15161]:     return fun(self, *args, **kwargs)
Mar 21 10:03:13 brewpi brewpi[15161]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1853, in cmdline
Mar 21 10:03:13 brewpi brewpi[15161]:     self._raise_if_zombie()
Mar 21 10:03:13 brewpi brewpi[15161]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1758, in _raise_if_zombie
Mar 21 10:03:13 brewpi brewpi[15161]:     raise ZombieProcess(self.pid, self._name, self._ppid)
Mar 21 10:03:13 brewpi brewpi[15161]: psutil.ZombieProcess: PID still exists but it's a zombie (pid=12416)
Mar 21 10:03:13 brewpi sudo[15169]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/journalctl -S today -f
Mar 21 10:03:13 brewpi sudo[15169]: pam_unix(sudo:session): session opened for user root(uid=0) by pi(uid=1000)
Mar 21 10:03:17 brewpi brewpi[15173]: Traceback (most recent call last):
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/brewpi.py", line 1891, in <module>
Mar 21 10:03:17 brewpi brewpi[15173]:     main()
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/brewpi.py", line 1874, in main
Mar 21 10:03:17 brewpi brewpi[15173]:     checkOthers()  # Check for other running brewpi
Mar 21 10:03:17 brewpi brewpi[15173]:     ^^^^^^^^^^^^^
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/brewpi.py", line 316, in checkOthers
Mar 21 10:03:17 brewpi brewpi[15173]:     allProcesses.update()
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/BrewPiProcess.py", line 137, in update
Mar 21 10:03:17 brewpi brewpi[15173]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:17 brewpi brewpi[15173]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/BrewPiProcess.py", line 137, in <listcomp>
Mar 21 10:03:17 brewpi brewpi[15173]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:17 brewpi brewpi[15173]:                                                                                                            ^^^^^^^^^^^
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/__init__.py", line 719, in cmdline
Mar 21 10:03:17 brewpi brewpi[15173]:     return self._proc.cmdline()
Mar 21 10:03:17 brewpi brewpi[15173]:            ^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1714, in wrapper
Mar 21 10:03:17 brewpi brewpi[15173]:     return fun(self, *args, **kwargs)
Mar 21 10:03:17 brewpi brewpi[15173]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1853, in cmdline
Mar 21 10:03:17 brewpi brewpi[15173]:     self._raise_if_zombie()
Mar 21 10:03:17 brewpi brewpi[15173]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1758, in _raise_if_zombie
Mar 21 10:03:17 brewpi brewpi[15173]:     raise ZombieProcess(self.pid, self._name, self._ppid)
Mar 21 10:03:17 brewpi brewpi[15173]: psutil.ZombieProcess: PID still exists but it's a zombie (pid=15053)
Mar 21 10:03:21 brewpi brewpi[15182]: Traceback (most recent call last):
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/brewpi.py", line 1891, in <module>
Mar 21 10:03:21 brewpi brewpi[15182]:     main()
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/brewpi.py", line 1874, in main
Mar 21 10:03:21 brewpi brewpi[15182]:     checkOthers()  # Check for other running brewpi
Mar 21 10:03:21 brewpi brewpi[15182]:     ^^^^^^^^^^^^^
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/brewpi.py", line 316, in checkOthers
Mar 21 10:03:21 brewpi brewpi[15182]:     allProcesses.update()
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/BrewPiProcess.py", line 137, in update
Mar 21 10:03:21 brewpi brewpi[15182]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:21 brewpi brewpi[15182]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/BrewPiProcess.py", line 137, in <listcomp>
Mar 21 10:03:21 brewpi brewpi[15182]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:21 brewpi brewpi[15182]:                                                                                                            ^^^^^^^^^^^
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/__init__.py", line 719, in cmdline
Mar 21 10:03:21 brewpi brewpi[15182]:     return self._proc.cmdline()
Mar 21 10:03:21 brewpi brewpi[15182]:            ^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1714, in wrapper
Mar 21 10:03:21 brewpi brewpi[15182]:     return fun(self, *args, **kwargs)
Mar 21 10:03:21 brewpi brewpi[15182]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1853, in cmdline
Mar 21 10:03:21 brewpi brewpi[15182]:     self._raise_if_zombie()
Mar 21 10:03:21 brewpi brewpi[15182]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1758, in _raise_if_zombie
Mar 21 10:03:21 brewpi brewpi[15182]:     raise ZombieProcess(self.pid, self._name, self._ppid)
Mar 21 10:03:21 brewpi brewpi[15182]: psutil.ZombieProcess: PID still exists but it's a zombie (pid=15081)
Mar 21 10:03:24 brewpi brewpi[15191]: Traceback (most recent call last):
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/brewpi.py", line 1891, in <module>
Mar 21 10:03:24 brewpi brewpi[15191]:     main()
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/brewpi.py", line 1874, in main
Mar 21 10:03:24 brewpi brewpi[15191]:     checkOthers()  # Check for other running brewpi
Mar 21 10:03:24 brewpi brewpi[15191]:     ^^^^^^^^^^^^^
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/brewpi.py", line 316, in checkOthers
Mar 21 10:03:24 brewpi brewpi[15191]:     allProcesses.update()
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/BrewPiProcess.py", line 137, in update
Mar 21 10:03:24 brewpi brewpi[15191]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:24 brewpi brewpi[15191]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/BrewPiProcess.py", line 137, in <listcomp>
Mar 21 10:03:24 brewpi brewpi[15191]:     matching = [p for p in psutil.process_iter() if any('python' in p.name() and 'brewpi.py' in s for s in p.cmdline())]
Mar 21 10:03:24 brewpi brewpi[15191]:                                                                                                            ^^^^^^^^^^^
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/__init__.py", line 719, in cmdline
Mar 21 10:03:24 brewpi brewpi[15191]:     return self._proc.cmdline()
Mar 21 10:03:24 brewpi brewpi[15191]:            ^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1714, in wrapper
Mar 21 10:03:24 brewpi brewpi[15191]:     return fun(self, *args, **kwargs)
Mar 21 10:03:24 brewpi brewpi[15191]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1853, in cmdline
Mar 21 10:03:24 brewpi brewpi[15191]:     self._raise_if_zombie()
Mar 21 10:03:24 brewpi brewpi[15191]:   File "/home/brewpi/venv/lib/python3.11/site-packages/psutil/_pslinux.py", line 1758, in _raise_if_zombie
Mar 21 10:03:24 brewpi brewpi[15191]:     raise ZombieProcess(self.pid, self._name, self._ppid)
Mar 21 10:03:24 brewpi brewpi[15191]: psutil.ZombieProcess: PID still exists but it's a zombie (pid=15070)
Mar 21 10:03:31 brewpi brewpi[15208]: Logging to /home/brewpi/logs/.
Mar 21 10:03:31 brewpi brewpi[15208]: Output will not be shown in console.
Mar 21 10:03:31 brewpi brewpi[15208]: Starting BrewPi.
Does this have to do wiith the Tilt? Note that I only restarted the service once, but it looks like it was trying to clean up as many zombies as it could find...

Also, after I had done my install, I was trying to determine what appears to be the highest version of Raspberry Pi OS people are using that's the most stable - is it Buster?
 
I would not go back to an older version. It’s not the OS it’s Python. Yes, you should be able to disable Tilt and get it running and I need to get a moment to merge some userland suggestions to fix the BLE work.
 
Back
Top