Hast Du schonmal geschaut, ob Deine Sensoren das nicht von Haus aus bereits können? 
Nachtrag:
Wenn sie es nicht können, kann man das … naja, “ganz einfach” ist es nicht. Aber es geht. 
- Sensoren aus der Erde raus, abtrocknen und ins Trockene legen.
- Etwa 2L Substrat nehmen und gut durchmischen. Es sollte möglichst homogen sein.
- Das Substrat im Ofen trocknen, bis es komplett trocken ist.
- In einen etwa 2,5L großen Behälter das Substrat rein. Sensoren in das Substrat rein.
- Warten, bis sich die Temperaturen angeglichen haben.
- Sensoren ablesen und Werte merken (→ TROCKEN). Daraus wird später das kalibrierte 0%.
- Jetzt den Behälter so weit füllen, dass das Substrat so gerade eben bedeckt ist.
- Warten, bis sich die Werte der Sensoren nicht mehr ändern.
- Sensoren ablesen und Werte merken (→ NASS). Daraus wird später das kalibrierte 100%.
Jetzt geht die Arbeit los! Du legst Du einen Helfer an …
Einstellungen → Geräte & Dienste → Helfer → + Helfer erstellen
… vom Typ Zahlenwert-Eingabe an.
Jetzt basteln wir noch ein Skript …
Einstellungen → Automationen & Szenen → Skripte → Skript erstellen
… und fügen eine Aktion hinzu:
Dann poppt dieses Fenster rechterhand auf:
Auf Entität auswählen klicken und den eben angelegten Helfer auswählen. Im Feld namens Wert unten eine 0 (Null) eingeben:
Dann oben rechts auf das Hamburger Menü klicken und In YAML bearbeiten anklicken.
Jetzt sieht der Code so aus:
action: input_number.set_value
metadata: {}
data:
value: 0
target:
entity_id: input_number.kalibriertefeuchte
Da fehlt jetzt nur noch die Berechnung. Die Werte für TROCKEN und NASS sind die, die Du Dir weiter oben gemerkt hast. Die Zeile muss so angepasst werden:
value: >-
"{{ (states('DEIN_SENSOR') | float - TROCKEN) * ( 100.0 / (NASS - TROCKEN)) }}"
Ich hab jetzt einfach mal einen meiner Sensoren eingetragen. Da muss natürlich Deiner rein. Am Ende sollte das Skript so aussehen:
action: input_number.set_value
metadata: {}
data:
value: >-
"{{ (states('input_number.tagestemperatur_summe_jede_stunde') | float - 30.0 ) * ( 100.0 / ( 80.0 - 30.0 )) }}"
target:
entity_id: input_number.kalibriertefeuchte
Hm …
… funktioniert das so überhaupt? Mal testen:
Yup, sieht gut aus. 
Das kannst Du jetzt als Aktion in einer Deiner Automationen aufrufen. Da triggerst Du z.B. auf die Änderung der Feuchte einer Deiner Sensoren und rufst dann das Skript auf. In dem Helfer kannst Du dann die kalibrierte Feuchte auslesen.
Das … kann man so machen, aber wie @dp20eic schon sagte, haben die Feuchtemesser ziemlich große Schwankungen. Die hängen übrigens auch von der Temperatur ab. Und die ist hier noch gar nicht berücksichtigt. Und weil jedes Substrat sich anders verhält, musst Du die Kalibrierung bei jedem Substratwechsel erneut durchführen. 
Selbstredend muss die Kalibrierung für jeden einzelnen Feuchtesensor durchgeführt werden.
Den Rest schaffst Du jetzt aber alleine, oder? 
NACHnachtrag:
Das ist übrigens eine reine Kopfgeburt, d.h. nicht in Natura getestet. Sowas in der Art hab ich allerdings auch vor, weil …