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 :D