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
main.cpp
- Committer:
- HarshaDRAGNEEL
- Date:
- 2018-07-17
- Revision:
- 1:f7f81ab19c7e
- Parent:
- 0:1fdb07d055b9
File content as of revision 1:f7f81ab19c7e:
#include "mbed.h"
#include "NTPClient.h"
#include "SPI.h"
#include "MQTTEthernet.h"
#include "MQTTClient.h"
#define ECHO_SERVER_PORT 7
// Nucleo Pin for MFRC522 reset (pick another D pin if you need D8)
//#define MF_RESET D8
EthernetInterface eth;
NTPClient ntpClient;
//Serial connection to PC for output
Serial pc(USBTX, USBRX);
Serial a(D1,D0);
char c[100]="";
int main(void) {
//pc.printf("starting...\n");
int cnt = 0;
Serial pc(USBTX, USBRX);
Serial a(D1,D0);
// pc.baud(115200);
printf("Wait a second...\r\n");
char* topic = "Vending machine";
MQTTEthernet ipstack = MQTTEthernet();
MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
char* hostname = "172.16.73.4";
int port = 1883;
int rc = ipstack.connect(hostname, port);
if (rc != 0)
printf("rc from TCP connect is %d\n", rc);
printf("Topic: %s\r\n",topic);
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.MQTTVersion = 3;
data.clientID.cstring = "parents";
if ((rc = client.connect(data)) == 0)
printf("rc from MQTT connect is %d\n", rc);
// if ((rc = client.subscribe(topic, MQTT::QOS1, messageArrived)) != 0)
// printf("rc from MQTT subscribe is %d\n", rc);
//
//Init. RC522 Chip
while (true) {
if (a.readable())
{
int i;
c[i]=0;
for(i=0;i<=15;i++){
char c1 =a.getc();
c[i] = c1;
}
pc.printf("The value returned is %s ",c);
char domainName[3][80] = {"kr.pool.ntp.org", "time.bora.net", "time.nuri.net"};//SET TO DOMAIN NAME OF SERVER GETTING TIME FROM
char buffer[80]; //BUFFER TO HOLD FORMATTED TIME DATA
time_t sysTime;
pc.printf("Server IP Address is %s\r\n", eth.getIPAddress());
pc.printf("Getting time information by using NTP...\r\n");
cnt = 0;
while(1)
{
if(ntpClient.setTime(domainName[cnt],123,0x00005000) != NTP_OK)
{
pc.printf("Cannot get time information by NTP\r\n");
cnt++;
}
else
break;
if(cnt > 3)
{
pc.printf("All NTP servers are not resposed!!\r\n");
return 1;
}
}
printf("Completed Get and Set Time\r\n\r\n");
eth.disconnect();
sysTime = time(NULL)+(3600*5.30); //TIME with offset for eastern time Indian
//FORMAT TIME FOR DISPLAY AND STORE FORMATTED RESULT IN BUFFER
strftime(buffer,80,"%Y/%m/%d %p %I:%M:%S \r\n",localtime(&sysTime));
pc.printf("Date and Time\r\n%s\r\n", buffer);
MQTT::Message message;
char buf[100];
sprintf(buf, "%s %s",c,buffer);
message.qos = MQTT::QOS0;
message.retained = false;
message.dup = false;
message.payload = (void*)buf;
message.payloadlen = strlen(buf);
rc = client.publish("RFID", message);
pc.printf("Rc result: %c \n ",rc);
client.yield(60);
}
}
}
