I have modified 10 LYWSD03MMC with the addition of a 1N4148, so that I can power them using rechargable LIR2032 cells instead of disposable CR2032 cells, and just want to report back my findings in case they are of interest to other people.
A fresh CR2032 has a voltage of about 3200mv, whereas the LIR2032 starts off at 4200mv. This voltage is too high and reportedly causes damage to the LYWSD03MMC. Also, running it at a high voltage greatly reduces the LCD contrast. So I modified the sensors by cutting the track from the battery + contact and adding in a 1N4148 diode to drop the voltage by 700mv.
I’ve got 12 LYWSD03MMC sensors running the Zigbee firmware. 10 of them have a 1N4148 diode installed to drop the cell voltage and are powered by LIR2032 cells. The remaining 2 are unmodified and powered by CR2032 cells.
The oldest of the LIR2032 sensors was powered up with a freshly charged cell at 21:00 on 23rd June, with an initial reported voltage of 3500mv (a freshly charged cell is 4200mv, minus the 700mv voltage drop from the diode gives us 3500mv). It is now 7 weeks later and the reported voltage is now 3100mv. Over the first 14 days the reported cell voltage dropped by 200mv, but since then it has dropped by 100mv every 16-17 days.
You can safely discharge the cell to 3000mv, so that means I need to replace the cell when the reported voltage is 2300mv. Assuming the discharge curve stays reasonably linear at 100mv every 16 days, that means that the battery should last another 128 days - a total of 177 days since a fresh battery was installed.
Time will tell whether it actually lasts this long, but I’m calling this a success since this experiment shows that I can go several months between charges.
As a point of comparison, a fresh CR2032 was put into one of the unmodified sensors at 15:00 on June 26th, with a reported voltage of 3200mv. The first 200mv was lost in just 1 day, and then another 100mv 4 days later. Since then the reported voltage has gone back up to 3000mv and stayed at that level, so I don’t really have enough data yet to compare the life of the CR2032 with the LIR2032. However, even if the CR2032 has a longer life, it is disposable, so I’m happy enough recharging an LIR2032 every few months instead of buying a new CR2032.
Note: I have NOT tried any of these experiments with an additional capacitor installed. My gut feeling is that the internal resistance of a LIR2032 is probably low enough for a capacitor not to be beneficial, but I haven’t collected any data to back that up.
A couple of gotchas:
- if the device moves out of range of the zigbee mesh, it drains the battery fast. I know that @pvvx has said that “zigbee does not like coordinator outages”, but no other battery operated zigbee devices on my network drain the battery like that when they can’t see the network. It would be nice if the device could drop into a low power mode when the network vanishes and leave long intervals before attempting to reconnect.
- there is no protection to stop the battery being discharged too much. You can monitor it through Home Assistant and manually disconnect the cell once the voltage drops too low, but it would be nice if there was a way to program the device to shut down when the voltage drops below a predefined level.