MQTT SUBSCRIPTION AND PUBLISH IN W750 SR

Dependencies:   MFRC522 MQTT TextLCD WIZnetInterface mbed-src

Fork of MFRC522_Reader_Program by winwet w7500

Committer:
HarshaDRAGNEEL
Date:
Thu Jun 07 04:01:46 2018 +0000
Revision:
2:0e96525e48a5
Parent:
0:d9724729f6b6
W750 SR MQTT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sheralikhan 0:d9724729f6b6 1 //Test of cheap 13.56 Mhz RFID-RC522 module from eBay
sheralikhan 0:d9724729f6b6 2 //This code is based on Martin Olejar's MFRC522 library. Minimal changes
sheralikhan 0:d9724729f6b6 3 //Adapted for Nucleo STM32 F401RE. Should work on other Nucleos too
sheralikhan 0:d9724729f6b6 4
sheralikhan 0:d9724729f6b6 5 //Connect as follows:
sheralikhan 0:d9724729f6b6 6 //RFID pins -> Nucleo header CN5 (Arduino-compatible header)
sheralikhan 0:d9724729f6b6 7 //----------------------------------------
sheralikhan 0:d9724729f6b6 8 //RFID IRQ=pin5 -> Not used. Leave open
sheralikhan 0:d9724729f6b6 9 //RFID MISO=pin4 -> Nucleo SPI_MISO=PA_6=D12
sheralikhan 0:d9724729f6b6 10 //RFID MOSI=pin3 -> Nucleo SPI_MOSI=PA_7=D11
sheralikhan 0:d9724729f6b6 11 //RFID SCK=pin2 -> Nucleo SPI_SCK =PA_5=D13
sheralikhan 0:d9724729f6b6 12 //RFID SDA=pin1 -> Nucleo SPI_CS =PB_6=D10
sheralikhan 0:d9724729f6b6 13 //RFID RST=pin7 -> Nucleo =PA_9=D8
sheralikhan 0:d9724729f6b6 14 //3.3V and Gnd to the respective pins
sheralikhan 0:d9724729f6b6 15
sheralikhan 0:d9724729f6b6 16 #include "mbed.h"
sheralikhan 0:d9724729f6b6 17 #include "MFRC522.h"
sheralikhan 0:d9724729f6b6 18 #include "MQTTEthernet.h"
sheralikhan 0:d9724729f6b6 19 #include "MQTTClient.h"
sheralikhan 0:d9724729f6b6 20 #include <sstream>
sheralikhan 0:d9724729f6b6 21 #include <string>
sheralikhan 0:d9724729f6b6 22 #define ECHO_SERVER_PORT 7
sheralikhan 0:d9724729f6b6 23
sheralikhan 0:d9724729f6b6 24
sheralikhan 0:d9724729f6b6 25 Serial out(USBTX,USBRX);
sheralikhan 0:d9724729f6b6 26 int arrivedcount = 0;
HarshaDRAGNEEL 2:0e96525e48a5 27 char RFIDTagMessage[20]="Hello!!!!!";
sheralikhan 0:d9724729f6b6 28
HarshaDRAGNEEL 2:0e96525e48a5 29 void messageArrived(MQTT::MessageData& md)
sheralikhan 0:d9724729f6b6 30 {
sheralikhan 0:d9724729f6b6 31 MQTT::Message &message = md.message;
HarshaDRAGNEEL 2:0e96525e48a5 32 out.printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
HarshaDRAGNEEL 2:0e96525e48a5 33 out.printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
sheralikhan 0:d9724729f6b6 34 ++arrivedcount;
HarshaDRAGNEEL 2:0e96525e48a5 35 }
sheralikhan 0:d9724729f6b6 36
sheralikhan 0:d9724729f6b6 37 void baud(int baudrate)
sheralikhan 0:d9724729f6b6 38 {
sheralikhan 0:d9724729f6b6 39 Serial s(USBTX, USBRX);
sheralikhan 0:d9724729f6b6 40 s.baud(baudrate);
sheralikhan 0:d9724729f6b6 41 }
sheralikhan 0:d9724729f6b6 42 char* store_buf;
sheralikhan 0:d9724729f6b6 43
sheralikhan 0:d9724729f6b6 44 int main(void)
sheralikhan 0:d9724729f6b6 45 {
HarshaDRAGNEEL 2:0e96525e48a5 46 char* topic="arrive";
HarshaDRAGNEEL 2:0e96525e48a5 47 out.printf("starting...\n");
sheralikhan 0:d9724729f6b6 48 MQTTEthernet ipstack = MQTTEthernet();
sheralikhan 0:d9724729f6b6 49
HarshaDRAGNEEL 2:0e96525e48a5 50
HarshaDRAGNEEL 2:0e96525e48a5 51 out.printf("\n\r");
sheralikhan 0:d9724729f6b6 52 store_buf=RFIDTagMessage;
HarshaDRAGNEEL 2:0e96525e48a5 53 out.printf("Stored variable: %s",store_buf);
HarshaDRAGNEEL 2:0e96525e48a5 54
HarshaDRAGNEEL 2:0e96525e48a5 55 if(store_buf[10]!='\0') {
sheralikhan 0:d9724729f6b6 56 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
sheralikhan 0:d9724729f6b6 57 char* hostname = "172.16.73.4";
sheralikhan 0:d9724729f6b6 58 int port = 1883;
sheralikhan 0:d9724729f6b6 59 int rc = ipstack.connect(hostname, port);
sheralikhan 0:d9724729f6b6 60 out.printf("rc from TCP connect is %d\n", rc);
sheralikhan 0:d9724729f6b6 61 if (rc != 0)
HarshaDRAGNEEL 2:0e96525e48a5 62 out.printf("rc from TCP connect is %d\n", rc);
sheralikhan 0:d9724729f6b6 63 char MQTTClientID[30];
sheralikhan 0:d9724729f6b6 64 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
sheralikhan 0:d9724729f6b6 65 data.MQTTVersion = 3;
HarshaDRAGNEEL 2:0e96525e48a5 66 out.printf(MQTTClientID,"WIZwiki-W7500-client-%d",rand()%1000);
sheralikhan 0:d9724729f6b6 67 data.clientID.cstring = MQTTClientID;
HarshaDRAGNEEL 2:0e96525e48a5 68 data.username.cstring = "testuser";
HarshaDRAGNEEL 2:0e96525e48a5 69 data.password.cstring = "testpassword";
sheralikhan 0:d9724729f6b6 70
HarshaDRAGNEEL 2:0e96525e48a5 71 if ((rc = client.connect(data)) != 0)
HarshaDRAGNEEL 2:0e96525e48a5 72 out.printf("rc from MQTT connect is %d\n", rc);
HarshaDRAGNEEL 2:0e96525e48a5 73
HarshaDRAGNEEL 2:0e96525e48a5 74 if ((rc = client.subscribe(topic, MQTT::QOS1, messageArrived)) != 0)
HarshaDRAGNEEL 2:0e96525e48a5 75 out.printf("rc from MQTT subscribe is %d\n", rc);
HarshaDRAGNEEL 2:0e96525e48a5 76
HarshaDRAGNEEL 2:0e96525e48a5 77 MQTT::Message message;
HarshaDRAGNEEL 2:0e96525e48a5 78
HarshaDRAGNEEL 2:0e96525e48a5 79 while(true){
sheralikhan 0:d9724729f6b6 80 message.qos = MQTT::QOS0;
sheralikhan 0:d9724729f6b6 81 message.retained = false;
sheralikhan 0:d9724729f6b6 82 message.dup = false;
sheralikhan 0:d9724729f6b6 83
sheralikhan 0:d9724729f6b6 84 message.payload = (void*)RFIDTagMessage;
sheralikhan 0:d9724729f6b6 85 message.payloadlen = strlen(RFIDTagMessage);
sheralikhan 0:d9724729f6b6 86
HarshaDRAGNEEL 2:0e96525e48a5 87 rc = client.publish("test", message);
HarshaDRAGNEEL 2:0e96525e48a5 88 out.printf("Rc result: % d ",rc);
HarshaDRAGNEEL 2:0e96525e48a5 89 // client.yield(60000);
HarshaDRAGNEEL 2:0e96525e48a5 90 }
sheralikhan 0:d9724729f6b6 91 }
sheralikhan 0:d9724729f6b6 92 }