Dependencies:   mbed ESP8266Interface MbedJSONValue mbed-rtos MQTT JSON

Files at this revision

API Documentation at this revision

Comitter:
sbetrabet
Date:
Thu Mar 07 08:55:54 2019 +0000
Parent:
18:76d0899bc3ce
Commit message:
For the ECE59500 project;

Changed in this revision

JSON.lib Show annotated file Show diff for this revision Revisions of this file
MbedJSONValue.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
diff -r 76d0899bc3ce -r 9dfb938f07eb JSON.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JSON.lib	Thu Mar 07 08:55:54 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/Night-Crue/code/JSON/#8aa4d0e98eb0
diff -r 76d0899bc3ce -r 9dfb938f07eb MbedJSONValue.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MbedJSONValue.lib	Thu Mar 07 08:55:54 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/samux/code/MbedJSONValue/#10a99cdf7846
diff -r 76d0899bc3ce -r 9dfb938f07eb main.cpp
--- a/main.cpp	Tue Jun 09 17:57:43 2015 +0000
+++ b/main.cpp	Thu Mar 07 08:55:54 2019 +0000
@@ -1,95 +1,136 @@
-/*******************************************************************************
- * Copyright (c) 2014 IBM Corp.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * and Eclipse Distribution License v1.0 which accompany this distribution.
- *
- * The Eclipse Public License is available at
- *    http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- *   http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *    Ian Craggs - initial API and implementation and/or initial documentation
- *******************************************************************************/
+#include "MQTTESP8266.h"
+#include "MQTTClient.h"
+#include "string.h"
+#include "MbedJSONValue.h"
+char buf[100];
 
-/**
- This is a sample program to illustrate the use of the MQTT Client library
- on the mbed platform.  The Client class requires two classes which mediate
- access to system interfaces for networking and timing.  As long as these two
- classes provide the required public programming interfaces, it does not matter
- what facilities they use underneath. In this program, they use the mbed
- system libraries.
+MQTTESP8266 ipstack(D1, D0, D10, "BHNTG1682GFFE2","220960b5"); // change to match your wifi access point
+float version = 0.47;
+char* topic = "k64";
+char* topic2 = "k64rec";
+char* topic3 = "bulb";
+    
+char* key2 = "key";
+char* hostname = "192.168.0.6"; // Ip 
+int port = 1883;
+int rc = ipstack.connect(hostname, port);
 
-*/
+MQTT::Client<MQTTESP8266, Countdown> client = MQTT::Client<MQTTESP8266, Countdown>(ipstack);
+MbedJSONValue demo;
+int arrivedcount = 0;
+//using namespace std;
+std::string my_str;
+std::string my_str2;
+std::string someString;
+std::string clearsky ("clear");
+std::string clouds ("few clouds");
+std::string snow ("light snow");
+int j=0;
+// callback for subscribe topic
 
 
-#include "MQTTESP8266.h"
-#include "MQTTClient.h"
-
-int arrivedcount = 0;
-
-// callback for subscribe topic
 void subscribeCallback(MQTT::MessageData& md)
 {
     MQTT::Message &message = md.message;
     printf("Message received: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
+    
+    printf("%s",(char*)message.payload);
+    printf("\r\n");
+    
     printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
-    ++arrivedcount;
+    printf("nonedited payload is %s and payload is %d\n",(char*)message.payload,message.payloadlen);
+    printf("hey\n");
+    // int f = int(message.payload);
+     
+     std::string someString((char*)message.payload);
+     someString.resize (message.payloadlen);  
+     printf("Edited payload iss %s \n",someString.c_str());
+     j= someString.find(clouds);
+     printf("j = %d \r\n", j);
+  
+    if ( !(someString.find(clouds)) )
+    {  
+       sprintf(buf, "dCglDR-G9WoQUiig0XMNhOV4ozIEIVu3rWdBh5IlQ7d,cloud %s\n", key2);
+       message.payload = (void*)buf;
+       message.payloadlen = strlen(buf)+1;
+       rc = client.publish(topic3, message);
+       printf("if condition checked, its cloudy\n");
+    }
+    else  if ( !(someString.find(clearsky)) )
+    {  
+       sprintf(buf, "dCglDR-G9WoQUiig0XMNhOV4ozIEIVu3rWdBh5IlQ7d,clearsky %s\n", key2);
+       message.payload = (void*)buf;
+       message.payloadlen = strlen(buf)+1;
+       rc = client.publish(topic3, message);
+       printf("if condition checked, its clear\n");
+    }
+    else  if ( !(someString.find(snow)) )
+    {  
+       sprintf(buf, "dCglDR-G9WoQUiig0XMNhOV4ozIEIVu3rWdBh5IlQ7d,snow %s\n",key2);
+       message.payload = (void*)buf;
+       message.payloadlen = strlen(buf)+1;
+       rc = client.publish(topic3, message);
+       printf("if condition checked, its snowy\n");
+    }
+    else
+    {
+        printf("went into else\n");
+    }
+
 }
 
-// main function that sets up the subscription and makes a couple publishes
 int main(int argc, char* argv[])
-{
+{  
+    wait (1);
     printf("Starting\n");
-    MQTTESP8266 ipstack(D1, D0, D10, "demossid","passphrase"); // change to match your wifi access point
-    float version = 0.47;
-    char* topic = "mbed-sample";
-
+    
     printf("Version is %f\n", version);
 
-    MQTT::Client<MQTTESP8266, Countdown> client = MQTT::Client<MQTTESP8266, Countdown>(ipstack);
+    
 
-    char* hostname = "85.119.83.194"; // test.mosquitto.org
-    int port = 1883;
-    int rc = ipstack.connect(hostname, port);
     if (rc != 0)
         printf("rc from TCP connect is %d\n", rc);
 
     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
-    data.MQTTVersion = 3;
-    data.clientID.cstring = "mbed-clientID";
-    data.username.cstring = "testuser";
-    data.password.cstring = "testpassword";
+    //data.MQTTVersion = 3;
+    //data.clientID.cstring = "mbed-clientID";
+    //data.username.cstring = "testuser";
+    //data.password.cstring = "testpassword";
+    
     if ((rc = client.connect(data)) != 0)
         printf("rc from MQTT connect is %d\n", rc);
 
-    if ((rc = client.subscribe(topic, MQTT::QOS1, subscribeCallback)) != 0)
+    if ((rc = client.subscribe(topic2, MQTT::QOS1, subscribeCallback)) != 0)
         printf("Recv'd from MQTT subscribe is %d\n", rc);
 
     MQTT::Message message;
+    // QoS 0
 
-    // QoS 0
-    char buf[100];
-    sprintf(buf, "Hello World!  QoS 0 message from app version %f\n", version);
+    sprintf(buf, "fa02d31610ce9ea0de15b22bb2fe279d, %s\n", key2);
     message.qos = MQTT::QOS0;
     message.retained = false;
     message.dup = false;
     message.payload = (void*)buf;
     message.payloadlen = strlen(buf)+1;
     rc = client.publish(topic, message);
-    while (arrivedcount < 1)
+    wait(5);
+    /*
+    sprintf(buf, "dCglDR-G9WoQUiig0XMNhOV4ozIEIVu3rWdBh5IlQ7d, %s\n", key2);
+    message.payload = (void*)buf;
+    message.payloadlen = strlen(buf)+1;
+    rc = client.publish(topic2, message);
+    */
+    while (arrivedcount < 10)
         client.yield(100);
-
+  /*
     // QoS 1
     sprintf(buf, "Hello World!  QoS 1 message from app version %f\n", version);
     message.qos = MQTT::QOS1;
     message.payloadlen = strlen(buf)+1;
     rc = client.publish(topic, message);
-    while (arrivedcount < 2)
+    while (arrivedcount < 10)
         client.yield(100);
-
+    
     // QoS 2
     sprintf(buf, "Hello World!  QoS 2 message from app version %f\n", version);
     message.qos = MQTT::QOS2;
@@ -99,6 +140,7 @@
         client.yield(100);
 
     // n * QoS 2
+    
     for (int i = 1; i <= 10; ++i) {
         sprintf(buf, "Hello World!  QoS 2 message number %d from app version %f\n", i, version);
         message.qos = MQTT::QOS2;
@@ -107,15 +149,16 @@
         while (arrivedcount < i + 3)
             client.yield(100);
     }
-
+    */
+    
     if ((rc = client.unsubscribe(topic)) != 0)
         printf("rc from unsubscribe was %d\n", rc);
 
     if ((rc = client.disconnect()) != 0)
         printf("rc from disconnect was %d\n", rc);
 
-    ipstack.disconnect();
-    printf("Finishing with %d messages received\n", arrivedcount);
+    //ipstack.disconnect();
+    //printf("Finishing with %d messages received\n", arrivedcount);
 
     return 0;
 }