Pubnub demo for AT&T IoT Starter Kit. Functionally similar to the Flow demo.

Dependencies:   FXOS8700CQ MODSERIAL mbed

http://pubnub.github.io/slides/workshop/pictures/broadcast.png

Pubnub demo for AT&T IoT Starter Kit

This demo is functionally similar to the Flow demo, so you can find general information here: https://developer.mbed.org/users/JMF/code/Avnet_ATT_Cellular_IOT/.

The only difference is that we use Pubnub to publish the measurements and subscribe to receiving the instructions to set the LED.

Settings

Pubnub related settings are:

Pubnub settings in `config_me.h`

PUBNUB_SUBSCRIBE_KEY
PUBNUB_PUBLISH_KEY
PUBNUB_CHANNEL

All are documented in their respective comments.

Pubnub context class

Similar to Pubnub SDKs, we provide a Pubnub context class. It is defined in pubnub.h header file and implemented in pubnub.cpp.

It provides only the fundamental "publish" and "subscribe" methods. They are documented in the header file.

This class is reusable in other code (it is not specific to this demo), it has a very narrow interface to the AT&T IoT cellular modem code. For example of use, you can look at the main() (in main.c).

Sample of published data

Published message w/measurement data

{"serial":"vstarterkit001","temp":89.61,"humidity":35,"accelX":0.97,"accelY":0.013,"accelZ":-0.038}

Don't worry, nobody got burnt, the temperature is in degrees Fahrenheit. :)

Publish a message (from, say, the Pubnub console http://pubnub.com/console) of the form {"LED":<name-of-the-color>} on the channel that this demo listens to (default is hello_world) to turn the LED to that color on the Starter Kit:

Turn LED to red

{"LED":"Red"}

Turn LED to green

{"LED":"Green"}

Turn LED to blue

{"LED":"Blue"}
Committer:
sveljko
Date:
Fri Sep 02 17:44:55 2016 +0000
Revision:
81:a5df87708b9a
Parent:
69:5a3414cc7531
First version that works, forked from official AT&T IoT starter kit repository.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fkellermavnet 68:6e311c747045 1 /* ===================================================================
fkellermavnet 68:6e311c747045 2 Copyright © 2016, AVNET Inc.
fkellermavnet 68:6e311c747045 3
fkellermavnet 68:6e311c747045 4 Licensed under the Apache License, Version 2.0 (the "License");
fkellermavnet 68:6e311c747045 5 you may not use this file except in compliance with the License.
fkellermavnet 68:6e311c747045 6 You may obtain a copy of the License at
fkellermavnet 68:6e311c747045 7
fkellermavnet 68:6e311c747045 8 http://www.apache.org/licenses/LICENSE-2.0
fkellermavnet 68:6e311c747045 9
fkellermavnet 68:6e311c747045 10 Unless required by applicable law or agreed to in writing,
fkellermavnet 68:6e311c747045 11 software distributed under the License is distributed on an
fkellermavnet 68:6e311c747045 12 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
fkellermavnet 68:6e311c747045 13 either express or implied. See the License for the specific
fkellermavnet 68:6e311c747045 14 language governing permissions and limitations under the License.
fkellermavnet 68:6e311c747045 15
fkellermavnet 68:6e311c747045 16 ======================================================================== */
fkellermavnet 68:6e311c747045 17
JMF 2:0e2ef866af95 18 #ifndef __CONFIG_ME_H_
JMF 2:0e2ef866af95 19 #define __CONFIG_ME_H_
JMF 2:0e2ef866af95 20
JMF 2:0e2ef866af95 21 // User must set these for own context:
fkellermavnet 21:d0038d14ee7c 22
fkellermavnet 50:8ac42961458c 23 #define BUF_SIZE_FOR_N_MAX_SOCKREAD (10)
fkellermavnet 50:8ac42961458c 24 #define MAX_WNC_SOCKREAD_PAYLOAD (1500)
fkellermavnet 50:8ac42961458c 25
sveljko 81:a5df87708b9a 26 // This is the server's base URL name. Pubnub SDKs refer to this as "the origin".
sveljko 81:a5df87708b9a 27 // In general, you should leave this to "pubsub.pubnub.com", but in some cases
sveljko 81:a5df87708b9a 28 // you may want to user a different origin.
sveljko 81:a5df87708b9a 29 static const char * MY_SERVER_URL = "pubsub.pubnub.com";
fkellermavnet 21:d0038d14ee7c 30
sveljko 81:a5df87708b9a 31
sveljko 81:a5df87708b9a 32 /** Put your publish key here. If you don't have one, "demo" is the default
sveljko 81:a5df87708b9a 33 public key. But, it has limitations.
sveljko 81:a5df87708b9a 34 */
sveljko 81:a5df87708b9a 35 #define PUBNUB_PUBLISH_KEY "demo"
fkellermavnet 21:d0038d14ee7c 36
sveljko 81:a5df87708b9a 37 /** Put your subscribe key here. If you don't have one, "demo" is the default
sveljko 81:a5df87708b9a 38 public key.
sveljko 81:a5df87708b9a 39 */
sveljko 81:a5df87708b9a 40 #define PUBNUB_SUBSCRIBE_KEY "demo"
stefanrousseau 12:7c94ec5069dc 41
sveljko 81:a5df87708b9a 42 /** Define the Pubnub channel to use here. For the "demo/demo" keys, a well-known
sveljko 81:a5df87708b9a 43 channel is "hello_world", but you can use any you like, channels are dynamic
sveljko 81:a5df87708b9a 44 on Pubnub
sveljko 81:a5df87708b9a 45 */
sveljko 81:a5df87708b9a 46 #define PUBNUB_CHANNEL "hello_world"
sveljko 81:a5df87708b9a 47
sveljko 81:a5df87708b9a 48 // This identifier specifies a "device name" to be sent in the JSON message.
sveljko 81:a5df87708b9a 49 // You can also use it as the UUID, if you wish.
sveljko 81:a5df87708b9a 50 #define THE_DEVICE_NAME "vstarterkit001"
fkellermavnet 21:d0038d14ee7c 51
stefanrousseau 24:bd480d2aade4 52 // This constant defines how often sensors are read and sent up to FLOW
stefanrousseau 24:bd480d2aade4 53 #define SENSOR_UPDATE_INTERVAL_MS 5000; //5 seconds
stefanrousseau 24:bd480d2aade4 54
stefanrousseau 24:bd480d2aade4 55 // Specify here how many sensor parameters you want reported to FLOW.
stefanrousseau 24:bd480d2aade4 56 // You can use only the temperature and humidity from the shield HTS221
stefanrousseau 24:bd480d2aade4 57 // or you can add the reading of the FXO8700CQ motion sensor on the FRDM-K64F board
stefanrousseau 24:bd480d2aade4 58 // or if you have a SiLabs PMOD plugged into the shield, you can add its proximity sensor,
stefanrousseau 24:bd480d2aade4 59 // UV light, visible ambient light and infrared ambient light readings
stefanrousseau 55:3abf9e3f42e6 60 // If you run the Windows "Sensor Simulator" utility, 8 additional virtual
stefanrousseau 55:3abf9e3f42e6 61 // sensors can also be made available via USB.
stefanrousseau 55:3abf9e3f42e6 62 #define TEMP_HUMIDITY_ONLY 1
stefanrousseau 55:3abf9e3f42e6 63 #define TEMP_HUMIDITY_ACCELEROMETER 2
stefanrousseau 69:5a3414cc7531 64 #define TEMP_HUMIDITY_ACCELEROMETER_GPS 3
stefanrousseau 69:5a3414cc7531 65 #define TEMP_HUMIDITY_ACCELEROMETER_PMODSENSORS 4
stefanrousseau 69:5a3414cc7531 66 #define TEMP_HUMIDITY_ACCELEROMETER_PMODSENSORS_VIRTUALSENSORS 5
stefanrousseau 58:c417fbc39c22 67 static int iSensorsToReport = TEMP_HUMIDITY_ACCELEROMETER; //modify this to change your selection
stefanrousseau 12:7c94ec5069dc 68
fkellermavnet 21:d0038d14ee7c 69 // This is the APN name for the cellular network, you will need to change this, check the instructions included with your SIM card kit:
stefanrousseau 12:7c94ec5069dc 70 static const char * MY_APN_STR = "m2m.com.attz";
fkellermavnet 21:d0038d14ee7c 71
fkellermavnet 21:d0038d14ee7c 72 //This is for normal HTTP. If you want to use TCP to a specific port, change that here:
fkellermavnet 21:d0038d14ee7c 73 static const char * MY_PORT_STR = "80";
JMF 2:0e2ef866af95 74
JMF 2:0e2ef866af95 75 #endif