hwsdf

Dependencies:   C12832 hw4f HW4 MQTT

Dependents:   HW4

Fork of HW4 by Hyoeun Choi

Revision:
24:4b8390b87ab3
Parent:
23:d508f2806faa
--- a/main.cpp	Fri Jan 05 17:51:46 2018 +0000
+++ b/main.cpp	Sat Jan 06 11:53:19 2018 +0000
@@ -9,119 +9,125 @@
 #include "MQTTmbed.h"
 #include "MQTTClient.h"
 #include "TCPSocket.h"
-#include "DHT22.h"
+//#include "DHT22.h"
+#include "DHT_2.h"
 
 #define WIFI_HW_RESET_PIN D4
 
-#define MQTT_BROKER_ADDR "192.168.0.10"
+#define MQTT_BROKER_ADDR "192.168.0.8"
 #define MQTT_BROKER_PORT 1883
 
 DigitalOut wifiHwResetPin(WIFI_HW_RESET_PIN);
 DigitalOut led2(LED2);
-DHT22 dht22(D7);
+DHT sensor(D7,DHT22);
 Serial pc(USBTX, USBRX, 115200);
-
 volatile bool flag = false;
-
 Mutex mqttMtx;
-
-char* topic_toGW = "toGW";
-char* topic_fromGW = "toNUCLEO";
+char* topic1 = "LED";
+char* topic2 = "TEMPER";
+char* topic3 = "LEDS";
 
 void messageArrived(MQTT::MessageData& md)
 {
-    MQTT::Message &message = md.message;
-    //logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
-    //logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
+  MQTT::Message &message = md.message;
+//  logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n",
+//  message.qos, message.retained, message.dup, message.id);
+  logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
+ 
+  char fwdTarget = ((char *)message.payload)[0];
+  switch(fwdTarget)
+  {
+  case '0': // turn off
+    led2 = 0;
+    break;
+  case '1': //turn on
+    led2 = 1;
+    break;
+  case '2': //LED status
+    flag = true;
+    break;
+  default:
+    pc.printf("Unknown MQTT message\n");
+    break;
+  }
+}
+int main(int argc, char* argv[])
+{       //network setting
+      float version = 0.5;
+      pc.baud(115200);
+      logMessage("MQTT example: version is %.2f\r\n", version);
+      wait(0.2); //delay startup
+      pc.printf("Resetting ESP8266 Hardware...\r\n");
+      pc.printf("Attempting to connect to access point...\r\n");
+     
+      NetworkInterface* network = easy_connect(true);
+        if (!network) {
+        pc.printf("Error in east connection\r\n");
+        return -1;
+        }
+ 
+       MQTTNetwork mqttNetwork(network);
+       MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
+       logMessage("Connecting to %s:%d\r\n", MQTT_BROKER_ADDR, MQTT_BROKER_PORT);
+       int rc = mqttNetwork.connect(MQTT_BROKER_ADDR, MQTT_BROKER_PORT);
+       if (rc != 0)
+          logMessage("rc from TCP connect is %d\r\n", rc);
+        
+        
+        MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+        data.MQTTVersion = 3;
+        data.clientID.cstring = "mbed-jcm";
+        data.username.cstring = "user-jcm";
+        data.password.cstring = "testpassword";
+        if ((rc = client.connect(data)) != 0)
+        logMessage("rc from MQTT connect is %d\r\n", rc);
+        if ((rc = client.subscribe(topic1, MQTT::QOS0, messageArrived)) != 0)
+        logMessage("rc from MQTT subscribe is %d\r\n", rc);
+
+        float c = 0;
+        int error = 0;
+        int count =0;
+        pc.printf("starting to read temperature...\r\n");
+        
+        while(1){
+            Thread::wait(1000);
+            char buf[100];
+
+            error = sensor.readData();
+            
+            if (count == 5) {
+                pc.printf("5 secs over!");  
+                pc.printf("Publish: TEMPER\r\n");
+                if (0 == error) {
+                    c   = sensor.ReadTemperature(CELCIUS);
+                    printf("Temperature: %.1f\r\n", c);
+                } else if(error == 6){
+                    printf("CheckSum Error\r\n");
+
+                sprintf(buf, "%3.1f", c);
+                message.qos = MQTT::QOS2;
+                message.retained = false;
+                message.dup = false;
+                message.payload = (void*)buf;
+                message.payloadlen = strlen(buf)+1;
+                mqttMtx.lock();
+                rc = client.publish(topic2, message);
+                mqttMtx.unlock();  
+            
+                count = 0;
+                }
+            if(!client.isConnected())
+                NVIC_SystemReset(); // soft reset
+                 
+            client.yield(10);
+            count++;
+            pc.printf("%d\r\n",count); 
+
+            }
+    }
     
-    pc.printf("Subscribe from GW: %.*s\r\n", message.payloadlen, (char*)message.payload);
-    char fwdTarget = ((char*)message.payload)[0];
-    switch(fwdTarget){
-        case '0':
-            led2 = 0;
-            pc.printf("LED Turn Off\r\n\r\n");
-            break;
-        case '1':
-            led2 = 1;
-            pc.printf("LED Turn On\r\n");
-            break;
-        default:
-            pc.printf("Unknown MQTT message\r\n");
-            break;
-    }
-}
-
-double getTemp(void){
-    double temp;
-    if(dht22.sample()){
-        temp=dht22.getTemperature()/10.0;
-        pc.printf("temperature: %3.1f\r\n",temp);
-    } else{
-        temp=-999;
-        pc.printf("Checksum error\r\n");
-    }
-    return temp;
+    return 0;
 }
 
-int main(int argc, char* argv[])
-{
-    float version = 0.5;
-    NetworkInterface* net = easy_connect(true);
-    if (!net) {
-        pc.printf("Error in easy connection\r\n");
-        return -1;
-    }
-    logMessage("HelloMQTT: version is %.2f\r\n", version);
-
-    wait(0.2);
-    pc.printf("Resetting ESP8266 Hardware...\r\n");
-    wifiHwResetPin = 0;
-    wait_ms(500);
-    wifiHwResetPin = 1;
-    
-    MQTTNetwork mqttNetwork(net);
-    MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
-
-    logMessage("Connecting to %s:%d\r\n", MQTT_BROKER_ADDR, MQTT_BROKER_PORT);
-    int rc = mqttNetwork.connect(MQTT_BROKER_ADDR, MQTT_BROKER_PORT);
-    if (rc != 0)
-        logMessage("rc from GW connect is %d\r\n", rc);
 
-    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
-    data.MQTTVersion = 3;
-    data.clientID.cstring = "mbed-sample-Hyoeun";
-    data.username.cstring = "testuser";
-    data.password.cstring = "testpassword";
-    if ((rc = client.connect(data)) != 0)
-        logMessage("rc from MQTT connect is %d\r\n", rc);
 
-    if ((rc = client.subscribe(topic_fromGW, MQTT::QOS2, messageArrived)) != 0)
-        logMessage("rc from MQTT subscribe is %d\r\n", rc);
-
-    int count = 0;
-    while(1){
-        Thread::wait(1000);
-        char buf[100];
-        MQTT::Message message;
-        
-        if(count == 5){
-            pc.printf("Publish: toGW\r\n");
-            sprintf(buf, "{\"temp\": %3.1f}", getTemp());
-            message.qos = MQTT::QOS0;
-            message.retained = false;
-            message.dup = false;
-            message.payload = (void*)buf;
-            message.payloadlen = strlen(buf)+1;
-            pc.printf("%s",message);
-            mqttMtx.lock();
-            rc = client.publish(topic_toGW, message);
-            mqttMtx.unlock();
-            count = 0;
-            pc.printf("\r\n");
-        }
-        if(!client.isConnected()) NVIC_SystemReset();
-        client.yield(10);
-        count++;
-    }
-}
-