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í.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny