Probleme beim Datentransfer über SIM800 Modul per MQTT

Hey zusammen,
ich bin gerade dabei, mir die Programmierung der Bienenwaage voran zu bringen. Ich möchte gerne nachher einen Arduino (eig nur den Atmega328-P) im Batteriebetrieb betreiben. Des weiteren möchte ich gerne die Daten über das SIM800l Modul per MQTT ans System schicken.

Mir gibt nun mein Programm keine Fehler aus. Doch leider finde ich die Daten nicht hier im System.

Kennt sich jemand mit der MQTT auf Arduino-Basis aus und kann mir weiterhelfen, die Daten hier darzustellen?

Viele Grüße
Kasper027 alias Julian

Hallo Julian, kannst du ein paar Dinge zu deinem System sagen. Wie hast du das SIM800 angeschlossen? Und vor allem welche library nutzt du dafür?

Verwendest du noch die Zugangsdaten von @Andreas, s. Bienenwaage im Eigenbau war ja schon etwas her, ggf. sind die nicht aktuell. Kannst du Daten händisch absetzen?

Als Client verwende ich aktuell PubSubClient von Nicholas O’Leary. Ich verwende noch die Zugangsdaten von damals. Das sim-Modul als solches funktioniert. Das Habenichts mit anderen Scripten schon getestet. Was meinst du genau mit Daten händisch absetzten?

Mit händisch meine ich einen anderen - vielleicht browser basierten - client, dann könnte man zumindest testen, ob die Zugangsdaten noch passen und das funktioniert. Welche library nutzt du denn für das SIM800-Modul?

Bin leider noch nicht ganz so weit wie du, habe bisher das GPRSBee mit einem einfachen HTTP-Aufruf und Datenübergabe per CSV verwendet. MQTT steht aber ebenfalls auf der Agenda, dann auch mit einem billigen (ebay-)SIM800- Modul für ein paar Euro.

Unsere Hardware-Überlegungen, die ganz ählich wie dein akutelles Setup klingen, ;-) findest du hier:

Ich würde gerne auch hier die SODAQ GPRSbee lib verwenden, hat ein paar hilfreiche features, wie z.B. automatischer Abbruch nach nicht erfolgtem Verbindungsaufbau. Bei einem anderen Prototypen mit WLAN hatte ich das nicht implementiert, da ist dann ganz schnell die Batterie leer, wenn es gerade Netz-Probleme gibt. Die lib unterstützt aber MQTT (noch?) nicht. @weef hat daher die TinyGSM lib in einem anderen Thread hier vorgeschlagen.

Für das Sim-Modul nutze ich die TinyGSM Lib. Ja das mit der Baterie ist so eine Sache…Ich werde mir da etwas zusammen bauen mit Relays oder ähnlichem. Da bin ich erstmal noch nicht so weit. Ich würde halt erstmal die Verbindung soweit stehen haben und mich danach dann darum kümmern.

Ich fahre nun morgen in den Urlaub. Werde mich da etwas mal schlau machen und lesen.

Ich gehe ja mal davon aus, dass ich mich ja mit dem Username und PWD anmelden muss…Denn es gibt ja auch einige beispiele, dass man sich nicht extra anmelden muss sondern nur durch das Topic es schon geklärt ist, wer da sendet.

Das mit einem anderem Modul habe ich noch nicht getestet. Werde mich dann mal an einen alten Raspi setzten und den mal flott machen und schauen, ob die Daten darüber gesendet werden können

Mal etwas off topic, wie hast du das SIM-Modul angeschlossen, was für Pins verwendest du? Hast du einen Spannungsregler / Level converter verwendet? Und mit einem 3.3 V oder 5 V Arduino?

Angeschlossen ist das Modul wie folgt

  • Externe Spannungsversorgung aufm Breadboard
  • einmal über VIn und GND der Arduino Uno versorgt
  • VCC und GND am Sim-Modul

Externes Netzteil mit 5 V, RX geht auf Pin 8, TX auf 9 (oder umgekehrt)
Das geht soweit top.

So ich habe nun meinen Raspberry fertig und damit kann ich auch daten senden (einfache Zahlenwerte die ich eintragen muss). Doch leider kommen die nun auch nicht wirklich durch. Deswegen gehe ich jetzt erstmal von einem Fehlkonfiguration auf der Serverseite aus ( die ich wahrscheinlich selber gemacht habe^^).

Gibt es i-wo eine (am besten in deutsch) Anleitung, wie ich das InfluxDB und die Graphen richtig konfigurieren kann?

Eigentlich musst du da gar nix konfigurieren, sollte alles so ankommen. @Andreas kannst du mal schauen, ob was unter der Haube ankommt.

Kannst du mal unter Grafana schauen, dann bei “Home” oben links die drop down öffnen und ganz nach unten schauen, dort stehen die automatisch erzeugten dashboards.

Hallo in die Runde,

wir freuen uns, dass Du ebenfalls Deine Daten per MQTT übermitteln willst, Julian. Das ist auch unsere Lieblingsschnittstelle ;]. Ich kann gerne mit anpacken, um die Ursache des Problems zu finden und es ggf. zu lösen.

Unter https://seashells.io/v/chkyrAzk kann nun jeder zusehen, solange meine Shell läuft und nicht unterbrochen wurde:

mosquitto_sub -h swarm.hiveeyes.org -p 1883 -t 'hiveeyes/#' -v | tee >(nc seashells.io 1337)

Kannst Du dort Daten Deines Knotens identifizieren, Julian?

Viele Grüße,
Andreas.

@Kasper027: Von Dir müsste auf dem Kanal “hiveeyes/37577b01-4a9b-4b08-92a2-3867f11106a5” was kommen, stimmts? Seit dem ich drauf schaue, kam von dort bisher nichts an.

Unter Umständen ist es das Problem mit dem zu langen Topic Namen, das im Arduino/MQTT Umfeld öfters mal hochkommt. In diesem Fall kommt die Nachricht überhaupt gar nicht erst auf das Kabel. Man müsste dazu irgendeine “MAX_” Konstante anpassen, damit das schwummst.

Alternativ kann man auch kürzere Topic Namen verwenden, ich hab Dich deshalb kurzerhand auch mal für den Topic Präfix "hiveeyes/kasper/#" freigeschaltet. Sag Bescheid, wenn Du Dir einen anderen Kurznamen wünschst.

Viele Grüße,
Andreas.

Ich habe gerade 2mal etwas über den langen namen geschickt.

mosquitto_pub -h swarm.hiveeyes.org -u ++++++ -P ++++++ -d -t hiveeyes/37577b01-4a9b-4b08-92a2-3867f11106a5/Stand1/Temperatur -m “20”

die +++halt mit meinen Username und Passwort, welches @Andreas mir geschickt hast.

Mit dem Kasper kam was an oder ?

Analyse

Das kam an, ja:

hiveeyes/37577b01-4a9b-4b08-92a2-3867f11106a5/Stand1/Temperatur 20.5

Hier ebenfalls, ja:

hiveeyes/kasper/Stand1/Temperatur 20

Lösung

Hintergrund

Die Adressierung auf dem MQTT Bus erfolgt über das Quadrupel

realm / network / gateway / node

… wobei "realm" schon mit "hiveeyes" vorgegeben ist. Du musst also das folgende Tripel selbst belegen, also z.B. mit "kasper/Garten/Stand1". Siehe dazu auch die Dokumentation unter Data acquisition — Hiveeyes system documentation 0.9.0 documentation.

Bei der Belegung hast Du grundsätzlich freie Wahl, außer dass die MQTT ACL policy für Deinen Account nur noch "kasper" bzw. "37577b01-4a9b-4b08-92a2-3867f11106a5" zulässt. Somit bleiben für Dich noch die Segmente "gateway" (Standort) und "node" (Stock) zur freien Verfügung übrig. Meßwerte auf diesem Unterkanal kannst Du beliebig adressieren.

Danach kommen dann die Daten. Du willst Meßwerte scheinbar diskret (einzeln) auf den Bus schicken, so wie unter MQTT - Kotori DAQ beschrieben ist, ja?

In diesem Fall müsstest Du vor dem Sensornamen (hier: “Temperatur”) noch ein Topic Segment namens “data” einfügen.

Richtiges MQTT Schema am Beispiel

Wenn die MQTT Nachrichten also folgendermaßen übermittelt werden, sollte es klappen:

hiveeyes/kasper/Garten/Stand1/data/Temperatur 20

“Garten” und “Stand1” kannst Du dabei frei wählen und somit beliebig viele Standorte und Bienenstöcke in Eigenregie versorgen.

Have fun!

Das mit dem Data habe ich gerade auch getestet. Wäre es dann so richtig?

Hi Julian,

ich vorhin etwas vorschnell und musste meine Antwort (und v.a. die Lösung) noch einmal korrigieren. Die erste Version war Schmarrn.

Ich drück die Daumen, dass es jetzt klappt.

Viele Grüße,
Andreas.

mit dem Single wollte ich erstmal testen, ob überhaupt daten ankommen. Ebenfalls schreibe ich aktuell die Daten mit einem Raspberry. Nachher halt dann mit dem Arduino. Ich wollte halt erstmal anfangen, dass überhaupt was geht.

Aber wie kann ich mir denn nun die Daten anschauen? Das habe ich i-wie noch nicht wirklich verstanden…Die letzten Daten müssten nun nach deinem Schema angekommen sein oder?

Verstehe ich, also die MQTT Bus Kommunikation scheint ja gut zu funktionieren. Haken dran.

Um Daten zu Gesicht zu bekommen, muss man allerdings die oben beschriebene Adressierungskonvention verwenden, da unser Datenschnorchel sich nur für Topics mit diesem Schema interessiert, um sie in Richtung Datenbank abzukippen und Dir ein initiales Grafana Dashboard anzulegen.

Bisher konnte ich leider noch keine korrekten Nachrichten unter den jüngsten Dateneingängen entdecken. Hier noch einmal zur Sicherheit die Konvention des Topic Schemas am Beispiel:

hiveeyes/kasper/Garten/Stand1/data/Temperatur 20

Sobald alles geklappt hat, solltest Du dann Deine Daten unter https://swarm.hiveeyes.org/grafana/ betrachten können. Das initial erzeugte Dashboard hieße dann entweder "hiveeyes 37577b01-4a9b-4b08-92a2-3867f11106a5 automatic" oder "hiveeyes kasper automatic". Anschließend kannst Du das dann klonen und nach Belieben weiter bearbeiten. Sag Bescheid, wenn Dir der Account fürs Grafana noch fehlen sollte.

Hier noch gschwind die Direktlinks:

^^ Bei letzterem kommt nun was. Gratuliere und viel Spaß damit!

jap jetzt Sehe ich es auch…jetzt muss dann nur noch alles auf dem Arduino laufen^^ aber da schaue ich nach meinem Urlaub nach^^

Danke nochmal @Andreas und @clemens