MQTT Library und Thingspeak API
› Forums › The NanoESP & Pretzel Board Forum › MQTT Library und Thingspeak API
Tagged: Library, MQTT, ThingSpeak
- This topic has 3 replies, 2 voices, and was last updated 7 years, 7 months ago by Yunaria.
-
AuthorPosts
-
February 8, 2017 at 12:12 #2061jpbParticipant
Hat schon einmal jemand erfolgreich die Nanoesp MQTT Library mit einem anderen Broker speziell dem von Thingspeak benutzt?
Wenn ich mir die Thingspeak API anschaue sollte ich doch eigentlich mit dem Befehl
(mqtt.connect(0, "mqtt.thingspeak.com", 1883, mqttId)
eine Verbindung zum Broker bekommen können, was mache ich da falsch?
Ich erhalte nur den Fehler “error connecting”Zum weiteren Verständnis:
Wenn der Fehler behoben ist müsste ich im nächsten Schritt doch dann meine NachrichtnewMsg = {"channels/<em><ChannelID></em>/publish/fields/field1/<em><ApiKey></em>", "0", 0, true};
mit
mqtt.publish(0, &newMsg)
schicken können?- This topic was modified 7 years, 8 months ago by jpb.
February 9, 2017 at 14:39 #2063jpbParticipantinzwischen bin ich ein Stück weiter gekommen und erreiche ein erfolgreiches connect hierfür ist es bei Thingspeak notwendig dass das
CleanSession flag auf 1
undlastWill flag auf 0
steht.
dies erreiche ich im meinem Programm durch:mqtt_msg lastWill = {"", "", 0, true}; if (mqtt.connect(0,"mqtt.thingspeak.com", 1883 , mqttId, true, 120, &lastWill, "", "")) { Serial.println(F("Connected to Broker")); } else { Serial.println(F("error connecting")); setupOk = false; };
Jetzt bleibt noch das Publish zu lösen hier funktioniert es noch nicht wie gedacht und ich bin für Ratschläge dankbar.
February 19, 2017 at 15:41 #2065YunariaParticipantHallo jpb,
möglicherweise konnten Sie das Problem schon lösen. Falls nicht –
hier die wesentlichen Zeilen aus einem funktionierendem Programm, die für Sie interessant sein könnten.
Lastwill usw. behandle ich im Moment (noch) nicht.
Mir ging es einmal rein darum, an ThingSpeak per MQQT Werte zu senden.mqtt_msg newPing; void setup() { newPing = {"channels/210619/publish/fields/field8/" + ThingSpeakKEY, "0"}; if (mqtt.connect(0, "mqtt.thingspeak.com", 1883, ThingSpeakKEY)) { Serial.println("Mit ThingSpeak MQTT verbunden"); digitalWrite(MQTTLED, HIGH); } else { Serial.println("Verbinden mit ThingSpeak MQTT gescheitert"); digitalWrite(MQTTLED, LOW); } } void loop() { sendValues(); delay(15000); } void sendValues() { newPing.value = String(holePing()); mqtt.publish(0, &newPing); } int holePing() { int pingZeit = nanoesp.ping("www.google.at"); return pingZeit; }
Abgeleitet ist dies von http://iot.fkainka.de/day23-2016
LG Yunaria
February 20, 2017 at 15:53 #2067YunariaParticipantNochmal ich…
Das gleichzeitige Übertragen mehrerer Sensordaten / mehrerer Felder funktioniert auch auf diese Art.
Den unschönen Code bitte ich zu entschuldigen.Die relevanten Zeilen:
mqtt_msg newData; void setup() { newData = {"channels/210619/publish/" + ThingSpeakKEY, "0"}; if (mqtt.connect(0, "mqtt.thingspeak.com", 1883, ThingSpeakKEY)) { Serial.println("Mit ThingSpeak MQTT verbunden"); } else { Serial.println("Verbinden mit ThingSpeak MQTT gescheitert"); } } void loop() { sendValues(); delay(15000); } void sendValues() { newData.value = String("field1=" + String(getDHT11Temp()) + "&field2=" + String(getDHT11Hum()) + "&field3=" + String(getDS18B20()) + "&field4=" + String(getLDR()) + "&field5=" + String(getPing())); mqtt.publish(0, &newData); delay(500); } //--------------------------------Sensoren---------------------------------------------------- float getDHT11Temp() { float DHTtemp = dht.readTemperature(); return DHTtemp; } int getDHT11Hum() { float DHThum = dht.readHumidity(); return DHThum; } double getDS18B20() { sensors.requestTemperatures(); double SensorDS = sensors.getTempCByIndex(0); return SensorDS; } int getPing() { int pingZeit=0; do { pingZeit = nanoesp.ping("www.google.at"); } while (pingZeit<=0); return pingZeit; } double getLDR() { double LDRinput = analogRead(LDR); LDRinput = LDRinput/10; return LDRinput; }
LG Yunaria
Attachments:
-
AuthorPosts
- You must be logged in to reply to this topic.