Albin Sebastian / SmartAgri-WIZ750SR

Dependencies:   MQTT WIZnetInterface mbed-src

Fork of MQTTw7500 by James Bruce

Files at this revision

API Documentation at this revision

Comitter:
Albinarackal
Date:
Sat Jul 28 04:33:27 2018 +0000
Parent:
12:4f0489448955
Commit message:
Smart Agri

Changed in this revision

DHT.lib Show diff for this revision Revisions of this file
WIZnetInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-src.lib Show annotated file Show diff for this revision Revisions of this file
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