Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 EthernetInterface LM75B MQTT MbedJSONValue RGB-fun mbed-rtos mbed
Fork of HelloMQTT_FRDMK64F by
main.cpp
00001 #include "C12832.h" 00002 #include "LM75B.h" 00003 #include "MQTTEthernet.h" 00004 #include "MQTTClient.h" 00005 #include "rtos.h" 00006 #include "MbedJSONValue.h" 00007 #include "RGB.h" 00008 00009 /*** IMPORTANT !!! 00010 * Change the following values 00011 */ 00012 00013 char* hostname = "mqtt.labict.be"; 00014 char* temperature_topic = "softwareengineering/thermostat/YOURSENSORID/temperature"; 00015 char* led_topic = "softwareengineering/thermostat/YOURSENSORID/led"; 00016 int port = 1883; 00017 char* clientId = "myrandomstringclientid"; 00018 00019 //#define K64F 1 00020 00021 #ifdef K64F 00022 C12832 lcd(D11, D13, D12, D7, D10); 00023 LM75B sensor(D14,D15); 00024 RGB led(p23,p24,p25); 00025 #else //LPC1768 00026 C12832 lcd(p5, p7, p6, p8, p11); 00027 LM75B sensor(p28,p27); 00028 RGB led(p23,p24,p25); 00029 #endif 00030 00031 MQTT::Client<MQTTEthernet, Countdown>* client; 00032 00033 void send_temperature(void const * arg) 00034 { 00035 while(true){ 00036 char buf[100]; 00037 sprintf(buf, "{\"temperature\": %.2f}", sensor.read()); 00038 00039 MQTT::Message message; 00040 message.qos = MQTT::QOS0; 00041 message.retained = false; 00042 message.dup = false; 00043 message.payload = (void*)buf; 00044 message.payloadlen = strlen(buf); 00045 client->publish(temperature_topic, message); 00046 00047 Thread::wait(5000); 00048 } 00049 } 00050 00051 void process_rgb(MQTT::MessageData& md) 00052 { 00053 MQTT::Message &message = md.message; 00054 lcd.cls(); 00055 lcd.locate(0,3); 00056 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); 00057 printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); 00058 lcd.puts((char*)message.payload); 00059 00060 char buffer[32] = {0}; 00061 memcpy(buffer, message.payload, message.payloadlen); 00062 00063 MbedJSONValue payload; 00064 parse(payload, buffer); 00065 00066 std::string color_string = payload["color"].get<std::string>(); 00067 printf("Color: %s\n", color_string.c_str()); 00068 00069 Color color((int) std::strtol(color_string.c_str(), 0, 16)); 00070 led.setColor(&color); 00071 } 00072 00073 int main(int argc, char* argv[]) 00074 { 00075 MQTTEthernet ipstack = MQTTEthernet(); 00076 00077 client = new MQTT::Client<MQTTEthernet, Countdown>(ipstack); 00078 00079 lcd.printf("Connecting to %s:%d\n", hostname, port); 00080 int rc = ipstack.connect(hostname, port); 00081 if (rc != 0) 00082 lcd.printf("rc from TCP connect is %d\n", rc); 00083 00084 MQTTPacket_connectData data = MQTTPacket_connectData_initializer; 00085 data.MQTTVersion = 3; 00086 data.clientID.cstring = clientId; 00087 00088 if ((rc = client->connect(data)) != 0) 00089 lcd.printf("rc from MQTT connect is %d\n", rc); 00090 00091 if ((rc = client->subscribe(led_topic, MQTT::QOS1, process_rgb)) != 0) 00092 lcd.printf("rc from MQTT subscribe is %d\n", rc); 00093 00094 00095 Thread send_thread(send_temperature); 00096 00097 00098 while(true){ 00099 client->yield(100); 00100 } 00101 00102 00103 return 0; 00104 }
Generated on Mon Jul 25 2022 20:17:14 by
1.7.2
