HuyNQ
Dependencies: C12832 MQTT_MbedOS
Fork of mbed-os-mqtt by
main.cpp@0:35df42ee93ed, 2016-11-01 (annotated)
- Committer:
- azazeal88
- Date:
- Tue Nov 01 22:14:54 2016 +0000
- Revision:
- 0:35df42ee93ed
- Child:
- 1:8d33e7fdd27c
Initial Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
azazeal88 | 0:35df42ee93ed | 1 | #include "mbed.h" |
azazeal88 | 0:35df42ee93ed | 2 | #include "C12832.h" |
azazeal88 | 0:35df42ee93ed | 3 | #include "MQTTEthernet.h" |
azazeal88 | 0:35df42ee93ed | 4 | #include "MQTTClient.h" |
azazeal88 | 0:35df42ee93ed | 5 | |
azazeal88 | 0:35df42ee93ed | 6 | // LCD Pinout |
azazeal88 | 0:35df42ee93ed | 7 | C12832 lcd(D11, D13, D12, D7, D10); |
azazeal88 | 0:35df42ee93ed | 8 | |
azazeal88 | 0:35df42ee93ed | 9 | // MQTT Variables |
azazeal88 | 0:35df42ee93ed | 10 | char* MqttHostname = "broker.hivemq.com"; |
azazeal88 | 0:35df42ee93ed | 11 | int MqttPort = 1883; |
azazeal88 | 0:35df42ee93ed | 12 | char* MqttTopic = "mbed-sample"; |
azazeal88 | 0:35df42ee93ed | 13 | char* MqttClientId = "changeme"; |
azazeal88 | 0:35df42ee93ed | 14 | |
azazeal88 | 0:35df42ee93ed | 15 | int main() |
azazeal88 | 0:35df42ee93ed | 16 | { |
azazeal88 | 0:35df42ee93ed | 17 | // Clear LCD and print a welcome message from row 0, col 0. |
azazeal88 | 0:35df42ee93ed | 18 | lcd.cls(); |
azazeal88 | 0:35df42ee93ed | 19 | lcd.locate(0,0); |
azazeal88 | 0:35df42ee93ed | 20 | lcd.printf("Example MQTT client\n"); |
azazeal88 | 0:35df42ee93ed | 21 | |
azazeal88 | 0:35df42ee93ed | 22 | // Brings up the network interface |
azazeal88 | 0:35df42ee93ed | 23 | MQTTEthernet eth = MQTTEthernet(); |
azazeal88 | 0:35df42ee93ed | 24 | const char *ip = eth.get_ip_address(); |
azazeal88 | 0:35df42ee93ed | 25 | |
azazeal88 | 0:35df42ee93ed | 26 | lcd.cls(); |
azazeal88 | 0:35df42ee93ed | 27 | lcd.locate(0,0); |
azazeal88 | 0:35df42ee93ed | 28 | lcd.printf("IP address is: %s\n", ip ? ip : "No IP"); |
azazeal88 | 0:35df42ee93ed | 29 | |
azazeal88 | 0:35df42ee93ed | 30 | // Create Mbed Client Interface |
azazeal88 | 0:35df42ee93ed | 31 | MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(eth); |
azazeal88 | 0:35df42ee93ed | 32 | |
azazeal88 | 0:35df42ee93ed | 33 | // Create TCP connection |
azazeal88 | 0:35df42ee93ed | 34 | eth.open(eth.getEth()); |
azazeal88 | 0:35df42ee93ed | 35 | int rc = eth.connect(MqttHostname, MqttPort); |
azazeal88 | 0:35df42ee93ed | 36 | lcd.printf("TCP Status: %s\n", (rc == 0) ? "Success" : "Failure"); |
azazeal88 | 0:35df42ee93ed | 37 | |
azazeal88 | 0:35df42ee93ed | 38 | // Wait for a short length of time to allow user to see output messages. |
azazeal88 | 0:35df42ee93ed | 39 | Thread::wait(2000); |
azazeal88 | 0:35df42ee93ed | 40 | |
azazeal88 | 0:35df42ee93ed | 41 | if(rc == 0){ |
azazeal88 | 0:35df42ee93ed | 42 | |
azazeal88 | 0:35df42ee93ed | 43 | lcd.cls(); |
azazeal88 | 0:35df42ee93ed | 44 | lcd.locate(0,0); |
azazeal88 | 0:35df42ee93ed | 45 | lcd.printf("Starting MQTT Client"); |
azazeal88 | 0:35df42ee93ed | 46 | |
azazeal88 | 0:35df42ee93ed | 47 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
azazeal88 | 0:35df42ee93ed | 48 | data.MQTTVersion = 3; |
azazeal88 | 0:35df42ee93ed | 49 | data.clientID.cstring = MqttClientId; |
azazeal88 | 0:35df42ee93ed | 50 | rc = client.connect(data); |
azazeal88 | 0:35df42ee93ed | 51 | |
azazeal88 | 0:35df42ee93ed | 52 | lcd.cls(); |
azazeal88 | 0:35df42ee93ed | 53 | lcd.locate(0,0); |
azazeal88 | 0:35df42ee93ed | 54 | lcd.printf("MQTT Client: %s\n", (rc == 0) ? "Connected" : "Failed"); |
azazeal88 | 0:35df42ee93ed | 55 | |
azazeal88 | 0:35df42ee93ed | 56 | while(rc == 0){ |
azazeal88 | 0:35df42ee93ed | 57 | MQTT::Message message; |
azazeal88 | 0:35df42ee93ed | 58 | |
azazeal88 | 0:35df42ee93ed | 59 | // QoS 0 |
azazeal88 | 0:35df42ee93ed | 60 | char buf[100]; |
azazeal88 | 0:35df42ee93ed | 61 | sprintf(buf, "Hello World!"); |
azazeal88 | 0:35df42ee93ed | 62 | message.qos = MQTT::QOS0; |
azazeal88 | 0:35df42ee93ed | 63 | message.retained = false; |
azazeal88 | 0:35df42ee93ed | 64 | message.dup = false; |
azazeal88 | 0:35df42ee93ed | 65 | message.payload = (void*)buf; |
azazeal88 | 0:35df42ee93ed | 66 | message.payloadlen = strlen(buf)+1; |
azazeal88 | 0:35df42ee93ed | 67 | rc = client.publish(MqttTopic, message); |
azazeal88 | 0:35df42ee93ed | 68 | |
azazeal88 | 0:35df42ee93ed | 69 | Thread::wait(5000); |
azazeal88 | 0:35df42ee93ed | 70 | |
azazeal88 | 0:35df42ee93ed | 71 | } |
azazeal88 | 0:35df42ee93ed | 72 | } |
azazeal88 | 0:35df42ee93ed | 73 | |
azazeal88 | 0:35df42ee93ed | 74 | // It is good practice to close the socket |
azazeal88 | 0:35df42ee93ed | 75 | eth.disconnect(); |
azazeal88 | 0:35df42ee93ed | 76 | } |
azazeal88 | 0:35df42ee93ed | 77 |