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: MQTT WIZnetInterface mbed-src
Fork of MQTTw7500 by
Revision 13:a75b321700d6, committed 2018-07-28
- Comitter:
- Albinarackal
- Date:
- Sat Jul 28 04:33:27 2018 +0000
- Parent:
- 12:4f0489448955
- Commit message:
- Smart Agri
Changed in this revision
diff -r 4f0489448955 -r a75b321700d6 DHT.lib --- a/DHT.lib Sat Oct 03 10:54:52 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://developer.mbed.org/users/bangbh/code/DHT/#df22ddf10d75
diff -r 4f0489448955 -r a75b321700d6 WIZnetInterface.lib --- a/WIZnetInterface.lib Sat Oct 03 10:54:52 2015 +0000 +++ b/WIZnetInterface.lib Sat Jul 28 04:33:27 2018 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#bda61525ac71 +http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#c91884bd2713
diff -r 4f0489448955 -r a75b321700d6 main.cpp --- a/main.cpp Sat Oct 03 10:54:52 2015 +0000 +++ b/main.cpp Sat Jul 28 04:33:27 2018 +0000 @@ -1,77 +1,165 @@ +/* SMART AGRICULTURE PROJECT Applicatios +# 3 phase detection +# soil moisture detection +# rfid access to enter the field (gate open and close) +# fensing security for entire field +# security alarm for unauthorised access (for RFID and Fensing) +# Motor for water supply +*/ #include "mbed.h" -#include "DHT.h" #include "MQTTEthernet.h" #include "MQTTClient.h" #define ECHO_SERVER_PORT 7 - -int arrivedcount = 0; - +Serial uart(D1,D0); +// wiznet wiz750SR pin configuration +AnalogIn soilSensor(PC_8); +DigitalIn p1(PC_13); +DigitalIn p2(PC_12); +DigitalIn p3(PC_9); +float soil; +char *msg; +char uart_msg; +char buffer[15]; +char *rf_on = "on"; +char *rf_off = "off"; +char *mot_on = "onmotor"; +char *mot_off = "offmotor"; + +// call back function void messageArrived(MQTT::MessageData& md) { + strcpy(buffer,""); MQTT::Message &message = md.message; printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); - ++arrivedcount; + sprintf(buffer,"%.*s",message.payloadlen,(char*)message.payload); + printf("buffer value is %s\n",buffer); + } -void baud(int baudrate) { + +void baud(int baudrate) +{ Serial s(USBTX, USBRX); s.baud(baudrate); } int main (void) { - DHT sensor(D4, DHT11); - baud(115200); + + baud(9600); + char *topic1 = "rfiddata"; + char *topic2 = "threephasebutton"; printf("Wait a second...\r\n"); - char* topic = "openhab/parents/command"; + MQTTEthernet ipstack = MQTTEthernet(); - + MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack); - char* hostname = "192.168.1.99"; + // MQTT broker address and port no. + char* hostname = "iot.eclipse.org"; int port = 1883; - + int rc = ipstack.connect(hostname, port); - if (rc != 0) + if (rc == 0) printf("rc from TCP connect is %d\n", rc); - - printf("Topic: %s\r\n",topic); - - MQTTPacket_connectData data = MQTTPacket_connectData_initializer; + + + + MQTTPacket_connectData data = MQTTPacket_connectData_initializer; data.MQTTVersion = 3; data.clientID.cstring = "parents"; - if ((rc = client.connect(data)) != 0) + 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); - + + if ((rc = client.subscribe(topic1, MQTT::QOS1, messageArrived)) == 0) + printf("rc from MQTT subscribe toppic is rfiddata %d\n", rc); + + + if ((rc = client.subscribe(topic2, MQTT::QOS1, messageArrived)) == 0) + printf("rc from MQTT subscribe toppic is threephasebutton %d\n", rc); + MQTT::Message message; - char buf[100]; - int error = 0; - float hum = 0.0f, temp = 0.0f; - while (true) - { - error = sensor.readData(); - if (0 == error) { - hum = sensor.ReadHumidity(); - temp = sensor.ReadTemperature(CELCIUS); + + while (true) { + + // reading the soil moisture content from soil moisture sensor + soil = soilSensor.read_u16(); + printf(" soil val is : %f\n",soil); + + // Data reading from arduino via UART + if (uart.readable()) { + printf("uart readable\n"); + uart_msg = uart.getc(); + + if(uart_msg == 's') { // Authorised access data of RFID + msg = "Authorized Access"; + printf(" msg : %s\n", msg); + } + + if(uart_msg == 'n' || uart_msg =='f') { // unauthorised access data of RFID or Fensing + msg = "Unauthorized Access"; + printf(" msg : %s\n", msg); + + } + message.qos = MQTT::QOS0; + message.retained = false; + message.dup = false; + message.payload = (void*)msg; + message.payloadlen = strlen(msg); + rc = client.publish("rfid", message); + strcpy(msg,""); + + + } + // rfid command from mqtt "on" + if(strcmp(buffer, rf_on)==0 ) { + uart.putc('a'); //sending the data to arduino via UART + printf("rfid on data\n"); + strcpy(buffer,""); + } - sprintf(buf, "%3.1f", hum); - message.qos = MQTT::QOS0; - message.retained = false; - message.dup = false; - message.payload = (void*)buf; - message.payloadlen = strlen(buf); - rc = client.publish("openhab/parents/humidity", message); - sprintf(buf, "%3.1f", temp); - message.payload = (void*)buf; - message.payloadlen = strlen(buf); - rc = client.publish("openhab/parents/temperature", message); - - client.yield(60000); + // rfid command from mqtt "off" + if(strcmp(buffer,rf_off)==0) { + uart.putc('b'); //sending the data to arduino via UART + printf("rfid off data\n"); + strcpy(buffer,""); + + } + if(strcmp(buffer,mot_on)==0) { + uart.putc('c'); //sending the data to arduino via UART + printf("motor on data\n"); + strcpy(buffer,""); + + } + + if(strcmp(buffer,mot_off)==0) { + uart.putc('d'); //sending the data to arduino via UART + printf("motor off data\n"); + strcpy(buffer,""); + } + + // soil moisture and 3 phase current checking + if(soil<250) { + if((p1==1)&&(p2==1)&&(p3==1)) { //three phase checking + printf("3 phase detected\n"); + msg = "Low Moisture and 3 phase detected"; + } else { + // printf("3 phase not detected\n"); + msg = "Low Moisture but 3 phase not detected"; + } + + + message.qos = MQTT::QOS0; + message.retained = false; + message.dup = false; + message.payload = (void*)msg; + message.payloadlen = strlen(msg); + rc = client.publish("threephase", message); + strcpy(msg,""); + } + client.yield(500); } }
diff -r 4f0489448955 -r a75b321700d6 mbed-src.lib --- a/mbed-src.lib Sat Oct 03 10:54:52 2015 +0000 +++ b/mbed-src.lib Sat Jul 28 04:33:27 2018 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed-src/#2d5fc5624619 +http://mbed.org/users/mbed_official/code/mbed-src/#a11c0372f0ba