[Version 2 Release] RaspberryPints - Digital Taplist Solution

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
its been off the whole time....I have been having this issue.
then we need to enable more debug logs

in Config.py change
config['flowmon.debug' ] = False#True
config['dispatch.debug' ] = False#True
to

config['flowmon.debug' ] = True
config['dispatch.debug' ] = True

then restart flowmon

If there is still nothing in the logs, use the python from the terminal
 
2023-07-12 17:17:46 RPINTS: Could not import RFID Reader, RFID disabled. Assuming SPI not installed/configured
2023-07-12 17:17:48 RPINTS: starting setup...
2023-07-12 17:17:48 RPINTS: resetting alamode to try to force it to listen to us...
2023-07-12 17:17:48 RPINTS: valve update: RPU:VALVE:-1=1
2023-07-12 17:17:49 RPINTS: valve update: RPU:VALVE:-1=0
2023-07-12 17:17:49 RPINTS: giving it a short break to wake up again...
2023-07-12 17:17:51 RPINTS: reflashing Arduino via:
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -patmega328p -calamode -P/dev/ttyS0 -b115200 -D -Uflash:w:/var/www/html//arduino/raspberrypints/raspberrypints.cpp.hex:i
RPINTS: reflashing Arduino failed, moving on anyways, error was: Command '/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -patmega328p -calamode -P/dev/ttyS0 -b115200 -D -Uflash:w:/var/www/html//arduino/raspberrypints/raspberrypints.cpp.hex:i' returned non-zero exit status 1.
2023-07-12 17:17:52 RPINTS:
2023-07-12 17:17:52 RPINTS: starting WS server
2023-07-12 17:17:52 RPINTS: starting device monitors...
2023-07-12 17:17:52 RPINTS: starting command server
2023-07-12 17:17:52 RPINTS: starting fan control
2023-07-12 17:17:52 RPINTS: LC-1 Starting
2023-07-12 17:17:52 RPINTS: Fan Control fanControl1 is Running
2023-07-12 17:17:52 RPINTS: serial connection stopped...
2023-07-12 17:17:52 RPINTS: The channel sent is invalid on a Raspberry Pi
2023-07-12 17:17:52 RPINTS: Not Configured to run Fan
2023-07-12 17:17:52 RPINTS: Traceback (most recent call last):
File "/var/www/html/python/PintDispatch.py", line 592, in spawn_flowmonitor
self.flowmonitor.monitor(self.useOption("useFlowMeter"))
File "/var/www/html/python/FlowMonitor.py", line 286, in monitor
loadCell = LoadCellCheckThread( "LC-" + str(item["tapId"]), updateDir=config['pints.dir'],
File "/var/www/html/python/FlowMonitor.py", line 757, in __init__
self.hx711 = HX711(name=threadID, dout_pin=responsePin, pd_sck_pin=commandPin, logger=logger,scale_ratio=scaleRatio,tare_offset=tareOffset)
File "/var/www/html/python/hx711.py", line 60, in __init__
GPIO.setup(self.pd_sck_pin, GPIO.OUT)
ValueError: The channel sent is invalid on a Raspberry Pi

2023-07-12 17:17:52 RPINTS: closing serial connection to Arduino...
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
self.run()
File "/usr/lib/python3.9/threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "/var/www/html/python/PintDispatch.py", line 598, in spawn_flowmonitor
self.flowmonitor.exitFlowMonitor()
File "/var/www/html/python/FlowMonitor.py", line 352, in exitFlowMonitor
self.arduino.close()
AttributeError: 'FlowMonitor' object has no attribute 'arduino'
 
I want to use GPIO5 and GPIO6 which are pin number 18 and pin number 22 on the pi.

Does the Load Cell config page want the GPIO number or the pi pin number?
 
Does the Load Cell config page want the GPIO number or the pi pin number?
RPints uses board numbers (from the python):
GPIO.setmode(GPIO.BOARD) # Broadcom pin-numbering scheme

so you should use pins 18 and 22 for the 2 you are testing and verify the other 2 are valid also (even if not hooked up)

If you look under the advanced hardware menu, there is a hardware IO display admins screen that should show you what pins you are using and what for, though im not sure if you configure for invalid pins (e.g. ground) if it will still show the hardward you configured for it. But you can see the layout RPints is using.
 
RPints uses board numbers (from the python):
GPIO.setmode(GPIO.BOARD) # Broadcom pin-numbering scheme

so you should use pins 18 and 22 for the 2 you are testing and verify the other 2 are valid also (even if not hooked up)

If you look under the advanced hardware menu, there is a hardware IO display admins screen that should show you what pins you are using and what for, though im not sure if you configure for invalid pins (e.g. ground) if it will still show the hardward you configured for it. But you can see the layout RPints is using.
ok when I use 18 and 22 it tries to take a measurement from the load cell but measures 0 everytime and then errors out.
When I look at the hardware IO I have "response" on 18 which is my Data line from the hx711 and I have "Command" wired to 22 which is my CLK for hx711

2023-07-13 07:30:12 RPINTS: Fan Control fanControl1 is Running
2023-07-13 07:30:12 RPINTS: Init Finished Command 22 Rsp 18
2023-07-13 07:30:12 RPINTS: Not Configured to run Fan
2023-07-13 07:30:13 RPINTS: Load Cell Checker LC-1 is Running
2023-07-13 07:30:13 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Not listening for flowmeters
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Raw Byte Values [0, 0, 0]
2023-07-13 07:30:14 RPINTS: Twos: 0x000000
2023-07-13 07:30:14 RPINTS: Unable to run Load Cell Checker
2023-07-13 07:30:14 RPINTS: slice indices must be integers or None or have an __index__ method
2023-07-13 07:30:14 RPINTS: Traceback (most recent call last):
File "/var/www/html/python/FlowMonitor.py", line 790, in run
weight = self.getWeight()
File "/var/www/html/python/FlowMonitor.py", line 771, in getWeight
return self.hx711.get_weight_mean(20)
File "/var/www/html/python/hx711.py", line 293, in get_weight_mean
return self.get_weight(times)
File "/var/www/html/python/hx711.py", line 298, in get_weight
return self.get_weight_A(times)
File "/var/www/html/python/hx711.py", line 305, in get_weight_A
value = self.get_value_A(times)
File "/var/www/html/python/hx711.py", line 280, in get_value_A
return self.read_median(times) - self.get_offset_A()
File "/var/www/html/python/hx711.py", line 271, in read_median
return sum(valueList[midpoint:midpoint+2]) / 2.0
TypeError: slice indices must be integers or None or have an __index__ method
 
1-pinout pi.jpg
 
Not sure if this will be of interest to anyone, but I'll post it here anyway. Some may recall I was having trouble with my RPi Zero W because Chrome was no longer supported on the Zero in Bullseye, so I upgraded to a RPi Zero 2 W, installed everything and yes Chrome is supported, but my god so slowwww... so I could either spend more money and get a RPi 4 or I wondered if an old Mac Mini I had laying around would work. The TL;DR is yes it does!

Continue reading to see what I did. So I had a Mac Mini from 2019 that was terribly slow especially when the OS was upgraded and it just generally wasn't behaving very well. I replaced it last year with a newer Mac Mini, all good. But this older machine was just laying around collecting dust. Thought, why don't I turn it into a Linux box or better yet a "Raspberry Pi". Steps taken are below. I followed these instructions from Raspberry Pi.

1. Download Raspberry Pi Desktop iso
2. Flash the iso onto a USB thumb drive
3. Plug thumb drive into Mac Mini, hold down option key and start the Mini
4. It'll give you a choice of which drive to startup from, choose the thumb drive, though it gave me two choices for the thumb drive that looked exactly the same, so I just chose the first one
5. I chose the Graphical Install option as instructed and the next few steps gave me a little trouble. Because there was already another OS (MacOS) using the BIOS, it gave me an error when I went to finish the partitioning. I restarted the computer at this point and started the instructions from the top.
6. Rest of the install went to completion. I was pretty happy at this point.

7. Restarted the machine and followed the remaining setup steps
8. Opened a terminal window and did "sudo Raspi-Config" and enabled ssh. Wanted to enable vnc but that option wasn't offered for some reason.

Now it was time to install RPints. Caveat: I don't use anything fancy. I just use RPints to display a tap list. No meters, no sensors, no nothing, just bare bones. Maybe there's a way to access all of that through the USB port but I don't know ¯\_(ツ)_/¯

9. From the terminal I did "curl -L install.rpints.com | sudo bash". This threw an error at me: It appears you're using Debian not Raspian, some things might not work, or something to that effect. Do you want to proceed? y/N. I said to hell with it and chose yes. Everything installed (RandR+) no errors.

I had previously made some mods to index.php, style.css, and includes/headerRight.php as well as having installed some new fonts. I recently discovered the program FileZilla to transfer files via sftp. But I also quickly discovered that I couldn't use sudo with that to transfer those modified files. My work around was to "mkdir temp", transfer those files there, then from the ssh I could use "sudo mv" to move those files. Not sure if I had to, but I then adjusted permissions to match the other installed files using "chmod" and I also changed the owner to match the installed files using "chown".

That's it, it works. Sorry for the long-winded post.

Prost!
 
im looking into this exception using my test vm.

Could you post hte hx711 that was working for you? i can compare and see if i can find something
I modified the example.py to work with the hx711,py in the var/www/html/python/ directory.

What I found was the following...
#GPIO.setmode(GPIO.BCM)
#hx = HX711("test", 5, 6) #WORKING :)
GPIO.setmode(GPIO.BOARD)
hx = HX711("test", 18, 22) #NOT WORKING :(

the top code worked and returned measurement values when using GPIO.BCM and when I used GPIO.BOARD then it would only return 0.0.
 
I modified the example.py to work with the hx711,py in the var/www/html/python/ directory.

What I found was the following...
#GPIO.setmode(GPIO.BCM)
#hx = HX711("test", 5, 6) #WORKING :)
GPIO.setmode(GPIO.BOARD)
hx = HX711("test", 18, 22) #NOT WORKING :(

the top code worked and returned measurement values when using GPIO.BCM and when I used GPIO.BOARD then it would only return 0.0.
It turns out GPIO 5 and GPIO6 are on pin 29 and pin31, not 18 and 22
So now it is returning values in the log now, but still crashes.

2023-07-13 13:14:21 RPINTS: Twos: 0x012882
2023-07-13 13:14:21 RPINTS: Raw Byte Values [1, 39, 120]
2023-07-13 13:14:21 RPINTS: Twos: 0x012778
2023-07-13 13:14:21 RPINTS: Raw Byte Values [1, 40, 144]
2023-07-13 13:14:21 RPINTS: Twos: 0x012890
2023-07-13 13:14:21 RPINTS: Raw Byte Values [1, 41, 123]
2023-07-13 13:14:21 RPINTS: Twos: 0x01297b
2023-07-13 13:14:21 RPINTS: Raw Byte Values [1, 39, 91]
2023-07-13 13:14:21 RPINTS: Twos: 0x01275b
2023-07-13 13:14:22 RPINTS: Raw Byte Values [1, 39, 135]
2023-07-13 13:14:22 RPINTS: Twos: 0x012787
2023-07-13 13:14:22 RPINTS: Raw Byte Values [1, 40, 69]
2023-07-13 13:14:22 RPINTS: Twos: 0x012845
2023-07-13 13:14:22 RPINTS: Raw Byte Values [1, 40, 77]
2023-07-13 13:14:22 RPINTS: Twos: 0x01284d
2023-07-13 13:14:22 RPINTS: Raw Byte Values [1, 39, 108]
2023-07-13 13:14:22 RPINTS: Twos: 0x01276c
2023-07-13 13:14:22 RPINTS: Raw Byte Values [1, 39, 120]
2023-07-13 13:14:22 RPINTS: Twos: 0x012778
2023-07-13 13:14:22 RPINTS: Unable to run Load Cell Checker
2023-07-13 13:14:22 RPINTS: slice indices must be integers or None or have an __index__ method
2023-07-13 13:14:22 RPINTS: Traceback (most recent call last):
File "/var/www/html/python/FlowMonitor.py", line 790, in run
weight = self.getWeight()
File "/var/www/html/python/FlowMonitor.py", line 771, in getWeight
return self.hx711.get_weight_mean(20)
File "/var/www/html/python/hx711.py", line 293, in get_weight_mean
return self.get_weight(times)
File "/var/www/html/python/hx711.py", line 298, in get_weight
return self.get_weight_A(times)
File "/var/www/html/python/hx711.py", line 305, in get_weight_A
value = self.get_value_A(times)
File "/var/www/html/python/hx711.py", line 280, in get_value_A
return self.read_median(times) - self.get_offset_A()
File "/var/www/html/python/hx711.py", line 271, in read_median
return sum(valueList[midpoint:midpoint+2]) / 2.0
TypeError: slice indices must be integers or None or have an __index__ method
 
Not sure why i did it like this
View attachment 824614
but yes 29/31

I am still working on debugging the code to see why that is happening.
its seems like the issue has something to do with how the hx711 library handles even and odd amount of samples

if you change the code in flowmonitor.py from

def getWeight(self):
return self.hx711.get_weight_mean(20)

to

def getWeight(self):
return self.hx711.get_weight_mean(21)

it then works
 
it then works
that is actually surprising that it works like that, what I found was that the python was using decimal types for even numbers
so 20 / 2 was 10.0 and i would think that 21/2 would be 10.5 which is still a decimal

anyways i think the proper fix is in hx711.py line 270 should be

midpoint = int(len(valueList) / 2)

this forces midpoint to be an int which is what the split wants
i committed my change
 
that is actually surprising that it works like that, what I found was that the python was using decimal types for even numbers
so 20 / 2 was 10.0 and i would think that 21/2 would be 10.5 which is still a decimal

anyways i think the proper fix is in hx711.py line 270 should be

midpoint = int(len(valueList) / 2)

this forces midpoint to be an int which is what the split wants
i committed my change
Thanks, this worked.

There are a couple other things I have noticed.

1. When I click on Tare, I get the error "HX711" object has no attribute 'zero'
Its trying to call a function that doesn't exist
self.hx711.zero() but hx711 doesn't have a zero function
Shouldn't we be using the tare() function?

2. The delay for the LoadCellCheckThread is delay=1, so the gui is constantly refreshing and making it almost impossible to see or do anything.. because its constantly reading from the loadcell and refreshing the screen. So I think this needs to change to something larger and I changed it to 10seconds for now. The load cell is constantly changing its value so I think then it constantly needs to update the gui?

3. As far as I can tell the code doesn't appear to use the offset from the Loadcell gui anywhere.

4. where in the code does it convert the weight to gallons? on the main gui it shows 147gal when the weight on the load cells shows about 17lbs. Shouldn't there be a max value for a full keg? eg. 50lbs for a full corny

RandR, thanks again for all your help. :)

Cheers!
 
There are a couple other things I have noticed.
1. Yes probably should be tare, i will commit shortly

2. I should update the code to only refresh when the volume changes enough to trigger a pour.

3. The Offset is the tare offset, its used on setting up hx711. without it you could never 0 your scale

4. in admin/updateKey.php, did you chance update these configurations?

1689279605669.png
 
1. Yes probably should be tare, i will commit shortly

2. I should update the code to only refresh when the volume changes enough to trigger a pour.

3. The Offset is the tare offset, its used on setting up hx711. without it you could never 0 your scale

4. in admin/updateKey.php, did you chance update these configurations?

View attachment 824619
1. adding in the Tare() function fixes the missing zero() function , but then I get an for self.dispatch.setLoadCellTareOffset(self.hx711.get_offset())
missing 1positional argument

3. as far as I can tell from the Hx711 code, is that when you call tare, it zeros the scale in library such that any value returned after will be zero until weight is applied to the load cell. At least thats how I understand it from the python examples and from the ESP32 code.
Maybe if the offset was a permanent value you wouldn't then need to call the tare function, because that offset would essentially tare the scale within r pints.

4. nope, didn't touch any of those settings.

on the main gui it says I have -5gal left and 10gals poured with nothing on the scale, when I place 10.5lbs on the scale it says 147.7gal left and -142.6 gal poured...something is not quite right here :) (but on the loadcell screen the weight appears correctly with the exception of the scale not being tared)
 
in the

def tare(self):

self.dispatch.setLoadCellTareOffset(self.hx711.get_offset())

needs to be changed to

self.dispatch.setLoadCellTareOffset(self.tapId, self.hx711.get_offset())

now I get the correct weight in the Loadcell gui, when it refreshes. Although the main gui still isn't showing the correct amount of gallons
 
self.dispatch.setLoadCellTareOffset(self.tapId, self.hx711.get_offset())
Correct, this will save the offset in the Admin screen making it a permenant value so you dont need to tare every time unless you see the weight being off.
4. nope, didn't touch any of those settings.
To get the best estimate on volume you need to have a bunch of settings correct including those, if open fermenting (not using a spunding valve) the pressure says at 0.
Those settings are used when
1689303132791.png
is on, otherwise its set per keg for PSI and kegging temp (at the time the keg was filled)

also make sure these are set for the keg and beer to have an accurate measurement.
keg-emptyWeight
keg-emptyWeightUnit
beer - finalGravity
beer - finalGravityUnit


147.7gal left and -142.6 gal poured
can you send a screenshot so i can check the code where its displaying that
 
Correct, this will save the offset in the Admin screen making it a permenant value so you dont need to tare every time unless you see the weight being off.

To get the best estimate on volume you need to have a bunch of settings correct including those, if open fermenting (not using a spunding valve) the pressure says at 0.
Those settings are used when View attachment 824643 is on, otherwise its set per keg for PSI and kegging temp (at the time the keg was filled)

also make sure these are set for the keg and beer to have an accurate measurement.
keg-emptyWeight
keg-emptyWeightUnit
beer - finalGravity
beer - finalGravityUnit



can you send a screenshot so i can check the code where its displaying that
So do I need to turn on "Do not allow individual tap configurations" ?
If I turn it on... then under the keg the current weight goes from the correct weight of 10lbs to 257lbs.

The keg empty weight I can't seem to change it always reverts back to the same value.

Where do I set these four values.

Here are some screenshots. I have ~10lbs on the load cell at the taking of the screen shots.

1-screenshot1.jpg

1-screenshot2.jpg


1-screenshot3.jpg

1-screenshot4.jpg
 
Last edited:
So do I need to turn on "Do not allow individual tap configurations" ?
Turning it on means the PSI and beer temperature from the configuration pages are used instead of the individual keg values. I recommend this if you dont want to configure each Keg individually and most likely the values will not change often.

The keg empty weight I can't seem to change it always reverts back to the same value.
Admin->kegs-> edit the keg -> change empty weight, where your screenshot is
i tried one locally and it worked not sure if i have a database change you dont have, but all my older changes are committed

Where do I set these four values.
the keg setting is under kegs,
the beer setting is under admin->beers->edit beer->edit FG

The negative Gals poured is because the weight calculated into volume is greater then the start amount of the beer (5 gal)
now that i can see your configuration, I can run it locally to see if there is a bug in my logic
 
If I turn it on... then under the keg the current weight goes from the correct weight of 10lbs to 257lbs.
i found the issue, when weight is converted to volume it does it in liters, when Rpints converted liters to gallons it actually used oz instead of gallons. causing the large number of gallons which if you looked at the admin keg panel, the volume was used to calculate weight (not the actual weight)
My guess is the load cell screen showed the correct weight though.

Anyways the fix to covert liters to gallons is committed

I also committed a new column for load cells, Update Variance, this column allows you control how much of a change in weight triggers a refresh. before it was defaulting to .01 which is why it refreshed so much.

I did not try a fresh build nor did i do a lot of testing so if you see something wrong let me know
 
what is the best way for me to go about updating?
If you rerun the installer there will be an option to update. If you have any customizations then at the end of the update it will show you your changes vs the new changes. If you ignore it then the new Rpints will be the default an your changes will have to be reimplemented.

this would be things like css files. if your changes are the same, then you will not notice a difference.
 
I tried to do an update but it didn't work, there was no changes.

So I did a full install again.

I got an error trying to update the values for the loadcell config "cannot execute query" and "changes could not be saved", even though it says this it still seems to save it.

I also get a error from flowmonitor , so the loadcell reads once and then halts and never reads again unless I restart the service. So I am not sure whether this error stops it from reading the loadcell again, but it only ever reads the loadcell when the service is started for the first time.

2023-07-15 09:54:58 RPINTS: Raw Byte Values [2, 167, 43]
2023-07-15 09:54:58 RPINTS: Twos: 0x02a72b
2023-07-15 09:54:58 RPINTS: Raw Byte Values [2, 168, 99]
2023-07-15 09:54:58 RPINTS: Twos: 0x02a863
2023-07-15 09:54:58 RPINTS: LC-1: Weight=17.975028376844495
2023-07-15 09:54:59 RPINTS: restarting fan timer after pour
2023-07-15 09:54:59 RPINTS: Unable to run Load Cell Checker
2023-07-15 09:54:59 RPINTS: can only concatenate str (not "int") to str
2023-07-15 09:54:59 RPINTS: Traceback (most recent call last):
File "/var/www/html/python/FlowMonitor.py", line 801, in run
self.dispatch.sendflowcount(-1, self.tapId, lastWeight - weight)
File "/var/www/html/python/PintDispatch.py", line 564, in sendflowcount
msg = "RPU:FLOW:" + str(pin) + "=" + str(count) +":" + rfid
TypeError: can only concatenate str (not "int") to str



Also clicking on the Tare button and refreshing the screen doesn't seem to change the offset on the screen anymore.

On a positive note the keg is showing the correct amount based on the weight so that good :)
 
Last edited:
"cannot execute query"
That is because it is trying to save taps without load cells. i will fix evectually

but it only ever reads the loadcell when the service is started for the first time.
I just committed the fix for that, i will think of something better then what i was trying to do

Also clicking on the Tare button and refreshing the screen doesn't seem to change the offset on the screen anymore.
Did you refresh after a tare without hitting save? if So, i took the change you had and passed the tap id into the saving function. I will need to test locally.
 
the error
File "/var/www/html/python/PintDispatch.py", line 564, in sendflowcount
msg = "RPU:FLOW:" + str(pin) + "=" + str(count) +":" + rfid


I changed the code to
msg = "RPU:FLOW:" + str(pin) + "=" + str(count) +":" + str(rfid)

and have it running. I tried the tare again and its seems to be working. I am not sure why it didn't work the first few times I tried it.

Everything thing looks like its running really well. I am planning building 3 more loadcells to add to the R pints. Hopefully it goes smoothly

I will owe you a beer or two RandR+, thanks again for all your effort!

Cheers
 
and have it running. I tried the tare again and its seems to be working. I am not sure why it didn't work the first few times I tried it.
Tare requires the load cells to be working, the error that you fixed would have allowed tare to be working, it was too late yesterday for me to be thinking about that
 
I've just managed to get my Raspberry pi 4 and wondering
do I need any cooling for it ( heatsinks on the chips looks easy)?

Also I'm assuming the case will be no good with the arduino and adapter board for the sensors?
 
Lol! That looks like a serious Bitcoin mining solution. I went with a slightly more modest kit 😉

rpi4B_8GB.jpg


With what I've been playing with it does not thermal throttle...

Cheers!
 
Thanks

I'll just box the Pi and attach the arduino and thing that the sensors can plug into and put an inlet and outlet fan on it. Raspberry pints, youtube or kodi shouldn't throttle with that.
 
Of course if you are going with an Alamode my kit isn't going to work, but with an Uno handling the flow meters (tbh, the better choice from a value proposition) it's an inexpensive and practical setup...

Cheers!
 
Of course if you are going with an Alamode my kit isn't going to work, but with an Uno handling the flow meters (tbh, the better choice from a value proposition) it's an inexpensive and practical setup...

Cheers!
Yes I've got a Uno following your recommendation and also have a linker base to plug the sensors into it.
 
On the topic of back-up strategies...

I had related a month or so ago that a lightning strike and accompanying power outage corrupted the Raspberry Pints tap list database for my keezer, but that I was able to recover via a backup SD card with a bit of massaging. And all seemed well. But, it turned out there was a latent corruption on that backup card that didn't become evident until a keg kicked: when I went to put another keg on tap, R'Pints said I actually had zero kegs with beer and suggested I create a keg list. The Kegs table was corrupted. Woof.

I was able to limp along by manually editing the database creating a new "tap" (a specific keg associated with a specific beer at a point in time) and associating it with the specific faucet in the database using Phpmyadmin, but R'Pints would not auto-update with a pour, so I also had to use Phpmyadmin after each pour to keep the keg tracking close. Eventually I figured out the corruption had two kegs associated with the same faucet which was blocking the auto updates. And my attempts to delete the empty keg using Phpmyadmin were rebuffed for some reason.

This was quickly coming to a head and had to be resolved as another keg was getting close to kicking. I was considering wiping out the database and using the original installation script to create an empty one, essentially rolling the clock back to 2014. But I dug through my collection of backup SD cards for the clone of my brewery controller and found a couple from 3 years ago.

Put one of them in the clone system and booted up, and there was a clean if out of date Raspberry Pints tap list, with functional Beer, Keg and Tap tables. I just had to go through the tables to copy over the current values from the running machine, then copy the resulting database and log files to the running machine, and everything was back to sanity.

It's a beautiful thing.

Point is, when doing backups, it's a good idea to have a "rolling" strategy, so you have a few or more different "check-points" to revert to. Had I re-burned all of the SD cards for my clone machine, the latent database corruption would be "everywhere" with no recourse but to start over...

Cheers!
 
Apologies if this has been answered before, but I am trying to install RPints on my Pi 4 and am having no such luck following a successful install of Fermentrack. I keep seeing this error: ERROR: apache2 test failed. Can anyone please help? I seep a similar message when I tried to install it following the nginx path under the Fermentrack option. Thank you in advance!
 
Are you using the install command script?
Yes, I am. Originally, the install said it had completed successfully. But when I went to the IP listed, I saw 502 Bad Gateway.

I’m suspecting that I am definitely executing something improperly. I have tried to modify the default sites available scripts in the apache2 folder to reflect what day_triprr has mentioned previously but for some reason I do not have permission to modify/save these files. Any ideas?
 
Back
Top