These make it look like the valve states broadcast message has a 4-byte boolean for each valve, but I see the f/w is only sending one U16 with a bit for each valve.
This is what looks best at this time. Flow sensors tend to be pretty accurate if you average over a long time, but very choppy in the short or even medium term. However, if I extend the filter time to 10 s, then the control interval has to be at least 10 s as well. I've discussed with Blaine and Nick to verify this is ok. I think we don't want the blood and dialysate inlet pumps to be very reactive anyway - the treatment lasts 1-8 hours, so we can start with an estimated PWM that will be close and then take a minute to gradually improve on that estimate with our slower control.
I thought we were using Python v3.6.8 on Linux Ubuntu v18.04.3 LTS (64-bit) running in Oracle VirtualBox v5.2.32 (64-bit) on Windows Pro 10 (64-bit) OS?