Xiaomi mi flora auslesen und mit Grafana auswerten

Bei Aliexpress gabs ein 3er Bundle mi flora (internationale Version) Sensoren für $ 39,-. Die günstigere Variante ist für den chinesischen Markt gedacht und macht wohl Probleme mit der App bez. Lokalisation. Hersteller dieser Sensoren ist die Firma HuaHuaCaCao.

Edit: Beim Xiaomi EU Store gibt’s die Dinger für $10,99. Aber Porto liegt wiederum bei $13 – $16.

Besagte App gibt es für Android und iPhone. (Flower Care).

Einige Ansätze

Ich wollte diese Daten in Grafana visualisieren und fand mehrere Lösungen (MQTT / NOde Red etc). Letzendlich bin bei der Lösung von Zentrix gelandet.

SQL Server einrichten

Habe ich mit phpmyadmin erledigt. War mir am einfachsten.

SQL Datei von Zentris importieren.

Fertig

User einrichten ‘miflora’@’localhost’ und ‘miflora’@’#’

Python und benötigte Module installieren.

Bei der Installation von PyMySQL gab es eine weitere Fehlermeldung.
Geholfen hat die Deinstallation mit:

und reinstall mit

Anschließend ging es fehlerfrei weiter mit

Module json und configparser sind wohl in der 3er Version schon dabei.

Skript einrichten

config.cfg angepaßt

Skript ausgeführt.

Ein paar Schwierigkeiten mit Python3 und pip

Laut google „Removed. dict.has_key() – use the in operator instead.“ ab Version 3.0.

Habe es versuch es umzuschreiben, aber als nicht Programmierer .. meh… Habe daher die 4 Zeilen auskommentiert um weiter zu gehen.

Edit: Zentris hat kurz danach den Fehler korrigiert. 

Log sagt

Dann noch einen Error mit crontab.

Eintrag im Cronjob geändert. 2>&1 ans Ende der Zeile -> kein Error mehr

SQL

Änderung auf der DB getestet

Ähnlicher Fehler. Diesmal mit ‘osversion’. Als dieses ebenfalls geändert wurde erschien wieder der Error mit xxx

shebang angepaßt

Immer noch keine Daten in der SQL DB.

SQL Teil habe ich dann mal auskommentiert denn ich habe noch weitere Probleme entdeckt habe.

  1. die Werte erschienen erst eine Stunde später in der InfluxDB und Grafana
  2. Das Skript selbst lief. Aber nicht im Cronjob.

Zu Problem 1. Einfache Lösung.

ersetzen durch

Zu Problem 2. Dieser Punkt hat mich etwas länger beschäftigt. Ein anderes Python Skript lief ja wunderbar durch den Cronjob. Ich vermutete es hat damit zu tun, daß weitere Python Skripte als Module geladen werden sollen. Cron sucht im User Home danach und nicht dort wo diese abgelegt worden sind. Daher werden diese nicht gefunden und das Hauptprogramm übermittelt keine Daten.

Lösung – nicht schön aber funktioniert –  Python Skrip durch ein .sh Skript ausführen.

und noch ausführbar setzen.

Mit env -i Befehl getestet, klappt. Anschließend den Crontab Eintrag noch angepaßt.

Hier noch ein Screenshot von Influx DB und Grafana

 

 

Leave a Comment