Inspired by user @sunny post here I built a Tempest integrated Zambretti Weather Forecaster. It uses the Tempest API to get weather data and then runs it through an algorithm to come up with the predicted forecast. It then turns the dial to that forecast. I used the Zambretti dial as a template to make a 3D model of the design and printed it out, then designed a case to put it in. It’s driven by a 28BYJ-48 stepper motor and a Raspberry Pi Pico W. There’s a few small tolerances that are causing some sticking I still need to work out with the 3D design of the case (I’ve got it a little too tight), and a few other improvements I know I need to make, but I’ve got it all coded and otherwise works great. Once I have the kinks worked out, I’ll post my repo with the code and stl’s. This has been a really fun project.
I worked on the fun little “Zambretti” project with @sunny when he was working on his prototype. I replicated a hard-cardstock version that works nicely.
I’m glad I found this device, a lot of nostalgia behind it. I’ve never heard of it before. While I was working on the algorithm, I messaged our local big network meteorologist to see if he knew if there was an actual algorithm and he had never heard of it before either. He did message me back and said that after looking at it, it all makes a lot of sense… especially considering it’s forecasting technology from the 1800’s
My wife rolls her eyes at me all the time about the little tinkering projects I do, but she was genuinely interested in this one. It might actually be allowed to be displayed outside on the woman cave, “aka ‘living room’”.
At the bottom of this thread. . Negretti & Zambra pocket forecaster - General - The Tempest Weather Community (weatherflow.com) I mentioned that the “Zambretti Forecaster” is a kin to the “Sager Weathercaster”. . .which @peter has incorporated into the ‘wfpiconsole’ last year.
I also use this on a daily basis: Beteljuices Zambretti Algorithm based Forecaster
That’s really cool. I like the way it is very open.
It’s very cool as it is, but my brain keeps thinking why not add a ring or two around it that have their own motor, to show the pressure and the wind direction.
For people that want to build the wooden version, I’ve made a nice instructable https://www.instructables.com/Negretti-Zambra-Pocket-Weather-Forecaster/
I’m wondering if it would be a good idea to kind of recalibrate the thing using a lot of historical data for my region (which I don’t have at hand), because I get the impression by reading all the text next to the letters that it is tuned for the London area with lots of rain.
Brilliant! I have used steppers before but always found the zeroing etc makes them a bit complicated - have you looked at the Geek Servo - gives 360 degrees but keeps the reference point so you can get acurate turning (its the non continous one - Geekservo Building Bricks 360 Degree Servo (LEGO® Compatible) - Grey (non continuous rotation)) - just a thought, would like to make one once you have it fully up and running.
does that servo really do 360 non continuous, or is it more like 355 degree?
Right now I have a micro switch mounted to the case under the dial with a raised ridge on the underside of the dial that hits it as it turns. I have a start-up routine set so that when it powers up, it rotates until it hits the switch. The switch is fixed so from there it know exactly how much further to go to start at 0 degrees.
Right now my biggest struggle is the engineering of the case. I’ve only been 3D printing for about a year now and maybe 3 or 4 months with doing my own CAD, so I’ve had A LOT of prints on this where the dimensions are off. The tolerances on this are proving to be pretty tight. I’ve got it pretty close, but it’s being held together by some tape right now.
It’s 360 - it’s a brilliant servo ! I did used to run sg90s with a gear system to adapt them to 360 but this one makes it much simpler - well worth getting one and seeing what it’s like…
I think I have all squared away… The switch under the dial turned out to be a complete flop, but what I settled on that seems to work quite nicely is a magnetic reed switch mounted to the case with a magnet glued under the dial. When it powers up, it first connects to my router, then does an initialization spin. When the magnet gets to the reed, it stops in the start position (actually, I added a variable to the code to adjust how much further to go once it hits the reed since it was proving impossible to get the positioning just right).
Here’s a video in action. Since my last post, I’ve got the case dimensions figured out and designed a stand for it, I didn’t like how it just laid down, makes it easier to view standing up. Also added some more details to the top by putting the Zambretti design in place of the plain bars. And I added an LCD display, but that is just for testing and debugging, but it does show the boot sequence in this video where it finds it’s home/starting position. I’ll remove the LCD when I pack it all up for display. It needs 3 hours to collect enough data to start showing as that is what I read the original Zambretti algorithm is based on…so that’s what I used. I may end up making it shorter because I don’t like having to wait 3 hours to see it work. Every 10 minutes, it wakes up, takes a reading and then spins to the new forecast if it has changed. Frankly, for being a 150 year old device that literally predicts the future, it is surprisingly accurate. I wouldn’t suggest they use the forecast on the 10:00 news, but it doesn’t lie.
I have to put together a README yet in my report to explain the details to get it all up and running, but once I do I’ll post the finished public repo to this thread. Was just excited to show off what I have.
I don’t see why a micro switch wouldn’t work, especially if you rotate it only in one direction. There could be a smooth engaging of the button and a sharp release. But anyway a reed relais works fine.
You don’t have to wait 3 hours. In the api there is a call to get the pressure trend but it is in the get_better_forecast. You could use that, at least during the first three hours after powering it on.
The switch had a couple of problems. The first was the positioning, the switch had very little tolerance, I had to hit it low enough to push it down, but not so low that it hit the body of the switch. Also, when it was hitting the switch, sometimes the resistance of the switch pushed the dial up instead of pushing the switch down. Also, it had an audible “click” every time that it activated, and it annoyed me. I also worried about how long a cheap mechancial switch would last considering it was going to get pressed every 10 minutes. The mag reed switch addressed all of those problems. I had almost 1/2" of leeway so the magnet didn’t have to be placed exactly to the millimeter. No resistance on anything or the risk of the magnet getting stuck on it, it is completely silent, and these things last for centuries.
As for the trend, the trend from the API has certainly bounced around in my mind, but from what I’ve gathered, the actual Zambretti algorithm specified collecting pressure readings every 10 minutes over 3 hours to determine the trend. I kept it that way to stay true to the algorithm.
“staying true to the algorithm” is a bit strange, as that is probably just some code someone wrote to create an algorithm based on the requirements to have a trend. There was no algorithm when this device was released. Anyway you still could use that algorithm, but instead of waiting 3 hours after booting, you could use the trend provided by the api to get started immediately. After three hours of gathering local data, you switch back to your algorithm. That’s what I was intended to say in my last sentence of my previous post.
Just a little FYI, that technically if you want to hold true to Zambretti then the reading is determined at 9 in the morning. The 3 hour is that any movement of pressure above a certain threshold within 3 hours means not steady. I simplified in my algorithm to use the current trend.
true, according to the makers, the device gives the best results when used at 9 in the morning and should be valid for the next 12 hours.
Does that imply if you use at 3 in the afternoon, the prediction for the next 3 hours is worse than you made at 9 in the morning?? I don’t think so, but they also didn’t claim it would be better. I to would use the current trend, I also would average the wind direction over at least 10 minutes or so, but perhaps you are already doing that. I didn’t look at the code, I have my wooden miracle (https://www.instructables.com/Negretti-Zambra-Pocket-Weather-Forecaster/)
I’ve experimented with the Zambretti Forecaster for the past 4 years or so. The plastic (or wooden disc) works best for readings taken at 9am LST (Local Solar Time). BUT. . .it can be used at other times during the day. My experience shows that when it is used at times Other Than 9am LST. . .it is merely a Short-Term Nowcast. e.g. for PRESFR (PRESsure Falling Rapidly) before an impending cyclonic storm system. . .pressure can fall as much as 2-4 mb per hour. . .that’s just horrendous and indicates a severe storm is in the offing. That is what is happening Right Now (at 15:58 UTC) in eastern Nebraska. Pressure is 995.1mb. . .wind is from the SW at 9 mph. . .so Zambretti disc is set to SW 995mb Falling and the result is X VERY UNSETTLED, RAIN. This area is just on the extreme western edge of a Severe Storm forecast area. (The bulk of the SvrWx…including Strong / Damaging Tornadoes will occur over eastern Iowa to near Chicago later this afternoon and evening!)
What helped for me to grasp more overall big weather was to stack graphs that I generate. For example, I record and graph solar radiation and solar insolation along with solar elevation; so all of those make sense and are easy to make the connection…but if you add sea level pressure, you will notice that it is a little offset from the inverse of all the solar graphs. May not seem like much, but if it is ever not like that, then there is more than likely a changing weather condition from current. Another easy comparison is Zambretti to sea level pressure (I graph out Zambretti setting each letter to a number); I find this a very convenient way to look at possible weather trends. By doing Zambretti on a graph, I don’t have to search through logs of data and I can just look at a single graph for the last 24 rolling hours. All calculations use only data from the tempest plus some ‘constants’ (constants such as elevation, Lat/Long…things that will not change for any specific station)