smkhk_bin
Dependencies: Cayenne-MQTT-mbed mbed Servo X_NUCLEO_IDW01M1v2 NetworkSocketAPI HCSR04
Diff: main.cpp
- Revision:
- 8:396e627a2ee6
- Parent:
- 7:78cefe0937ab
--- a/main.cpp Fri Nov 11 18:29:29 2016 +0000 +++ b/main.cpp Fri Apr 26 03:27:06 2019 +0000 @@ -7,22 +7,29 @@ #include "CayenneMQTTClient.h" #include "MQTTNetworkIDW01M1.h" #include "SpwfInterface.h" +#include "hcsr04.h" +#include "Servo.h" // WiFi network info. -char* ssid = "ssid"; -char* wifiPassword = "wifiPassword"; +char* ssid = "iPhone"; +char* wifiPassword = "abcd1234"; // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. -char* username = "MQTT_USERNAME"; -char* password = "MQTT_PASSWORD"; -char* clientID = "CLIENT_ID"; +char* username = "4f3fbcb0-3796-11e9-ad96-c15442ccb423"; +char* password = "9e099f3d9aaedd7b76ca94044c6bb488c3999e3c"; +char* clientID = "49143ea0-60c8-11e9-888e-af3db3cb8c63"; SpwfSAInterface interface(D8, D2); // TX, RX MQTTNetwork<SpwfSAInterface> network(interface); CayenneMQTT::MQTTClient<MQTTNetwork<SpwfSAInterface>, MQTTTimer> mqttClient(network, username, password, clientID); DigitalOut led1(LED1); +DigitalOut led(D11); +HCSR04 sensor(D13, D12); +Servo myservo(D10); + +int iotvalue; /** * Print the message info. * @param[in] message The message received from the Cayenne server. @@ -68,6 +75,7 @@ void messageArrived(CayenneMQTT::MessageData& message) { int error = 0; + // Add code to process the message. Here we just ouput the message data. outputMessage(message); @@ -75,7 +83,8 @@ switch(message.channel) { case 0: // Set the onboard LED state - led1 = atoi(message.getValue()); + iotvalue = atoi(message.getValue()); + printf("From Cayenne = %d\n",iotvalue); // Publish the updated LED state if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) { printf("Publish LED state failure, error: %d\n", error); @@ -134,9 +143,10 @@ void loop(void) { // Start the countdown timer for publishing data every 5 seconds. Change the timeout parameter to publish at a different interval. - MQTTTimer timer(5000); + MQTTTimer timer(3000); while (true) { + // Yield to allow MQTT message processing. mqttClient.yield(1000); @@ -150,18 +160,33 @@ printf("Reconnect failed, retrying\n"); } } - + + + int openclose; + long distance = sensor.distance(); + printf("distance %d \n",distance); + //wait(1.0); // 1 sec + if (distance > 50) { + led = 0; + myservo = 1; //tutup + wait(0.2); + openclose = 0; + } + if (distance <50) { + led = 1; + myservo = 0; //buka + wait(0.2); + openclose = 1; + } + // Publish some example data every few seconds. This should be changed to send your actual data to Cayenne. if (timer.expired()) { int error = 0; - if ((error = mqttClient.publishData(DATA_TOPIC, 1, TYPE_TEMPERATURE, UNIT_CELSIUS, 30.5)) != CAYENNE_SUCCESS) { + if ((error = mqttClient.publishData(DATA_TOPIC, 1, TYPE_BATTERY, UNIT_DIGITAL, openclose)) != CAYENNE_SUCCESS) { printf("Publish temperature failed, error: %d\n", error); } - if ((error = mqttClient.publishData(DATA_TOPIC, 2, TYPE_LUMINOSITY, UNIT_LUX, 1000)) != CAYENNE_SUCCESS) { - printf("Publish luminosity failed, error: %d\n", error); - } - if ((error = mqttClient.publishData(DATA_TOPIC, 3, TYPE_BAROMETRIC_PRESSURE, UNIT_HECTOPASCAL, 800)) != CAYENNE_SUCCESS) { - printf("Publish barometric pressure failed, error: %d\n", error); + if ((error = mqttClient.publishData(DATA_TOPIC, 2, TYPE_VOLTAGE, UNIT_VOLTS, distance)) != CAYENNE_SUCCESS) { + printf("Publish sensor failed, error: %d\n", error); } // Restart the countdown timer for publishing data every 5 seconds. Change the timeout parameter to publish at a different interval. timer.countdown_ms(5000);