Jack Hansdampf / Mbed OS mqtt_Testprogramm_Thread

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 Thread thread;
00018 /*
00019 //Beschreibung von Message und MessageData
00020 struct Message
00021 {
00022     enum QoS qos;
00023     bool retained;
00024     bool dup;
00025     unsigned short id;
00026     void *payload;
00027     size_t payloadlen;
00028 };
00029 
00030 //MessageData beinhaltet Message und Topicname
00031 struct MessageData
00032 {
00033     MessageData(MQTTString &aTopicName, struct Message &aMessage)  : message(aMessage), topicName(aTopicName)
00034     { }
00035 
00036     struct Message &message;
00037     MQTTString &topicName;
00038 };
00039 */
00040 
00041 //Subscribe-Callbacks
00042 void subscribeCallback(MessageData& mymessage)
00043 {
00044     mylcd.cursorpos(0);
00045     //Der Inhalt einer Botschaft (payload) kann als String mit gibPayload 
00046     //abgerufen werden
00047     mylcd.printf("%s   ",client.gibPayload(mymessage).c_str());
00048 }
00049 
00050 void subscribeCallback2(MessageData& mymessage)
00051 {
00052     mylcd.cursorpos(0x40);
00053     mylcd.printf("%s   ",client.gibPayload(mymessage).c_str());
00054 }
00055 
00056 void mqtt(void)
00057 {
00058     char buffer[64];
00059     int d;
00060     while(true)
00061     {
00062         client.loop();  //Auf neue Botschaften prüfen
00063         d=diag;         //Zählerstand speichern
00064         //Poti veröffentlichen
00065         sprintf(buffer, "poti=%d", (int)(poti*4095)); //Potiwert in buffer speichern
00066         client.publish("MBED/oehringen/ersteTests", buffer,QOS1); //unter Topic veröffentlichen
00067         //diag veröffentlichen
00068         sprintf(buffer, "diag=%d", d); //diag in buffer speichern
00069         client.publish("MBED/oehringen/zweiteTests", buffer,QOS2); //unter Topic veröffentlichen
00070     }
00071 }
00072 
00073 
00074 //test.mosquitto.org 5.196.95.208
00075 int main()
00076 {
00077     diag=1;
00078 
00079     mylcd.clear();
00080     client.connect((char*)"joerg"); //Verbinde Client mit ID 
00081     //Client für topic einschreiben
00082     client.subscribe("MBED/oehringen/ersteTests", QOS0, subscribeCallback); 
00083     client.subscribe("MBED/oehringen/zweiteTests", QOS0, subscribeCallback2); 
00084     thread.start(mqtt);
00085     while(true)
00086     {
00087         diag=diag+1;    //Zähler auf PortC
00088         ThisThread::sleep_for(500);
00089 
00090     }
00091 }
00092 
00093 
00094 
00095