Hallo zusammen,
ich möchte mit meiner Uno und einem GSM Modul gerne zwei Werte an die Seite ThingSpeak senden. Durch eine intensive Recherche konnte ich aus einigen beispielen den untern Code erstellen. Damit ist problemlos möglich einen Wert an die Seite zu senden und im Feld 1 anzeigen zu lassen. Allerdings möchte ich gerne einen zweiten Wert übertragen und im Feld 2 auf der Seite anzeigen lassen. Das klingt einfach aber ich hab es noch nicht hinbekommen.
ich habe schon einiges Probiert, auch unter Update ThingSpeak bei mir im Code einfach die Funktion einweiters mal aufzurufen mit einen anderen Übergabe wert aber das hat nicht geklappt. Hat jemand damit schon mal Erfahrung von Euch oder eine Idee?
Vielen Dank im voraus an euch.
//------------------------------------Bibliotheken--------------------------------------------------------------------------------------------------------------
#include <SPI.h>
#include <GSM.h>
//------------------------------------Definitionen für SIM-Karte------------------------------------------------------------------------------------------------
#define PINNUMBER "XXX"
#define GPRS_APN "internet.t-mobile"
#define GPRS_LOGIN "t-mobile"
#define GPRS_PASSWORD "XX"
//------------------------------------Variablen für SIM-Karte---------------------------------------------------------------------------------------------------
GSMClient client;
GPRS gprs;
GSM gsmAccess;
uint16_t reset = 0;
int Wert1 = 0; //Startwert auf 0 gesetzt
int WEert1_alt;
boolean neuWert = true;
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;
//------------------------------------Variablen für Datencloud--------------------------------------------------------------------------------------------------
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "XXX";
const int updateThingSpeakInterval = 16 * 1000;
void setup() {
Serial.begin(9600); // Initialiesiere Serial port (Baudrate:9600)
pinMode(9, OUTPUT);
pinMode(2, INPUT);
startGSM();
}
void loop() {
String analogValue = String(Wert1, DEC);
if (client.available())
{
char c = client.read();
Serial.print(c);
}
// Disconnect from ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.print(Wert1);
Serial.println("...disconnected");
Serial.println();
client.stop();
neuWert = false;
}
// Update ThingSpeak
if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval) && neuWert == true && Wert1 > 0)
{
updateThingSpeak("field1="+analogValue);
}
// Check if Arduino Ethernet needs to be restarted
if (failedCounter > 3 )
{
startGSM();
}
lastConnected = client.connected();
}
void startGSM() {
boolean notConnected = true;
Serial.println("try to connect to GSM...");
while(notConnected) {
if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY))
notConnected = false;
else {
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("Connected");
}
void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");
client.print(tsData);
lastConnectionTime = millis();
if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
failedCounter = 0;
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();
lastConnectionTime = millis();
}
}