Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Arduino - nekomunikuje s api.thingspeak.com přes LTE T-mobile

Dobrý den / ahoj,
pro jednoho mého známého jsem vyrobil několik čidel ("wifi teploměrů") přes arduino (NodeMCU s wifi čipem). Jedná se o jednoduché zařízení, které pomocí senzoru zjišťuje v pravidelných intervalech teplotu a ta se následně odesílá na web thingspeak.com.

Čidel má už asi 15 a vše fungovalo dobře více než rok. Problém nastal až od chvíle, kdy došlo ke změně internetového poskytovatele (LTE pevný internet vzduchem od T-mobile). Od té doby se z čidel připojených přes tento internet nedostávají data na web. Má tam ještě LTE internet od O2, také wifi připojení od lokálního ISP a přes obě tyto linky čidla úspěšně komunikují. Problém je opavdu jen u toho T-Mobile.

V čidlech mám nahraný tento kód:

#include <DHT.h>

#include <ESP8266WiFi.h>

String apiKey = "C33IQJ957HL3CY98";

const char *ssid = "SSID";
const char *pass = "heslo";
const char* server = "api.thingspeak.com";

#define DHTPIN 0

DHT dht(DHTPIN, DHT11);

WiFiClient client;

void setup()
{
Serial.begin(115200);
delay(10);
dht.begin();

Serial.println("Pripojuji k ");
Serial.println(ssid);

WiFi.begin(ssid, pass);

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

}

void loop()
{

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t))
{
Serial.println("Chyba cidla");
return;
}

if (client.connect(server,80))
{

String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
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);

}
client.stop();

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

delay(900000);
}

Nejsem programátor, kód není můj. Vzal jsem ho z netu a pouze upravil.

Modem od T-Mobile je tohle https://www.velmo.cz/modemy/lte-modem-huawei-b2368-22/, ale v jeho nastavení jsem nenašel nic zvláštního, co by na to mohlo mít vliv.

Nejdřív jsem si myslel, že t-mobile nějak blokuje thingspeak.com, ale na web se normálně dostanu a když z pc zkusím poslat data ručně přes např.

GET http://api.thingspeak.com/update?api_key=C33IQJ957HL3CY98&field1=99

nebo přes postmana, tak se odeslaná hodnota normálně na webu zobrazí (testovací kanál tady https://thingspeak.com/channels/750566), což mě samozřejmě znejistilo.
No a tady jsem už bezradný. Pokud by se tu našel někdo, kdo by třeba jen tušil kde by mohla být chyba, budu vděčný za každou radu či nasměrování.

Předmět Autor Datum
Tak problém vyřešen úpravou kódu. client.print(postStr); } delay(5000); <----přidáno client.stop();… poslední
kravitch 11.04.2019 15:44
kravitch

Zpět do poradny Odpovědět na původní otázku Nahoru