ciao ragazzi eccomi nuovamente qui per un problema che non riesco proprio a risolvere... ho provato a cercare sul forum e pure su google ma... non riesco a risolvere questo problema. Utilizzo arduino Mega 2560, una Ethernet Schield, leggo un segnale analogico dalla porta A2 e lo spedisco correttamente a Xively... utilizzando lo sketch dell'apposita libreria ufficiale che mi permette di fare questo lavoro... il mio problema sta nel fatto che lo sketch fa inmodo che alla Ethernet shield venga assegnato un ip automaticamente e a me questo non va bene in quanto mi serve poter avere un indirizzo fisso alla scheda per una duplice utilità: la prima devo raggiungere sucessivamente una pagina dove visualizzero anche nella mia rete i valori in tempo reale del sensore e secondariamente vorrei poi poter raggiungere la scheda da remoto... fuori dalla rete domestica e questo è possibile sino a quando il routter o la scheda non vengono riavviati... in quanto poi l'ip viene cambiato...
Un'ulteriore domanda... c'è qualche sketch d'esempio dove io posso mettere le credenziali, no-ip per esempio per avere un DDNS direttamente da arduino? in modo da avere la scheda sempre raggiungibile dal web?
#include <SPI.h>
#include <Ethernet.h>
#include <HttpClient.h>
#include <Xively.h>
// MAC address for your Ethernet shield
byte mac[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 };
// Your Xively key to let you upload data
char xivelyKey[] = "XIB7shuCfwung27hISwSDbxlHXAantLObFTpZ1vEZIVK4aRe";
// Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield)
int sensorPin = 2;
// Define the strings for our datastream IDs
char sensorId[] = "sensor1";
XivelyDatastream datastreams[] = {
XivelyDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
};
// Finally, wrap the datastreams into a feed
XivelyFeed feed(557624774, datastreams, 1 /* number of datastreams */);
EthernetClient client;
XivelyClient xivelyclient(client);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Starting single datastream upload to Xively...");
Serial.println();
while (Ethernet.begin(mac) != 1)
{
Serial.println("Error getting IP address via DHCP, trying again...");
delay(15000);
}
}
void loop() {
int sensorValue = analogRead(sensorPin);
datastreams[0].setFloat(sensorValue);
Serial.print("Read sensor value ");
Serial.println(datastreams[0].getFloat());
Serial.println("Uploading it to Xively");
int ret = xivelyclient.put(feed, xivelyKey);
Serial.print("xivelyclient.put returned ");
Serial.println(ret);
Serial.println();
delay(15000);
}