Duvida Sensor Humidade Solo (Higrometro)

Olá pessoal, espero que alguem tenha passado por isso e saiba responder

Estou com um desses sensores de Higrometro para monitorar o solo, por hora eu estou fazendo alguns textes, porém vejo que o sensor não é fiél.

Eu configuro ele de 0 a 100%, porém durante o monitoramento eu deixo ele 100% submerso na agua, e ele tem variações, em vez de ficar no 100, ele fica variando os numeros.

Mesmo as vezes quando tiro totalmente do solo ele buga e fica no 100%.

Alguem sabe me dizer qual pode ser o problema? se esta na programação (duvido) ou na qualidade dos sensores?

Esse sensor eu comprei pelo aliexpress. sei que não devo esperar muito deles, porém a instabilidade é muito grande.

Alguem passou por isso? sabe como contornar a situação?

Para quem quiser ver o codigo, ele esta funcionando bem, consegui calibrar, porém a instabilidade do sensor atrapalha

const int pinoSensor1 = A0; //PINO UTILIZADO PELO SENSOR
const int pinoSensor2 = A1;

int valorLido1; //VARIÁVEL QUE ARMAZENA O PERCENTUAL DE UMIDADE DO SOLO
int valorLido2;
 
int analogSoloSeco1 = 800; //VALOR MEDIDO COM O SOLO SECO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int analogSoloMolhado1 = 390; //VALOR MEDIDO COM O SOLO MOLHADO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int percSoloSeco1 = 0; //MENOR PERCENTUAL DO SOLO SECO (0% - NÃO ALTERAR)
int percSoloMolhado1 = 100; //MAIOR PERCENTUAL DO SOLO MOLHADO (100% - NÃO ALTERAR)

int analogSoloSeco2 = 900; //VALOR MEDIDO COM O SOLO SECO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int analogSoloMolhado2 = 390; //VALOR MEDIDO COM O SOLO MOLHADO (VOCÊ PODE FAZER TESTES E AJUSTAR ESTE VALOR)
int percSoloSeco2 = 0; //MENOR PERCENTUAL DO SOLO SECO (0% - NÃO ALTERAR)
int percSoloMolhado2 = 100; //MAIOR PERCENTUAL DO SOLO MOLHADO (100% - NÃO ALTERAR)
 
void setup(){
 Serial.begin(9600); //INICIALIZA A SERIAL
 Serial.println("Lendo a umidade do solo..."); //IMPRIME O TEXTO NO MONITOR SERIAL
 delay(2000); //INTERVALO DE 2 SEGUNDOS
}
 
void loop(){  
  
 valorLido1 = constrain(analogRead(pinoSensor1),analogSoloMolhado1,analogSoloSeco1); //MANTÉM valorLido DENTRO DO INTERVALO (ENTRE analogSoloMolhado E analogSoloSeco)
 valorLido1 = map(valorLido1,analogSoloMolhado1,analogSoloSeco1,percSoloMolhado1,percSoloSeco1); //EXECUTA A FUNÇÃO "map" DE ACORDO COM OS PARÂMETROS PASSADOS
 Serial.print("Umidade do solo Orquidea: "); //IMPRIME O TEXTO NO MONITOR SERIAL
 Serial.print(valorLido1); //IMPRIME NO MONITOR SERIAL O PERCENTUAL DE UMIDADE DO SOLO
 Serial.println("%"); //IMPRIME O CARACTERE NO MONITOR SERIAL

 valorLido2 = constrain(analogRead(pinoSensor2),analogSoloMolhado2,analogSoloSeco2); //MANTÉM valorLido DENTRO DO INTERVALO (ENTRE analogSoloMolhado E analogSoloSeco)
 valorLido2 = map(valorLido2,analogSoloMolhado2,analogSoloSeco2,percSoloMolhado2,percSoloSeco2); //EXECUTA A FUNÇÃO "map" DE ACORDO COM OS PARÂMETROS PASSADOS
 Serial.print("Umidade do solo Margarida: "); //IMPRIME O TEXTO NO MONITOR SERIAL
 Serial.print(valorLido2); //IMPRIME NO MONITOR SERIAL O PERCENTUAL DE UMIDADE DO SOLO
 Serial.println("%"); //IMPRIME O CARACTERE NO MONITOR SERIAL
 
 delay(500);  //INTERVALO DE 1 SEGUNDO
 
}

Fiz um video para mostrar exatamente o problema