MQTT mit ESP-01 und STM32 Testprogramm mit eigenem Thread für MQTT
Dependencies: LCD_i2c_GSOE ESP8266MQTT
main.cpp@10:fcb75a994c37, 2021-08-19 (annotated)
- Committer:
- jack1930
- Date:
- Thu Aug 19 11:41:39 2021 +0000
- Revision:
- 10:fcb75a994c37
- Parent:
- 9:6c0ee64da99a
- Child:
- 11:2e571ffc2f22
ohne QOS2
Who changed what in which revision?
User | Revision | Line number | New 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 | 6:5f6c4afcd8ca | 17 | /* |
jack1930 | 7:4a93a41afa3b | 18 | //Beschreibung von Message und MessageData |
jack1930 | 6:5f6c4afcd8ca | 19 | struct Message |
jack1930 | 6:5f6c4afcd8ca | 20 | { |
jack1930 | 6:5f6c4afcd8ca | 21 | enum QoS qos; |
jack1930 | 6:5f6c4afcd8ca | 22 | bool retained; |
jack1930 | 6:5f6c4afcd8ca | 23 | bool dup; |
jack1930 | 6:5f6c4afcd8ca | 24 | unsigned short id; |
jack1930 | 6:5f6c4afcd8ca | 25 | void *payload; |
jack1930 | 6:5f6c4afcd8ca | 26 | size_t payloadlen; |
jack1930 | 6:5f6c4afcd8ca | 27 | }; |
jack1930 | 6:5f6c4afcd8ca | 28 | |
jack1930 | 7:4a93a41afa3b | 29 | //MessageData beinhaltet Message und Topicname |
jack1930 | 6:5f6c4afcd8ca | 30 | struct MessageData |
jack1930 | 6:5f6c4afcd8ca | 31 | { |
jack1930 | 6:5f6c4afcd8ca | 32 | MessageData(MQTTString &aTopicName, struct Message &aMessage) : message(aMessage), topicName(aTopicName) |
jack1930 | 6:5f6c4afcd8ca | 33 | { } |
jack1930 | 6:5f6c4afcd8ca | 34 | |
jack1930 | 6:5f6c4afcd8ca | 35 | struct Message &message; |
jack1930 | 6:5f6c4afcd8ca | 36 | MQTTString &topicName; |
jack1930 | 6:5f6c4afcd8ca | 37 | }; |
jack1930 | 6:5f6c4afcd8ca | 38 | */ |
jack1930 | 6:5f6c4afcd8ca | 39 | |
jack1930 | 7:4a93a41afa3b | 40 | //Subscribe-Callbacks |
jack1930 | 5:fb5a02cfb826 | 41 | void subscribeCallback(MessageData& mymessage) |
jack1930 | 5:fb5a02cfb826 | 42 | { |
jack1930 | 5:fb5a02cfb826 | 43 | mylcd.cursorpos(0); |
jack1930 | 7:4a93a41afa3b | 44 | //Der Inhalt einer Botschaft (payload) kann als String mit gibPayload |
jack1930 | 7:4a93a41afa3b | 45 | //abgerufen werden |
jack1930 | 6:5f6c4afcd8ca | 46 | mylcd.printf("%s ",client.gibPayload(mymessage).c_str()); |
jack1930 | 5:fb5a02cfb826 | 47 | } |
jack1930 | 5:fb5a02cfb826 | 48 | |
jack1930 | 6:5f6c4afcd8ca | 49 | void subscribeCallback2(MessageData& mymessage) |
jack1930 | 5:fb5a02cfb826 | 50 | { |
jack1930 | 6:5f6c4afcd8ca | 51 | mylcd.cursorpos(0x40); |
jack1930 | 6:5f6c4afcd8ca | 52 | mylcd.printf("%s ",client.gibPayload(mymessage).c_str()); |
jack1930 | 5:fb5a02cfb826 | 53 | } |
jack1930 | 5:fb5a02cfb826 | 54 | |
jack1930 | 6:5f6c4afcd8ca | 55 | |
jack1930 | 5:fb5a02cfb826 | 56 | //test.mosquitto.org 5.196.95.208 |
petripakkanen | 0:0046df9d5380 | 57 | int main() |
petripakkanen | 0:0046df9d5380 | 58 | { |
jack1930 | 2:40091707a95c | 59 | diag=1; |
jack1930 | 2:40091707a95c | 60 | int d; |
jack1930 | 2:40091707a95c | 61 | char buffer[64]; |
jack1930 | 5:fb5a02cfb826 | 62 | mylcd.clear(); |
jack1930 | 7:4a93a41afa3b | 63 | client.connect((char*)"joerg"); //Verbinde Client mit ID |
jack1930 | 7:4a93a41afa3b | 64 | //Client für topic einschreiben |
jack1930 | 9:6c0ee64da99a | 65 | client.subscribe("MBED/oehringen/ersteTests", QOS0, subscribeCallback); |
jack1930 | 9:6c0ee64da99a | 66 | client.subscribe("MBED/oehringen/zweiteTests", QOS0, subscribeCallback2); |
jack1930 | 2:40091707a95c | 67 | while(true) |
petripakkanen | 1:f6ebd1725aae | 68 | { |
jack1930 | 7:4a93a41afa3b | 69 | client.loop(); //Auf neue Botschaften prüfen |
jack1930 | 7:4a93a41afa3b | 70 | diag=diag+1; //Zähler auf PortC |
jack1930 | 7:4a93a41afa3b | 71 | d=diag; //Zählerstand speichern |
jack1930 | 7:4a93a41afa3b | 72 | //Poti veröffentlichen |
jack1930 | 7:4a93a41afa3b | 73 | sprintf(buffer, "poti=%d", (int)(poti*4095)); //Potiwert in buffer speichern |
jack1930 | 9:6c0ee64da99a | 74 | client.publish("MBED/oehringen/ersteTests", buffer); //unter Topic veröffentlichen |
jack1930 | 7:4a93a41afa3b | 75 | //diag veröffentlichen |
jack1930 | 7:4a93a41afa3b | 76 | sprintf(buffer, "diag=%d", d); //diag in buffer speichern |
jack1930 | 10:fcb75a994c37 | 77 | client.publish("MBED/oehringen/zweiteTests", buffer); //unter Topic veröffentlichen |
petripakkanen | 0:0046df9d5380 | 78 | } |
petripakkanen | 0:0046df9d5380 | 79 | } |
petripakkanen | 1:f6ebd1725aae | 80 | |
petripakkanen | 1:f6ebd1725aae | 81 | |
jack1930 | 6:5f6c4afcd8ca | 82 | |
jack1930 | 6:5f6c4afcd8ca | 83 |