MQTT mit ESP-01 und STM32 Testprogramm mit eigenem Thread für MQTT

Dependencies:   LCD_i2c_GSOE ESP8266MQTT

Committer:
jack1930
Date:
Thu Aug 19 16:08:09 2021 +0000
Revision:
11:2e571ffc2f22
Parent:
10:fcb75a994c37
Multithread

Who changed what in which revision?

UserRevisionLine numberNew contents of line
petripakkanen 0:0046df9d5380 1 #include "mbed.h"
jack1930 7:4a93a41afa3b 2 #include "PubSubClient.h" //MQTT- Bibliothek
jack1930 7:4a93a41afa3b 3 #include "LCD.h" //LCD-Display-Bibliothek
jack1930 8:080aa372ff1f 4
jack1930 6:5f6c4afcd8ca 5 /*
jack1930 6:5f6c4afcd8ca 6 "mqtt-broker-hostname": {
jack1930 6:5f6c4afcd8ca 7 "help": "MQTT Broker resolvable hostname.",
jack1930 6:5f6c4afcd8ca 8 "value": "\"test.mosquitto.org\""
jack1930 6:5f6c4afcd8ca 9 },
jack1930 6:5f6c4afcd8ca 10 */
jack1930 7:4a93a41afa3b 11 PortOut diag(PortC,0xFF); //Testausgabe für Binärzähler
jack1930 7:4a93a41afa3b 12 AnalogIn poti(PA_0); //Testsensor Analogeingang Drehknopf
jack1930 7:4a93a41afa3b 13 lcd mylcd; //LCD-Display
jack1930 2:40091707a95c 14
jack1930 7:4a93a41afa3b 15 PubSubClient client; //Deklaration des MQTT-Clients
petripakkanen 0:0046df9d5380 16
jack1930 11:2e571ffc2f22 17 Thread thread;
jack1930 6:5f6c4afcd8ca 18 /*
jack1930 7:4a93a41afa3b 19 //Beschreibung von Message und MessageData
jack1930 6:5f6c4afcd8ca 20 struct Message
jack1930 6:5f6c4afcd8ca 21 {
jack1930 6:5f6c4afcd8ca 22 enum QoS qos;
jack1930 6:5f6c4afcd8ca 23 bool retained;
jack1930 6:5f6c4afcd8ca 24 bool dup;
jack1930 6:5f6c4afcd8ca 25 unsigned short id;
jack1930 6:5f6c4afcd8ca 26 void *payload;
jack1930 6:5f6c4afcd8ca 27 size_t payloadlen;
jack1930 6:5f6c4afcd8ca 28 };
jack1930 6:5f6c4afcd8ca 29
jack1930 7:4a93a41afa3b 30 //MessageData beinhaltet Message und Topicname
jack1930 6:5f6c4afcd8ca 31 struct MessageData
jack1930 6:5f6c4afcd8ca 32 {
jack1930 6:5f6c4afcd8ca 33 MessageData(MQTTString &aTopicName, struct Message &aMessage) : message(aMessage), topicName(aTopicName)
jack1930 6:5f6c4afcd8ca 34 { }
jack1930 6:5f6c4afcd8ca 35
jack1930 6:5f6c4afcd8ca 36 struct Message &message;
jack1930 6:5f6c4afcd8ca 37 MQTTString &topicName;
jack1930 6:5f6c4afcd8ca 38 };
jack1930 6:5f6c4afcd8ca 39 */
jack1930 6:5f6c4afcd8ca 40
jack1930 7:4a93a41afa3b 41 //Subscribe-Callbacks
jack1930 5:fb5a02cfb826 42 void subscribeCallback(MessageData& mymessage)
jack1930 5:fb5a02cfb826 43 {
jack1930 5:fb5a02cfb826 44 mylcd.cursorpos(0);
jack1930 7:4a93a41afa3b 45 //Der Inhalt einer Botschaft (payload) kann als String mit gibPayload
jack1930 7:4a93a41afa3b 46 //abgerufen werden
jack1930 6:5f6c4afcd8ca 47 mylcd.printf("%s ",client.gibPayload(mymessage).c_str());
jack1930 5:fb5a02cfb826 48 }
jack1930 5:fb5a02cfb826 49
jack1930 6:5f6c4afcd8ca 50 void subscribeCallback2(MessageData& mymessage)
jack1930 5:fb5a02cfb826 51 {
jack1930 6:5f6c4afcd8ca 52 mylcd.cursorpos(0x40);
jack1930 6:5f6c4afcd8ca 53 mylcd.printf("%s ",client.gibPayload(mymessage).c_str());
jack1930 5:fb5a02cfb826 54 }
jack1930 5:fb5a02cfb826 55
jack1930 11:2e571ffc2f22 56 void mqtt(void)
jack1930 11:2e571ffc2f22 57 {
jack1930 11:2e571ffc2f22 58 char buffer[64];
jack1930 11:2e571ffc2f22 59 int d;
jack1930 11:2e571ffc2f22 60 while(true)
jack1930 11:2e571ffc2f22 61 {
jack1930 11:2e571ffc2f22 62 client.loop(); //Auf neue Botschaften prüfen
jack1930 11:2e571ffc2f22 63 d=diag; //Zählerstand speichern
jack1930 11:2e571ffc2f22 64 //Poti veröffentlichen
jack1930 11:2e571ffc2f22 65 sprintf(buffer, "poti=%d", (int)(poti*4095)); //Potiwert in buffer speichern
jack1930 11:2e571ffc2f22 66 client.publish("MBED/oehringen/ersteTests", buffer,QOS1); //unter Topic veröffentlichen
jack1930 11:2e571ffc2f22 67 //diag veröffentlichen
jack1930 11:2e571ffc2f22 68 sprintf(buffer, "diag=%d", d); //diag in buffer speichern
jack1930 11:2e571ffc2f22 69 client.publish("MBED/oehringen/zweiteTests", buffer,QOS2); //unter Topic veröffentlichen
jack1930 11:2e571ffc2f22 70 }
jack1930 11:2e571ffc2f22 71 }
jack1930 11:2e571ffc2f22 72
jack1930 6:5f6c4afcd8ca 73
jack1930 5:fb5a02cfb826 74 //test.mosquitto.org 5.196.95.208
petripakkanen 0:0046df9d5380 75 int main()
petripakkanen 0:0046df9d5380 76 {
jack1930 2:40091707a95c 77 diag=1;
jack1930 11:2e571ffc2f22 78
jack1930 5:fb5a02cfb826 79 mylcd.clear();
jack1930 7:4a93a41afa3b 80 client.connect((char*)"joerg"); //Verbinde Client mit ID
jack1930 7:4a93a41afa3b 81 //Client für topic einschreiben
jack1930 9:6c0ee64da99a 82 client.subscribe("MBED/oehringen/ersteTests", QOS0, subscribeCallback);
jack1930 9:6c0ee64da99a 83 client.subscribe("MBED/oehringen/zweiteTests", QOS0, subscribeCallback2);
jack1930 11:2e571ffc2f22 84 thread.start(mqtt);
jack1930 2:40091707a95c 85 while(true)
petripakkanen 1:f6ebd1725aae 86 {
jack1930 7:4a93a41afa3b 87 diag=diag+1; //Zähler auf PortC
jack1930 11:2e571ffc2f22 88 ThisThread::sleep_for(500);
jack1930 11:2e571ffc2f22 89
petripakkanen 0:0046df9d5380 90 }
petripakkanen 0:0046df9d5380 91 }
petripakkanen 1:f6ebd1725aae 92
petripakkanen 1:f6ebd1725aae 93
jack1930 6:5f6c4afcd8ca 94
jack1930 6:5f6c4afcd8ca 95