hwsdf

Dependencies:   C12832 hw4f HW4 MQTT

Dependents:   HW4

Fork of HW4 by Hyoeun Choi

Files at this revision

API Documentation at this revision

Comitter:
Hyoeunchoi
Date:
Sat Jan 06 11:53:19 2018 +0000
Parent:
23:d508f2806faa
Commit message:
ss

Changed in this revision

DHT22/DHT22.cpp Show annotated file Show diff for this revision Revisions of this file
DHT_v2.lib Show annotated file Show diff for this revision Revisions of this file
HW4.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
main_2.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/DHT22/DHT22.cpp	Fri Jan 05 17:51:46 2018 +0000
+++ b/DHT22/DHT22.cpp	Sat Jan 06 11:53:19 2018 +0000
@@ -24,6 +24,7 @@
     wait_us(80);
     int i,j,result=0;
     for (i=0; i<5; i++) {
+        printf("i:%d\r\n");
         result=0;
         for (j=0; j<8; j++) {
             while (DHT22);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT_v2.lib	Sat Jan 06 11:53:19 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/Hyoeunchoi/code/hw4f/#a0d0e1a0a94a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HW4.lib	Sat Jan 06 11:53:19 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/Hyoeunchoi/code/HW4/#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++;
-    }
-}
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main_2.cpp	Sat Jan 06 11:53:19 2018 +0000
@@ -0,0 +1,35 @@
+/* // change this to 1 to output messages to LCD instead of serial
+#define logMessage printf
+#define MQTTCLIENT_QOS2 1
+
+#include <string>
+#include "mbed.h"
+#include "easy-connect.h"
+#include "MQTTNetwork.h"
+#include "MQTTmbed.h"
+#include "MQTTClient.h"
+#include "TCPSocket.h"
+#include "DHT22.h"
+
+#define WIFI_HW_RESET_PIN D4
+
+#define MQTT_BROKER_ADDR "192.168.0.10"
+#define MQTT_BROKER_PORT 1883
+
+DigitalOut wifiHwResetPin(WIFI_HW_RESET_PIN);
+DigitalOut led2(LED2);
+DHT22 dht22(D7);
+Serial pc(USBTX, USBRX, 115200);
+
+int main(int argc, char* argv[])
+{
+    pc.printf("starting...\r\n");
+    while(1){
+        double temp;
+        if(dht22.sample()){
+            temp=dht22.getTemperature()/10.0;
+            pc.printf("temperature: %3.1f\r\n",temp);
+        }
+    }
+}
+*/