zwei Wert auf ThingSpeak übertragen mittels GSM Modul

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. :confused:
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(); 
  }
}

Ist Dein Google defekt? Für "thingspeak arduino sketch" findet man z.B. das hier.

Gruß Tommy

Hallo Tommy,
mein Google funktioniert noch ganz gut. Ich hab diese Seite bzw. die Bibliothek ThingSpeak.h auch schon entdeckt. Doch wer genau hinschaut erkennt das diese hauptsächlich für das Senden mit einen WIFI oder Ethernet Shield gemacht worden ist. Ich hab mit der Bibliothek schon gearbeitet und es geschafft zwei Werte zu übertragen aber leider nur einmal, die loop Funktion läuft nach dem übertragen der Werte leider nicht weiter. :frowning: Wieso das so ist noch nicht ganz verstanden. Wenn du dich mit der ThingSpeak.h auskennst kann ich dir den Code mit diesen Ansatz auch noch hochladen. Aber danke für dein Hinweis.
Gruß Flo

Nö, ich kenne mich damit überhaupt nicht aus. Es gibt übrigens noch eine Reihe weiterer Libs und auch Threads hier im Forum dazu. Das sollte nur ein Hinweis sein, die Suche zu intensivieren.

Ich halte nichts von diesen Clouddiensten. Wenn ich was hoch lade, dann in meine eigenen Datenbanken auf meinem Webspace. Deshalb beschäftige ich mich nicht mit solchen Diensten.

Gruß Tommy

Okay vielen dank erstmal vielleicht finde ich ja noch eine Möglichkeit das hin zu bekommen.

Die Lösung für das oben genante Problem ist wie folgt.
Mann schreibt beide Werte die Übertragen werden sollen in einen String und sendet diesen einen String.

String analogValue = String(Wert1, DEC);
String analogValue2 = String(Wert2, DEC);
senden="&field1="+analogValue+"&field2="+ analogValue2;

danach kann die Funktion updateThingSpeak(senden) aufgerufen werden und beide Werte werden übertragen und dem richtigen Feld zugewiesen.

Hi

Es gibt einen praktischen Befehl der nennt sich "Return".

Vielleicht wollte mann03 ja auf was ganz anderes antworten, ich sehe nämlich keinen sinnvollen Zusammenhang...