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: FXLS8471Q MPL3115A2 MQTT mbed
Dependents: MultiTech_AerCloud_ST-sensor_Modem
Fork of 2lemetry_Sensor_Example by
Revision 4:81c6b9d73cb1, committed 2014-12-12
- Comitter:
- mchowla
- Date:
- Fri Dec 12 22:26:35 2014 +0000
- Parent:
- 3:9736a8776102
- Commit message:
- Initial Version of MultiTech Socket Modem Example
Changed in this revision
--- a/main.cpp Tue Oct 28 19:09:28 2014 +0000
+++ b/main.cpp Fri Dec 12 22:26:35 2014 +0000
@@ -1,6 +1,6 @@
/* This is an example program which reads in the 3-axis acceleration, pressure, and temperature data from
* a FRDM-FXS-MULTI sensor board. It then uses an MTSAS SocketModem Shield board to send the read data over
- * a cellular connection to the 2lemetry cloud using an MQTT client protocol.
+ * a cellular connection to Aeris AerCloud using an MQTT client protocol.
*/
#include "mbed.h"
@@ -9,34 +9,45 @@
#include "FXLS8471Q.h"
#include "MPL3115A2.h"
-/* PLEASE READ THIS!
- * The following fields must be populated in order to properly send data to the "Default ThingFabric Project" in your 2lemetry account using the MQTT client
- * You must have a hacker (or higher) account at http://app.thingfabric.com
- * After you register and login, follow the steps below to set up your client
- * Click on "Default ThingFabric Project"
- * Set _2LEMETRY_DOMAIN to the string after "Project" at the top of the page
- * Click on "Credentials"
- * Click on "Default ThingFabric Credential"
- * Set _2LEMETRY_USER_ID to the value in the "Key (Username)" field
- * Set _2LEMETRY_TOKEN to the value in the "MD5 Secret" field
- * If you are running this code on multiple devices, you will want to make the _2LEMETRY_DEVICE_ID field unique for each device
- * Set the _APN field to the APN provided with your sim card
- * Build, flash, and run
- * This code sends a random integer value approximately every 30 seconds
- * Click on "Default ThingFabric Project"
- * Click on "Analytics"
- * You should be able to see your test data (page needs to be refreshed periodically, it doesn't automatically refresh)
- */
+//
+// PLEASE READ THIS!
+//
+// Example was created for the following hardware:
+// ST Nucleo F401RE http://developer.mbed.org/platforms/ST-Nucleo-F401RE/
+// Freescale Multi-Sensor Shield https://developer.mbed.org/components/Freescale-Multi-Sensor-Shield/
+// MultiTech Socket Modem Shield: http://developer.mbed.org/components/Multi-Tech-SocketModem-Arduino-Shield-MT/
+// MultiTech MTSMC-H5 GSM Socket Modem http://www.multitech.com/models/92503252LF#gsc.tab=0
+//
+// To get the sample running, you'll need to fill in the following parameters below
+// Your cellular provider's APN: _APN
+// AerCloud API Key: _AERCLOUD_API_APIKEY
+// AerCloud Account ID: _AERCLOUD_ACCOUNT_ID
+// AerCloud Container: _ACERCLOUD_CONTAINER
+//
+// The AerCloud container needa a Data Model with the following schema:
+// accel_x FLOAT
+// accel_y FLOAT
+// accel-Z FLOAT
+// pressure FLOAT
+// temperature FLOAT
+//
+// To check if data has made it in the container, create a long polling subscription in AerPort and they use the following url in your browswer
+//
+// http://longpoll.aercloud.aeris.com/v1/1/containers/subscriptions/<subscrption_name>/notificationChannels/longPoll?apiKey=<api_key>
+//
+// You should see the something that looks like this in the browser:
+// {"sclContentInstances":[{"sclId":"nucleo-0001","containerId":"Nucleo_Test","contentInstance":{"id":"a40c8e60-8248-11e4-8b38-0677f0dfdf5e","contentSize":90,"creationTime":1418420922950,"content":{"contentType":"application/json","contentTypeBinary":"{\"x\":0.005615,\"y\":-0.041260,\"z\":1.015137,\"pressure\":101098.500000,\"temperature\":25.125000}"}}},
+//
+//
-char _2LEMETRY_USERID[] = "";
-char _2LEMETRY_TOKEN[] = "";
-char _2LEMETRY_DOMAIN[] = "";
-char _2LEMETRY_STUFF[] = "mbed";
-char _2LEMETRY_DEVICE_ID[] = "nucleo-0001";
+char _AERCLOUD_API_KEY[] = "SET_YOUR_API_KEY";
+char _AERCLOUD_ACCOUNT_ID[] = "SET_YOUR_ACCOUNT_NUMBER";
+char _AERCLOUD_CONTAINER[] = "Nucleo_Test";
+char _AERCLOUD_DEVICE_ID[] = "nucleo-0001";
-char _APN[] = "";
+char _APN[] = "SET_YOUR_CELLULAR_PROVIDERS_APN" ";
-char _host[] = "q.mq.tt";
+char _host[] = "mqtt.aercloud.aeris.com";
int _port = 1883;
#define MPL3115A2_I2C_ADDRESS (0x60<<1)
@@ -48,6 +59,7 @@
}
int main() {
+ printf("Hello World\r\n");
MTSLog::setLogLevel(MTSLog::TRACE_LEVEL);
// for Nucleo boards
@@ -73,11 +85,25 @@
wait(2);
}
+ printf("Signal Strength: %d\n\r", radio->getSignalStrength()); //Check the signal strength should be above 8
+
+ // If you suspect a connectivity issue, uncomment the code below and if ping works. If you are not getting a
+ // valid ping, there's a connectivity problem. First step is to verify you've got the right APN set
+ //
+ // Try pinging default server "8.8.8.8" (Google's DNS)
+ //int ping_valid = 0;
+ //while (ping_valid == 0) {
+ // ping_valid = radio->ping();
+ // printf("Ping Valid: %s\n\r", ping_valid ? "true" : "false");
+ //
+ // if (ping_valid == 0) {
+ // wait(3);
+ // }
+ //}
+
PubSubClient mqtt(_host, _port, callback);
- char topicStr[128];
char buf[128];
- snprintf(topicStr, sizeof(topicStr), "%s/%s/%s", _2LEMETRY_DOMAIN, _2LEMETRY_STUFF, _2LEMETRY_DEVICE_ID);
FXLS8471Q acc(D11, D12, D13, D10);
MPL3115A2 alt(D14, D15, MPL3115A2_I2C_ADDRESS, D4, D3);
@@ -86,8 +112,9 @@
float acc_data[3];
while (true) {
- if (! mqtt.connect(_2LEMETRY_DEVICE_ID, _2LEMETRY_USERID, _2LEMETRY_TOKEN)) {
- logError("failed to connect to 2lemetry server");
+ if (! mqtt.connect(_AERCLOUD_DEVICE_ID, _AERCLOUD_ACCOUNT_ID, _AERCLOUD_API_KEY)) {
+ logError("failed to connect to AerCloud Server");
+ wait(5);
continue;
}
@@ -95,7 +122,7 @@
snprintf(buf, sizeof(buf), "{\"x\":%f,\"y\":%f,\"z\":%f,\"pressure\":%f,\"temperature\":%f}", acc_data[0],acc_data[1],acc_data[2], alt.getPressure(), alt.getTemperature());
logInfo("publishing: [%s]", buf);
- if (! mqtt.publish(topicStr, buf)) {
+ if (! mqtt.publish(_AERCLOUD_CONTAINER, buf)) {
logError("failed to publish: [%s]", buf);
}
wait(1);
--- a/mbed.bld Tue Oct 28 19:09:28 2014 +0000 +++ b/mbed.bld Fri Dec 12 22:26:35 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/cb3d968589d8 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5 \ No newline at end of file
--- a/mtsas.lib Tue Oct 28 19:09:28 2014 +0000 +++ b/mtsas.lib Fri Dec 12 22:26:35 2014 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/Multi-Hackers/code/mtsas/#45f3c6dbd646 +http://developer.mbed.org/teams/Multi-Hackers/code/mtsas/
