Franken - ESP32 mit MicroPython - Daten via MQTT


#1

Ich komme aus Oberfranken und möchte eine Waage mit HX711, DHT22 und einem ESP32 betreiben.
DHT22 läuft schon, HX711 und Wägezellen sind noch per Post unterwegs ;)

Da mir C(++) zu schwer ist, habe ich Micropython ausprobiert und mir ein bisschen Code zum übermitteln via MQTT zusammengesucht. Das funktioniert soweit ganz gut, zumindest kommt bei “testdrive” was an.
Jezt wäre es schön, wenn ihr mir per PN username und PW für Grafana zuschicken könntet, damit meine Daten visualisiert werden können.

Als ‘user’ gerne: Imkerei Lindlein

Vielen Dank für das schöne Projekt
LG Ralf Lindlein


Terkin for MicroPython
(weitere) low power ESP32 boards
Introduction to MicroPython
[META] Boardentwicklung für Pycom FiPy
#3

@RalfL einige Datenkanäle, u.a. der unter “testdrive” sollten automatisch dashboards erzeugen.

Vielleicht hast du auch schon den Micropython-Code von @Ron entdeckt:


#5

Hab ich gesehen, danke. In dem Code ist MQTT noch nicht drin. Hab MQTT aber inzwischen am Laufen und teste mit dem DHT22 im Wohnzimmer.

Wer den Code dafür haben will, sagt bitte bescheid.

Das automatisch generierte Dashboard hab ich auch schon gesehen :) Leider werden meine Werte zu Temperatur und Feuchte nicht angezeigt.
Muss ich irgendwelche Variablennamen einhalten oder kann ich die Variablen selbst definieren?
Aktuell wird alle 5 min sowas übermittelt:

hiveeyes/testdrive/imkerei_lindlein/waage1/data.json {"humidity": 49.7, "temperature0": 22.3}

humidity = Luftfeuchtigkeit
temperature0 = Temperatur
beides bekomme ich als float aus dem DHT22. Muss ich was ändern, damit das Dashboard die Werte anzeigt? Also einen Graphen zu Temperatur und Feuchte.
Danke schon mal


#6

@Andreas wir hatten ja in letzter Zeit ein paar Sachen umgestellt, irgend was war da auch mit den automatisch generierten dashboards. Sollten die gerade funktionieren oder tut das momentan nicht? Die automatisch generierten queries schauen etwas unvollständig aus:


#7

Hallo Ralf,

schön dass Du zu uns gefunden hast sowie exzellent passend zum Zeitgeist auch auf den MicroPython Zug aufgesprungen bist! Neben @Ron ist bei der vorletzten Station auch @tonke eingestiegen, vielleicht trefft Ihr Euch unterwegs ja irgendwo. ;]

Darf ich fragen, ob Du vanilla MicroPython auf ESP32 einsetzt oder dessen Derivate Pycom MicroPython oder Adafruit CircuitPython verwendest?

Bzgl. Deiner Fragen und Wünsche helfen wir Dir gern bei den weiteren Schritten.

Datentelemetrie auf “testdrive” Kanal

Gratuliere, hier im Standard Dashboard hiveeyes-testdrive bekommst Du im entsprechenden Panel bereits alle Werte angezeigt.

Auch im imkerlich spezifischeren hiveeyes-testdrive-imkerei_lindlein-waage1 ist bereits die Temperatur zu sehen. Feuchtigkeit (humidity) wird auf dieser Dashboardvariante nicht verwendet, deshalb siehst Du den entsprechenden Meßwert auch nicht.

Datentelemetrie auf eigenem Kanal

Machen wir gern. Zusätzlich erhältst Du auch credentials für die Authentifizierung am MQTT Broker, damit Du auf einem Datenkanal übertragen kannst, auf den nur Du schreiben kannst. Gäbe das die von Dir ausgesuchte MQTT Bibliothek her?

Weitere Grafana Dashboards

Wenn es für Dich technischer und detaillierter sein darf, kannst Du Dir bestimmt Inspirationen bei den Dashboards von @mhies und @Thias abholen, bei denen auch @wtf hinsichtlich der beigesteuerten Wetter- und Umweltdaten nicht unerwähnt bleiben sollte:

Danke an dieser Stelle nochmals an alle, die daran mitgewirkt haben!

MicroPython Sourcecode

Schön, dass Du Dich auch für MQTT entschieden hast. Auch wenn das System HTTP ebenfalls akzeptiert, ist MQTT doch ebenfalls unser persönlicher Favorit.

Wir haben vor einiger Zeit schon einmal an einer kleinen Telemetrieclientbibliothek (terkin/src/micropython at master · daq-tools/terkin · GitHub) gearbeitet, mit der man flexibel wahlweise über MQTT oder HTTP funken kann (Beispielcode node_mqtt_json_wan.py). Verwendet hatten wir damals die umqtt.robust Bibliothek, heutzutage gibt es hier aber vielleicht etwas moderneres?

Wenn Du Deinen Code gerne mit uns teilen willst, freuen wir uns und schließen da auch gleich die Frage an, ob man dafür nicht gleich ein schönes Plätzchen unter hiveeyes · GitHub finden könnte?

Herzliche Grüße,
Andreas.


#8

MQTT:
Aktuell läuft die Übertragung zu euch über mqtt.simple (ohne Passwort) und paralelle zu Thingspeak (mit User/PW).
ich hab mich am code von honeypi orientiert. Sie haben ihren Code auch in Python, da ist Micropython nicht weit weg. Nur einige Module heißen anders.
Vielleicht hilft man sich gegenseitig aus. Muss ja nicht jeder sein eigenes Süppchen kochen ;)
Eure Bibliothek schau ich mir auf jeden Fall mal an.
Gerne veröffentliche ich meinen Code auf Github, auch wenn ich denke, dass mein Code nicht so gut ist wie Eurer. Bin noch am Python lernen …

Die Dashboard schau ich mir an, wenn die Datenübertragung komplett läuft. Gestern ist der ESP32 aus welchen Gründen auch immer, um 16 Uhr ausgestiegen.

Ich benutze vanilla Micropython 1.1 vom ~25. Jan 2019 auf einem Heltec Wifi Kit 32
Das Board hab ich genommen, weil ich da auch was im OLED anzeigen lassen kann, um zu sehen, ob es funktioniert. In der freien Wildbahn plane ich einen anderen ESP32 ohne Display, der braucht auch weniger Strom.
Zusätzlich plane ich :

  • ein GSM-Modul, da bei uns “auf dem Land” Sigfox, LoRa etc. nicht existent ist :(
  • eine Batterieüberwachung via ADC am ESP32 mit Benachrichtigung, damit man rechtzeitig die Batterie (LiPo) auswechseln kann. Solar, Autobatterie etc. sind mir zu aufwändig, da dann noch mehr Kabel am Bienenstand verlegt werden müssen und das Solarpanel (wahrscheinlich) immer im Weg steht.
  • Anschluss der Waage(n) mit RJ45. Netzwerkkabel sind günstig und man braucht nur einen ESP32 für alle Waagen am Stand. Oder wisst ihr andere günstige Stecker, die wasserdicht sind?
  • Datenspeicherung auf dem ESP32 oder auf SD-Karte und Übertragung 3-4x täglich um Strom zu sparen. Muss mal sehen, ob man da wirklich Strom spart, wenn sich der chip nicht jedesmal per WLAN etc. verbindet und dafür ein SD-Kartenshield läuft.
    Das ist aber alles Zukunftsmusik, erstmal muss alles laufen.
    LG Ralf

#9

Hallo Ralf,

tut uns leid, dass das so lange gedauert hat. Rechtzeitig zum Wochenende haben wir Dir nun aber endlich die versprochenen Zugangsdaten per PM zukommen lassen. Nun steht Dir ein eigener MQTT Kanal zur Verfügung, auf dem Dir niemand dazwischenfunkt.

Der realm "hiveeyes" bleibt gleich, aus "testdrive" wird die eindeutige Imker-ID, die wir Dir zugesendet haben. Die beiden übrigen Adressierungskomponenten "imkerei_lindlein" sowie "waage1" kannst Du frei belegen und auf diese Weise beliebig viele Meßstationen in Eigenregie erschließen.

Sinn macht an dieser Stelle z.B. die Zuordnung zu “Standort/Beute”, zumindest hatten wir das ursprünglich so geplant. Dir steht es allerdings völlig frei, diese beiden Komponenten beliebig zu belegen.

Ein paar Handreichungen zum Umgang mit Grafana haben wir Dir ebenfalls zukommen lassen und wünschen Dir viel Freude bei den weiteren Erschließungsarbeiten. Bei Rückfragen sind wir selbstverständlich für Dich da.

Herzliche Grüße,
Andreas.


#10

Hier ist meine Code auf github:

Die Daten werden auf Thingspeak und bei euch veröffentlicht, so hat man eine “Datensicherung” falls mal irgendwas ausfällt.

Wenn jemand Tipps oder Verbesserungsvorschläge hat, immer her damit.
Soll ich einen neuen Thread dafür aufmachen?

Nur so am Rande:
hier ist ein Video auf Youtube, indem die InfluxDB und ein bisschen Grafana erklärt wird. Jetzt bin ich auch ein bisschen schlauer ;) Vielleicht hilft es noch jemandem
Edit: hier: YouTube
LG Ralf


#11

Exzellent, vielen Dank fürs Teilen. Für @Ron und @tonke könnte das jetzt schon interessant sein und ich freue mich ebenfalls darauf, sobald ich mal näher an MicroPython ran komme. Danke für die Steilvorlage!

Das ein oder andere vielleicht, aber wenn das Programm für Dich erstmal stabil läuft, dann ist das doch wunderbar. Sobald sich die Gelegenheit ergibt, wird sich hieraus bestimmt eine weitere Diskussion ergeben. Wenn Du noch konkrete Probleme feststellst oder Dir Hinweise auf noch ungelöste Funktionalitäten wünschst, nimm das natürlich auch gern selbst in die Hand, wahlweise z.B. im Bereich “Troubleshooting” oder in der “Firmwareschmiede” bzw. wo es für Dich am besten thematisch reinpasst - beide Kategorien fand ich jetzt nur potentiell am naheliegendsten.

Bis bald und viele Grüße,
Andreas.


split this topic #12

7 posts were merged into an existing topic: [Plenum] Self-hosting the Hiveeyes platform / AGPL


#16

Hallo @RalfL,

wie Du vielleicht mitbekommen hast, bewegt sich auch bei uns gerade einiges in Richtung MicroPython. Du warst da gemeinsam mit @Ron und @tonke als einer der ersten im Thema.

An folgenden Stellen hatten wir Deine Arbeiten bereits erwähnt

und wollen Dir insbesondere für die Verbesserungen am MicroPython Treibercode für den HX711 von David Gerber danken, wir haben ihn - leicht angepasst - nach hx711_heisenberg.py übernommen.

Da wir Deine Arbeiten nun auch bei [META] Boardentwicklung für Pycom FiPy aufgegriffen haben und sich dort gerade einige Leute um eine optimale Integration des Pycom FiPy Developer Boards kümmern, wollte ich die Gelegenheit ergreifen, höflich bei Dir nachzufragen, wie Du das bei der Integration des Heltec WiFi Kit 32 gemacht hast. Wir freuen uns im Stil des Artikels natürlich auch über Fotos im entsprechenden Beitrag bei [META] Boardentwicklung für Pycom FiPy.

Guten Start in die Bienen- und Imkersaison!

Viele Grüße,
Andreas.


#20

Hallo @RalfL,

Neulich bei der Bestandsaufnahme zu Beginn der Entwicklungsarbeiten an unserer MicroPython Firmware [1] hatten wir festgestellt, dass in Deinem Repository auf GitHub GitHub - walterheisenberg/hivewatch_esp32 zwar die Konfiguration des Telemetrieteils per cfg_mqtt.py bereits vorhanden ist, die zugehörige Implementierung jedoch zu fehlen scheint. Darauf wollten wir Dich nur gschwind aufmerksam machen.

Danke auch nochmals dafür!

Herzliche Grüße,
Andreas.

[1]