Hi Clemens,
Erledigt, Du hast Post. Wir hoffen es klappt alles damit, melde Dich ansonsten gerne, falls es Probleme gibt. Wir wünschen Dir viel Freude beim Datensammeln.
Herzliche Grüße und bis bald,
Andreas.
Hi Clemens,
Erledigt, Du hast Post. Wir hoffen es klappt alles damit, melde Dich ansonsten gerne, falls es Probleme gibt. Wir wünschen Dir viel Freude beim Datensammeln.
Herzliche Grüße und bis bald,
Andreas.
Fein, vielen Dank fürs Teilen!
Soweit ich das überblicken kann, hat sich vor allem die Initialisierung der Bibliothek und die Serialisierungsmethode geändert?
Aus
void transmit_readings() {
// Create JSON object for collecting sensor readings.
StaticJsonBuffer<512> jsonBuffer;
JsonObject& json_data = jsonBuffer.createObject();
// Fill in some data.
json_data["memory_free"] = memory_free;
// Serialize data.
int json_length = json_data.measureLength();
char payload[json_length+1];
json_data.printTo(payload, sizeof(payload));
// Publish data.
mqtt_publisher.publish(payload);
}
wird demnach folgender Code, der für die neuere ArduinoJson6 Bibliothek funktioniert?
void transmit_readings() {
// Create JSON object for collecting sensor readings.
DynamicJsonDocument doc(512);
JsonObject obj = doc.as<JsonObject>();
// Fill in some data
json_data["memory_free"] = memory_free;
// Serialize data
int json_length = measureJson(doc);
char payload[json_length+1];
String payloadstring;
serializeJson(doc, payloadstring);
payloadstring.toCharArray(payload, sizeof(payload));
// Publish data.
mqtt_publisher.publish(payload);
}
Zum Verfahren bei der Serialisierung habe ich noch etwas.
Ich vermute, dass die kompaktere und effizientere zero-copy¹ Variante
// Serialize data
String payload;
serializeJson(doc, payload);
// Publish data
mqtt_publisher.publish(payload.c_str());
ebenfalls funktionieren könnte. Vielleicht findest Du die Gelegenheit, das bei Dir mal so auszuprobieren.
¹
c_str()
is a zero-copy operation, and zero-copy is a good thing on memory-constrained devices.– Converting an int or String to a char array on Arduino - Stack Overflow
Du vermutest richtig, geht beides! Danke für den Tipp :)
Einen Hinweis noch den ich selbst gerade lernen musste: Das Programm stürzt nachhaltig ab, wenn man ein größeres Dokument initialisiert
UND füllt, als man in der MAXBUFFERSIZE in Adafruit_MQTT.h einstellt.
Hallo Andreas,
ich find kein Instant Dashboard im Grafana, das mit 01D9… anfängt :-/
Ich schick die Daten die ich in mein Influx sende ausm Node-Red parallel an swarm.hiveeyes.org:1883 mit meinem Nutzernamen und PW, thema hiveeyes.
Soweit sollte das doch alles stimmen?
gruß aus Moabit (wo es eeendlich regnet)
Konntest du an testdrive etwas schicken? Wie schickst du genau? Welches Adressierungsschema verwendest du ganz konkret? Siehe Meßdaten an die Hiveeyes Plattform übermitteln
Der 127…:8086 ist meine lokale Influx Datenbank
Der Hiveeyes MQTT-Knoten loggt sich bei eurem Mqtt mit den Zugangsdaten von hier weiter oben ein - das Mqtt Thema ist hiveeyes.
Dann sollte da schonmal der JSON String einfach weitergeschoben werden.
Sicherlich muss ich da an der Variablebenennung noch was ändern.
Sollte mein Instant Dashboard nicht auch ohne Daten vorhanden sein? oder entsteht das erst bei erfolgreicher Übertragung?
Erst bei erfolgreicher Übertragung!
Die Adressierung muss so ähnlich aussehen:
export CHANNEL=hiveeyes/01D9FFYJP98SG4.../dominik.../volk-01
aha, erst nach Dateneingang!
Dit is klar, nur wo kommt das hin… alles als ein string nacheinander als mqtt topic?
Oder als extra payload Objekte?
Die ID kommt also auch nicht (wie ich gedacht hab) aus dem Login für den MQTT.
sieh Dir mal die Übertragungen der Anderen an, da sieht man, wie das sein muß
mosquitto_sub -h swarm.hiveeyes.org -p 1883 -t 'hiveeyes/#' -v
Hi Clemens,
der volle Topic müsste bei Dir z.B. folgendermaßen lauten:
hiveeyes/01D9FFYJP98SG4ADB7.../dominik.../volk-01/data.json
Viele Grüße,
Andreas.
Jackpot! Ich mach nachher n kleines Wiki, wie das im Node-Red dann aussieht.
Muss das hinten dran?
Hi Clemens,
so wie Andreas geschrieben hat! Schau’ Dir bitte mal das MQTT-Beispiel an bei
Und ja: Wenn du JSON verschickst, sollte /data.json
ans Ende.
ähem… da stimmt alles an dem Befehl :) - ich kann aber nicht wissen, daß Du Windows verwendest, in diesem Fall mußt Du die ticks durch echte “Gänsefüßchen” ersetzen.
Falls es Win10 ist, da kann man super ein Linux-Subsystem installieren
Alternativ geht aber auch:
So viel bringt es auch nicht, nur die topic-Struktur wird vielleicht etwas klarer!
Hi Clemens,
Exzellent!
Sehr gern! Danke.
Jawoll. MQTT3 hat leider noch keinerlei Content-Type Signalisierung, daher haben wir uns diese Konvention ausgedacht. MQTT5 wird Content-Type Signalisierung bekommen, falls ich das richtig aufgeschnappt habe.
Viel Erfolg bei der weiteren Inbetriebnahme! Sag gern Bescheid, sollte noch irgendetwas klemmen oder unklar sein. Disclaimer: Da gibts bestimmt viel, was noch unzureichend dokumentiert und zu wenig rundgeschliffen ist - wir freuen uns dass Du dabei bist und danken für Deine Geduld.
Viele Grüße,
Andreas.
das wollte ich mit Jackpot zum Ausdruck bringen ;-)