blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Kurzy (krypto)mien - Arduino / ESP32 / ESP8266
pridal deadawp 15.11. 2019 o 0:20



Kurz meny je veľmi zaujímavá informácia, ktorá sa dá využiť v projekte s Arduinom, alebo vývojovou doskou z platformy od Espressifu. Existuje rada voľné dostupných a dokumentovaných API, ktoré je možné použiť pre získanie aktuálneho kurzu dvoch mien. Pre tento tutoriál som využil službu http://free.currconv.com/, ktorá ponúka prostredníctvom jednoduchého dopytu kurz dvoch mien v JSON formáte. Používateľ na prístup ku kurzom daných mien využíva svoj API kľúč a spomenuté meny v dopyte. Pre získanie kľúča stačí požiadať prostredníctvom formulára na stránke, vyžaduje iba e-mail. Pre tento tutoriál si ukážeme kurz medzi CZK a EUR-om. T.j. budeme načítavať hodnotu jedného eura v českých korúnách.

Služba currconv vo free programe je limitovaná na 60 dopytov za hodinu. V prípade prekročenia je používateľ zablokovaný do ďalšej hodiny. JSON je formát dát s hodnotou, ktorá prisĺúcha premennej. Premenná je zapísaná v úvodzovkách a celý balík dát je obsiahnutý v { } zátvorkách.

Výstup služby pre EUR_CZK kurz: {"EUR_CZK":25.574488}  
V našom prípade je číselná hodnota 25.574488 a premenná, ktorej hodnota prislúcha EUR_CZK. JSON si nájde uplatnenie predovšetkých v automatizačných systémoch, big data, databázach. Platforma Arduino, resp. ESP32 disponuje aj knižnicou ArduinoJson, ktorú je možné doinštalovať a prostredníctvom nej rozkladať celé polia s JSON dátami, avšak v tomto príklade využijeme iba funkciu substring objektu String na odrezanie prebytočných častí, t.j. {"EUR_CZK": }.

Mikrokontróler načíta do premennej Výstup služby ako reťazec, ktorý môžeme následne orezať. To znamená, že substring použijeme na znaky 11 - 20, čo vo výstupe vráti iba číselnú hodnotu, všetky znaky menej ako 11 a viac ako 20 sú orezané. Aby bol kurz použiteľnejší, pretypujeme ho na premennú typu float s dvomi desatinnými miestami (zohľadníme aj zaokrúhlenie). Na obrázku je možné vidieť výstup Serial Monitoru pre ESP32 a jeho príklad pre načítanie meny EUR - CZK.  

Ku službe currconv.com je možné pristupovať pod HTTP protokolom (využitie pre Arduino a Ethernet shield/modul, nepodporuje HTTPS) a HTTPS konektivitu pre ESP8266, ESP32. Vývojová doska ESP32 vyžaduje do programu importovať aj Root CA certifikát, v tomto prípade CloudFlare Inc ECC CA-2 (použitý v príklade). Pre ESP8266 je možné použiť fingerprint certifikátu v SHA1 formáte. 
Výstup pre serial monitor s HTTP hlavičkou a response:

Currconv.com má širokú paletu mien, ktoré je možné medzi sebou kombinovať a získať tak kurz. Kompletný zoznam možných mien (vrátane Bitcoinu) sú obsiahnuté na: https://free.currconv.com/api/v7/currencies?apiKey=sample-key-do-not-use. Získaný kurz je možné ďalej použiť, napríklad pre výpis na displej (TFT, LCD), odoslať ho do databázy, či inak použiť. 
Pripojenie na Curconv pre získanie kurzu BTC to EUR (Arduino + Ethernet):

Program pre ESP32 je možné nájsť v mojom Github repozitári: https://github.com/martinius96/CURRENCY-RATE-Arduino-ESP8266-ESP32/blob/master/ESP32.ino
Ďalšie projekty je možné nájsť aj na mojej stránke: https://arduino.php5.sk/



Prístupov 10931
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDUJETE
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Oplatí sa teplovodivá pasta z Aliexpress...
[ 4.4.2024] (príspevkov 0)
Recenzia 3D podznačky BEZ KOMPRESE
[ 4.4.2024] (príspevkov 0)
GTA IV fix spustenia na Windowse 10 N
[ 24.3.2024] (príspevkov 0)
RFID DOMINATOR licencia na predaj
[ 4.1.2024] (príspevkov 0)
ATtiny85 Digispark - programovanie, použ...
[ 28.12.2023] (príspevkov 0)
Prečo by som si už nekúpil ESPD-35 2.0 /...
[ 26.12.2023] (príspevkov 0)
ATtiny85 - programovanie Arduino as ISP
[ 19.12.2023] (príspevkov 0)
MasterTherm - webscraper ESP32
[ 25.11.2023] (príspevkov 0)
RFID DOMINATOR 2.0 - rozdiely s 1.0
[ 15.11.2023] (príspevkov 0)
Rozšírená realita (AR) - IoT dashboard
[ 29.10.2023] (príspevkov 0)