WizFi310 with MQTT Implementation for WizWikiw7500
Dependencies: DHT MQTT WizFi310Interface_Legacynew mbed-src
main.cpp@0:8007c0060f5f, 2018-02-01 (annotated)
- Committer:
- kandilidinesh
- Date:
- Thu Feb 01 09:08:42 2018 +0000
- Revision:
- 0:8007c0060f5f
WizFi310 with MQTT Implementation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kandilidinesh | 0:8007c0060f5f | 1 | #include "mbed.h" |
kandilidinesh | 0:8007c0060f5f | 2 | #include "WizFi310Interface.h" |
kandilidinesh | 0:8007c0060f5f | 3 | #include "DHT.h" |
kandilidinesh | 0:8007c0060f5f | 4 | #include "MQTTClient.h" |
kandilidinesh | 0:8007c0060f5f | 5 | #include "MQTTmbed.h" |
kandilidinesh | 0:8007c0060f5f | 6 | #include "MQTTSocket.h" |
kandilidinesh | 0:8007c0060f5f | 7 | #define ECHO_SERVER_PORT 7 |
kandilidinesh | 0:8007c0060f5f | 8 | #define USE_DHCP 1 |
kandilidinesh | 0:8007c0060f5f | 9 | |
kandilidinesh | 0:8007c0060f5f | 10 | #define SECURE WizFi310::SEC_WPA2_MIXED |
kandilidinesh | 0:8007c0060f5f | 11 | #define AP_SSID "cdi1"// Input SSID |
kandilidinesh | 0:8007c0060f5f | 12 | #define AP_PASSWORD "cdilab17" // Input PW |
kandilidinesh | 0:8007c0060f5f | 13 | |
kandilidinesh | 0:8007c0060f5f | 14 | #if defined(TARGET_WIZwiki_W7500) |
kandilidinesh | 0:8007c0060f5f | 15 | Serial pc(USBTX, USBRX); |
kandilidinesh | 0:8007c0060f5f | 16 | WizFi310Interface wifi(D1, D0, D7, D6, D8, NC, 115200); |
kandilidinesh | 0:8007c0060f5f | 17 | #endif |
kandilidinesh | 0:8007c0060f5f | 18 | |
kandilidinesh | 0:8007c0060f5f | 19 | int arrivedcount = 0; |
kandilidinesh | 0:8007c0060f5f | 20 | |
kandilidinesh | 0:8007c0060f5f | 21 | class MQTTWIZ: public MQTTSocket |
kandilidinesh | 0:8007c0060f5f | 22 | { |
kandilidinesh | 0:8007c0060f5f | 23 | public: |
kandilidinesh | 0:8007c0060f5f | 24 | MQTTWIZ() |
kandilidinesh | 0:8007c0060f5f | 25 | { |
kandilidinesh | 0:8007c0060f5f | 26 | wait(1); |
kandilidinesh | 0:8007c0060f5f | 27 | this->createSocket(); |
kandilidinesh | 0:8007c0060f5f | 28 | } |
kandilidinesh | 0:8007c0060f5f | 29 | }; |
kandilidinesh | 0:8007c0060f5f | 30 | |
kandilidinesh | 0:8007c0060f5f | 31 | void messageArrived(MQTT::MessageData& md) |
kandilidinesh | 0:8007c0060f5f | 32 | { |
kandilidinesh | 0:8007c0060f5f | 33 | MQTT::Message &message = md.message; |
kandilidinesh | 0:8007c0060f5f | 34 | printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); |
kandilidinesh | 0:8007c0060f5f | 35 | printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); |
kandilidinesh | 0:8007c0060f5f | 36 | ++arrivedcount; |
kandilidinesh | 0:8007c0060f5f | 37 | } |
kandilidinesh | 0:8007c0060f5f | 38 | |
kandilidinesh | 0:8007c0060f5f | 39 | void baud(int baudrate) { |
kandilidinesh | 0:8007c0060f5f | 40 | Serial s(USBTX, USBRX); |
kandilidinesh | 0:8007c0060f5f | 41 | s.baud(baudrate); |
kandilidinesh | 0:8007c0060f5f | 42 | } |
kandilidinesh | 0:8007c0060f5f | 43 | |
kandilidinesh | 0:8007c0060f5f | 44 | int main (void) |
kandilidinesh | 0:8007c0060f5f | 45 | { |
kandilidinesh | 0:8007c0060f5f | 46 | baud(115200); |
kandilidinesh | 0:8007c0060f5f | 47 | //Wifi Connection |
kandilidinesh | 0:8007c0060f5f | 48 | wifi.init(); |
kandilidinesh | 0:8007c0060f5f | 49 | printf("WizFi310 \r\n"); |
kandilidinesh | 0:8007c0060f5f | 50 | wifi.connect(SECURE,AP_SSID, AP_PASSWORD,WizFi310::WM_STATION); |
kandilidinesh | 0:8007c0060f5f | 51 | printf("IP Address is %s\r\n", wifi.getIPAddress()); |
kandilidinesh | 0:8007c0060f5f | 52 | //MQTT Connection |
kandilidinesh | 0:8007c0060f5f | 53 | printf("Wait a second...\r\n"); |
kandilidinesh | 0:8007c0060f5f | 54 | char* topic = "wizfi/temp"; |
kandilidinesh | 0:8007c0060f5f | 55 | MQTTWIZ ipstack = MQTTWIZ(); |
kandilidinesh | 0:8007c0060f5f | 56 | MQTT::Client<MQTTWIZ, Countdown> client = MQTT::Client<MQTTWIZ, Countdown>(ipstack); |
kandilidinesh | 0:8007c0060f5f | 57 | DHT sensor(D14, DHT11); |
kandilidinesh | 0:8007c0060f5f | 58 | char* hostname = "172.16.73.4"; |
kandilidinesh | 0:8007c0060f5f | 59 | int port = 1883; |
kandilidinesh | 0:8007c0060f5f | 60 | int rc = ipstack.connect(hostname, port); |
kandilidinesh | 0:8007c0060f5f | 61 | printf("Topic: %s\r\n",topic); |
kandilidinesh | 0:8007c0060f5f | 62 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
kandilidinesh | 0:8007c0060f5f | 63 | data.MQTTVersion = 3; |
kandilidinesh | 0:8007c0060f5f | 64 | data.clientID.cstring = "dinesh12319237983712"; |
kandilidinesh | 0:8007c0060f5f | 65 | rc = client.connect(data); |
kandilidinesh | 0:8007c0060f5f | 66 | rc = client.subscribe(topic, MQTT::QOS1, messageArrived); |
kandilidinesh | 0:8007c0060f5f | 67 | MQTT::Message message; |
kandilidinesh | 0:8007c0060f5f | 68 | int error = 0; |
kandilidinesh | 0:8007c0060f5f | 69 | char buf[100]="Hello World"; |
kandilidinesh | 0:8007c0060f5f | 70 | float temp=0.0; |
kandilidinesh | 0:8007c0060f5f | 71 | while (true) |
kandilidinesh | 0:8007c0060f5f | 72 | { |
kandilidinesh | 0:8007c0060f5f | 73 | error = sensor.readData(); |
kandilidinesh | 0:8007c0060f5f | 74 | if (0 == error) |
kandilidinesh | 0:8007c0060f5f | 75 | { |
kandilidinesh | 0:8007c0060f5f | 76 | temp = sensor.ReadTemperature(CELCIUS); |
kandilidinesh | 0:8007c0060f5f | 77 | } |
kandilidinesh | 0:8007c0060f5f | 78 | |
kandilidinesh | 0:8007c0060f5f | 79 | message.qos = MQTT::QOS0; |
kandilidinesh | 0:8007c0060f5f | 80 | message.retained = false; |
kandilidinesh | 0:8007c0060f5f | 81 | message.dup = false; |
kandilidinesh | 0:8007c0060f5f | 82 | sprintf(buf, "%3.1f", temp); |
kandilidinesh | 0:8007c0060f5f | 83 | message.payload = (void*)buf; |
kandilidinesh | 0:8007c0060f5f | 84 | message.payloadlen = strlen(buf); |
kandilidinesh | 0:8007c0060f5f | 85 | rc = client.publish("wizfi/temp", message); |
kandilidinesh | 0:8007c0060f5f | 86 | printf("Temperature Published : %s\r\n",message.payload); |
kandilidinesh | 0:8007c0060f5f | 87 | client.yield(60000); |
kandilidinesh | 0:8007c0060f5f | 88 | } |
kandilidinesh | 0:8007c0060f5f | 89 | } |
kandilidinesh | 0:8007c0060f5f | 90 |