I am trying to send a digital switch state to xively it should return a 1 for closed switch and a 0 for open. I get a error message that says invalid conversion from 'int' to 'cont char*' I am new at this and much better on the hardware end then the programming so help would be appreciated.
#include <Xively.h>
#include <XivelyClient.h>
#include <XivelyDatastream.h>
#include <XivelyFeed.h>
#include <CountingStream.h>
#include <b64.h>
#include <HttpClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include <Ethernet.h>
//Defines for DS18B20
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Sensor1 = {
0x28, 0xBF, 0x24, 0xA6, 0x04, 0x00, 0x00, 0xE4};
DeviceAddress Sensor2 = {
0x28, 0xF3, 0x23, 0xA7, 0x04, 0x00, 0x00, 0x32};
DeviceAddress Sensor3 = {
0x28, 0x48, 0x16, 0xA7, 0x04, 0x00, 0x00, 0x9B};
//End Defines for DS18B20
//Defines for COSM Ethernet
char xivelyKey[] = "tqk5Y9CWLWEBZN3aqR2TdrKYIWK1wIaF7W1Jq7rqaurtmpdy";
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0F, 0x25, 0xE1};
EthernetClient client;
XivelyClient cosmclient(client);
//End Defines for COSM Ethernet
double s1 = 0;
double s2 = 0;
double s3 = 0;
#define MYDELAY 5000
char sensor1Id[] = "inside";
char sensor2Id[] = "boilersupply";
char sensor3Id[] = "boilerreturn";
char sensor4Id[] = "Alarm One";
char sensor5Id[] = "Alarm Two";
char sensor6Id[] = "Alarm Three";
char sensor7Id[] = "Alarm Four";
// digital pin 3-6 have dry contact alarms attached to them give them names:
int alarmOne = 3;
int alarmTwo = 4;
int alarmThree = 5;
int alarmFour = 6;
XivelyDatastream datastreams[] = {
XivelyDatastream(sensor1Id, strlen(sensor1Id), DATASTREAM_FLOAT),
XivelyDatastream(sensor2Id, strlen(sensor2Id), DATASTREAM_FLOAT),
XivelyDatastream(sensor3Id, strlen(sensor3Id), DATASTREAM_FLOAT),
// Must convert to int
XivelyDatastream(alarmOne, strlen(alarmOne), DATASTREAM_STRING),
XivelyDatastream(alarmTwo, strlen(alarmTwo), DATASTREAM_INT),
XivelyDatastream(alarmThree, strlen(alarmThree), DATASTREAM_INT),
XivelyDatastream(alarmFour, strlen(alarmFour), DATASTREAM_INT),
};
XivelyFeed feed(1637716944, datastreams, 7);
void setup(void)
{
// start serial port
Serial.begin(9600);
SetupSensors();
while (Ethernet.begin(mac) != 1)
{
Serial.println("Error getting IP address via DHCP, trying again...");
delay(15000);
}
}
void SetupSensors()
{
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(Sensor1, 12);
sensors.setResolution(Sensor2, 12);
sensors.setResolution(Sensor3, 12);
// make the pushbutton's pin an input:
pinMode(alarmOne, INPUT);
pinMode(alarmTwo, INPUT);
pinMode(alarmThree, INPUT);
pinMode(alarmFour, INPUT);
}
float getTemperature(DeviceAddress deviceAddress)
{
//Get temperature, convert to Fahrenheit, and return
return DallasTemperature::toFahrenheit(sensors.getTempC(deviceAddress));
}
void loop(void)
{
SensorLoopAndSend();
}
void SensorLoopAndSend()
{
// read the input pin:
int alarmoneState = digitalRead(alarmOne);
int alarmtwoState = digitalRead(alarmTwo);
int alarmthreeState = digitalRead(alarmThree);
int alarmfourState = digitalRead(alarmFour);
// print out the state of the button:
Serial.println(alarmoneState);
Serial.println(alarmtwoState);
Serial.println(alarmthreeState);
Serial.println(alarmfourState);
sensors.requestTemperatures();
s1 = getTemperature(Sensor1);
s2 = getTemperature(Sensor2);
s3 = getTemperature(Sensor3);
Serial.print("S1: ");
Serial.println(s1);
Serial.print("S2: ");
Serial.println(s2);
Serial.print("S3: ");
Serial.println(s3);
if((s1 != 185) && (s2 != 185) && (s1 != 32) && (s2 != 32))
{
datastreams[0].setFloat(s1);
datastreams[1].setFloat(s2);
datastreams[2].setFloat(s3);
int ret = cosmclient.put(feed, xivelyKey);
}
delay(MYDELAY);
}