NEWS
Mi-Flower Werte interpretieren
-
Moin, ich hatte die Frage schon mal im Entwicklungs-Forum gestellt, aber natürlich gehört sie da gar nicht hin …. Sorry.
Daher hier nochmal die Frage.
Ich möchte wissen, wie ich den µS/cm-Wert (fertility) bewerte ?
Ich möchte mir so eine Art Ampel im vis bauen, die den ausgelesenen Wert dann entweder rot, orange oder grün anzeigt, je nachdem, wie der Düngezustand ist.
Natürlich habe ich schon mal ein wenig gegoogelt und weiß, dass es pflanzenabhängig ist.
Aber was sind hier durchschnittlich gute Werte, bzw. was ist zu viel/zu wenig?
Ist es richtig, wenn ich den vorhandenen Wert durch 1000 rechne, dass ich dann den EC Wert des Bodens erhalte?
Damit könnte ich dann etwas anfangen.
Auch die Bodenfeuchtigkeit würde mich interessieren für das Projekt.
Hier steige ich nicht so recht durch ...
Ich habe den mi-flora über Nacht in ein Wasserglas gestellt. Eigentlich müssten das für mein Verständnis dann 100% sein.
Es wurde aber konstant ein Wert von 78% gemessen ...
Jetzt würde mich hier interessieren, welchen Wert eine zu nasse, eine gut durchfeuchtete und eine zu trockene Erde haben.
Hat jemand das Teil schon länger im Einsatz und kann mir dazu etwas sagen?
Die Ampel habe ich soweit fertig, nur die richtigen Werte fehlen noch ....
Vielen Dank schon mal im voraus!
-
So, ich hatte heute Zeit und habe nebenbei (auch wenn es wahrscheinlich keinen wirklich interessiert) die jeweils korrekten EC Werte mit einem anständigen EC-Messgerät gemessen und sie in einer Messreihe den Werten des Mi-Flowers gegenübergestellt.
Hierbei wird klar, dass die Sticks nicht wirklich genau messen.
Legt man das bekannte Verhältnis (1.0 EC = 1000 µS/cm) zugrunde, zeigen die Mi Flowers im Durchschnitt ca. 25-30% zu viel an.
Naja … besser als zu wenig anzuzeigen, sonst könnte man sich schnell von einigen seiner überwachten Pflanzen verabschieden.
Aber auch die Ungenauigkeit kann man ja nutzen ...
Ich habe aus den ermittelten Werten ein Skript erstellt, dass die µS/cm-Werte des Mi-Flower in realen EC-Werten anzeigt.
-
Für die Messung habe ich jeweils 2 Mi-Flowers aus verschiedenen Lieferungen verwendet
-
Grundlage der im Skript angegebenen Werte ist der Mittelwert von beiden Sticks nach jeweils ca. 10 Minuten Messzeit pro EC-Wert
Ich erhebe natürlich keinen Anspruch auf absolute Korrektheit meiner gemessenen Werte, aber für meine Zwecke ist es in dieser Form absolut ausreichend.
Vielleicht hilft das Skript (oder die ermittelten Werte) dem einen oder anderen, die Ungenauigkeit der Mi-Flowers trotzdem korrekt zu nutzen.
Allerdings empfehle ich dann, die Werte stichprobenhalber mit dem eigenen Mi-Flower + einem EC-Messgerät zu überprüfen und ggf. anzupassen, da diese Sticks garantiert produktionsbedingte Unterschiede haben.
Im Skript muss nur in der zweiten Zeile der entsprechende Adapter manuell nachgetragen werden.
var idWERT1 = "javascript.0.variable.ecwert1"; var idAktor1 = "ble.0.xx:xx:xx:xx:xx:xx.fertility"; createState(idWERT1, '0.7', { def: '#0.7', type: 'string', role: 'text' }); on(idAktor1, function (data) { if (data.state.val >= 0 && data.state.val <= 99) setState(idWERT1, '0.0'); else if (data.state.val >= 100 && data.state.val <= 219) setState(idWERT1, '0.1'); else if (data.state.val >= 220 && data.state.val <= 329) setState(idWERT1, '0.2'); else if (data.state.val >= 330 && data.state.val <= 429) setState(idWERT1, '0.3'); else if (data.state.val >= 430 && data.state.val <= 549) setState(idWERT1, '0.4'); else if (data.state.val >= 550 && data.state.val <= 559) setState(idWERT1, '0.5'); else if (data.state.val >= 560 && data.state.val <= 599) setState(idWERT1, '0.55'); else if (data.state.val >= 600 && data.state.val <= 679) setState(idWERT1, '0.6'); else if (data.state.val >= 680 && data.state.val <= 769) setState(idWERT1, '0.65'); else if (data.state.val >= 770 && data.state.val <= 849) setState(idWERT1, '0.7'); else if (data.state.val >= 850 && data.state.val <= 929) setState(idWERT1, '0.75'); else if (data.state.val >= 930 && data.state.val <= 969) setState(idWERT1, '0.8'); else if (data.state.val >= 970 && data.state.val <= 1039) setState(idWERT1, '0.85'); else if (data.state.val >= 1040 && data.state.val <= 1129) setState(idWERT1, '0.9'); else if (data.state.val >= 1130 && data.state.val <= 1219) setState(idWERT1, '0.95'); else if (data.state.val >= 1220 && data.state.val <= 1289) setState(idWERT1, '1.0'); else if (data.state.val >= 1290 && data.state.val <= 1369) setState(idWERT1, '1.05'); else if (data.state.val >= 1370 && data.state.val <= 1449) setState(idWERT1, '1.1'); else if (data.state.val >= 1450 && data.state.val <= 1509) setState(idWERT1, '1.15'); else if (data.state.val >= 1510 && data.state.val <= 1569) setState(idWERT1, '1.2'); else if (data.state.val >= 1570 && data.state.val <= 1649) setState(idWERT1, '1.25'); else if (data.state.val >= 1650 && data.state.val <= 1699) setState(idWERT1, '1.3'); else if (data.state.val >= 1700 && data.state.val <= 1769) setState(idWERT1, '1.35'); else if (data.state.val >= 1770 && data.state.val <= 1839) setState(idWERT1, '1.4'); else if (data.state.val >= 1840 && data.state.val <= 1899) setState(idWERT1, '1.45'); else if (data.state.val >= 1900 && data.state.val <= 1979) setState(idWERT1, '1.5'); else if (data.state.val >= 1980 && data.state.val <= 2029) setState(idWERT1, '1.55'); else if (data.state.val >= 2030 && data.state.val <= 2099) setState(idWERT1, '1.6'); else if (data.state.val >= 2100 && data.state.val <= 2159) setState(idWERT1, '1.65'); else if (data.state.val >= 2160 && data.state.val <= 2229) setState(idWERT1, '1.7'); else if (data.state.val >= 2230 && data.state.val <= 2299) setState(idWERT1, '1.75'); else if (data.state.val >= 2300 && data.state.val <= 2369) setState(idWERT1, '1.8'); else if (data.state.val >= 2370 && data.state.val <= 2419) setState(idWERT1, '1.85'); else if (data.state.val >= 2420 && data.state.val <= 2499) setState(idWERT1, '1.9'); else if (data.state.val >= 2500 && data.state.val <= 2569) setState(idWERT1, '1.95'); else if (data.state.val >= 2570 && data.state.val <= 2629) setState(idWERT1, '2.00'); else if (data.state.val >= 2630 && data.state.val <= 2699) setState(idWERT1, '2.05'); else if (data.state.val >= 2700 && data.state.val <= 10000) setState(idWERT1, '>2.1'); });
Achso … noch zu dem im ersten Thread angesprochenen falschen Wert der Bodenfeuchtigkeit:
Dieser ist bedingt durch die Füllhöhe des Wasserglases.
Wenn der Wasserstand niedriger ist, zeigt der Stick auch keine 100% Humidity an. Erst wenn die Füllhöhe über der Gabelung der beiden Messfüße liegt wird auch 100% angezeigt.
Hätte ich auch eher drauf kommen können
-