Conversation
|
How is this going. Wondering if I should try this, or just use the RPI.GPIO 'shim'. |
|
As far as I'm aware the RPi.GPIO shim has the same limitations that are currently preventing any progress here- lack of pulse counting and PWM. Feel free to test but, uh, run your pumps dry! The biggest blocker right now is arbitrary PWM support on pins- I need to wait for the people writing/testing/approving the kernel module. I have a janky software solution that I could roll out, but I'm apprehensive to half bake anything involving water. |
|
By way of a progress report, I have now migrated Moisture to gpiod. It's not too bad an approach but does need a thread to babysit the edge detection, lest the event buffer completely fills up. I've opted to sleep for 1s (blocking on |
TODO
PWM
Since Grow assumes we can PWM any pin- because RPi.GPIO had a software kludge to let us do so - we're in a bit of a predicament porting this to Bookworm / gpiod. I've experimented with pure Python PWM and it works, but it's thoroughly irredeemably terrible. When dealing with pumps that involve water- I don't want to invite the risk of a software failure causing a flood.
There's a patch floating about for software PWM at the kernel level, so we should be switching to standard PWM interfaces (see: https://lore.kernel.org/linux-pwm/20240204220851.4783-1-wahrenst@gmx.net/) with the hope that the Pi 5 will eventually get PIO PWM support on arbitrary pins.
Until the PWM issue is resolved, then Pi 5 support for Grow is blocked.
UPDATE: GPIO PWM is now merged into mainline Linux, Kernel 6.11, we're now waiting for it to make it into a Raspberry Pi OS release: torvalds/linux@7f61257
Testing
If you're a Bookworm / Pi 5 user running into virtual environment issues, you can try this library like so:
The
./install.shscript will create apimoronivirtual environment that's shared between our products. (or use your existing venv if you've already activated one.)For the reasons behind these changes and other information, see: