Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mqtt_Autofaehrschiff MQTT_Nucleo_dht11 mqtt_Testprogramm_FritzBox mqtt_TestprogrammWorkshop ... more
PubSubClient.cpp
00001 #include "PubSubClient.h" 00002 00003 00004 void PubSubClient::init() 00005 { 00006 DigitalOut ch_pd(MBED_CONF_APP_ESP_CH_PD_PIN); 00007 DigitalOut rst(MBED_CONF_APP_ESP_RST_PIN); 00008 ch_pd=1; 00009 rst=0; 00010 HAL_Delay(100); 00011 rst=1; 00012 static TCPSocket socket1; 00013 socket=&socket1; 00014 Timer tim; 00015 00016 static ESP8266Interface esp1(MBED_CONF_APP_ESP_TX_PIN, MBED_CONF_APP_ESP_RX_PIN); 00017 esp=&esp1; 00018 int ret = esp->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); 00019 static MQTTClient client1(&socket1); 00020 client=&client1; 00021 if(ret != 0) 00022 { 00023 printf("\nConnection error\n"); 00024 } 00025 else 00026 { 00027 printf("\nConnection success\n"); 00028 } 00029 esp->get_ip_address(&deviceIP); 00030 printf("IP via DHCP: %s\n", deviceIP.get_ip_address()); 00031 if (MBED_CONF_APP_HOSTNAME==true) 00032 // Use with DNS 00033 { 00034 esp->gethostbyname(MBED_CONF_APP_MQTT_BROKER_HOSTNAME, &MQTTBroker); 00035 printf("\nMQTTBroker %s\n",MQTTBroker.get_ip_address()); 00036 MQTTBroker.set_port(MBED_CONF_APP_MQTT_BROKER_PORT); 00037 } 00038 else 00039 // Use with IP 00040 //SocketAddress MQTTBroker(MBED_CONF_APP_MQTT_BROKER_IP, MBED_CONF_APP_MQTT_BROKER_PORT); 00041 { 00042 MQTTBroker.set_port(MBED_CONF_APP_MQTT_BROKER_PORT); 00043 MQTTBroker.set_ip_address(MBED_CONF_APP_MQTT_BROKER_IP); 00044 if (MQTTBroker.get_ip_version()== nsapi_version::NSAPI_IPv4) printf("IP-Version IPV4"); 00045 } 00046 msg.qos = MQTT::QOS0; 00047 msg.retained = false; 00048 msg.dup = false; 00049 00050 printf("\n socket open: %d\n",socket->open(esp)); 00051 printf("\n socket connect: %d\n",socket->connect(MQTTBroker)); 00052 } 00053 00054 PubSubClient::PubSubClient() 00055 { 00056 init(); 00057 } 00058 00059 bool PubSubClient::connect(char* clientName) 00060 { 00061 int ret=0; 00062 data = MQTTPacket_connectData_initializer; 00063 00064 data.MQTTVersion = 4; 00065 char *id = clientName;//MBED_CONF_APP_MQTT_ID; 00066 00067 data.clientID.cstring=id; 00068 00069 printf("\n ID=%s\n",clientName); 00070 00071 ret=client->connect(data); 00072 printf("\n client connect: %d\n",ret); 00073 00074 return ret==0; 00075 } 00076 00077 int PubSubClient::publish(const char* topic, const char* buf) 00078 { 00079 msg.payload = (void*)buf; 00080 msg.qos=QOS0; 00081 msg.retained=false; 00082 msg.payloadlen = strlen(buf); 00083 int ret=client->publish(topic, msg); 00084 return ret; 00085 } 00086 00087 int PubSubClient::publish(const char* topic, const char* buf, MQTT::QoS qos) 00088 { 00089 msg.payload = (void*)buf; 00090 msg.qos=qos; 00091 msg.retained=false; 00092 msg.payloadlen = strlen(buf); 00093 int ret=client->publish(topic, msg); 00094 return ret; 00095 } 00096 00097 int PubSubClient::publish(const char* topic, const char* buf, MQTT::QoS qos, bool retain) 00098 { 00099 msg.payload = (void*)buf; 00100 msg.qos=qos; 00101 msg.retained=retain; 00102 msg.payloadlen = strlen(buf); 00103 int ret=client->publish(topic, msg); 00104 return ret; 00105 } 00106 00107 int PubSubClient::subscribe(const char* topicFilter, MQTT::QoS qos, MQTTClient::messageHandler mh) 00108 { 00109 int ret=client->subscribe(topicFilter, qos, mh); 00110 return ret; 00111 } 00112 00113 int PubSubClient::yield(unsigned long timeout_ms) 00114 { 00115 00116 return client->yield(timeout_ms); 00117 00118 } 00119 00120 int PubSubClient::loop(unsigned long timeout_ms) 00121 { 00122 00123 return client->yield(timeout_ms); 00124 00125 } 00126 00127 string PubSubClient::gibPayload(MessageData& mymessage) 00128 { 00129 string ret; 00130 00131 for (int i=0;i<(int)(mymessage.message.payloadlen);i++) 00132 { 00133 ret[i]=((char*)(mymessage.message.payload))[i]; 00134 } 00135 return ret; 00136 }
Generated on Wed Jul 13 2022 10:34:42 by
1.7.2