Paho MQTT Client example with W7500
Dependencies: DHT MQTTforLecture WIZnetInterface mbed-src
Fork of w7500-paho-mqtt by
main.cpp
00001 #include "mbed.h" 00002 #include "DHT.h" 00003 #include "MQTTEthernet.h" 00004 #include "MQTTClient.h" 00005 00006 #define ECHO_SERVER_PORT 7 00007 00008 #include "mbed.h" 00009 00010 int arrivedcount = 0; 00011 00012 void messageArrived(MQTT::MessageData& md) 00013 { 00014 MQTT::Message &message = md.message; 00015 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); 00016 printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); 00017 ++arrivedcount; 00018 } 00019 00020 void baud(int baudrate) { 00021 Serial s(USBTX, USBRX); 00022 s.baud(baudrate); 00023 } 00024 00025 int main (void) 00026 { 00027 DHT sensor(D4, DHT11); 00028 AnalogIn ain(A1); 00029 baud(115200); 00030 printf("Wait a second...\r\n"); 00031 MQTTEthernet ipstack = MQTTEthernet(); 00032 00033 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack); 00034 00035 char* hostname = "222.98.173.244"; 00036 int port = 1883; 00037 00038 int rc = ipstack.connect(hostname, port); 00039 if (rc != 0) 00040 printf("rc from TCP connect is %d\n", rc); 00041 00042 char MQTTClientID[30]; 00043 00044 MQTTPacket_connectData data = MQTTPacket_connectData_initializer; 00045 data.MQTTVersion = 3; 00046 sprintf(MQTTClientID,"WIZwiki-W7500-client-%d",rand()%1000); 00047 data.clientID.cstring = MQTTClientID; 00048 data.username.cstring = "testuser"; 00049 data.password.cstring = "testpassword"; 00050 00051 if ((rc = client.connect(data)) != 0) 00052 printf("rc from MQTT connect is %d\n", rc); 00053 00054 MQTT::Message message; 00055 char buf[100]; 00056 int error = 0; 00057 float hum = 0.0f, temp = 0.0f; 00058 char i = 0; 00059 while (true) 00060 { 00061 if(i > 100) i = 0; 00062 error = sensor.readData(); 00063 if (0 == error) { 00064 hum = sensor.ReadHumidity(); 00065 temp = sensor.ReadTemperature(CELCIUS); 00066 } 00067 message.qos = MQTT::QOS0; 00068 message.retained = false; 00069 message.dup = false; 00070 00071 sprintf(buf, "%3.1f", hum); 00072 message.payload = (void*)buf; 00073 message.payloadlen = strlen(buf); 00074 rc = client.publish("Wiznet/humidity", message); 00075 00076 sprintf(buf, "%3.1f", temp); 00077 message.payload = (void*)buf; 00078 message.payloadlen = strlen(buf); 00079 rc = client.publish("Wiznet/temperature", message); 00080 00081 sprintf(buf, "%3.1f", (rand()%1000)/10.0); 00082 message.payload = (void*)buf; 00083 message.payloadlen = strlen(buf); 00084 rc = client.publish("Wiznet/fluidgauge/A", message); 00085 00086 sprintf(buf, "%3.1f", (rand()%1000)/10.0); 00087 message.payload = (void*)buf; 00088 message.payloadlen = strlen(buf); 00089 rc = client.publish("Wiznet/fluidgauge/B", message); 00090 00091 sprintf(buf, "%3.1f", (rand()%1000)/10.0); 00092 message.payload = (void*)buf; 00093 message.payloadlen = strlen(buf); 00094 rc = client.publish("Wiznet/fluidgauge/C", message); 00095 client.yield(1000); 00096 //wait(100); 00097 } 00098 } 00099
Generated on Sat Jul 16 2022 22:19:39 by 1.7.2