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

    Homebrewing Facebook Group

[Version 2 Release] RaspberryPints - Digital Taplist Solution

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
There's no "power problem" with the RPi3, just a "power penalty" if one is not using both the onboard WiFi and Bluetooth adapters.
Eg, if you use just the WiFi, you're still powering the Bluetooth module. Given the scope of RPi applications, that can matter.

btw, "performance" and "RaspberryPints" isn't a thing. An RPiB runs RaspberryPints just fine, though screen updates might take a full second. An RPi2B can update the display in an unnoticeable blink if the thread has the right-of-way.
I have R'Pints, 3 instances of BrewPi, and a 6 channel temperature logger all running on an RPi2B and it is as smooth as puppy poo ;)

fwiw, imo anyone going a similar route should remember they are basically building an appliance, not a desktop workstation.
Among other things, don't take a running complex and start doing software updates just because they exist.
eg: I haven't done an apt get upgrade on my production system or its backup clone in at least a year.

Also, always have a working backup SD card. Always...

Cheers!
One possible caveat to that is the KRACK patch that came out for Wifi (which will be included in your Jessie apt-get upgrade of your initial install these days anyway), but unless you are living in an apartment complex and using your Pi to access your online banking page, it is pretty low risk...
 
There's no "power problem" with the RPi3, just a "power penalty" if one is not using both the onboard WiFi and Bluetooth adapters.
Eg, if you use just the WiFi, you're still powering the Bluetooth module. Given the scope of RPi applications, that can matter.
...
Also, always have a working backup SD card. Always...

Cheers!

ha! that's awesome. This will *likey*- as I'm building it- only be for the tap. Who knows how he'll hack it. Have you known anyone to do it straight to the Pi and omit the arduino all together?
 
[...]Have you known anyone to do it straight to the Pi and omit the arduino all together?

The Arduino is only required for flow meter support - and for that, it is required - at least wrt RaspberryPints.
There may be some other project that clocks flow meters with just an RPi but that isn't how R'Pints works...

Cheers!
 
One possible caveat to that is the KRACK patch that came out for Wifi (which will be included in your Jessie apt-get upgrade of your initial install these days anyway), but unless you are living in an apartment complex and using your Pi to access your online banking page, it is pretty low risk...

Good reason to avoid WiFi when possible.
I'm a big fan of wire. Everything "fixed" in my home is wired. Only portables are on WiFi here...

Cheers!
 
Sorry if this has already been asked but I can't find anywhere that it is posted. I have a RPI3 with Pints v2 running everything is set and working great. My question is if there is a way to use YF-S201 hall flow sensors connected to a pi directly or with resistors inline? I would like to not have to add an arduino or secondary board. If there is can anyone tell me if there is a write up on this or any code that has been done. I would greatly appreciate it.
 
Sorry, no, there is zero support for that method baked into RaspberryPints.
I imagine it could be done though I don't know how reliable it would work.
You'd have to cobble up the code to monitor the meter pins and generate a pour record (essentially replacing the flow_monitor.py code) and then modify/replace pours.php to insert pour records into the database...

Cheers!
 
Last edited:
The great news is that despite the original project being long abandoned by the original developers, we have an amazing community here that will help you every step of the way to get your RPints setup up and running!

I know! this forum is great! i don't thing i would have undertaken it if this wasnt here. Really, it seems everyone here is very capable..we should just write a new one and make a nice package for it :)
 
Hey all- I'm in the
'Edit /var/www/html/python/flow_monitor.py
Find these two lines:

# Edit this line to point to where your rpints install is
poursdir = '/var/www'

Change /var/www to /var/www/html'

I'm in the file but entering the keys puts me at a cursor on the bottom; hitting dlete in the proper location moves the location back without removing characters.
 
Last edited:
The procedure actually wanted you to download the archive to your home folder (eg: /home/pi) and unzip it from there, which would create a new folder at /home/pi/RaspberryPints-x.x.x.x.
THAT is the folder you can completely remove after you've moved the contents to /var/www/html.

Otoh, if you put the archive at /var/www/html and unpacked it from there, the files would end up in /var/www/html/RaspberryPints-x.x.x.x.
You'd then have to move them up to /var/www/html to get back in the game, after which you could delete the zip file and the /var/www/html/RaspberryPints-x.x.x.x. folder...

Cheers!
 
ugh, you guys? When I was filling out the initial RasPints UN/PW/email, i put in the UN and hit 'tab' to get to the password field- and it for some reason went straight into the raspints menu. It now logs in with that UN and no password, and no way to recover since I never got the email field in. Halp?
 
No need to re-wire. If you're registering pours, you're wired up correctly. Temperature changes and bubbles coming out of suspension seem to be the culprit. You definitely need a fan inside of your cooler to move air around. I and others have also found that if you coil your excess beverage lines neatly on top of the keg and have your flow meter horizontal, you'll minimize the phantom pours.

Occasionally, like once every three or four kegs, I'll get a huge phantom pour or a group of pours right together. The rest of the time I'll get a tick or two on the meter. By the time I'm at the end of the keg, all of the ticks add up to a pint or so. If I'm not being lazy, I'll delete the ticks near the end of the keg and I'll end up with a surprisingly accurate accounting of what's really happened. It is funny how much joy I get out of having the keg kick within a pint one way or the other of what 'Pints is telling me.
Well I've moved it to another tap. No problems as well as nothing on the original tap with the original problem. I think the issue was with air in the line that never seemed to clear. Not sure why I had that problem with that particular beer but now it pours steady and not so much head and its been 2 days without a ghost pour. Hopefully it stays that way. I guess lesson learned but good to know as it was pretty annoying to see all the phantom pours overnight like I had to constantly watch it.
 
ugh, you guys? When I was filling out the initial RasPints UN/PW/email, i put in the UN and hit 'tab' to get to the password field- and it for some reason went straight into the raspints menu. It now logs in with that UN and no password, and no way to recover since I never got the email field in. Halp?
Hey there,

If you've installed RPints in /var/www then run this command:
Code:
sudo mv /var/www/includes/config.php /var/www/includes/config.backup

Alternatively if you've installed in into /var/www/html run this command:
Code:
sudo mv /var/www/html/includes/config.php /var/www/html/includes/config.backup

Then open RPints in a browser (if it's already open refresh the page), and you'll be back to the config page again.

Cheers,

Kal
 
Hey all- I'm in the
'Edit /var/www/html/python/flow_monitor.py
Find these two lines:

# Edit this line to point to where your rpints install is
poursdir = '/var/www'

Change /var/www to /var/www/html'

I'm in the file but entering the keys puts me at a cursor on the bottom; hitting dlete in the proper location moves the location back without removing characters.

Sounds like you were using 'vi' to edit that file, 'nano' is much more user friendly for non-linux users, so try:
Code:
nano /var/www/html/python/flow_monitor.py

Alternatively you can persist with vi but you'll need to know the commands: https://www.cs.colostate.edu/helpdocs/vi.html

Cheers,

Kal
 
[...]I think the issue was with air in the line that never seemed to clear. [...]

The one time I had an extended problem with phantom pours was due to CO2 breakout from an over-carbed keg.

fwiw, my meters are located 12" from the beer QD, with 12 more feet of Bevlex 200 (ie: generic solid pvc beer line) to 5 of 6 faucets (15 feet for the sixth). The lines are coiled atop the kegs, there's a 120mm fan slowly keeping the keezer air temperature even, I have a 40mm tower cooler blower running up the t-tower, and the controller differential is set to +/- 1°F.

All of that is to try to keep system-wide CO2 breakout to a minimum through all four seasons. And a ghost pour is rare indeed...

Cheers!
 
h
Sounds like you were using 'vi' to edit that file, 'nano' is much more user friendly for non-linux users, so try:
Code:
nano /var/www/html/python/flow_monitor.py

Alternatively you can persist with vi but you'll need to know the commands: https://www.cs.colostate.edu/helpdocs/vi.html

Cheers,

Kal
ha, yup. I was entering the tutorial a little bit too literally and hitting 'edit [path] [file]' instead of 'sudo nano'. I'm taking lots of notes on this process and think I'll do an instructable when I'm done.

A new thing- no matter the orientation, my beer list runs off the edge of the screen, like the rows are too tall (i have the generic population in the beers, deleted to 3 taps as that's the system it's going into). When it's in vertical and I have only 3 taps, it's running off my little 7" 16:9 720p testing monitor, at the bottom.
Is there a consolidated list of CSS tweaks somewhere? I moved the raspberry pints logo file to /home/pi to get it off the screen, that worked nicely. What about chaning the font of 'on tap' or other things?

I saw this post about using the beersmith images for beer color. Has anyone added a way to choose glass style?
edit: here it is with the default background. I don't like the big blank part at the bottom- any way to add a blank row, or at least extend grid?
 

Attachments

  • IMG_0891.jpg
    IMG_0891.jpg
    19.8 KB
Last edited:
Well at only 3 in the morning I got the fancier SRM images to show up :p I'm learning more about beer doing this project than I thought I would.

I have an arduino 101 and an arduino uno- does it matter which one I use?
Succesfully added the new beer images- if i have time I'll make nicer ones for the ABV as well but i think that column is a little suplerflurous.
How did y'all get the 'tap number' to be an image instead?
 
Last edited:
Well at only 3 in the morning I got the fancier SRM images to show up :p I'm learning more about beer doing this project than I thought I would.

I have an arduino 101 and an arduino uno- does it matter which one I use?
Succesfully added the new beer images- if i have time I'll make nicer ones for the ABV as well but i think that column is a little suplerflurous.
How did y'all get the 'tap number' to be an image instead?
Wow, working this until 3am your BF is one lucky guy, you'll have to invite him here once you give him his present so he can see the effort you put into it!

For tap images, look for these lines in your index.php file:
PHP:
                        <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                            <th class="tap-num">
                                TAP<br>#
                            </th>
                        <?php } ?>

Around line 111 on a virgin index.php file so may be slightly different on a modified one, and change to this:
PHP:
                         <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                             <td class="tap-num">
                                 <img src="img/tap/<?php echo $i; ?>-tap.png" alt=""></a>
                             </td>
                         <?php } ?>
Then at the bottom of your index.php file look for these lines:
PHP:
                          <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                              <td class="tap-num">
                                  <span class="tapcircle"><?php echo $i; ?></span>
                              </td>
                          <?php } ?>
Then change them to match what you entered at the top:
PHP:
                         <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                             <td class="tap-num">
                                 <img src="img/tap/<?php echo $i; ?>-tap.png" alt=""></a>
                             </td>
                         <?php } ?>
Then put your image files into a new directory: /img/tap/ using the naming convention "1-tap.png", "2-tap.png", etc like this:

taps.png

Let me know if you get stuck (which I doubt you will if you've already got the Beersmith images up).

Cheers,

Kal
 
Wow, working this until 3am your BF is one lucky guy, you'll have to invite him here once you give him his present so he can see the effort you put into it!

For tap images, look for these lines in your index.php file:
PHP:
                        <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                            <th class="tap-num">
                                TAP<br>#
                            </th>
                        <?php } ?>

Around line 111 on a virgin index.php file so may be slightly different on a modified one, and change to this:
PHP:
                         <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                             <td class="tap-num">
                                 <img src="img/tap/<?php echo $i; ?>-tap.png" alt=""></a>
                             </td>
                         <?php } ?>
Then at the bottom of your index.php file look for these lines:
PHP:
                          <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                              <td class="tap-num">
                                  <span class="tapcircle"><?php echo $i; ?></span>
                              </td>
                          <?php } ?>
Then change them to match what you entered at the top:
PHP:
                         <?php if($config[ConfigNames::ShowTapNumCol]){ ?>
                             <td class="tap-num">
                                 <img src="img/tap/<?php echo $i; ?>-tap.png" alt=""></a>
                             </td>
                         <?php } ?>
Then put your image files into a new directory: /img/tap/ using the naming convention "1-tap.png", "2-tap.png", etc like this:

View attachment 549907
Let me know if you get stuck (which I doubt you will if you've already got the Beersmith images up).

Cheers,

Kal

I'll get right on it- right now some of the design is driving me nuts. The relative size of the text of the beer names, and that the IBU graphic is lower than the SRM graphic. Do happen to have an idea of which lines in CSS are ref'ing that? i've tried altering a few things but it doesn't seem to take.
 
You pretty much has to paw through the entire index.php while tweaking the CSS file to get all the fonts where you like them. You might even want to split a class that by default share the same CSS entry so they use separate entries (I did).
I'm fortunate to have a workstation with three 27" screens so I plop a Chrome session on one, open the php file in a local text editor via WinSCP on another and the css file in a second editor on the third screen, then after saving copies of the files I can go to town and see the effects immediately. As I recall I was all over the CSS making changes...

Cheers!
 
so..what are the next steps to the arduino? Load the raspberrypints.ino file onto the uno, connect with a usb..

...
...profit?
 
From https://www.homebrewtalk.com/forum/...-taplist-solution.487694/page-67#post-8040187

If using an Uno instead of AlaMode

Do not perform the AlaMode support installation in Step 6 of the raspberrypints installation procedure. Skip Step 6 entirely.

The Python port "listener" needs to know what device to monitor for "pour" messages.
The default setting is to listen for TTYS0, while an Uno connected via USB will typically show up as TTYACM0.

Edit /var/www/html/python/flow_monitor.py
Find these lines:

#The following line is for serial over GPIO
port = '/dev/ttyS0'
#The following line is for serial over USB
#port = '/dev/ttyACM0'

Add a comment # in front of the ttyS0 line and remove same from the ttyACM0 line.


You'll still need to load the sketch on your Uno, but otherwise the above is pretty much all you need to tweak...

Cheers!
 
From https://www.homebrewtalk.com/forum/...-taplist-solution.487694/page-67#post-8040187

If using an Uno instead of AlaMode

Do not perform the AlaMode support installation in Step 6 of the raspberrypints installation procedure. Skip Step 6 entirely.

The Python port "listener" needs to know what device to monitor for "pour" messages.
The default setting is to listen for TTYS0, while an Uno connected via USB will typically show up as TTYACM0.

Edit /var/www/html/python/flow_monitor.py
Find these lines:

#The following line is for serial over GPIO
port = '/dev/ttyS0'
#The following line is for serial over USB
#port = '/dev/ttyACM0'

Add a comment # in front of the ttyS0 line and remove same from the ttyACM0 line.


You'll still need to load the sketch on your Uno, but otherwise the above is pretty much all you need to tweak...

Cheers!
done all that- saw someone hooked it up over serial, but others say USB. Is that ll i need to do, hook up a usb?
 
hahaha! Perfect :D
One could "Get Small" and use a Pi Zero running Jessie with an Arduino Nano connected via USB.
Should work. iirc the Zero uses the same SOC as the B...

Cheers!
 
Hey all, I'm at step nine and edited the directory change in the py already to /var/www/html. When I run the steps I get this:

pi@RaspberryPints:/etc/init.d $ sudo chmod a+x /etc/init.d/flowmon start $ ps aux | grep flow_monitor.py

chmod: cannot access ‘start’: No such file or directory

chmod: cannot access ‘$’: No such file or directory

chmod: cannot access ‘ps’: No such file or directory

chmod: cannot access ‘aux’: No such file or directory


also tried:

pi@RaspberryPints:/ $ sudo /etc/init.d/flowmon start $ ps aux | grep flow_monitor.py

Failed to start flowmon.service: Unit flowmon.service failed to load: No such file or directory.
 
Last edited:
Hey all, I'm at step nine and edited the directory change in the py already to /var/www/html. When I run the steps I get this:

pi@RaspberryPints:/etc/init.d $ sudo chmod a+x /etc/init.d/flowmon start $ ps aux | grep flow_monitor.py

chmod: cannot access ‘start’: No such file or directory

chmod: cannot access ‘$’: No such file or directory

chmod: cannot access ‘ps’: No such file or directory

chmod: cannot access ‘aux’: No such file or directory


also tried:

pi@RaspberryPints:/ $ sudo /etc/init.d/flowmon start $ ps aux | grep flow_monitor.py

Failed to start flowmon.service: Unit flowmon.service failed to load: No such file or directory.

Code:
sudo /etc/init.d/flowmon start $ ps aux | grep flow_monitor.py

Should be two separate lines, try:
PHP:
sudo /etc/init.d/flowmon start
ps aux | grep flow_monitor.py
 
OK, so, i got it to return something, but I'm getting the 'active (exited)' as part of the return that other people have posted here. I can't find a post describing what the answer might be.

pi@RaspberryPints:~ $ sudo /etc/init.d/flowmon start

[ ok ] Starting flowmon (via systemctl): flowmon.service.

pi@RaspberryPints:~ $ sudo /etc/init.d/flowmon status

● flowmon.service - LSB: Put a short description of the service here

Loaded: loaded (/etc/init.d/flowmon)

Active: active (exited) since Sun 2017-12-17 07:37:06 UTC; 38min ago

Process: 468 ExecStart=/etc/init.d/flowmon start (code=exited, status=0/SUCCESS)

edit: found this in a previous thread. I have it running on an Uno, as pins 8/9/10. Could this be my problem? i don't know if there's a difference between the alamode it was written for and when It's running on an uno:

- If the meter is plumbed, pour a couple of ounces, else blow moderately through it in the right direction.
If the meter is detected by the AlaMode it should post a terse (3 line) message up to the listener script, which include the pin and pour value.

If you don't get any response, make sure the sketch was set up to use the same pin you're trying to use.
fwiw, pins known to work are 2 and 5 through 11. 3 and 4 will not work, 12 should work, 13 may be problematic.
 
Last edited:
Thanks guys, I downloaded a older version with jessie, and got RaspberryPints running, now I just need to get my flow meters.

For anyone else who is going back and using a archived version of raspberian, before you can do the

sudo apt-get update

you first need to

sudo nano /etc/host

go to the bottom and enter

93.93.128.193 mirrordirector.rasbian.org
93.93.128.191 archive.raspian.org

before doing this I was unable to update or download any packages
What version of Jessie did you use. I cannot seem to get it to work. I am very new to Linux based OS.
 
[...]
pi@RaspberryPints:~ $ sudo /etc/init.d/flowmon status

● flowmon.service - LSB: Put a short description of the service here
Loaded: loaded (/etc/init.d/flowmon)
Active: active (exited) since Sun 2017-12-17 07:37:06 UTC; 38min ago
Process: 468 ExecStart=/etc/init.d/flowmon start (code=exited, status=0/SUCCESS)

edit: found this in a previous thread. I have it running on an Uno, as pins 8/9/10. Could this be my problem? i don't know if there's a difference between the alamode it was written for and when It's running on an uno:

Should be no problem with those pins, even on an Alamode. The known-to-work pins are 2, 5-11 on both Uno and Alamode. There may be other pins that work, but I can vouch for these.

As for the exiting listener problem, make sure you have the correct port assignment in flow_monitor.py...

Cheers!
 
I apologize if this has been covered before but for my raspberry pints setup I have a PI3 running pints with flow meters and I love it. For my display instead of using the traditional hdmi monitor I'm using a fire 8" tablet remotely wall mounted and running fully kiosk browser. It just loads my pints webpage and wakes up on motion as I walk up to it and displays my list. I love this setup and works perfectly, however, in order to get my page to refresh with new keg volumes I have to set fully to auto refresh once per minute and that works but as it refreshes the screen goes goofy and it looks weird for no reason besides being excessive on the refresh. What I want to know is if there is a way to force all connected clients to the apache web server to refresh when a pour happens? That would keep my refresh requests down and my list would always look nice and then blink right after a pour and I'd know it was updated.
 
What means "I have to set fully to auto refresh"?
I do not believe the server can force a screen update on a connected "client"; I believe the "client" has to ask.
Usually that's done with a meta refresh tag placed in the page header, such as:

Code:
<meta http-equiv="refresh" content="300">

with the numeric value = the seconds between refreshes, so 5 minutes in the above example.
For RaspberryPints, stick that in index.php right after this header block which occurs around line# 61:

Code:
<html>
    <head>
        <title>RaspberryPints</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

That's about the best one can do, I believe...

Cheers!
 
What means "I have to set fully to auto refresh"?
I do not believe the server can force a screen update on a connected "client"; I believe the "client" has to ask.
Usually that's done with a meta refresh tag placed in the page header, such as:

Code:
<meta http-equiv="refresh" content="300">

with the numeric value = the seconds between refreshes, so 5 minutes in the above example.
For RaspberryPints, stick that in index.php right after this header block which occurs around line# 61:

Code:
<html>
    <head>
        <title>RaspberryPints</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

That's about the best one can do, I believe...

Cheers!
I meant by that statement that in the browser that I'm using (fully kiosk browser) I have it set to auto refresh once a minute. So that works for grabbing new data. I was just hoping there was a way to force a client to refresh only on a pour. Maybe something with javascript I know that there are some web apps that seem to do it? With my pi the browser running on it locally in the background gets refreshed by a pour automatically but that is easy to do locally. However, this obviously isnt connected to the pi but I was hoping to achieve the same behavior somehow.
 
You're not the first to ponder this question, but again, from the v1.0 days to now, I haven't seen anything that would address the issue.
There's a way to force an RPi console to refresh from a remote system, but nothing that works the other way 'round...

Cheers!
 
I meant by that statement that in the browser that I'm using (fully kiosk browser) I have it set to auto refresh once a minute. So that works for grabbing new data. I was just hoping there was a way to force a client to refresh only on a pour. Maybe something with javascript I know that there are some web apps that seem to do it? With my pi the browser running on it locally in the background gets refreshed by a pour automatically but that is easy to do locally. However, this obviously isnt connected to the pi but I was hoping to achieve the same behavior somehow.
I think @CaptnDelta did an RPints rebuild that supported pyWebsockets for refreshing remote screens, so you could try installing his version (but if you've got any customisations you'd have to redo them all, so it's a whatever is the lesser of two evils scenario).

Cheers,

Kal
 
Back
Top