MQTT on Wizwiki 7500 with DHT11 sensor example
Dependencies: DHT MQTT 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 #define ECHO_SERVER_PORT 7 00006 00007 int arrivedcount = 0; 00008 00009 void messageArrived(MQTT::MessageData& md) 00010 { 00011 MQTT::Message &message = md.message; 00012 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); 00013 printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); 00014 ++arrivedcount; 00015 } 00016 00017 void baud(int baudrate) { 00018 Serial s(USBTX, USBRX); 00019 s.baud(baudrate); 00020 } 00021 00022 int main (void) 00023 { 00024 DHT sensor(D4, DHT11); 00025 baud(115200); 00026 printf("Wait a second...\r\n"); 00027 char* topic = "openhab/parents/command"; 00028 MQTTEthernet ipstack = MQTTEthernet(); 00029 00030 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack); 00031 00032 char* hostname = "192.168.1.99"; 00033 int port = 1883; 00034 00035 int rc = ipstack.connect(hostname, port); 00036 if (rc != 0) 00037 printf("rc from TCP connect is %d\n", rc); 00038 00039 printf("Topic: %s\r\n",topic); 00040 00041 MQTTPacket_connectData data = MQTTPacket_connectData_initializer; 00042 data.MQTTVersion = 3; 00043 data.clientID.cstring = "parents"; 00044 00045 if ((rc = client.connect(data)) != 0) 00046 printf("rc from MQTT connect is %d\n", rc); 00047 00048 if ((rc = client.subscribe(topic, MQTT::QOS1, messageArrived)) != 0) 00049 printf("rc from MQTT subscribe is %d\n", rc); 00050 00051 MQTT::Message message; 00052 char buf[100]; 00053 int error = 0; 00054 float hum = 0.0f, temp = 0.0f; 00055 while (true) 00056 { 00057 error = sensor.readData(); 00058 if (0 == error) { 00059 hum = sensor.ReadHumidity(); 00060 temp = sensor.ReadTemperature(CELCIUS); 00061 } 00062 sprintf(buf, "%3.1f", hum); 00063 message.qos = MQTT::QOS0; 00064 message.retained = false; 00065 message.dup = false; 00066 message.payload = (void*)buf; 00067 message.payloadlen = strlen(buf); 00068 rc = client.publish("openhab/parents/humidity", message); 00069 sprintf(buf, "%3.1f", temp); 00070 message.payload = (void*)buf; 00071 message.payloadlen = strlen(buf); 00072 rc = client.publish("openhab/parents/temperature", message); 00073 00074 client.yield(60000); 00075 } 00076 } 00077
Generated on Wed Jul 13 2022 18:01:13 by 1.7.2