I thought I would share something partially inspired by this community.
After numerous issues with my water line I decided to get ahead of it a bit. I developed a device I’m calling Water Guard. The water line to my house is 1000 feet long and enters at street pressure, 150psi. Just inside the crawlspace is an isolation valve, pressure reducer, pressure gauge, and another isolation valve. Over the years I have suffered broken water lines, fouled reducer valve seats, internal slow leaks and billing issues. So, with a bit of occasional help from you folks I have created a monitor system which consists of a PIC18F27Q10-controlled instrument assembly and a PIC24FV32KA302-controlled user interface.
The Instrument package is a analog street pressure sensor, flow meter with pulse-per-gallon output, analog house pressure sensor, and crawlspace temperature sensor. The instrument controller performs the following:
1. Read in analog street and house pressure.
2. Read One-Wire temperature.
3. Accumulate water flow pulses in gallons up to 32 bit, good for several decades.
4. Store in flash memory gallons every 100 gallons as a power outage guard.
5. Transmit pressure, temperature and flow to the user interface.
6. Allow for power on reset of stored gallons if desired.
The water line instruments almost ready to cut in.

Instrument controller still on the proto board. I noticed that the Bluetooth module didn't like the soft start of my bench supply so i had to put in a delayed start SCR to turn on power. The two pots are simulating the pressure sensors and water flow is simulated with a pulse generator. Temperature is the actual temperature sensor. The little buck power supply is backed up with a 9V battery through steering diodes. Both packages have a minimally intrusive breathing LED life indicator.

The default view of the UI. Pressure, total recorded flow, date and time

Usage compare view. Begin and end dates are entered with the pushbuttons and data is pulled from the EEPROM. Usage is the difference between the two dates. Temperature also displayed.

Hourly use review. Up an Down pushbuttons cycle through each of the last 24 hours to display hourly water usage.

Data is transmitted to the UI over a married pair of Bluetooth modules using a UART channel on both ends. Marrying the Bluetooth modules was challenging in the sense that it was done through a terminal program with issues of its own and a TTL-RS232 converter I put together just for the occasion. The other challenge for me on the instrument end was the One-Wire protocol for the temperature probe. This is the most ridiculous and annoying thing I think I’ve ever dealt with. I ended up successfully creating a driver for the PIC. The One Wire takes so long that I had to pulse stretch the flow pulse to ensure it was never missed.
On to the user interface. The UI receives data from the instrument package:
1. displays relevant information on a 20x4 LCD
2. Allows monitoring of the last 24 hours of water flow (leak detection)
3. Allows comparing water flow for two selected dates. (billing accuracy check)
4. Stores water usage at the end of each day in a 64K serial EEPROM
5. Sets alarms for:
a. House pressure too high (reducer failure)
b. Street pressure too low (possible broken line)
c. Crawlspace temperature too low (possible freeze hazard)
d. Positive flow recorded for each of the last 24 hours (internal house leak)
Time and date are maintained by a battery backed clock module. The UI utilizes 2 channels of I2C, one for the clock module and one for the EEPROM. I realize both could be one a single channel, but troubleshooting is simplified with dedicated channels. The LCD display is driven by a 16bit shift register on SPI. Bluetooth is on a UART channel. User inputs are NO pushbuttons with interrupt driven debouncing.
Pictures are as of today. I am collecting enclosure components and will update when fully installed.
I have dabbled in electronics my whole life, but my career centered on developing large scale industrial control systems and project management. Until a couple years ago I have never programmed anything in C and only a couple occasions programming microcontrollers in assembly. Thanks to all that helped. This has been fun and educational.
The pics did not insert in-line, but they are in order below.