Replies: 2 comments 8 replies
|
Yep, I know what's happening. I have some protections in the code, to prevent the food probe temperatures from erroneous readings. I was having some issues with some particularly finicky probes that would jump around wildly with their readings, especially at lower temperatures (such as around 35F). So I put some logic into the code in the control script to prevent the food probes from reporting the temperature swings of 20% difference from the last reading. So it makes sense that it would suppress these readings if the probe was reading 65F ambient and you probed something that was 35F. There might be a smarter way to handle this. :) I ended up throwing out my knock-off Maverick probes and only use the ThermoWorks probes now which makes a huge difference in the reliability of the output. Here's the code in control.py: You can try to remove this logic and see what happens for you. Or if you have some other thoughts on how we can avoid erroneous inputs, let me know. |
|
I really like your idea of using a list to store temperature entries. It
got me thinking that it might be a nice idea to create our own queue class
that just keeps a running list of the last 10 readings or so. The class
could do the averaging, throwing out the readings that are greater than +/-
20% off. We could use objects of this class this instead of the AvgXX
variables above. Would probably give us a better overall average values
and might be a little cleaner to look at. :) I'll try to whip something
up when I have time tomorrow.
…On Mon, Oct 25, 2021 at 7:03 PM James Weber ***@***.***> wrote:
Ok so here is something I thought up. It could probably be better but
might inspire other ideas
# Test temperature data returned for errors (+/- 20% Temp Variance), and average the data since last reading
if((adc_data['GrillTemp'] != 0) and (adc_data['GrillTemp'] >= AvgGT * 0.8) and (adc_data['GrillTemp'] <= AvgGT * 1.2)):
AvgGT = (adc_data['GrillTemp'] + AvgGT) / 2
elif(adc_data['GrillTemp'] != 0):
if(len(probe_data_list) < 20): ## Collect 20 probe readings
probe_data_list.append(adc_data['GrillTemp'])
else: ## Once we have 20 readings which will be about 1 second
avg = round(sum(probe_data_list)/len(probe_data_list)) ## average all 20 entries in the list
new_list = []
for item in range(len(probe_data_list)):
if((probe_data_list[item] >= avg * 0.8) and (probe_data_list[item] <= avg * 1.2)): ## Strip out any reading that are outside the 20% variance of new readings
new_list.append(probe_data_list[item])
AvgGT = round(sum(new_list)/len(new_list)) ## Average the new list with the 20% variance items removed
probe_data_list.clear() ## Clear the list. Now the first if statement should take over since we updated AvgGT to the new reading.
new_list.clear()
else:
readings are 0
This should work if the readings are not all crazy but only a few are out
of spec
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#48 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AEXUYFQCI7DHDFXLTSZOALLUIYD6VANCNFSM5GUKZX7A>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
Uh oh!
There was an error while loading. Please reload this page.
So on a couple of cooks I have had an issue with the probe temps freezing. It only seems to affect the food probes and has never affected the grill probe. I think it happens when there is big and fast change in the probe readings. For example today the probes were at around 65f and when I probed the meat which was 35f they stuck at 65f. Unplugging them and plugging them back in seems to resolve the issue.
Wanted to see if this has ever happened to anyone before I start debugging what might be causing it.
All reactions