This is the first stage and sends data (temp, humidity) to mqtt server.

Dependencies:   EthernetInterface MQTT RHT03 mbed-rtos mbed

Committer:
charliebsimms
Date:
Thu May 22 08:35:33 2014 +0000
Revision:
0:7c734e5f2c45
The project aim is to develop a beehive environment monitoring system publishing data to a mqtt server.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charliebsimms 0:7c734e5f2c45 1 #include "mbed.h"
charliebsimms 0:7c734e5f2c45 2 #include "EthernetInterface.h"
charliebsimms 0:7c734e5f2c45 3 #include "PubSubClient.h"
charliebsimms 0:7c734e5f2c45 4 #include "RHT03.h"
charliebsimms 0:7c734e5f2c45 5 #include <iostream>
charliebsimms 0:7c734e5f2c45 6 #include <sstream>
charliebsimms 0:7c734e5f2c45 7 #include <string>
charliebsimms 0:7c734e5f2c45 8 #include <iomanip>
charliebsimms 0:7c734e5f2c45 9
charliebsimms 0:7c734e5f2c45 10 Serial pc(USBTX, USBRX);
charliebsimms 0:7c734e5f2c45 11 DigitalOut myled(LED1);
charliebsimms 0:7c734e5f2c45 12
charliebsimms 0:7c734e5f2c45 13 char* serverIpAddr = "192.168.1.2";
charliebsimms 0:7c734e5f2c45 14 int port = 1883;
charliebsimms 0:7c734e5f2c45 15
charliebsimms 0:7c734e5f2c45 16
charliebsimms 0:7c734e5f2c45 17 void callback(char* topic, char* payload, unsigned int len);
charliebsimms 0:7c734e5f2c45 18 PubSubClient mqtt(serverIpAddr, port, callback);
charliebsimms 0:7c734e5f2c45 19 EthernetInterface eth;
charliebsimms 0:7c734e5f2c45 20
charliebsimms 0:7c734e5f2c45 21 void callback(char* topic, char* payload, unsigned int len)
charliebsimms 0:7c734e5f2c45 22 {
charliebsimms 0:7c734e5f2c45 23 printf("Topic: %s\r\n", topic);
charliebsimms 0:7c734e5f2c45 24 printf("Payload: %s\r\n\r\n", payload);
charliebsimms 0:7c734e5f2c45 25
charliebsimms 0:7c734e5f2c45 26 //Send incoming payloads back to topic.
charliebsimms 0:7c734e5f2c45 27 //mqtt.publish("mbed/mybehive", payload, len);
charliebsimms 0:7c734e5f2c45 28 }
charliebsimms 0:7c734e5f2c45 29
charliebsimms 0:7c734e5f2c45 30 int main() {
charliebsimms 0:7c734e5f2c45 31
charliebsimms 0:7c734e5f2c45 32 float temp,hum;
charliebsimms 0:7c734e5f2c45 33 RHT03 humtemp(p24);
charliebsimms 0:7c734e5f2c45 34 string var;
charliebsimms 0:7c734e5f2c45 35
charliebsimms 0:7c734e5f2c45 36 printf("\r\nMQTTClient Tester\r\n");
charliebsimms 0:7c734e5f2c45 37 eth.init(); //Use DHCP
charliebsimms 0:7c734e5f2c45 38 eth.connect();
charliebsimms 0:7c734e5f2c45 39
charliebsimms 0:7c734e5f2c45 40 printf("IP Address is %s\n\r", eth.getIPAddress());
charliebsimms 0:7c734e5f2c45 41
charliebsimms 0:7c734e5f2c45 42 char clientID[] = "charlie"; /*Client nanme show for MQTT server*/
charliebsimms 0:7c734e5f2c45 43 char pub_topic[] = "mbed/mybehive"; /*Publish to topic : "/mbed" */
charliebsimms 0:7c734e5f2c45 44
charliebsimms 0:7c734e5f2c45 45
charliebsimms 0:7c734e5f2c45 46 if(!mqtt.connect(clientID)){
charliebsimms 0:7c734e5f2c45 47 pc.printf("\r\nConnect to server failed ..\r\n");
charliebsimms 0:7c734e5f2c45 48 return -1;
charliebsimms 0:7c734e5f2c45 49 }
charliebsimms 0:7c734e5f2c45 50
charliebsimms 0:7c734e5f2c45 51 printf("\r\nConnect to server sucessed ..\r\n");
charliebsimms 0:7c734e5f2c45 52
charliebsimms 0:7c734e5f2c45 53 while(1) {
charliebsimms 0:7c734e5f2c45 54 mqtt.loop();
charliebsimms 0:7c734e5f2c45 55 myled = 1;
charliebsimms 0:7c734e5f2c45 56 wait(3);
charliebsimms 0:7c734e5f2c45 57
charliebsimms 0:7c734e5f2c45 58 pc.printf("Read temperature\n\r");
charliebsimms 0:7c734e5f2c45 59 if(humtemp.readData() == RHT_ERROR_NONE)
charliebsimms 0:7c734e5f2c45 60 {
charliebsimms 0:7c734e5f2c45 61 //Gets the current temperature in centigrade
charliebsimms 0:7c734e5f2c45 62 temp = humtemp.getTemperatureC();
charliebsimms 0:7c734e5f2c45 63 //Gets the current humidity in percentage
charliebsimms 0:7c734e5f2c45 64 hum = humtemp.getHumidity();
charliebsimms 0:7c734e5f2c45 65
charliebsimms 0:7c734e5f2c45 66 stringstream oss;
charliebsimms 0:7c734e5f2c45 67 oss << "{" << "\"temperature\":" << std::setprecision(4) << temp << "," << "\"humidity\":" << std::setprecision(4) << hum << "}";
charliebsimms 0:7c734e5f2c45 68
charliebsimms 0:7c734e5f2c45 69 string data = oss.str();
charliebsimms 0:7c734e5f2c45 70 pc.printf("temperature is %f\n\r", temp);
charliebsimms 0:7c734e5f2c45 71 pc.printf("humidity is %f\n\r\n\r", hum);
charliebsimms 0:7c734e5f2c45 72 pc.printf("environment is %s\n\r\n\r", data.c_str());
charliebsimms 0:7c734e5f2c45 73 char * value = new char [37];
charliebsimms 0:7c734e5f2c45 74 strcpy(value, data.c_str());
charliebsimms 0:7c734e5f2c45 75 mqtt.publish(pub_topic, value);
charliebsimms 0:7c734e5f2c45 76 }
charliebsimms 0:7c734e5f2c45 77 myled = 0;
charliebsimms 0:7c734e5f2c45 78 wait(3);
charliebsimms 0:7c734e5f2c45 79 }
charliebsimms 0:7c734e5f2c45 80 }