Es lo que dice tu código.
Dice... si esta en LOW
if(!digiValue)
{
pumpStatus = !pumpStatus;
aplyCmd();
}
haz que el rele cambie a cada momento
Lo que deberías preguntar es
if(!digiValue && digiValueAnt)
{
pumpStatus = !pumpStatus;
aplyCmd();
}
digiValueAnt = digiValue;
Y define digiValueAnt como boolean pero no en el loop por favor, debe ser global.