MyPlant-Informer: Feuchtigkeit von Keimlingen mit dem Particle Photon überwachen

Seite 2: Daten umrechnen, anzeigen und auswerten

Inhaltsverzeichnis

Die Rohwerte werden in readData() ausgelesen und anschließend in Prozent umgerechnet.

// step 1 - read the soil moisture Plant1
value_water_Plant1 = analogRead(soilMoisturePlant1);
water1 = ((int)((((double)value_water_Plant1/dry)*100.0)));

Die analogen Spannungswerte werden dabei von 0 bis 4095 aufgeteilt. Da ich keinen grünen Daumen habe, hab ich Schwellenwerte zur Beurteilung der Feuchte nach meinem Bauchgefühl in einer Interpretations-Tabelle festgelegt.

  • 100 = 2% = feucht
  • 400 = 10% = feucht
  • 800 = 20% = OK
  • 1000 = 24% = OK
  • 1800 = 44% = OK
  • 3000 = 73% = OK
  • 4000 = 98% = trocken
  • 4095 = 100% = trocken

Diese werden mit if / then / else if überprüft und entsprechend auf dem Display angezeigt.

// OLE Display init  
display.setTextSize(2); // 1 = mini
display.setTextColor(WHITE);
display.setCursor(0,0);
display.clearDisplay();
// Plant1
if (water1 <= 30)
{
display.print(namePlant1);
display.print(": ");
display.print(water1);
display.print("%");
display.println(" > SWIM");
led1.on(); // on/off
led1.setValue(255); // brightness
Blynk.setProperty(V5, "color", "#12a3c7"); // blue
}
else if ((water1 > 30) && (water1 <= 80)) // && = AND
{
display.print(namePlant1);
display.print(": ");
display.print(water1);
display.print("%");
display.println(" > OK");
led1.on(); // on/off
led1.setValue(255); // brightness
Blynk.setProperty(V5, "color", "#12c727"); // green
}
else if ((water1 > threshold_plant1) && (water1 <= 100)) // && = AND
{
display.print(namePlant1);
display.print(": ");
display.print(water1);
display.print("%");
display.println(" > DRY");
led1.on(); // on/off
led1.setValue(255); // brightness
Blynk.setProperty(V5, "color", "#d3345c"); // red
}
else
{
display.println("cant read sensor A0!");
}

Die zweite Pflanze wird mit dem gleichen Code überwacht, wobei die Schwellenwerte natürlich anders sein können.

Schließlich habe ich eine Untergrenze für den Schwellwert eingebaut und den kostenfreien Coud-Dienst IFTTT integriert, der bei bestimmten Ereignissen andere Vorgänge auslöst: IF This... Then That... Mit dem bool-Wert firstfire kann ich beeinflussen, wann der IFTTT-Trigger von der Particle Cloud über Particle ausgelöst wird. Wenn Sie vergessen, einen Check dafür zu installieren, wird IFTTT immer wieder getriggert und Sie erhalten unzählige E-Mails.

Die Schwellwerte können in der Blynk-App mit dem Schieberegler eingestellt werden. Das OLED-Display habe ich damit überflüssig gemacht. Man kann es zur Kontrolle der Werte aber an Ort und Stelle belassen.

Die gute Nachricht: die ersten Minz-Setzlinge waren schnell zu sehen.

Die schlechte Nachricht: Ich hatte zuerst Feuchtigkeitssensoren aus China genutzt, die bereits nach wenigen Tagen nur noch unbrauchbare Werte lieferten. Die Sensoren sind einfach korrodiert. Stattdessen habe ich dann Edelstahldraht genutzt. Da er sich schlecht löten lässt, verwende ich Schraubklemmen, um den Draht mit Standardbrücken zu verbinden. Edelstahldraht gibt es im örtlichen Baumarkt oder im Schweißer-Handwerk. Eine Alternative sind auch kapazitative Sensoren, die allerdings teurer sind.

Ich habe noch weitere Bewässerungsprojekte umgesetzt, etwa mit einem Arduino als Mikrocontroller und mit Relais und einer Wasserpumpe. Damit lässt sich eine Gurken- oder Tomatenzucht auch vom sommerlichen Urlaubsort bequem vom Smartphone aus mit einer extra Portion Wasser versorgen. Den kompletten Code gibt es auf meinem Hackster.io-Account zum Herunterladen. Ich wünsche Ihnen viel Erfolg und eine großartige Ernte. (hch)