I had this same problem and figured I'd post an update for other folks with a Fiat 500e that doesn't want to play nice with the TPMS sensors. I tried driving on the highway for a solid 15 minutes, no luck. I tried using a 125kHz tool to wake them up, also no luck. I also tried disconnecting the battery for a while, which also didn't work. At that point, I wanted to figure out what was going on definitively.
I ended up fixing this with MultiECUScan ($55), the yellow cable ($12), an EL-50448 ($14), and an RTL-SDR ($30). If you just need your tires fixed once, maybe it makes sense to go to a tire shop, but MultiECUScan and the yellow cable are useful in their own right. If you don't want to futz around with open source software, you can get a scan tool for around $120 on eBay, such as the Autel TS401. I happened to have all the hardware I needed sitting around from other projects, so I only needed a MultiECUScan license.
The first thing I needed to do was to get the sensor hex codes. I used the RTL-SDR with rtl_433 to get the hex ids for each tire. To do that, start the software, bring the antenna near the tire, and then use the EL-50448 to force the sensor to emit a reading. Mark down the id and repeat for all of the sensors. I had a set of Schrader sensors that I'd bought off eBay, and this software doesn't necessarily work with all sensors. Other brands might not work, which would require that you get a normal scan tool.
Once you've got these, use the yellow cable with MultiECUScan to program the sensors from the adjustments menu. You may need to add a leading zero on the front to get it to work correctly, since it takes 8 digits and you might only have 7. Also note that it requires it in hex format, so if you got the id from something that emits decimal form, you'll need to do a conversion.
Once you've programmed them, activate each sensor again with the EL-50448 to get the car to get a reading. At that point, the TPMS light should go off and the values should show up in the cluster. It beats paying a dealer, though it's still not clear to me when auto-learning works right or doesn't work right.
Side note: I originally tried manual programming with AlfaOBD, but it didn't work. The 2.1.4.0 software had an issue where you could set sensors, but only once and couldn't rewrite it. It seems like it's only half implemented. MultiECUScan did the trick.