MQTT Client for mbed LPC1768 and Application Board over Ethernet; publish only.
Dependencies: C12832 MMA7660 MQTT
Fork of HelloMQTT by
ThingSpeak Programmänderungen
Nachdem Sie auf ThingSpeak einen Account eingerichtet und einen Channel mit Channel -> New Channel erzeugt haben und z.B. in Field 1 die Temperatur und in Field 2 die Luftfeuchtigkeit eingetragen haben, können Sie schon mit einem Desktop MQTT Client Messages auf mqtt.thingspeak.com publishen. Sie auch Beschreibung des MQTT API.
Auf dieser Seite gehe ich von folgenden Daten aus, die Sie im Programm entsprechend Ihren ThingSpeak- Daten anpassen müssen:
- Channel ID: 197888
- Write API Key: K8HEJ5N112EZO888
Die Funktionen und Zeilennummern beziehen sich auf das main-Programm.
In Zeile 81 wird das Topic eingestellt auf (siehe hier):
channels/ + channelID + /publish/ + apiKey
char* topic = "channels/197888/publish/K8HEJ5N112EZO888";
In Zeile 95 wird der ThingSpeak-Broker mqtt.thingspeak.com eingestellt:
const char* hostname = "mqtt.thingspeak.com"; // an Stelle von: broker.hivemq.com int port = 1883;
Die Messages werden in einer Schleife 5 Mal gepublished (Zeile 124-135):
// publish 5 messages for(int t=0; t<5; t++) { char buf[100]; sprintf(buf, "28.4.2017/16:30/21"); // hier die Änderung siehe unten message.qos = MQTT::QOS0; message.retained = false; message.dup = false; message.payload = (void*)buf; message.payloadlen = strlen(buf)+1; rc = client.publish(topic, message); wait(2); }
Mit sprintf werden die Werte wie beim printf in einen Puffer (char buf[100]) geschrieben, z.B.:
int temp = 21+t; int hum = 50 + 4*t; sprintf(buf, "field1=%d&field2=%d", temp, hum); // published message
Außerdem ist der Wartezyklus zwischen den Nachrichten bei ThingSpeak mindestens 15 Sekunden, sodass die Wartezeit in Zeile 136 auf 15 geändert werden muss:
rc = client.publish(topic, message); wait(15); }
Nach der Schleife wird das Topic unsubscribed und die Verbindung zum Broker beendet.