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.
Dependencies: easy-connect-v16 Watchdog FP MQTTPacket RecordType-v-16 watersenor_and_temp_code
main.cpp@21:1a63f4eaae14, 2017-12-29 (annotated)
- Committer:
- DuyLionTran
- Date:
- Fri Dec 29 05:23:12 2017 +0000
- Revision:
- 21:1a63f4eaae14
- Parent:
- 19:fbc21a964938
- Child:
- 23:65cd2b5c76d5
version 1.7.5
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| DuyLionTran | 1:e7a545497bca | 1 | /*************************************************************** |
| DuyLionTran | 0:24bec4d463a5 | 2 | * Includes |
| DuyLionTran | 1:e7a545497bca | 3 | ***************************************************************/ |
| DuyLionTran | 0:24bec4d463a5 | 4 | #include "mbed.h" |
| DuyLionTran | 17:b89d884eb609 | 5 | |
| DuyLionTran | 15:7ba48f016569 | 6 | #include "ReadSensor.h" |
| DuyLionTran | 15:7ba48f016569 | 7 | #include "SimpleMQTT.h" |
| DuyLionTran | 0:24bec4d463a5 | 8 | |
| DuyLionTran | 1:e7a545497bca | 9 | /*************************************************************** |
| DuyLionTran | 1:e7a545497bca | 10 | * Definitions |
| DuyLionTran | 1:e7a545497bca | 11 | ***************************************************************/ |
| DuyLionTran | 0:24bec4d463a5 | 12 | #define RELAY_1_PIN (D11) |
| DuyLionTran | 0:24bec4d463a5 | 13 | #define RELAY_2_PIN (D12) |
| DuyLionTran | 1:e7a545497bca | 14 | |
| DuyLionTran | 1:e7a545497bca | 15 | /*************************************************************** |
| DuyLionTran | 0:24bec4d463a5 | 16 | * Variables |
| DuyLionTran | 1:e7a545497bca | 17 | ***************************************************************/ |
| DuyLionTran | 11:3802c82a5ae9 | 18 | uint32_t lastRead = 0; |
| DuyLionTran | 19:fbc21a964938 | 19 | uint32_t uploadInterval = 5+1; |
| DuyLionTran | 21:1a63f4eaae14 | 20 | struct UploadValue dataStruct; |
| DuyLionTran | 3:1bc26dfb6d35 | 21 | |
| DuyLionTran | 8:844796296dea | 22 | /* Analog Handles */ |
| DuyLionTran | 9:268373df20d7 | 23 | float ADC_PHVal; |
| DuyLionTran | 9:268373df20d7 | 24 | float ADC_DOVal; |
| DuyLionTran | 8:844796296dea | 25 | |
| DuyLionTran | 7:6fa70270f05f | 26 | /*************************************************************** |
| DuyLionTran | 7:6fa70270f05f | 27 | * Structs/Classess |
| DuyLionTran | 7:6fa70270f05f | 28 | ***************************************************************/ |
| DuyLionTran | 14:0129ac8844ee | 29 | static Serial pc(SERIAL_TX, SERIAL_RX); |
| DuyLionTran | 1:e7a545497bca | 30 | |
| DuyLionTran | 11:3802c82a5ae9 | 31 | DigitalOut myled(LED1); |
| DuyLionTran | 8:844796296dea | 32 | |
| DuyLionTran | 11:3802c82a5ae9 | 33 | Timer timer; |
| DuyLionTran | 1:e7a545497bca | 34 | /*************************************************************** |
| DuyLionTran | 7:6fa70270f05f | 35 | * Unity function definitions |
| DuyLionTran | 1:e7a545497bca | 36 | ***************************************************************/ |
| DuyLionTran | 17:b89d884eb609 | 37 | |
| DuyLionTran | 1:e7a545497bca | 38 | /*************************************************************** |
| DuyLionTran | 7:6fa70270f05f | 39 | * Unity function declarations |
| DuyLionTran | 11:3802c82a5ae9 | 40 | ***************************************************************/ |
| DuyLionTran | 7:6fa70270f05f | 41 | |
| DuyLionTran | 11:3802c82a5ae9 | 42 | |
| DuyLionTran | 9:268373df20d7 | 43 | |
| DuyLionTran | 1:e7a545497bca | 44 | /*************************************************************** |
| DuyLionTran | 0:24bec4d463a5 | 45 | * Main |
| DuyLionTran | 11:3802c82a5ae9 | 46 | ***************************************************************/ |
| DuyLionTran | 11:3802c82a5ae9 | 47 | int main() { |
| DuyLionTran | 14:0129ac8844ee | 48 | pc.baud(115200); |
| DuyLionTran | 11:3802c82a5ae9 | 49 | timer.start(); |
| DuyLionTran | 11:3802c82a5ae9 | 50 | lastRead = 0; |
| DuyLionTran | 17:b89d884eb609 | 51 | // set_time(1513125870); |
| DuyLionTran | 14:0129ac8844ee | 52 | pc.printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n"); |
| DuyLionTran | 14:0129ac8844ee | 53 | pc.printf("\r\nconnecting to AP\r\n"); |
| DuyLionTran | 11:3802c82a5ae9 | 54 | |
| DuyLionTran | 11:3802c82a5ae9 | 55 | NetworkInterface* network = easy_connect(true); |
| DuyLionTran | 11:3802c82a5ae9 | 56 | if (!network) { |
| DuyLionTran | 11:3802c82a5ae9 | 57 | printf ("Error easy_connect\n\r"); |
| DuyLionTran | 11:3802c82a5ae9 | 58 | } |
| DuyLionTran | 11:3802c82a5ae9 | 59 | MQTTNetwork mqttNetwork(network); |
| DuyLionTran | 19:fbc21a964938 | 60 | MQTT::Client<MQTTNetwork, Countdown, MQTT_MAX_PACKET_SIZE> client(mqttNetwork); |
| DuyLionTran | 11:3802c82a5ae9 | 61 | printf ("ATTEMPT CONNECT\n\r"); |
| DuyLionTran | 15:7ba48f016569 | 62 | MQTT_AttemptConnect(&client, &mqttNetwork, network); |
| DuyLionTran | 19:fbc21a964938 | 63 | if (connack_rc == MQTT_NOT_AUTHORIZED || connack_rc == MQTT_BAD_USERNAME_OR_PASSWORD) { |
| DuyLionTran | 11:3802c82a5ae9 | 64 | printf ("---ERROR line : %d\n\r", __LINE__); |
| DuyLionTran | 11:3802c82a5ae9 | 65 | while (true) |
| DuyLionTran | 11:3802c82a5ae9 | 66 | wait(1.0); // Permanent failures - don't retry |
| DuyLionTran | 11:3802c82a5ae9 | 67 | } |
| DuyLionTran | 11:3802c82a5ae9 | 68 | |
| DuyLionTran | 14:0129ac8844ee | 69 | myled=1; |
| DuyLionTran | 11:3802c82a5ae9 | 70 | while (true) { |
| DuyLionTran | 14:0129ac8844ee | 71 | time_t seconds = time(NULL); |
| DuyLionTran | 17:b89d884eb609 | 72 | ADC_PHVal = SENSOR_ReadPHADC(); |
| DuyLionTran | 19:fbc21a964938 | 73 | if(connected == true) { |
| DuyLionTran | 11:3802c82a5ae9 | 74 | if ((uint32_t)(timer.read() - lastRead) >= uploadInterval) { // Publish a message every 3 second |
| DuyLionTran | 19:fbc21a964938 | 75 | if (MQTT_PublishADC(&client, seconds, ADC_PHVal) == MQTT::SUCCESS) { |
| DuyLionTran | 19:fbc21a964938 | 76 | wait(0.1); |
| DuyLionTran | 19:fbc21a964938 | 77 | if (MQTT_PublishRelayState(&client, seconds, 1, 1) == MQTT::SUCCESS) { |
| DuyLionTran | 19:fbc21a964938 | 78 | myled = 1; |
| DuyLionTran | 19:fbc21a964938 | 79 | commandID++; |
| DuyLionTran | 19:fbc21a964938 | 80 | } |
| DuyLionTran | 19:fbc21a964938 | 81 | else { |
| DuyLionTran | 19:fbc21a964938 | 82 | myled=0; |
| DuyLionTran | 19:fbc21a964938 | 83 | client.disconnect(); |
| DuyLionTran | 19:fbc21a964938 | 84 | mqttNetwork.disconnect(); |
| DuyLionTran | 19:fbc21a964938 | 85 | MQTT_AttemptConnect(&client, &mqttNetwork, network); // if we have lost the connection |
| DuyLionTran | 19:fbc21a964938 | 86 | } |
| DuyLionTran | 19:fbc21a964938 | 87 | } |
| DuyLionTran | 19:fbc21a964938 | 88 | else { |
| DuyLionTran | 11:3802c82a5ae9 | 89 | myled=0; |
| DuyLionTran | 11:3802c82a5ae9 | 90 | client.disconnect(); |
| DuyLionTran | 11:3802c82a5ae9 | 91 | mqttNetwork.disconnect(); |
| DuyLionTran | 19:fbc21a964938 | 92 | MQTT_AttemptConnect(&client, &mqttNetwork, network); // if we have lost the connection |
| DuyLionTran | 19:fbc21a964938 | 93 | |
| DuyLionTran | 19:fbc21a964938 | 94 | } |
| DuyLionTran | 19:fbc21a964938 | 95 | if ((commandID % 50) == 0) { |
| DuyLionTran | 19:fbc21a964938 | 96 | timer.reset(); |
| DuyLionTran | 11:3802c82a5ae9 | 97 | } |
| DuyLionTran | 19:fbc21a964938 | 98 | lastRead = timer.read(); |
| DuyLionTran | 11:3802c82a5ae9 | 99 | } |
| DuyLionTran | 11:3802c82a5ae9 | 100 | client.yield(500); // allow the MQTT client to receive subscribe messages and manage keep alive |
| DuyLionTran | 19:fbc21a964938 | 101 | } |
| DuyLionTran | 19:fbc21a964938 | 102 | else if (connected == false) { |
| DuyLionTran | 11:3802c82a5ae9 | 103 | connected = true; |
| DuyLionTran | 19:fbc21a964938 | 104 | } |
| DuyLionTran | 19:fbc21a964938 | 105 | else { |
| DuyLionTran | 11:3802c82a5ae9 | 106 | wait(0.5); |
| DuyLionTran | 11:3802c82a5ae9 | 107 | } |
| DuyLionTran | 11:3802c82a5ae9 | 108 | } |
| DuyLionTran | 1:e7a545497bca | 109 | } |
| DuyLionTran | 11:3802c82a5ae9 | 110 |