System zur Überwachung von Pflanzen

Hallo zusammen,

hat jemand schon etwas von Koubachi gehört? Meine Familie ist darauf gestoßen, und fragt, ob man es nicht auch in IPS einbinden könnte.

Da ergäbe sich bestimmt ein neues Spielfeld :smiley:

Gruß
Burkhard

Hi
Sowas änliches für den Rasen, wäre ganz net!!!

Gesendet von meinem GT-I9100 mit Tapatalk

hat jemand schon etwas von Koubachi gehört? Meine Familie ist darauf gestoßen, und fragt, ob man es nicht auch in IPS einbinden könnte.

Bisl viel Marketinggeschrei für einen Temperatur&Feuchtigesensor finde ich.

gruß
bb

Naja, wenn man die Beschreibung durchliest, ist es schon ein bisschen mehr als nur Temperatur&Feuchtigkeit… Wenn alles so funktioniert wie beschrieben, wäre die Pflanzen-Pfeife nicht uninteressant, ist mit knapp über 100 EUR allerdings auch nicht billig.

Die Einbindung in IPS könnte man vielleicht über das Parsen der Web-App probieren.
Habe auf die Schnelle ansonsten keine API oder andere Schnittstelle gefunden…

Hi, habe so etwas ähnliches vor. Allerdings weiß ich noch nicht so genau was bzw. wie viel ein Helligkeitssensor am Topf, bzw. im Schatten der Pflanze bringen soll. Auch mehrere Pflanzen mit nur einem Sensor zu überwachen halte ich für eine sehr mutige Aussage.

Was die Modelle angeht… Hmmm. wenn ich mir überlege wie komplex ein Mathematisches Modell für einen Elektromotor aussieht, mag ich mir das für eine Pflanze erst gar nicht vorstellen… :wink:

Mein Plan ist es ein kleines OpenSource Funk System auf Arduino Basis zu entwickeln welches dann unter anderem die Bodenfeuchtigkeit messen kann. Incl. Ethernet / WLAN Gateway für IPS. Suche da allerdings noch ein paar Mitstreiter die Lust und Zeit haben sich mit der Arduino und IPS Programmierung zu beschäftigen…

Die anderen Messwerte wie Temperatur außen / innen sollten in IPS eigentlich so oder so vorliegen.

Gruß
Ralf

Hallo Gemeinde,

ich wollte euch nur mitteilen, dass es mittlerweile eine API von Koubachi gibt. Damit funktioniert die Einbindung in IPS einwandfrei. Nachteil allerdings ist, dass man mit der API nur die Daten vom Koubachi-Server abfragen kann. Und der Sensor überträgt die Messdaten nur 1x täglich dorthin. Aber Pflegehinweise oder „Alarmmeldungen“ der Pflanzen kann man ebenso abfragen. Alles in allem eine sehr interessante Sache.Ausserdem ist der Sensor jetzt auch noch 30,- EUR billiger geworden und kostet aktuell nur noch 89,- EUR.

Nein, ich mache hier keine Werbung und gehöre auch nicht zur Firma. Ich wollte euch nur informieren.

Grüße
Grebi

Der letzte Beitrag hat mein Interesse geweckt… schau mir mal so ein Teil an ist gerade per Post gekommen. Es soll ja bald auch ein Outdoor Sensor kommen, dann wird es wirklich brauchbar. Nun die Frage, hat jemand die API schon eingebunden damit ich mir da nicht zuviel Aufwand machen muss??

Gruss

Hallo swissboy,

zu allererst musst du dich unter Koubachi Labs (beta) anmelden. Danach erhälst du deine „user_credential“ und deinen „app_key“ und noch einige weitere Informationen.

Danach habe ich das folgendermaßen gemacht:

  1. Script anlegen, welches die Schnittstelle zum API-Server von Koubachi bildet:

<?
set_time_limit(59);

function Koubachi_Wert($DeviceName,$TagName){
$Doc = new DOMDocument();
$Doc->load('http://api.koubachi.com/v2/user/smart_devices/<mac adresse deines sensors>?user_credentials=<deine user-credential>&app_key=<dein app-key>');
$result = "";
$DeviceList = $Doc->getElementsByTagName('smart-device-device');
$DeviceCnt  = $DeviceList->length;
for ($idx = 0; $idx < $DeviceCnt; $idx++) {
	If ($DeviceList->item($idx)->getElementsByTagName('mac-address')->item(0)->nodeValue  == $DeviceName)
	{
	$result = $Doc->getElementsByTagName('smart-device-device')->item($idx)->getElementsByTagName($TagName)->item(0)->nodeValue;
	break;
	}
	Else
	{
	$result = 'Device not found or not online!';
	}
}
return $result;
}
?>

  1. Variablen anlegen:
  • Batterielevel (Float)
  • Bodenfeuchte (Integer)
  • Daten von (String)
  • Lichtstärke (Float)
  • Temperatur (Float)
  1. Folgendes Script führe ich alle Stunde aus:

<?
set_time_limit(59);
include "49769.ips.php"; // Script von 1. includieren

$LetzteDatenVon = GetValue(25915 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Daten von]*/);

$LastTransmissionTime = Koubachi_Wert('<mac-adresse deines sensors>','last-transmission');
$LetzteUebertragungszeit = date("d.m.Y H:i", strtotime($LastTransmissionTime))." Uhr";
If ($LetzteUebertragungszeit != $LetzteDatenVon) {
	echo "Daten geändert!";
	SetValue(25915 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Daten von]*/,$LetzteUebertragungszeit);

   $Batteriestatus = round((float)utf8_decode(Koubachi_Wert('<mac-adresse deines sensors>','virtual-battery-level'))*100,2);
	SetValue(52900 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Batterielevel]*/,$Batteriestatus);
	
	$Bodenfeuchte = (float)utf8_decode(Koubachi_Wert('<mac-adresse deines sensors>','recent-soilmoisture-reading-value'));
	SetValue(33293 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Bodenfeuchte]*/,$Bodenfeuchte);
	
	$Temperatur = (float)utf8_decode(Koubachi_Wert('<mac-adresse deines sensors>','recent-temperature-reading-value'));
	SetValue(34074 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Temperatur]*/,$Temperatur);
	
	$Licht = (float)utf8_decode(Koubachi_Wert('<mac-adresse deines sensors>','recent-light-reading-value'));
	SetValue(18474 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Lichtstärke]*/,$Licht);
}
else {
	echo "Daten nicht geändert...";
}
?>

Natürlich musst du hier noch alle IDs anpassen. Und noch etwas Wichtiges: der Sensor schickt nach einer „Eingewöhnungszeit“ von ein paar Tagen seine Daten nur noch 1x täglich an den Koubachi-Server, von daher kannst du das Intervall des Scriptes nach eigenen Wünschen variieren. Die Daten werden erst gesetzt, wenn die Übertragungszeit sich von der letzten unterscheidet.

Ich hoffe du kommst klar, ansonsten einfach fragen :slight_smile:

Grüße
Grebi

P.S. Und sorry, ich bekomme das mit dem PHP-Quelltext nicht so hin, wie man es sonst im Forum so sieht, farbig und geordnet. Habt Nachsicht mit mir…EDIT: jetzt kann ich es!

Einfach in php-Tags setzen, das ist das Blatt mit php drauf (zweite Zeile im Editor) :eek:

Text

Beginn [ PHP ], Ende [ /PHP ] (die Leerzeichen zwischen den Klammern wegmachen)

Gruß
Bruno

Man, bin ich blind…grmpfl

Danke :slight_smile:

Hallo Grebi

Absolut Perfekt, danke dir. Wichtig ist das Sharen von Scripten, das Posting von Code scheinst du ja bereits nun auch inne zu haben. Das von dir beschriebene habe ich alles verstanden, den Lab-Account hatte ich anfangs Woche mal „beantragt“. Dein Script ist soweit super, werde da mal den Grossteil übernehmen und natürlich wie von dir beschrieben die ID’s anpassen. Kämpfe dabei oder habe gerade ein anderes Problem festgestellt welches ich zuerst noch weiterleiten musste.

Wie ich sehe verwendest du die show/list smartdevice - Abfrage. Interessant wäre es vermutlich auch noch, wenn man den Alert für die nächsten Pflanzenpflegeschritte auslesen könnte. Koubachi erstellt diese ja im Sinne von: „Man sollte die Pflanze wieder giessen“ als nächsten Pflegetipp und markiert diese wenn ich die Api so anschaue sogar mit einem Tag für pendent todo. Hast du das auch in einem Script schon drinn oder machst du das nicht/noch nicht?

Gruss

Hallo swissboy,

daran habe ich die ganze Zeit gearbeitet, ist soeben fertig geworden:

  1. Das 1. Script um 2 weitere Funktionen erweitern:

function Koubachi_Pflanzen_Wert($DeviceName,$TagName){
$Doc = new DOMDocument();
$Doc->load('http://api.koubachi.com/v2/user/smart_devices/<mac-adresse des sensors>?user_credentials=<deine user-credential>&app_key=<dein app-key>');
$result = "";
$DeviceList = $Doc->getElementsByTagName('plant');
$DeviceCnt  = $DeviceList->length;
for ($idx = 0; $idx < $DeviceCnt; $idx++) {
	If ($DeviceList->item($idx)->getElementsByTagName('id')->item(0)->nodeValue  == $DeviceName)
	{
	$result = $Doc->getElementsByTagName('plant')->item($idx)->getElementsByTagName($TagName)->item(0)->nodeValue;
	break;
	}
	Else
	{
	$result = 'Pflanze nicht gefunden!';
	}
}
return $result;
}

function Koubachi_Pflanzenliste_Wert($PflanzeID,$TagName){
$Doc = new DOMDocument();
$Doc->load('http://api.koubachi.com/v2/plants?user_credentials=<deine user-credential>&app_key=<dein app-key>');
$result = "";
$PflanzenList = $Doc->getElementsByTagName('plant');
$PflanzenCnt  = $PflanzenList->length;
for ($idx = 0; $idx < $PflanzenCnt; $idx++) {
 If ($PflanzenList->item($idx)->getElementsByTagName('id')->item(0)->nodeValue  == $PflanzeID)
 {
 $result = $Doc->getElementsByTagName('plant')->item($idx)->getElementsByTagName($TagName)->item(0)->nodeValue;
 break;
 }
 Else
 {
 $result = 'Pflanze nicht gefunden!';
 }
}
return $result;
}

  1. Variablen anlegen:
    (also so sieht es bei mir momentan aus, einige waren schon vorhanden durch die anderen Scripte…) Für die Booleans habe ich ein eigenes Variablenprofil angelegt: TRUE = ‚Hinweis beachten!‘, FALSE = ‚alles OK‘.

  1. Dieses Script in gewünschtem Intervall ausführen:

<?
set_time_limit(59);
include "49769.ips.php";
$PflanzeID = Koubachi_Wert('<mac-adresse des sensors>','id');
$PflanzeName = Koubachi_Pflanzenliste_Wert($PflanzeID,'name');
$JetztGiessen = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-water-pending'));
$WieGiessen = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-water-instruction'));
$JetztBespruehen = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-mist-pending'));
$WieBespruehen = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-mist-instruction'));
$JetztDuengen = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-fertilizer-pending'));
$WieDuengen = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-fertilizer-instruction'));
$Temperaturverhaeltnisse = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-temperature-hint'));
$Lichtverhaeltnisse = utf8_decode(Koubachi_Pflanzen_Wert($PflanzeID,'vdm-light-hint'));

If ($JetztGiessen == 'true')
 {
 SetValue(56022 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Jetzt giessen]*/,true);
 SetValue(51031 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Giess-Anleitung]*/,$WieGiessen);
 }
else
 {
 SetValue(56022 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Jetzt giessen]*/,false);
 SetValue(51031 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Giess-Anleitung]*/,$PflanzeName.' braucht im Moment kein Wasser.');
 }
If ($JetztDuengen == 'true')
 {
 SetValue(45234 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Jetzt düngen]*/,true);
 SetValue(40788 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Dünge-Hinweis]*/,$WieDuengen);
 }
else
 {
 SetValue(45234 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Jetzt düngen]*/,false);
 SetValue(40788 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Dünge-Hinweis]*/,$PflanzeName.' muss im Moment nicht gedüngt werden.');
 }
 
If ($JetztBespruehen == 'true')
 {
 SetValue(37305 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Jetzt besprühen]*/,true);
 SetValue(40811 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Besprüh-Hinweis]*/,$WieBespruehen);
 }
else
 {
 SetValue(37305 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Jetzt besprühen]*/,false);
 SetValue(40811 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Besprüh-Hinweis]*/, $PflanzeName.' muss im Moment nicht besprüht werden.');
 }
SetValue(31186 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Temperaturverhältnisse]*/,$Temperaturverhaeltnisse);
SetValue(39720 /*[Geraete\Koubachi\Sensoren\Koubachi 1\Lichtverhältnisse]*/,$Lichtverhaeltnisse);
?>

Zurückgegeben werden immer die Werte der Pflanze, mit denen der Sensor aktuell verbunden ist. Das war es eigentlich. Natürlich noch IDs anpassen…

Im Webfront kann es dann so aussehen:

Gruß
Grebi

P.S. Das ganze ist natürlich noch ausbaufähig, aber ich bin ja erst am Anfang :wink:

Ist doch absolute Spitze Grebi… ! Cool danke dir, da scheint alles drinn zu sein was ich brauche und das spart Zeit für anderes. Werde den Sensor morgen mal anlernen und pflanzen :slight_smile: Die Scripts denke ich sind soweit ready. Hast du aktuell nur einen der Sensoren im Einsatz? Ich habe mir mal nur einen zugelegt. Die Aussensensoren könnten bei mir und anderen mehr Anklangen finden. Aber auf der anderen Seite der Preis ist trotzdem schon sehr viel für das Plastik, einfacher Wifi-Chip und die Sensorchen. Na mal schauen, sind ja bis jetzt auch eher kleine Stückzahlen die verkauft werden. Später müsste der Preis schon noch weiter runter. Die Api ist aber sicher mal eine gute Sache. Zudem wird ja auch erwähnt das in Zukunft mal eine Anbindung an Bewässerungssysteme kommen sollte. Das würde auch Sinn machen.

Das der Sensor dann nur noch täglich schickt ist naja… nicht ganz so toll. Vermutlich um die Batterie zu schonen. Aber da man ja den Batteriestand mitbekommt wäre zweimal täglich sicher verkraftbar. Das Teil müsste ja etwas wie eine Firmware haben die die Regelmässigkeit des Sendens steuert. Hier wäre vielleicht ein Update eine Lösung. Schlecht ist aber, dass der Sensor keine eigenen Anschlüsse hat (USB etc.) womit ein solcher FW - Upgrade über Wifi nicht immer gut kommen würde.

Hi swissboy,

ja, aktuell habe ich nur einen Sensor im Einsatz. Nach einer „Gewöhnungsphase“ des Sensors an eine Pflanze, die so ca. 14 Tage dauert, hat Koubachi gelernt und gibt dir auch Pflegehinweise, ohne dass der Sensor mit der Pflanze verknüpft ist. Dann kannst du den Sensor mit einer anderen Pflanze verknüpfen. Da wir sehr viele Zimmerpflanzen haben, werde ich mir aber noch 2 St. zulegen, sonst dauert dieses „Karusellfahren“ einfach zu lange.

Wegen des Intervalls: soweit ich erfahren konnte, wird das wohl bald steuerbar werden, Koubachi plant da noch einiges. Aber solange das noch nicht spruchreif ist, kann ich noch nix dazu sagen. Aber es wird wohl noch einige Überraschungen geben :smiley:

Die Anbindung an IPS werde ich auf jeden Fall noch weiter ausbauen, ich finde die Teile absolut spitzenmäßig!

Gruß
Grebi

Und ich habe alles mal so belassen wie hier von dir gepostet… echt Klasse danke nochmals. Einzig die Mac-Adresse, User-Credentials und den Appkey habe ich noch als zusätzliche Stringvariablen in IPS abgelegt und lese diese in den Scripten ein damit sich das im Fall der Fälle zentral ändern lässt.

Meine Pflanze und der Sensor lernen sich noch etwas kennen. Der Sensor lernt auch noch etwas… aktuell übermittelt er „noch“ alle 9 Stunden.

Irgend ein Problem haben die aber noch mit der API. Meine Pflanze zeigt in der iPhone App und im Webinterface das Sie heute gerne besprüht werden möchte. In IPS ist sie aber zufrieden. Also gleich mal manuell die XML-Daten die von der Api kommen im Browser anzeigen und prüfen. Siehe da… bei Besprühen ist false drinn, also kein Problem von deinem Script sondern schon die Api liefert den falschen Wert. Hast/Hattest du das auch schon? Ist natürlich nicht so tolle… da kann man sich auf den Stand nicht verlassen. Oder kann es sein, dass die die Api-Werte auch nur immer nach einem Intervall anpassen und auf eine zweite Testdatenbankzugreifen um die Werte auszulesen.

Hey Grebi,

danke für die tolle Arbeit! Ich habe einen derartigen Sensor zur Überwachung meines Tropen-Terrariums, die Pflegehinweise sind dabei „nur“ ein netter Nebeneffekt :-). Da das Terrarium einen ziemlich großen Wasserspeicher besitzt, kam es letzten Sommer mehrfach vor das das Substrat durchgetrocknet ist worunter die Orchideen & Begleitpflanzen etc. ziemlich gelitten haben.

Was natürlich Interessant wäre: Das Nebel / Beregnungssystem wird natürlich auch durch IPS gesteuert, heißt die Info „Besprüht“ könnte auch an Koubachi wieder zurück gemeldet werden. Soweit ich das allerdings der API entnehmen kann, ist aktuell nur lesender Zugriff möglich.

Hast du Kontakt zu einem Entwickler? Gibt es die Möglichkeit „gedüngt“ und „besprüht“ per API zurück zu melden bzw. bei wem kann man das als Wunsch einbringen? Da die App wohl auch über die API auf das System zugreift muss die Funktion ja bereits vorhanden sein, die Frage ist nur WIE :slight_smile:

Viele Grüße vom Bodensee & weiter so,
Markus

Die Api ist langsamer, die Daten werden anscheinend später übertragen. Seit heute morgen schreit die Pflanze wegen dem Besprühen auch über die API Abfrage und nicht nur im Online Webinterface/iPhone App. Damit muss man halt leben.

Vergesst nicht, die API hat noch Beta-Stadium!

Und ja, ich habe Kontakt zu den Entwicklern. Aber habt bitte Verständnis dafür, dass ich nicht etwas mitteile, was nicht von offizieller Seite von Koubachi kommt. Ich halte euch auf jeden Fall auf dem Laufenden :slight_smile:

Grüße
Grebi

Sehr cooles Projekt. So etwas in der Art suche ich schon eine Weile.

Allerdings habe ich ein paar Fragen dazu:

  1. Es wurde erwähnt, dass das Gerät nur einmal am Tag die Messwerte zum Server schickt. Aber auf der Internetseite steht „Echtzeitüberwachung mit Alarmfunktion“. Was stimmt denn?
  2. Wie paired man das Gerät mit seinem WiFi Router?

Hi,

  1. Für iPhone gibt`s eine App, die pusht dir Alarme in Echtzeit. Und so, wie ich das verstanden habe, sendet der Sensor im Alarmfall auch früher an den Server.
  2. Der Sensor hat für die Konfig-Phase ein eigenes WLAN, einfach den PC damit verbinden und dann die Daten deines eigenen WLANs eintragen, das war`s.

Grüße
Grebi