Dependents: mqtt_Autofaehrschiff MQTT_Nucleo_dht11 mqtt_Testprogramm_FritzBox mqtt_TestprogrammWorkshop ... more
PubSubClient.cpp@0:a655fd59ed71, 2021-06-29 (annotated)
- Committer:
- jack1930
- Date:
- Tue Jun 29 10:37:44 2021 +0000
- Revision:
- 0:a655fd59ed71
- Child:
- 1:9fe5f14ea493
MQTT mit ESP01 und STM32 Nucleo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jack1930 | 0:a655fd59ed71 | 1 | #include "PubSubClient.h" |
jack1930 | 0:a655fd59ed71 | 2 | |
jack1930 | 0:a655fd59ed71 | 3 | void PubSubClient::init() |
jack1930 | 0:a655fd59ed71 | 4 | { |
jack1930 | 0:a655fd59ed71 | 5 | static TCPSocket socket1; |
jack1930 | 0:a655fd59ed71 | 6 | socket=&socket1; |
jack1930 | 0:a655fd59ed71 | 7 | static MQTTClient client1(&socket1); |
jack1930 | 0:a655fd59ed71 | 8 | client=&client1; |
jack1930 | 0:a655fd59ed71 | 9 | static ESP8266Interface esp1(MBED_CONF_APP_ESP_TX_PIN, MBED_CONF_APP_ESP_RX_PIN); |
jack1930 | 0:a655fd59ed71 | 10 | esp=&esp1; |
jack1930 | 0:a655fd59ed71 | 11 | int ret = esp->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); |
jack1930 | 0:a655fd59ed71 | 12 | |
jack1930 | 0:a655fd59ed71 | 13 | if(ret != 0) |
jack1930 | 0:a655fd59ed71 | 14 | { |
jack1930 | 0:a655fd59ed71 | 15 | printf("\nConnection error\n"); |
jack1930 | 0:a655fd59ed71 | 16 | } |
jack1930 | 0:a655fd59ed71 | 17 | else |
jack1930 | 0:a655fd59ed71 | 18 | { |
jack1930 | 0:a655fd59ed71 | 19 | printf("\nConnection success\n"); |
jack1930 | 0:a655fd59ed71 | 20 | } |
jack1930 | 0:a655fd59ed71 | 21 | esp->get_ip_address(&deviceIP); |
jack1930 | 0:a655fd59ed71 | 22 | printf("IP via DHCP: %s\n", deviceIP.get_ip_address()); |
jack1930 | 0:a655fd59ed71 | 23 | |
jack1930 | 0:a655fd59ed71 | 24 | // Use with IP |
jack1930 | 0:a655fd59ed71 | 25 | //SocketAddress MQTTBroker(MBED_CONF_APP_MQTT_BROKER_IP, MBED_CONF_APP_MQTT_BROKER_PORT); |
jack1930 | 0:a655fd59ed71 | 26 | |
jack1930 | 0:a655fd59ed71 | 27 | // Use with DNS |
jack1930 | 0:a655fd59ed71 | 28 | esp->gethostbyname(MBED_CONF_APP_MQTT_BROKER_HOSTNAME, &MQTTBroker); |
jack1930 | 0:a655fd59ed71 | 29 | |
jack1930 | 0:a655fd59ed71 | 30 | printf("\nMQTTBroker %s\n",MQTTBroker.get_ip_address()); |
jack1930 | 0:a655fd59ed71 | 31 | MQTTBroker.set_port(MBED_CONF_APP_MQTT_BROKER_PORT); |
jack1930 | 0:a655fd59ed71 | 32 | |
jack1930 | 0:a655fd59ed71 | 33 | msg.qos = MQTT::QOS0; |
jack1930 | 0:a655fd59ed71 | 34 | msg.retained = false; |
jack1930 | 0:a655fd59ed71 | 35 | msg.dup = false; |
jack1930 | 0:a655fd59ed71 | 36 | |
jack1930 | 0:a655fd59ed71 | 37 | printf("\n socket open: %d\n",socket->open(esp)); |
jack1930 | 0:a655fd59ed71 | 38 | printf("\n socket connect: %d\n",socket->connect(MQTTBroker)); |
jack1930 | 0:a655fd59ed71 | 39 | } |
jack1930 | 0:a655fd59ed71 | 40 | |
jack1930 | 0:a655fd59ed71 | 41 | PubSubClient::PubSubClient() |
jack1930 | 0:a655fd59ed71 | 42 | { |
jack1930 | 0:a655fd59ed71 | 43 | init(); |
jack1930 | 0:a655fd59ed71 | 44 | } |
jack1930 | 0:a655fd59ed71 | 45 | |
jack1930 | 0:a655fd59ed71 | 46 | bool PubSubClient::connect(char* clientName) |
jack1930 | 0:a655fd59ed71 | 47 | { |
jack1930 | 0:a655fd59ed71 | 48 | int ret=0; |
jack1930 | 0:a655fd59ed71 | 49 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
jack1930 | 0:a655fd59ed71 | 50 | |
jack1930 | 0:a655fd59ed71 | 51 | data.MQTTVersion = 3; |
jack1930 | 0:a655fd59ed71 | 52 | char *id = clientName;//MBED_CONF_APP_MQTT_ID; |
jack1930 | 0:a655fd59ed71 | 53 | |
jack1930 | 0:a655fd59ed71 | 54 | data.clientID.cstring=id; |
jack1930 | 0:a655fd59ed71 | 55 | |
jack1930 | 0:a655fd59ed71 | 56 | printf("\n ID=%s\n",clientName); |
jack1930 | 0:a655fd59ed71 | 57 | |
jack1930 | 0:a655fd59ed71 | 58 | ret=client->connect(data); |
jack1930 | 0:a655fd59ed71 | 59 | printf("\n client connect: %d\n",ret); |
jack1930 | 0:a655fd59ed71 | 60 | |
jack1930 | 0:a655fd59ed71 | 61 | return ret==0; |
jack1930 | 0:a655fd59ed71 | 62 | } |
jack1930 | 0:a655fd59ed71 | 63 | |
jack1930 | 0:a655fd59ed71 | 64 | int PubSubClient::publish(const char* topic, const char* buf) |
jack1930 | 0:a655fd59ed71 | 65 | { |
jack1930 | 0:a655fd59ed71 | 66 | msg.payload = (void*)buf; |
jack1930 | 0:a655fd59ed71 | 67 | msg.payloadlen = strlen(buf); |
jack1930 | 0:a655fd59ed71 | 68 | int ret=client->publish(topic, msg); |
jack1930 | 0:a655fd59ed71 | 69 | return ret; |
jack1930 | 0:a655fd59ed71 | 70 | } |