Доброго времени суток! Прошу помочь разобраться с кодом.
Нашел в инете проект часов на esp 8266 и матрицах с max 7219, повторил его, все получилось, все работает, кроме получения курса валют( в оригинале пара PLN/USD). С момента выхода проекта прошло уже прилично времени и скорей всего изменилась структура сайта с которого берется курс валют и в коде нужно указать другие ориентиры на сайте где расположена искомая информация. В общем если подскажите как правильно настроить поиск нужных символов, где и что указать что бы код заработал буду очень Вам признателен! Вот этот код, который находит на сайте курс нужной валюты и выводит на дисплей часов:
// =======================================================================
const char* currencyHost = "cinkciarz.pl";
void getCurrencyRates()
{
WiFiClientSecure client;
Serial.print("connecting to "); Serial.println(currencyHost);
if (!client.connect(currencyHost, 443)) {
Serial.println("connection failed");
return;
}
client.print(String("GET / HTTP/1.1\r\n") +
"Host: " + currencyHost + "\r\nConnection: close\r\n\r\n");
//Serial.print("request sent");
int repeatCounter = 0;
while (!client.available() && repeatCounter < 10) {
delay(500);
Serial.println("c.");
repeatCounter++;
}
Serial.println("connected");
while (client.connected() && client.available()) {
String line = client.readStringUntil('\n');
// Serial.println(line);
int currIdx = line.indexOf("/kantor/kursy-walut-cinkciarz-pl/usd");
if (currIdx > 0) {
String curr = line.substring(currIdx + 33, currIdx + 33 + 3);
curr.toUpperCase();
line = client.readStringUntil('\n');
int rateIdx = line.indexOf("\">");
if (rateIdx <= 0) {
Serial.println("Found rate but wrong structure!");
return;
}
currencyRates = " PLN/" + curr + ": ";
if (line[rateIdx - 1] == 'n') currencyRates += char('~'+24); else currencyRates += char('~'+23); // down/up
currencyRates += line.substring(rateIdx + 2, rateIdx + 8) + " ";
line = client.readStringUntil('\n');
rateIdx = line.indexOf("\">");
if (rateIdx <= 0) {
Serial.println("Found rate but wrong structure!");
return;
}
if (line[rateIdx - 1] == 'n') currencyRates += char('~'+24); else currencyRates += char('~'+23); // down/up
currencyRates += line.substring(rateIdx + 2, rateIdx + 8);
currencyRates.replace(',', '.');
break;
}
}
client.stop();
}
// =======================================================================
Нашел в инете проект часов на esp 8266 и матрицах с max 7219, повторил его, все получилось, все работает, кроме получения курса валют( в оригинале пара PLN/USD). С момента выхода проекта прошло уже прилично времени и скорей всего изменилась структура сайта с которого берется курс валют и в коде нужно указать другие ориентиры на сайте где расположена искомая информация. В общем если подскажите как правильно настроить поиск нужных символов, где и что указать что бы код заработал буду очень Вам признателен! Вот этот код, который находит на сайте курс нужной валюты и выводит на дисплей часов:
// =======================================================================
const char* currencyHost = "cinkciarz.pl";
void getCurrencyRates()
{
WiFiClientSecure client;
Serial.print("connecting to "); Serial.println(currencyHost);
if (!client.connect(currencyHost, 443)) {
Serial.println("connection failed");
return;
}
client.print(String("GET / HTTP/1.1\r\n") +
"Host: " + currencyHost + "\r\nConnection: close\r\n\r\n");
//Serial.print("request sent");
int repeatCounter = 0;
while (!client.available() && repeatCounter < 10) {
delay(500);
Serial.println("c.");
repeatCounter++;
}
Serial.println("connected");
while (client.connected() && client.available()) {
String line = client.readStringUntil('\n');
// Serial.println(line);
int currIdx = line.indexOf("/kantor/kursy-walut-cinkciarz-pl/usd");
if (currIdx > 0) {
String curr = line.substring(currIdx + 33, currIdx + 33 + 3);
curr.toUpperCase();
line = client.readStringUntil('\n');
int rateIdx = line.indexOf("\">");
if (rateIdx <= 0) {
Serial.println("Found rate but wrong structure!");
return;
}
currencyRates = " PLN/" + curr + ": ";
if (line[rateIdx - 1] == 'n') currencyRates += char('~'+24); else currencyRates += char('~'+23); // down/up
currencyRates += line.substring(rateIdx + 2, rateIdx + 8) + " ";
line = client.readStringUntil('\n');
rateIdx = line.indexOf("\">");
if (rateIdx <= 0) {
Serial.println("Found rate but wrong structure!");
return;
}
if (line[rateIdx - 1] == 'n') currencyRates += char('~'+24); else currencyRates += char('~'+23); // down/up
currencyRates += line.substring(rateIdx + 2, rateIdx + 8);
currencyRates.replace(',', '.');
break;
}
}
client.stop();
}
// =======================================================================