Jack Hansdampf / Mbed OS mqtt_Testprogramm

Dependencies:   LCD_i2c_GSOE ESP8266MQTT

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "PubSubClient.h"   //MQTT- Bibliothek
00003 #include "LCD.h"            //LCD-Display-Bibliothek
00004 
00005 /*
00006 "mqtt-broker-hostname": {
00007             "help": "MQTT Broker resolvable hostname.",
00008             "value": "\"test.mosquitto.org\""
00009         },
00010 */
00011 PortOut diag(PortC,0xFF);   //Testausgabe für Binärzähler
00012 AnalogIn poti(PA_0);        //Testsensor Analogeingang Drehknopf    
00013 lcd mylcd;                  //LCD-Display
00014 
00015 PubSubClient client;        //Deklaration des MQTT-Clients
00016 
00017 /*
00018 //Beschreibung von Message und MessageData
00019 struct Message
00020 {
00021     enum QoS qos;
00022     bool retained;
00023     bool dup;
00024     unsigned short id;
00025     void *payload;
00026     size_t payloadlen;
00027 };
00028 
00029 //MessageData beinhaltet Message und Topicname
00030 struct MessageData
00031 {
00032     MessageData(MQTTString &aTopicName, struct Message &aMessage)  : message(aMessage), topicName(aTopicName)
00033     { }
00034 
00035     struct Message &message;
00036     MQTTString &topicName;
00037 };
00038 */
00039 
00040 //Subscribe-Callbacks
00041 void subscribeCallback(MessageData& mymessage)
00042 {
00043     mylcd.cursorpos(0);
00044     //Der Inhalt einer Botschaft (payload) kann als String mit gibPayload 
00045     //abgerufen werden
00046     mylcd.printf("%s   ",client.gibPayload(mymessage).c_str());
00047 }
00048 
00049 void subscribeCallback2(MessageData& mymessage)
00050 {
00051     mylcd.cursorpos(0x40);
00052     mylcd.printf("%s   ",client.gibPayload(mymessage).c_str());
00053 }
00054 
00055 
00056 //test.mosquitto.org 5.196.95.208
00057 int main()
00058 {
00059     diag=1;
00060     int d;
00061     char buffer[64];
00062     mylcd.clear();
00063     client.connect((char*)"joerg"); //Verbinde Client mit ID 
00064     //Client für topic einschreiben
00065     client.subscribe("MBED/oehringen/ersteTests", QOS0, subscribeCallback); 
00066     client.subscribe("MBED/oehringen/zweiteTests", QOS0, subscribeCallback2); 
00067     while(true)
00068     {
00069         client.loop();  //Auf neue Botschaften prüfen
00070         diag=diag+1;    //Zähler auf PortC
00071         d=diag;         //Zählerstand speichern
00072         //Poti veröffentlichen
00073         sprintf(buffer, "poti=%d", (int)(poti*4095)); //Potiwert in buffer speichern
00074         client.publish("MBED/oehringen/ersteTests", buffer); //unter Topic veröffentlichen
00075         //diag veröffentlichen
00076         sprintf(buffer, "diag=%d", d); //diag in buffer speichern
00077         client.publish("MBED/oehringen/zweiteTests", buffer); //unter Topic veröffentlichen
00078     }
00079 }
00080 
00081 
00082 
00083