Jetzt sollte es aber funktionieren.
Kannst du es nochmal testen?
Grüße,
Kai
Jetzt sollte es aber funktionieren.
Kannst du es nochmal testen?
Grüße,
Kai
Das sieht jetzt sehr gut aus, keine Fehler mehr.
Danke
So ein kleiner Vorgeschmack:
Es fehlt nur noch das Bild von der Pflanze, die Übersetzung der Variablen und dann könnt ihr testen.
Über den Konfigurator könnt ihr die Pflanzen suchen und den Sensoren zuweisen.
Ich nutze die API von: https://open.plantbook.io/
Grüße,
Kai
jetzt passt alles, bist der Beste
Danke Alex
Der Wert ist nicht Fruchtbarkeit :-o.
Welcher Wert?
Grüße,
Kai
Das hast du nur einmal in deiner Hardcopy . Das ist die Bodenleitfähigkeit.
Hallo Zusammen,
ich habe das Modul auch mal getestet.
ESP32 mit Tasmota geflasht, My Flora eingebunden, MQTT Configuriert und alles Super.
Im IPS im MQTT-Server Server tauchen auch Date auf nur nicht im Modul.
Was mach ich falsch?
Gruß Stephan
Nur ESP32_001 im Topic nehmen
Danke für die schnelle Antwort. Leider hat das uch nicht geklappt.
Bei dem Gateway kann ich doch den Serienmäßigen von IPS nehmen oder ?
Ich glaube es gibt einen Bug.
Der Fix sollte mit dem nächsten Update kommen.
Grüße,
Kai
Es gibt eine neue Beta Version im Store, dort ist die Pflanzensuche integriert.
Danke an @Burki24 für das ergänzen der Doku und der Profile.
Hier (MiFlora2Tasmota/Configurator at master · Schnittcher/MiFlora2Tasmota · GitHub) könnt ihr nachlesen, wie ihr Zugriff auf die API bekommt.
Grüße,
Kai
Bei der Suche mit Leerzeichen knallt es.
<br />
<b>Notice</b>: Trying to access array offset on value of type null in <b>/var/lib/symcon/modules/.store/schnittcher.info.ips.miflora2tasmota/Configurator/module.php</b> on line <b>213</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/var/lib/symcon/modules/.store/schnittcher.info.ips.miflora2tasmota/Configurator/module.php</b> on line <b>213</b><br />
Ansonsten kann ich Pflanzen aussuchen, allerdings wurden keine Werte eingetragen.
Ein Hinweis, dass pro Pflanze noch einmal auf [Prüfen] gedrückt werden muss, wäre bestimmt sinnvoll ;-).
Und die Überschriften im Konfigurator sind bei mir mixed deutsch/englisch.
Einen habe ich noch, der generierte Bildname hat noch einen Schreibfehler „PlantImgae…“
Ja, das war nur auf die schnelle eingebaut.
Doku und Variablen werden nochmal überprüft.
Danke für die Infos mit dem Leerzeichen, werde ich mir anschauen.
Grüße,
Kai
Hab jetzt bei mir mal alle 16 Sensoren aktualisiert. Bis auf die von @ralf genannten Sachen lief es bei mir ohne Probleme durch.
Ich zitiere mich bzw. meinen Wunsch noch mal.
@KaiS planst du dazu noch etwas?
Die jeweiligen Hinweise finde ich sehr nützlich, dadurch kann man auch „Overall Meldungen“ erzeugen und direkt auf „gieß mich oder düng mich“ hingewiesen werden.
nach dem Update hat das Modul meinen Sensor gefunden. Wobei ich nicht alle Wert angezeigt werden.
Kann das an der Firmware vom Sensor liegen ?
Wenn ja, gibt es irgendwo weine Anleitung um den Sonsor upzudaten?
Xiamoi Home App installieren, je nach Herkunft deiner Sensoren das richtige einstellen, dann sehr in die Nähe des jeweiligen Sensors und updaten.
Die min/max Werte werden nur eingetragen, wenn du eine Pflanze auswählst. Aber Feuchtigkeit und Leitfähigkeit sollten über BLE eigentlich kommen, je nach Firmware, 3.1.9 ist glaube ich aktuell.
Es hatte alles gepasst bis ich gestern wieder das neue Beta installiert habe und jetzt kommen die Fehlermeldungen wieder im Meldungsfenster?
Danke
Alex
Denke mal, dass wird noch Einzug ins Modul bekommen. Für die Übergangsphase hab ich da mal was vorbereitet.
Das Script legt ein Profil „Z2M.FlowerCare“ an. Dann werden die Benötigten Variablen angelegt und im Anschluss die Werte abgeholt und analysiert.
<?php
// Profil anlegen
if (IPS_VariableProfileExists("Z2M.FlowerCare") ===false) { // Prüfen, ob Profil existent
$Profile = IPS_CreateVariableProfile("Z2M.FlowerCare",1); // Profil erstellen
IPS_SetVariableProfileAssociation("Z2M.FlowerCare", 0, "Zu Niedrig", "", 0xFF0000);
IPS_SetVariableProfileAssociation("Z2M.FlowerCare", 1, "Normal", "", 0x00FF00);
IPS_SetVariableProfileAssociation("Z2M.FlowerCare", 2, "Zu Hoch", "", 0xFF0000);
IPS_SetVariableProfileValues("Z2M.FlowerCare", 0, 2, 1); // Profil Messgrenzen und Schritte festlegen
}
// Variablen anlegen
$Name = array( "Aktuell_Bodenfeuchtigkeit" => 1, // Array mit Variablen-Name und Variablentyp
"Aktuell_Temperatur"=> 1,
"Aktuell_Helligkeit_Lux"=> 1,
"Aktuell_Bodenleitfähigkeit" => 1);
$id = IPS_GetParent($_IPS['SELF']);
foreach ($Name as $Variable=>$Typ)
{
$Setname = $Variable;
$childid = @IPS_GetVariableIDByName($Setname, $id);
if ($childid === false){ // Prüfen, ob Variablen existieren -> Ja => überspringen, nein => anlegen
$Variable = IPS_CreateVariable($Typ); // Variablen erstellen und Typ vergeben
IPS_SetName($Variable, $Setname); // Variable benennen
IPS_SetParent($Variable, $id); // Variable einsortieren unter dem Objekt mit der ID "$KategorieID (Normwerte)"
}
}
// Zuteilen der Profile
$Prof = array( "Aktuell_Bodenfeuchtigkeit" => "Z2M.FlowerCare", // Array mit Variablen-Name und Variablentyp
"Aktuell_Temperatur"=> "Z2M.FlowerCare",
"Aktuell_Helligkeit_Lux"=> "Z2M.FlowerCare",
"Aktuell_Bodenleitfähigkeit" => "Z2M.FlowerCare");
foreach ($Prof as $Var_Prof=>$Profil) {
$VariableID = IPS_GetVariableIDByName($Var_Prof,$id); // Variablen-IDs abrufen
IPS_SetVariableCustomProfile($VariableID,$Profil); // Variablen Profil zuweisen
};
//Werte holen
// Soll-Werte
$BodenFeuchtMin = (GetValue(IPS_GetVariableIDByName("Bodenfeuchtigkeit min.", $id)));
$BodenFeuchtMax = (GetValue(IPS_GetVariableIDByName("Bodenfeuchtigkeit max.", $id)));
$HelligkeitLuxMin = (GetValue(IPS_GetVariableIDByName("Helligkeit min. (Lx)", $id)));
$HelligkeitLuxMax = (GetValue(IPS_GetVariableIDByName("Helligkeit max. (Lx)", $id)));
$TempMin = (GetValue(IPS_GetVariableIDByName("Temperatur min.", $id)));
$TempMax = (GetValue(IPS_GetVariableIDByName("Temperatur max.", $id)));
$BodenLeitMin = (GetValue(IPS_GetVariableIDByName("Bodenleitfähigkeit min.", $id)));
$BodenLeitMax = (GetValue(IPS_GetVariableIDByName("Bodenleitfähigkeit max.", $id)));
// Ist-Wert
$BodenFeuchtIst = (GetValue(IPS_GetVariableIDByName("Feuchtigkeit", $id)));
$HelligkeitLuxIst = (GetValue(IPS_GetVariableIDByName("Beleuchtungsstärke", $id)));
$TempIst = (GetValue(IPS_GetVariableIDByName("Temperatur", $id)));
$BodenLeitIst = (GetValue(IPS_GetVariableIDByName("Leitfähigkeit", $id)));
// Wert setzen
If ($BodenFeuchtIst > $BodenFeuchtMax) {
Setvalue(IPS_GetVariableIDByName("Aktuell_Bodenfeuchtigkeit", $id), 2);
} elseif ($BodenFeuchtIst < $BodenFeuchtMin){
Setvalue(IPS_GetVariableIDByName("Aktuell_Bodenfeuchtigkeit", $id), 0);}
else {
Setvalue(IPS_GetVariableIDByName("Aktuell_Bodenfeuchtigkeit", $id), 1);
}
If ($HelligkeitLuxIst > $HelligkeitLuxMax) {
Setvalue(IPS_GetVariableIDByName("Aktuell_Helligkeit_Lux", $id), 2);
} elseif ($HelligkeitLuxIst < $HelligkeitLuxMin){
Setvalue(IPS_GetVariableIDByName("Aktuell_Helligkeit_Lux", $id), 0);}
else {
Setvalue(IPS_GetVariableIDByName("Aktuell_Helligkeit_Lux", $id), 1);
}
If ($TempIst > $TempMax) {
Setvalue(IPS_GetVariableIDByName("Aktuell_Temperatur", $id), 2);
} elseif ($TempIst < $TempMin){
Setvalue(IPS_GetVariableIDByName("Aktuell_Temperatur", $id), 0);}
else {
Setvalue(IPS_GetVariableIDByName("Aktuell_Temperatur", $id), 1);
}
If ($BodenLeitIst > $BodenLeitMax) {
Setvalue(IPS_GetVariableIDByName("Aktuell_Bodenleitfähigkeit", $id), 2);
} elseif ($BodenLeitIst < $BodenLeitMin){
Setvalue(IPS_GetVariableIDByName("Aktuell_Bodenleitfähigkeit", $id), 0);}
else {
Setvalue(IPS_GetVariableIDByName("Aktuell_Bodenleitfähigkeit", $id), 1);
}
Probiere es bitte mal aus. Das Script legst Du einfach unter die Instanz. Der Rest läuft von selber, wenn Du es ausführst.
Ich hab das Script mal „Pflege_Tipps“ genannt.
Rückmeldungen, wenn Probleme gerne an mich. Wenn keine Probleme, gerne auch ein kurzes Feedback.
Hier noch als Zip-Datei:
Pflege_Tipps.zip (1,2 KB)
Gruß
Burkhard