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:
72:b500e1507b5f
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
stefanrousseau 12:7c94ec5069dc 18 #ifndef __SENSORS_H_
stefanrousseau 12:7c94ec5069dc 19 #define __SENSORS_H_
stefanrousseau 12:7c94ec5069dc 20
stefanrousseau 4:f83bedd9cab4 21 void sensors_init(void);
stefanrousseau 4:f83bedd9cab4 22 void read_sensors(void);
stefanrousseau 55:3abf9e3f42e6 23 void ProcessUsbInterface(void);
stefanrousseau 4:f83bedd9cab4 24
stefanrousseau 4:f83bedd9cab4 25 #define SENSOR_FIELD_LEN_LIMIT 32
stefanrousseau 4:f83bedd9cab4 26 typedef struct
stefanrousseau 4:f83bedd9cab4 27 {
stefanrousseau 4:f83bedd9cab4 28 char Temperature[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 29 char Humidity[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 30 char AccelX[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 31 char AccelY[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 32 char AccelZ[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 33 char MagnetometerX[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 34 char MagnetometerY[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 35 char MagnetometerZ[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 36 char AmbientLightVis[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 37 char AmbientLightIr[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 38 char UVindex[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 39 char Proximity[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 40 char Temperature_Si7020[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 41 char Humidity_Si7020[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 42 char Virtual_Sensor1[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 43 char Virtual_Sensor2[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 44 char Virtual_Sensor3[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 45 char Virtual_Sensor4[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 46 char Virtual_Sensor5[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 47 char Virtual_Sensor6[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 48 char Virtual_Sensor7[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 55:3abf9e3f42e6 49 char Virtual_Sensor8[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 72:b500e1507b5f 50 char GPS_Satellites[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 71:45a5e426df81 51 char GPS_Latitude[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 71:45a5e426df81 52 char GPS_Longitude[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 71:45a5e426df81 53 char GPS_Altitude[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 71:45a5e426df81 54 char GPS_Speed[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 71:45a5e426df81 55 char GPS_Course[SENSOR_FIELD_LEN_LIMIT];
stefanrousseau 4:f83bedd9cab4 56 } K64F_Sensors_t ;
stefanrousseau 4:f83bedd9cab4 57
stefanrousseau 12:7c94ec5069dc 58 extern K64F_Sensors_t SENSOR_DATA;
stefanrousseau 4:f83bedd9cab4 59
stefanrousseau 12:7c94ec5069dc 60 #endif