@peekay123
Thanks!
#include "application.h"
#include "LSM303.h"
#define FEED_ID "xxxxxxxxxxxx" //note: fake id here..
#define XIVELY_API_KEY "Cxxxxxxxxxxxxxxxxxxxxxxx" //note: fake key here
TCPClient client;
LSM303 compass;
char report[100];
char doortemp[100];
char resultstr[120];
bool error;
int LEDpin = D7;
int doorstate = 0;
int laststate = 0;
int doorcount = 0;
int trigger = 0;
unsigned long LastUpTime = 0;
int xx;
void xivelycount(int count);
void ledStatus(int x, int t);
void xivelytemp(int temp);
void xivelymagx(int magx);
void xivelymagy(int magy);
void xivelymagz(int magz);
void setup()
{
Serial.begin(9600);
Wire.begin();
error = compass.init(); // Returns "true" if device found
compass.enableDefault();
compass.writeReg(LSM303::CTRL5, 0xE4); //to enable temperature sensor
compass.writeReg(LSM303::CTRL2, 0x00); //to use 2g Acc scale
pinMode(LEDpin, OUTPUT);
Spark.variable("doorcount" , &doorcount, INT);
Spark.variable("doorstate" , &doorstate, INT);
Spark.variable("laststate" , &laststate, INT);
Spark.variable("report", &report, STRING);
Spark.variable("doortemp", &doortemp, STRING);
Spark.variable("result", &resultstr, STRING);
}
void loop()
{
compass.read();
byte tl = compass.readReg(LSM303::TEMP_OUT_L);
byte th = compass.readReg(LSM303::TEMP_OUT_H);
int temperature_raw = (int16_t)(th << 8 | tl);
int temperature = ((float)temperature_raw / 8) + 20;
int Mx = compass.m.x;
Serial.print("Mx: ");
Serial.print(Mx, 1);
int My = compass.m.y;
Serial.print("My: ");
Serial.print(My, 1);
int Mz = compass.m.z;
Serial.print("Mz: ");
Serial.print(Mz, 1);
xx = 2000;
if (Mx > xx) {
trigger = HIGH;
digitalWrite(LEDpin, HIGH); //LED turns "on" when magnet is near
}
if (Mx <= xx) {
trigger = LOW;
digitalWrite(LEDpin, LOW); //LED turns "off" when magnet is mot near
}
// read the door input pin:
doorstate = trigger;
// compare the buttonState to its previous state
if (doorstate != laststate) {
// if the state has changed, increment the counter
if (doorstate == HIGH) {
// if the current state is HIGH then the button
// went from off to on:
doorcount++;
Serial.println("open");
Serial.print("number of door opens: ");
Serial.println(doorcount);
}
else {
// if the current state is LOW then the button
// went from on to off:
Serial.println("closed");
}
}
// save the current state as the last state,
//for next time through the loop
laststate = doorstate;
if (millis()-LastUpTime>2000){
// digitalWrite(LEDpin, HIGH);
// Spark.publish("AccMag", String(report));
// Spark.publish("Mx", String(Mx));
xivelycount(doorcount);
xivelytemp(temperature);
xivelymagx(Mx);
xivelymagy(My);
xivelymagz(Mz);
LastUpTime = millis();
}
}
void xivelycount(int count) {
//Serial.println("Connecting to server...");
if (client.connect("api.xively.com", 8081))
{
// Connection succesful, update datastreams
client.print("{");
client.print(" \"method\" : \"put\",");
client.print(" \"resource\" : \"/feeds/");
client.print(FEED_ID);
client.print("\",");
client.print(" \"params\" : {},");
client.print(" \"headers\" : {\"X-ApiKey\":\"");
client.print(XIVELY_API_KEY);
client.print("\"},");
client.print(" \"body\" :");
client.print(" {");
client.print(" \"version\" : \"1.0.0\",");
client.print(" \"datastreams\" : [");
client.print(" {");
client.print(" \"id\" : \"countingsheep\",");
client.print(" \"current_value\" : \"");
client.print(count);
client.print("\"");
client.print(" }");
client.print(" ]");
client.print(" },");
client.print(" \"token\" : \"0x123abc\"");
client.print("}");
client.println();
ledStatus(1, 50);
}
else
{
// Connection failed
Serial.println("connection failed");
// ledStatus(3, 2000);//
}
if (client.available())
{
// Read response
//char c = client.read();
//Serial.print(c);
}
if (!client.connected())
{
//Serial.println();
//Serial.println("disconnecting.");
client.stop();
}
client.flush();
client.stop();
}
void xivelytemp(int temp) {
//Serial.println("Connecting to server...");
if (client.connect("api.xively.com", 8081))
{
client.print("{");
client.print(" \"method\" : \"put\",");
client.print(" \"resource\" : \"/feeds/");
client.print(FEED_ID);
client.print("\",");
client.print(" \"params\" : {},");
client.print(" \"headers\" : {\"X-ApiKey\":\"");
client.print(XIVELY_API_KEY);
client.print("\"},");
client.print(" \"body\" :");
client.print(" {");
client.print(" \"version\" : \"1.0.0\",");
client.print(" \"datastreams\" : [");
client.print(" {");
client.print(" \"id\" : \"roomtemp2\",");
client.print(" \"current_value\" : \"");
client.print(temp);
client.print("\"");
client.print(" }");
client.print(" ]");
client.print(" },");
client.print(" \"token\" : \"0x123abc\"");
client.print("}");
client.println();
ledStatus(2, 50);
}
else
{
// Connection failed
Serial.println("connection failed");
// ledStatus(3, 2000);//
}
if (client.available())
{
// Read response
//char c = client.read();
//Serial.print(c);
}
if (!client.connected())
{
//Serial.println();
//Serial.println("disconnecting.");
client.stop();
}
client.flush();
client.stop();
}
void xivelymagx(int magx) {
//Serial.println("Connecting to server...");
if (client.connect("api.xively.com", 8081))
{
client.print("{");
client.print(" \"method\" : \"put\",");
client.print(" \"resource\" : \"/feeds/");
client.print(FEED_ID);
client.print("\",");
client.print(" \"params\" : {},");
client.print(" \"headers\" : {\"X-ApiKey\":\"");
client.print(XIVELY_API_KEY);
client.print("\"},");
client.print(" \"body\" :");
client.print(" {");
client.print(" \"version\" : \"1.0.0\",");
client.print(" \"datastreams\" : [");
client.print(" {");
client.print(" \"id\" : \"magx\",");
client.print(" \"current_value\" : \"");
client.print(magx);
client.print("\"");
client.print(" }");
client.print(" ]");
client.print(" },");
client.print(" \"token\" : \"0x123abc\"");
client.print("}");
client.println();
ledStatus(3, 50);
}
else
{
// Connection failed
Serial.println("connection failed");
// ledStatus(3, 2000);//
}
if (client.available())
{
// Read response
//char c = client.read();
//Serial.print(c);
}
if (!client.connected())
{
//Serial.println();
//Serial.println("disconnecting.");
client.stop();
}
client.flush();
client.stop();
}
void xivelymagy(int magy) {
//Serial.println("Connecting to server...");
if (client.connect("api.xively.com", 8081))
{
client.print("{");
client.print(" \"method\" : \"put\",");
client.print(" \"resource\" : \"/feeds/");
client.print(FEED_ID);
client.print("\",");
client.print(" \"params\" : {},");
client.print(" \"headers\" : {\"X-ApiKey\":\"");
client.print(XIVELY_API_KEY);
client.print("\"},");
client.print(" \"body\" :");
client.print(" {");
client.print(" \"version\" : \"1.0.0\",");
client.print(" \"datastreams\" : [");
client.print(" {");
client.print(" \"id\" : \"magy\",");
client.print(" \"current_value\" : \"");
client.print(magy);
client.print("\"");
client.print(" }");
client.print(" ]");
client.print(" },");
client.print(" \"token\" : \"0x123abc\"");
client.print("}");
client.println();
ledStatus(4, 50);
}
else
{
// Connection failed
Serial.println("connection failed");
// ledStatus(3, 2000);//
}
if (client.available())
{
// Read response
//char c = client.read();
//Serial.print(c);
}
if (!client.connected())
{
//Serial.println();
//Serial.println("disconnecting.");
client.stop();
}
client.flush();
client.stop();
}
void xivelymagz(int magz) {
//Serial.println("Connecting to server...");
if (client.connect("api.xively.com", 8081))
{
client.print("{");
client.print(" \"method\" : \"put\",");
client.print(" \"resource\" : \"/feeds/");
client.print(FEED_ID);
client.print("\",");
client.print(" \"params\" : {},");
client.print(" \"headers\" : {\"X-ApiKey\":\"");
client.print(XIVELY_API_KEY);
client.print("\"},");
client.print(" \"body\" :");
client.print(" {");
client.print(" \"version\" : \"1.0.0\",");
client.print(" \"datastreams\" : [");
client.print(" {");
client.print(" \"id\" : \"magz\",");
client.print(" \"current_value\" : \"");
client.print(magz);
client.print("\"");
client.print(" }");
client.print(" ]");
client.print(" },");
client.print(" \"token\" : \"0x123abc\"");
client.print("}");
client.println();
ledStatus(5, 50);
}
else
{
// Connection failed
Serial.println("connection failed");
// ledStatus(3, 2000);//
}
if (client.available())
{
// Read response
//char c = client.read();
//Serial.print(c);
}
if (!client.connected())
{
//Serial.println();
//Serial.println("disconnecting.");
client.stop();
}
client.flush();
client.stop();
}
void ledStatus(int x, int t)
{
for (int j = 0; j <= x-1; j++)
{
digitalWrite(LEDpin, HIGH);
delay(t);
digitalWrite(LEDpin, LOW);
delay(t);
}
}