MiFlora Modul

Das habe ich auch gelesen, ich werde einfach mal testen und dann berichten!

Gesendet von iPhone mit Tapatalk

Der VegTrug Sensor funktioniert bei mir. Der Sensor wird erkannt, unter der Instanz wird auch ein Ordner mit den korrekten Messwerten (mit dem Verweis „in Instanz umbenennen“) angelegt. In der Instanz selber wird der Sensor aber in der Sensorliste nicht gelistet, ich kann ihn da also nicht umbenennen. Ich kann mir nicht vorstellen, dass das an dem Sensor liegt - die Daten kommen ja normal rein. Hat hier jemand einen Tipp? Der Button „Hole aktuelle Daten“ bewirkt diesbezüglich leider nichts. Ich habe mal zwei Screenshots angehängt.

Bildschirmfoto 2020-03-12 um 20.36.44.png

Einen Tipp? Leider nein.
Änderungen im Modul machen schon länger Probleme. Ich dachte bisher es tritt verstärkt auf wenn man zu viele Sensoren hat. Aber in der Zwischenzeit habe ich meine Pflanzen reduziert und einige Sensoren gelöscht. Nun möchte ich wieder einen hinzufügen. In der Instanz taucht er auch nicht auf.

miflo2.jpg miflo3.jpg

Ich glaube das Modul müsste mal überarbeitet werden.

Hi,
wird an dem Modul denn noch aktiv gearbeitet, bzw. ist jemandem eine Alternative bekannt? Eigentlich lief das bis jetzt ja immer ziemlich problemlos…

Gruß

Moin,

Es gibt hier ein Projekt das vielleicht als Alternative interessant sein könnte.

Ist mit einem Esp32 Modul und dann an IPS über MQTT.

Habe ich aber selbst bisher nicht ausprobiert.

Viele Grüße
Ralf

Funktioniert :slight_smile:
Michael

Moin,
bei mir das Gleiche … das Modul kommt mit vielen Sensoren (mehr als Zehn) scheinbar nicht klar :banghead::eek:

Das aktuelle Update, auch von PHP, führt zu folgendem Fehler.

28.06.2020, 17:06:39 | TimerPool            | MiFlora (UpdateTimer): <br />
<b>Deprecated</b>:  join(): Passing glue string after array is deprecated. Swap the parameters in <b>/var/lib/symcon/modules/KH_MiFlora/MiFlora/module.php</b> on line <b>226</b><br />
[...]

Pflegst du das Modul noch?

Ich habe schon ein paar mal angefangen, die Meldungen über MQTT zu verschicken, dann ist auf den PIzero’s kein Apache/nginx notwendig. Aber dafür müsste das Modul auch an den MQTT Server angepasst werden, das du ja doch einiges zusätzlich machst.

Moin Ralf,

ich habe wie zu erwarten, den gleichen Fehler - hast Du schon eine Lösung?

Ciao
HerbertF

Die meinen das tatsächlich so wie sie es schreiben - Du musst die Parameter tauschen. Und das nicht nur an dieser Stelle.


$this->CreateVariable("Hubs", 3, join(", ", $sensor["Hubs"]), $uuid."_hubs", $catID ); // Änderung wegen PHP 7.4.x

:smiley: You made my day :smiley:

Besten Dank kronos - funktioniert :wink: Genieße den Sonnentag :slight_smile:

Ciao
HerbertF

Mein Frage ging auch eher an @Spoosie, ob er das Modul noch updated oder ob wir selber im Code ändern (müssen) ;).

Es gibt ein super python skript (auch als Dienst installierbar) das die Miflora Daten auf MQTT pushed. Einfach auf github nach Miflora MQTT suchen …
Habe selbiges erfolgreich im Einsatz.
Nur zur Info.
BG
hoep

Gesendet von iPhone mit Tapatalk

Hallo hoep,

ich denke, Du meinst MiFlora MQTT Daemon von Thomas Dietrich.

Ich habe dies auch am Laufen auf einem Pi3. Daten kommen alle 5 Minuten über das MQTT-Protokoll an und ich splitte diese dann auf einzelne Variablen auf. Läuft extrem zuverlässig:

MQTT-Configurator:

Angelegte Instanz:


Die einzelnen Variablen legt man selber an und lässt sie dann mit einem Script befüllen:

Script:

Als Abschluss ein ausgelöstes Ereignis, welches bei Aktualisierung der Variable „Value“ die Daten auf die einzelnen Variablen verteilt.

Wie gesagt, sehr zuverlässig und relativ einfach umzusetzen. Jetzt bin ich gerade dabei, die MiFlora-Pflanzendatenbank in Symcon zu integrieren (liegt als *.csv vor), um dann später die Richtwerte mit den tatsächlichen Werten automatisch abgleichen zu lassen.

Gruß

Burkhard

@Burkhard) Genau so hab ich das auch gelöst :slight_smile: [emoji106]
Auf die Idee mit der MiFlora Datenbank kam ich allerdings noch nicht :slight_smile: Muss mal googeln…

Gesendet von iPhone mit Tapatalk

Das mit der Datenbank wird nicht so einfach. Sie enthält Daten von 5.534 Pflanzen. Ich studiere mich gerade durchs Netz, wie ich solch eine große csv-Datei mit fgetcsv in ein Array konvertieren kann. (CSV hat 5.534 Zeilen und 28 Spalten) :eek:

Wenn ich das praktikabel umgesetzt habe, setze ich es hier rein.

Gruß

Burkhard

Was stört dich am Array, Burkhard?

Im Prizip wäre die Auswahl ja nur temporär notwendig und im Kern eigentlich nur der Name der Pflanze, dann die Parameter lesen und nutzen.

Oder hast du schon getestet um RAM Probleme?

Hallo Ralf,

im Moment liegt genau da mein Problem. Selbst wenn ich bei den Spezialschaltern den Puffer raufsetze, ist die CSV-Datei zu groß und er bricht das portieren in ein Array ab.

Vielleicht hab ich da was an Möglichkeiten übersehen. Im Moment sieht das Script zum portieren so aus:

<?php
$oFile = fopen("/home/pi/Download/PlantDB_5335_U0.csv", "r");                            
$aData = array(); //Enthaelt die Daten aus der CSV-Datei
while(!feof($oFile)) $aData[] = fgetcsv($oFile, 0, ",");
$plant = print_r($aData, true);
SetValueString(17828, $plant); // String-Variable, in der sich das Array aufbauen soll
fclose($oFile);

Im Moment trete ich auf der Stelle. Ein zweiter Ansatz würde in Deine Richtung gehen, die CSV-Datei nur um die gesuchte Pflanze filtern und die werte importieren. Allerdings fehlt mir dazu noch nen bissl knowhow. Einer der Gründe, warum ich hier schon seit heute morgen das Internet aussauge an Infos zu PHP.

Die Daten zu den Pflanzen gibt es auf Github unter: khronimo/MiFloraDB (CSV) oder unter: vrachieru/plant-database (json).

Somit habe ich zwei Möglichkeiten. Entweder die Daten aus der CSV-Datei holen oder die Daten aus den json-Paketen holen.

Als json sieht das Ganze für jede Pflanze einzeln so aus:

{
    "pid": "abelia chinensis",
    "basic": {
        "floral_language": "",
        "origin": "China",
        "production": "China",
        "category": "Caprifoliaceae, Abelia",
        "blooming": "Flowering period July-August, fruiting period October",
        "color": "Flower color pink, white"
    },
    "display_pid": "Abelia chinensis",
    "maintenance": {
        "size": "Diameter \u2265 10 cm, height \u2265 15 cm",
        "soil": "Peat or soil with specific nutrients",
        "sunlight": "Like sunshine, slightly resistant to half shade",
        "watering": "Water thoroughly when soil is dry, avoid saturated water",
        "fertilization": "Dilute fertilizers following instructions, apply 1-2 times monthly",
        "pruning": "Remove dead, rotten, diseased leaves and the parts that may affect the good appearance"
    },
    "parameter": {
        "max_light_mmol": 4500,
        "min_light_mmol": 2500,
        "max_light_lux": 30000,
        "min_light_lux": 3500,
        "max_temp": 35,
        "min_temp": 8,
        "max_env_humid": 85,
        "min_env_humid": 30,
        "max_soil_moist": 60,
        "min_soil_moist": 15,
        "max_soil_ec": 2000,
        "min_soil_ec": 350
    },

Gruß

Burkhard

Du musst bei der Größe vermutlich Zeilenweise lesen und Suchen, auf die schnelle folgendes, nicht getestetes, Beispiel:

Was cool wäre, wenn das Ergebnis deiner Bemühungen unabhängig von der benutzen Hardware wäre.
Ich habe z.b. den ESP mit GitHub - sidddy/flora: ESP32 BLE client for Xiaomi Mi Plant sensors am laufen und bekomme die Werte schon in IPS Variablen.