Como ya te he dicho, en el ejemplo del sensor, se calcula el caudal. Solo necesitas saber el tiempo que ha pasado desde que empezaste a desalojar agua para calcular cuánta agua has sacado.
Para el caudal, utiliza el ejemplo (como te han comentado, yo tampoco lo haría por interrupción). Para el tiempo la función millis(). No necesitas ningún bucle para ello, ya tienes el loop(). "If's", por supuesto, es la única manera de comparar valores (tienes que comparar el tiempo que ha pasado con el necesario para sacar el 30% del agua, este valor lo calculas tu antes con la capacidad de tu pecera).
Si suponemos que el caudal que saca la válvula es más o menos constante (esto tendrías que probarlo, aunque supongo que sí) no necesitarías calcularlo en el código, sino comprobarlo antes en otro programa y en el tuyo utilizar el valor obtenido. De esta manera el código sería muy sencillo, un primer esquema podría ser:
loop()
{
if(Ha_pasado_un_mes())
{
Inicio = millis();
Poner_en_marcha_valvula();
}
if(millis()-Inicio >= TIEMPO_EN_VACIAR_30%)
{
Parar_valvula();
}
}
En principio, no es necesario ningún sensor más, ya que con la válvula puedes obtener una lectura correcta del caudal.
En definitiva, prácticamente como te ha comentado josemanu