Arduino+Pachube

Flyman
Offline
Зарегистрирован: 31.07.2012

Приветствую всех создателей!)

Кто имеет положительный опыт с сервисом pachube (cosm.com)?
В нете масса примеров скетчей, но сколько не пробовал, не получается отправить данные на cosm.com... Даже не знаю с чего начать копать, может где не так чего прописал ... Есть конечно примеры, но сейчас у pachube новый интерфейс, может всего какую мелочь не так делаю...
В общем, кто работает с pachube, помогите разобраться!)

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

 Быстро собрал из примеров  ещё зимой, когда ПАШУБЕ был ещё не КОСМом,

досих пор ничего не менял, все работает.

Даллас термометр на аналог входе 0(14) 

Шлет температуру и время работы каждую минуту.

 

/*
Pachube Data Out

Demonstrates use of the ERxPachube library. 
Push local sensor data to Pachube server.
If you don't have a Pachube account, register one first (http://www.pachube.com/).

To run this sketch, you need:
 1. Create a same feed as http://www.pachube.com/feeds/23408
    (A manual feed with three data streams with ids 0, 1, 2.)
 2. Use your API key to replace the space holer PACHUBE_API_KEY below. 
 3. Use your feed id to replace the space holer feed id 23408 below. 

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

* Created 22 April 2011
* By Jeffrey Sun
* http://code.google.com/p/pachubelibrary/

*/
#include <Arduino.h>
#include <HardwareSerial.h>
#include <ERxPachube.h>
#include <Ethernet.h>
#include <SPI.h>


#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 10 on the Arduino
#define ONE_WIRE_BUS 14
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);


byte mac[] = { 0xCC, 0xAC, 0xBE, 0xEF, 0xFE, 0x91 }; // make sure this is unique on your network
byte ip[] = { 192, 168, 0, 15   };                  // no DHCP so we set our own IP address

#define PACHUBE_API_KEY				"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm" // fill in your API key PACHUBE_API_KEY
#define PACHUBE_FEED_ID				00000 // fill in your feed id

ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID);

void PrintDataStream(const ERxPachube& pachube);

void setup() {

	Serial.begin(9600);
       sensors.begin();
	Ethernet.begin(mac, ip);

	dataout.addData(0);
	dataout.addData(1);
	dataout.addData(2);
}

void loop() {

	Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
	 
    sensors.requestTemperatures(); // Send the command to get temperatures
   //delay(1000);

        //int  fSensorData = millis()/5000;
         int  WorkTimeMinutes = millis()/60000;
        //float fSensorData = 15.23;
	//dataout.updateData(0, analogRead(1));
	//dataout.updateData(1, fSensorData);
        float  TSensorData = sensors.getTempCByIndex(0);
        //delay(1000);
        dataout.updateData(0,  TSensorData );
        dataout.updateData(1, WorkTimeMinutes);
	dataout.updateData(2, "Arduino Data");
	int status = dataout.updatePachube();

	Serial.print("sync status code <OK == 200> => ");
	Serial.println(status);

	PrintDataStream(dataout);

	delay(60000);
}

void PrintDataStream(const ERxPachube& pachube)
{
	unsigned int count = pachube.countDatastreams();
	Serial.print("data count=> ");
	Serial.println(count);

	Serial.println("<id>,<value>");
	for(unsigned int i = 0; i < count; i++)
	{
		Serial.print(pachube.getIdByIndex(i));
		Serial.print(",");
		Serial.print(pachube.getValueByIndex(i));
		Serial.println();
//Serial.print("TempSensor1,");
//Serial.println( sensors.getTempCByIndex(0));
	}
}