¿Cómo publicar varios valores en ThingSpeak?

-1

Puedo almacenar y acceder a los datos en la memoria interna de la placa de desarrollo RTC ESP8266 thing. Ahora estoy tratando de hacer un bucle con los datos almacenados en la memoria interna y publicar los datos en ThingSpeak. Sin embargo, solo puedo publicar el primer valor almacenado en la memoria RTC en los campos 1,2 y 3 de ThingSpeak. No puedo publicar el resto de los valores en ThingSpeak. El código que accede y publica los datos en ThingSpeak se encuentra a continuación. ¿Alguien puede ayudarme a resolver el problema?

       void connects() 
                 {


                    Serial.println("Connecting to ");
                    Serial.println(ssid);


                    WiFi.begin(ssid, pass);

                   while (WiFi.status() != WL_CONNECTED) 
                                   {
                                      delay(500);
                                      Serial.print(".");
                                  }
                            Serial.println("");
                            Serial.println("WiFi connected");


         if (client.connect(server,80))   //   "184.106.153.149" or 
                                                api.thingspeak.com
                  {  

          for(int i=1;i<6;i++){


               system_rtc_mem_read(100+i, rtcCel1, sizeof(rtcCel1));
               system_rtc_mem_read(110+i, rtcFah1, sizeof(rtcFah1));
               system_rtc_mem_read(120+i, rtcHum1, sizeof(rtcHum1));

                           float cel=*rtcCel1;

                           float fah=*rtcFah1;

                           float hum=*rtcHum1;



                        String postStr = apiKey;   
                         postStr +="&field1=";
                         postStr += String(cel); 
                         postStr +="&field2=";
                         postStr += String(fah);
                         postStr +="&field3=";
                         postStr += String(hum);
                         postStr += "\r\n\r\n";

                         client.print("POST /update HTTP/1.1\n");
                         client.print("Host: api.thingspeak.com\n");
                         client.print("Connection: close\n");
                         client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
          client.print("Content-Type: application/x-www-form-urlencoded\n");
                         client.print("Content-Length: ");
                         client.print(postStr.length());
                         client.print("\n\n");
                         client.print(postStr);

                Serial.print("Temperature: ");
                Serial.print(*rtcCel1);
                Serial.print(" *C ");
                Serial.print(*rtcFah1);
                Serial.print(" *F\t");
                Serial.print("Humidity: ");
                Serial.print(*rtcHum1);

                         Serial.println("%. Send to Thingspeak.");

             // thingspeak needs minimum 15 sec delay between updates, i've 
                set it to 30 seconds

                          delay(15000);

                        } 
                    }
      client.stop();

             //       Serial.println("Waiting...");

             // thingspeak needs minimum 15 sec delay between updates, i've 
                set it to 30 seconds
            delay(30000);   


   }
    
pregunta Ahmed

1 respuesta

0

Utilicé este código con la biblioteca oficial de thingspeak para arduino.

ThingSpeak.setField(1, temp);
ThingSpeak.setField(2, h);
ThingSpeak.setField(3, p);
ThingSpeak.setField(4, pt);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
    
respondido por el Coder_fox

Lea otras preguntas en las etiquetas