• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Помогите разобраться с кодом - Часы на ESP 8266 и матрице max 7219

pooll30

New member
Доброго времени суток! Прошу помочь разобраться с кодом.

Нашел в инете проект часов на 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();
}

// =======================================================================
 

enjoynering

Well-known member
еще советую поменять токоограничивающий резистор. китайцы ставят его на 3в/40мА. а сами матрицы обычно стоят 2.5в/20мА. можно конечно програмно, через регистр max7219 и встроенный шим, но если дать 100%, то можно спалить матрицу.
 
Сверху Снизу