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: Cayenne-MQTT-mbed NetworkSocketAPI X_NUCLEO_IDW01M1v2 mbed
Fork of Cayenne-X-NUCLEO-IDW01M1 by
Revision 9:2457af993109, committed 2017-08-28
- Comitter:
- Jeffdhyan
- Date:
- Mon Aug 28 15:05:14 2017 +0000
- Parent:
- 8:65510f1931d1
- Commit message:
- NO OK
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 65510f1931d1 -r 2457af993109 main.cpp --- a/main.cpp Mon Aug 28 07:59:02 2017 +0000 +++ b/main.cpp Mon Aug 28 15:05:14 2017 +0000 @@ -198,3 +198,74 @@ return 0; } +/** +* @file SimplePublish.c +* +* Simplified example app for using the Cayenne MQTT C library to publish example data. +*/ + +#include "CayenneMQTTClient.h" + +// Cayenne authentication info. This should be obtained from the Cayenne Dashboard. + +Network network; +CayenneMQTTClient mqttClient; + + +// Connect to the Cayenne server. +int connectClient(void) +{ + // Connect to the server. + int error = 0; + printf("Connecting to %s:%d\n", CAYENNE_DOMAIN, CAYENNE_PORT); + if ((error = NetworkConnect(&network, CAYENNE_DOMAIN, CAYENNE_PORT)) != 0) { + return error; + } + + if ((error = CayenneMQTTConnect(&mqttClient)) != MQTT_SUCCESS) { + NetworkDisconnect(&network); + return error; + } + printf("Connected\n"); + + // Send device info. Here we just send some example values for the system info. These should be changed to use actual system data, or removed if not needed. + CayenneMQTTPublishData(&mqttClient, NULL, SYS_VERSION_TOPIC, CAYENNE_NO_CHANNEL, NULL, NULL, CAYENNE_VERSION); + CayenneMQTTPublishData(&mqttClient, NULL, SYS_MODEL_TOPIC, CAYENNE_NO_CHANNEL, NULL, NULL, "Linux"); + + return CAYENNE_SUCCESS; +} + + +// Main loop where MQTT code is run. +void loop(void) +{ + while (1) { + // Yield to allow MQTT message processing. + CayenneMQTTYield(&mqttClient, 1000); + + // Publish some example data every second. This should be changed to send your actual data to Cayenne. + CayenneMQTTPublishDataFloat(&mqttClient, NULL, DATA_TOPIC, 0, TYPE_TEMPERATURE, UNIT_CELSIUS, 30.5); + CayenneMQTTPublishDataInt(&mqttClient, NULL, DATA_TOPIC, 1, TYPE_LUMINOSITY, UNIT_LUX, 1000); + } +} + +// Main function. +int main(int argc, char** argv) +{ + // Initialize the network. + NetworkInit(&network); + + // Initialize the Cayenne client. + CayenneMQTTClientInit(&mqttClient, &network, username, password, clientID, NULL); + + // Connect to Cayenne. + if (connectClient() == CAYENNE_SUCCESS) { + // Run main loop. + loop(); + } + else { + printf("Connection failed, exiting\n"); + } + + return 0; +}