Inviare dei dati ad EXOSITE

Buongiorno a tutti,
La mia intenzione è quella di relaizzare una stazione meteo e inviare i dati ad exosite.
Il problema è che non riesco a connettermi al sito, sul monitor seriale mi ritrovo l’errore can’t connect to exosite.

Il codice che ho utilizzato è il seguente:

#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <Exosite.h>

int DS18B20_Pin = 7;
OneWire ds(DS18B20_Pin);

/*==============================================================================
 * Configuration Variables
 *
 * Change these variables to your own settings.
 *=============================================================================*/
String cikData = "*****HoMessoIlmioCIK************************";  // <-- FILL IN YOUR CIK HERE! (https://portals.exosite.com -> Add Device)
byte MAC[] = { 
  0xDD, 0xAB, 0xCE, 0xFF, 0xEE, 0xED }; //Creo il MAC address
byte IP[] = { 192, 168, 1, 168 }; // Indirizzo IP arduino


// User defined variables for Exosite reporting period and averaging samples
#define REPORT_TIMEOUT 30000 //milliseconds period for reporting to Exosite.com
#define SENSOR_READ_TIMEOUT 5000 //milliseconds period for reading sensors in loop


/*==============================================================================
 * End of Configuration Variables
 *=============================================================================*/
class EthernetClient client;
Exosite exosite(cikData, &client);

//
// The 'setup()' function is the first function that runs on the Arduino.
// It runs completely and when complete jumps to 'loop()' 
//
void setup() {
  Serial.begin(9600);
  Serial.println("Boot");
  
  // Start up the OneWire Sensors library
  delay(1000);
  Ethernet.begin(MAC,IP);
  // wait 3 seconds for connection
  delay(3000); 

}

//
// The 'loop()' function is the 'main' function for Arduino 
// and is essentially a constant while loop. 
//
void loop() {
  static unsigned long sendPrevTime = 0;
  static unsigned long sensorPrevTime = 0; 
  static float temperature;
  char buffer[7];
  String readParam = "";
  String writeParam = "";
  String returnString = "";  

  Serial.print("."); // print to show running

  // Read sensor every defined timeout period
  if (millis() - sensorPrevTime > SENSOR_READ_TIMEOUT) {
    Serial.println();
    Serial.println("Requesting temperature...");
    temperature = getTemp();
    Serial.print("Celsius:    ");
    Serial.print(temperature);
    Serial.println(" C ..........DONE");   
    sensorPrevTime = millis();
  }

  // Send to Exosite every defined timeout period
  if (millis() - sendPrevTime > REPORT_TIMEOUT) {
    Serial.println(); //start fresh debug line
    Serial.println("Sending data to Exosite...");

    readParam = "";        //nothing to read back at this time e.g. 'control&status' if you wanted to read those data sources
    writeParam = "temp="; //parameters to write e.g. 'temp=65.54' or 'temp=65.54&status=on'

    String tempValue = dtostrf(temperature, 1, 2, buffer); // convert float to String, minimum size = 1, decimal places = 2
    writeParam += tempValue;    //add converted temperature String value

      if ( exosite.writeRead(writeParam, readParam, returnString) ) {
      Serial.println("Exosite OK");
      if (returnString != "") {
        Serial.println("Response:");
        Serial.println(returnString);
      }
    }
    else {
      Serial.println("Exosite Error");
    }

    sendPrevTime = millis(); //reset report period timer
    Serial.println("done sending.");
  }
  delay(1000); //slow down loop
}

float getTemp(){
  //returns the temperature from one DS18B20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
    Serial.print("Device is not recognized");
    return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE); // Read Scratchpad

  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }

  ds.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;

  return TemperatureSum;

}

Avete idea di quale possa essere il problema?

Grazie di cuore a tutti

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Cosa esattamente vedi su monitor seriale? Perchè la frase "can't connect to exosite" non esiste nel tuo codice :astonished:

Scusatemi se non mi sono presentato :)

La frase esatta è: "Error: Can't Open Connection to Exosite." È ritornata dalla funzione writeread della libreria di exosite.

Up, qualcuno sa darmi una mano ? :)

UP :)

L'up è politicamente scorretto :sunglasses: Se nessuno ti risponde forse è perché nessuno usa i servizi Exosite. Ho fatto una ricerca su Google con "exosite arduino" ed un pò di roba è saltata fuori. Hai provato a leggere un pò di quella documentazione?

http://playground.arduino.cc/Code/Exosite http://wizwiki.net/blog/blog/2014/02/06/temperature-monitor-using-arduino-ethernet-with-exosite/ https://github.com/exosite-garage/arduino_exosite_library https://support.exosite.com/hc/en-us/articles/200095728-Arduino-Exosite-Library- https://support.exosite.com/hc/en-us/articles/200095738-Arduino-Basic-Temperature-Monitor