I’ve just done this a month ago.
Using home assistant on a Pi3b, inline fan with duct inlet above shower.
ZigBee temp and humidity sensor in bathroom.
ZigBee door sensor on bathroom door.
Simple manrose inline fan in loft with sonoff ZigBee switch between fan and isolator.
Home Assistant programmed to monitor not the humidity but the rate of change of humidity to detect showering activity. Will switch on Sonoff if between 8am and 10pm and bathroom door closed. Means on a damp humid weather day the fan won’t come on if no-one is showering, but on a dry day with 45% rh fan will come on if someone has a shower. Fan usually triggers within 1min of shower starting. Home Assistant switches off Fan 15mins after bathroom door opened.
If humidity sensor breaks…another 12 quid or so to replace. May consider a ZigBee vibration sensor glued to underside of shower tray to get a slightly faster response though.