Program to receive the data serially in the WIZ750SR and add time data to the MQtt broker.

Dependencies:   MFRC522 MQTT_NTP NTPClient WIZnetInterface mbed-src

Fork of RFID_copy by Rajib Kumer Dey

Committer:
HarshaDRAGNEEL
Date:
Tue Jul 17 06:16:01 2018 +0000
Revision:
1:f7f81ab19c7e
Parent:
0:1fdb07d055b9
Added NTP protocol to send data to MQTT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HarshaDRAGNEEL 1:f7f81ab19c7e 1
Rajib 0:1fdb07d055b9 2
Rajib 0:1fdb07d055b9 3 #include "mbed.h"
HarshaDRAGNEEL 1:f7f81ab19c7e 4 #include "NTPClient.h"
Rajib 0:1fdb07d055b9 5 #include "SPI.h"
Rajib 0:1fdb07d055b9 6 #include "MQTTEthernet.h"
Rajib 0:1fdb07d055b9 7 #include "MQTTClient.h"
Rajib 0:1fdb07d055b9 8
Rajib 0:1fdb07d055b9 9 #define ECHO_SERVER_PORT 7
Rajib 0:1fdb07d055b9 10
Rajib 0:1fdb07d055b9 11 // Nucleo Pin for MFRC522 reset (pick another D pin if you need D8)
Rajib 0:1fdb07d055b9 12 //#define MF_RESET D8
HarshaDRAGNEEL 1:f7f81ab19c7e 13 EthernetInterface eth;
HarshaDRAGNEEL 1:f7f81ab19c7e 14 NTPClient ntpClient;
HarshaDRAGNEEL 1:f7f81ab19c7e 15
Rajib 0:1fdb07d055b9 16
Rajib 0:1fdb07d055b9 17 //Serial connection to PC for output
HarshaDRAGNEEL 1:f7f81ab19c7e 18 Serial pc(USBTX, USBRX);
HarshaDRAGNEEL 1:f7f81ab19c7e 19 Serial a(D1,D0);
HarshaDRAGNEEL 1:f7f81ab19c7e 20 char c[100]="";
Rajib 0:1fdb07d055b9 21
Rajib 0:1fdb07d055b9 22 int main(void) {
Rajib 0:1fdb07d055b9 23 //pc.printf("starting...\n");
HarshaDRAGNEEL 1:f7f81ab19c7e 24 int cnt = 0;
Rajib 0:1fdb07d055b9 25
Rajib 0:1fdb07d055b9 26 Serial pc(USBTX, USBRX);
HarshaDRAGNEEL 1:f7f81ab19c7e 27 Serial a(D1,D0);
HarshaDRAGNEEL 1:f7f81ab19c7e 28 // pc.baud(115200);
Rajib 0:1fdb07d055b9 29 printf("Wait a second...\r\n");
HarshaDRAGNEEL 1:f7f81ab19c7e 30 char* topic = "Vending machine";
Rajib 0:1fdb07d055b9 31 MQTTEthernet ipstack = MQTTEthernet();
Rajib 0:1fdb07d055b9 32
Rajib 0:1fdb07d055b9 33 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
Rajib 0:1fdb07d055b9 34
Rajib 0:1fdb07d055b9 35 char* hostname = "172.16.73.4";
Rajib 0:1fdb07d055b9 36 int port = 1883;
Rajib 0:1fdb07d055b9 37
HarshaDRAGNEEL 1:f7f81ab19c7e 38
HarshaDRAGNEEL 1:f7f81ab19c7e 39 int rc = ipstack.connect(hostname, port);
Rajib 0:1fdb07d055b9 40 if (rc != 0)
HarshaDRAGNEEL 1:f7f81ab19c7e 41 printf("rc from TCP connect is %d\n", rc);
Rajib 0:1fdb07d055b9 42
Rajib 0:1fdb07d055b9 43 printf("Topic: %s\r\n",topic);
Rajib 0:1fdb07d055b9 44
Rajib 0:1fdb07d055b9 45 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
Rajib 0:1fdb07d055b9 46 data.MQTTVersion = 3;
Rajib 0:1fdb07d055b9 47 data.clientID.cstring = "parents";
Rajib 0:1fdb07d055b9 48
Rajib 0:1fdb07d055b9 49 if ((rc = client.connect(data)) == 0)
Rajib 0:1fdb07d055b9 50 printf("rc from MQTT connect is %d\n", rc);
HarshaDRAGNEEL 1:f7f81ab19c7e 51
HarshaDRAGNEEL 1:f7f81ab19c7e 52 // if ((rc = client.subscribe(topic, MQTT::QOS1, messageArrived)) != 0)
HarshaDRAGNEEL 1:f7f81ab19c7e 53 // printf("rc from MQTT subscribe is %d\n", rc);
HarshaDRAGNEEL 1:f7f81ab19c7e 54 //
Rajib 0:1fdb07d055b9 55 //Init. RC522 Chip
HarshaDRAGNEEL 1:f7f81ab19c7e 56
Rajib 0:1fdb07d055b9 57
Rajib 0:1fdb07d055b9 58 while (true) {
HarshaDRAGNEEL 1:f7f81ab19c7e 59 if (a.readable())
Rajib 0:1fdb07d055b9 60 {
HarshaDRAGNEEL 1:f7f81ab19c7e 61
HarshaDRAGNEEL 1:f7f81ab19c7e 62 int i;
HarshaDRAGNEEL 1:f7f81ab19c7e 63 c[i]=0;
HarshaDRAGNEEL 1:f7f81ab19c7e 64 for(i=0;i<=15;i++){
HarshaDRAGNEEL 1:f7f81ab19c7e 65 char c1 =a.getc();
HarshaDRAGNEEL 1:f7f81ab19c7e 66 c[i] = c1;
HarshaDRAGNEEL 1:f7f81ab19c7e 67 }
HarshaDRAGNEEL 1:f7f81ab19c7e 68 pc.printf("The value returned is %s ",c);
HarshaDRAGNEEL 1:f7f81ab19c7e 69
HarshaDRAGNEEL 1:f7f81ab19c7e 70 char domainName[3][80] = {"kr.pool.ntp.org", "time.bora.net", "time.nuri.net"};//SET TO DOMAIN NAME OF SERVER GETTING TIME FROM
HarshaDRAGNEEL 1:f7f81ab19c7e 71 char buffer[80]; //BUFFER TO HOLD FORMATTED TIME DATA
HarshaDRAGNEEL 1:f7f81ab19c7e 72 time_t sysTime;
HarshaDRAGNEEL 1:f7f81ab19c7e 73 pc.printf("Server IP Address is %s\r\n", eth.getIPAddress());
Rajib 0:1fdb07d055b9 74
HarshaDRAGNEEL 1:f7f81ab19c7e 75 pc.printf("Getting time information by using NTP...\r\n");
Rajib 0:1fdb07d055b9 76
HarshaDRAGNEEL 1:f7f81ab19c7e 77 cnt = 0;
HarshaDRAGNEEL 1:f7f81ab19c7e 78 while(1)
Rajib 0:1fdb07d055b9 79 {
HarshaDRAGNEEL 1:f7f81ab19c7e 80 if(ntpClient.setTime(domainName[cnt],123,0x00005000) != NTP_OK)
HarshaDRAGNEEL 1:f7f81ab19c7e 81 {
HarshaDRAGNEEL 1:f7f81ab19c7e 82 pc.printf("Cannot get time information by NTP\r\n");
HarshaDRAGNEEL 1:f7f81ab19c7e 83 cnt++;
HarshaDRAGNEEL 1:f7f81ab19c7e 84 }
HarshaDRAGNEEL 1:f7f81ab19c7e 85 else
HarshaDRAGNEEL 1:f7f81ab19c7e 86 break;
HarshaDRAGNEEL 1:f7f81ab19c7e 87
HarshaDRAGNEEL 1:f7f81ab19c7e 88 if(cnt > 3)
HarshaDRAGNEEL 1:f7f81ab19c7e 89 {
HarshaDRAGNEEL 1:f7f81ab19c7e 90 pc.printf("All NTP servers are not resposed!!\r\n");
HarshaDRAGNEEL 1:f7f81ab19c7e 91 return 1;
HarshaDRAGNEEL 1:f7f81ab19c7e 92 }
Rajib 0:1fdb07d055b9 93 }
HarshaDRAGNEEL 1:f7f81ab19c7e 94
HarshaDRAGNEEL 1:f7f81ab19c7e 95 printf("Completed Get and Set Time\r\n\r\n");
HarshaDRAGNEEL 1:f7f81ab19c7e 96 eth.disconnect();
Rajib 0:1fdb07d055b9 97
HarshaDRAGNEEL 1:f7f81ab19c7e 98 sysTime = time(NULL)+(3600*5.30); //TIME with offset for eastern time Indian
HarshaDRAGNEEL 1:f7f81ab19c7e 99 //FORMAT TIME FOR DISPLAY AND STORE FORMATTED RESULT IN BUFFER
HarshaDRAGNEEL 1:f7f81ab19c7e 100 strftime(buffer,80,"%Y/%m/%d %p %I:%M:%S \r\n",localtime(&sysTime));
HarshaDRAGNEEL 1:f7f81ab19c7e 101 pc.printf("Date and Time\r\n%s\r\n", buffer);
HarshaDRAGNEEL 1:f7f81ab19c7e 102
HarshaDRAGNEEL 1:f7f81ab19c7e 103
HarshaDRAGNEEL 1:f7f81ab19c7e 104 MQTT::Message message;
Rajib 0:1fdb07d055b9 105 char buf[100];
HarshaDRAGNEEL 1:f7f81ab19c7e 106 sprintf(buf, "%s %s",c,buffer);
HarshaDRAGNEEL 1:f7f81ab19c7e 107 message.qos = MQTT::QOS0;
HarshaDRAGNEEL 1:f7f81ab19c7e 108 message.retained = false;
HarshaDRAGNEEL 1:f7f81ab19c7e 109 message.dup = false;
HarshaDRAGNEEL 1:f7f81ab19c7e 110
HarshaDRAGNEEL 1:f7f81ab19c7e 111 message.payload = (void*)buf;
HarshaDRAGNEEL 1:f7f81ab19c7e 112 message.payloadlen = strlen(buf);
HarshaDRAGNEEL 1:f7f81ab19c7e 113
HarshaDRAGNEEL 1:f7f81ab19c7e 114 rc = client.publish("RFID", message);
HarshaDRAGNEEL 1:f7f81ab19c7e 115 pc.printf("Rc result: %c \n ",rc);
HarshaDRAGNEEL 1:f7f81ab19c7e 116 client.yield(60);
HarshaDRAGNEEL 1:f7f81ab19c7e 117 }
Rajib 0:1fdb07d055b9 118 }
Rajib 0:1fdb07d055b9 119 }