Tuesday, October 25, 2016

Particle Photon MQTT Integration With Adafruit.io,IFTTT,and Google drive

For the past few days i have been actively exploring the features of Particle Photon in other IoT platforms.We already have discussed about particle in older posts.In this post i am going to explain
  1. how to visualize sensor data from particle in Adafruit dashboard.
  2. how to create IFTTT channel in between adafruit channel and google drive.
We already discussed that how to visualize data from particle in Thingspeak.In that example we were using data from particle event(particle.publish).But here we are not using particle.publish.Instead we are going to use MQTT protocol.There is library available for mqtt implementation to adafruit.io.

Before starting this you have to
  1. create account in adafruit.io
  2. create account in IFTTT
In the time of creating account we have to note two things
  1. username
  2. AIO key
we have to give these data in particle code

// This #include statement was automatically added by the Particle IDE.
#include "Adafruit_MQTT/Adafruit_MQTT.h"

#include "Adafruit_MQTT/Adafruit_MQTT_SPARK.h"
#include "Adafruit_MQTT/Adafruit_MQTT.h"

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883                   // use 8883 for SSL
#define AIO_USERNAME    "username"//replace with your user name
#define AIO_KEY         "8c6b48de9fab4r2da9f2463e79373ee"//replace with your key

/************ Global State (you don't need to change this!) ******************/
TCPClient TheClient;

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.

/****************************** Feeds ***************************************/

// Setup a feed called 'voltage' for publishing.
// Notice MQTT paths for AIO follow the form: /feeds/
Adafruit_MQTT_Publish voltage = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/voltage");

/*************************** Sketch Code ************************************/
int x = 0;
void setup()
    Serial.println(F("Adafruit MQTT demo"));
    // Setup MQTT subscription for onoff feed.

void loop()
    int value=analogRead(A0);
  if( mqtt.Update() ){
    delay(10000);//delay is important here

please not the lines in code

#define AIO_USERNAME    "username"/
#define AIO_KEY         "8c6b48de9fab4r2da9f2463e79373ee"
replace those lines with your username and AIO key

Here I am just posting some data from analog pin A0 to adafruit.io using MQTT.


wire up the circuit as given above and upload the above code after adding the library.
Now open adafruit.io
In Your Feeds tab you can see our new feed "voltage"by clicking on that you can see simple graphical visualization of the feed like below
Now we can create our own dashboard by clicking Your dashboard tab. We can add different blocks to our dashboard and add our feed to it

You can set labels for graphs,can set maximum value and many other features.You can test your own blocks.After setting dashboard rotate the preset and change voltage in A0 pin.Now you can see values changing in dashboard according to  changes in hardware

IFTTT recipes integration

No we can integrate this with IFTTT for that click on settings tab
 Add IFTTT in settings page and save.
Then we can set up our own recipe with adafruit and google drive channels.You can see all available channels in channels tab
if you are not already connected with adafruit channel, connect  with it here
then connect with google drive channel
Now by clicking create new we can make our own recipe

You can also use my published recipe for testing

IFTTT Recipe: adafruit dashboard google drive integration connects adafruit to google-drive

Now you open your google drive you can see one new folder created in the  path adafruit/io/{{FeedName}}
you will have new spreadsheet created named adafruit.io.{{FeedName}}
Now open that google sheet you can see data  from adafruit dashnoard.

Here in this recipe we are posting to spreadsheet if the feed value is greater than 700.I think there is much more platforms are available for this king of integration.I am still exploring.And I would like to mention one more thing  that you can directly integrate particle with IFTTT.particle have its own channel in IFTTT .It can access particle events and particle variables.I had some hacks using those also,like email triggering according to sensor value,PUSH notification using IF notification channel etc
I will try to post more about these in my next posts.