MQTT SUBSCRIPTION AND PUBLISH IN W750 SR
Dependencies: MFRC522 MQTT TextLCD WIZnetInterface mbed-src
Fork of MFRC522_Reader_Program by
main.cpp@2:0e96525e48a5, 2018-06-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |