Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Парсер курсов валют ЦБ РФ

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Парсер курсов валют ЦБ РФ

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
4 Beiträge 3 Kommentatoren 2.9k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • I Offline
    I Offline
    instalator
    schrieb am zuletzt editiert von
    #1

    Парсит валюты с сайта ЦБ РФ.

    `var url = 'http://www.cbr.ru/scripts/XML_daily.asp';
    var request = require('request');
    
    schedule("0 * * * *", function () {
        parsevalute();
    });
    
    function parsevalute(){
        url = url;
        log('Идем на сайт ЦБ - '+url);
        var options = {
            url: url,
        };
        // Отправка данных методом POST.
        request(options, function (error, response, body, callback) {
            if (!error && response.statusCode == 200) {
              //  log('Код ответа от сервера'+response.statusCode);
               // log('Ответ от ЦБ: '+body);
            // Парсим данные
             var Valute = body.match(/<charcode>(.*)<\/CharCode>/g);
             var Nominal = body.match(/<nominal>(.*)<\/Nominal>/g);
             var Name = body.match(/<name>(.*)<\/Name>/g);
             var Value = body.match(/<value>(.*)<\/Value>/g);
             var result = [];
                for(var i = 0; i < Valute.length-1; i++) {
                    result.push({
                        Valute: Valute[i].replace(/<charcode>/g, "").replace(/<\/CharCode>/g, ""),
                        Nominal: Nominal[i].replace(/<nominal>/g, "").replace(/<\/Nominal>/g, ""),
                        Name: Name[i].replace(/<name>/g, "").replace(/<\/Name>/g, ""),
                        Value: Value[i].replace(/<value>/g, "").replace(/[,]+/g, '.').replace(/<\/Value>/g, "")
                    });
                    //Course = parseFloat(result[i].Value)/parseFloat(result[i].Nominal);
                    createState('Valuta.'+Valute[i].replace(/<charcode>/g, "").replace(/<\/CharCode>/g, ""), '');
                    setState ('Valuta.'+Valute[i].replace(/<charcode>/g, "").replace(/<\/CharCode>/g, ""), (parseFloat(result[i].Value)/parseFloat(result[i].Nominal)));
    
                }
            }
        });
    }</charcode></charcode></value></name></nominal></charcode></value></name></nominal></charcode>`
    
    Обновил код, исправил небольшие недочеты.
    
    Для програваривания курсов пишем:
    `~~[code]~~setState ('sayit.0.tts.text', 'Курс доллара '+ (getState("javascript.0.Valuta.USD").val.toFixed(2)).toString().replace(/[.]+/g, ',')+' руб.');[/code]`
    
    **~~[b]~~ОБНОВЛЕННАЯ ВЕРСИЯ СКРИПТА:[/b]**
    
    >! ~~[spoiler]~~`~~[code]~~var url = 'https://www.cbr-xml-daily.ru/daily_json.js';
    var request = require('request');
    >! if(getState("javascript.0.Valuta.USD").val === null || !getState("javascript.0.Valuta.USD").val){
        log('Нет состояния javascript.0.Valuta.USD');
        parsevalute();
    } 
    >! schedule("0 7,16,20 * * 1-5", function () {//"0 * * * *"
        parsevalute();
    });
     parsevalute();
    function parsevalute(){
        url = url;
        log('Идем на сайт ЦБ - '+url);
        var options = {
            url: url
    
        }; 
        request(options, function (error, response, body) {
            log('Получен ответ от ЦБ (' + response.statusCode + ')');
            if (!error && response.statusCode == 200) {
                var obj;
                try {
                    obj = JSON.parse(body);
                    if (!obj.Valute.USD.Value || !obj.Valute.EUR.Value) {
                         throw new SyntaxError("Данные некорректны");
                    } else {
                        //log('Ответ от ЦБ: ' + obj.Valute);
                        obj = obj.Valute;
                        for (var key in obj) {
                            if(obj.hasOwnProperty(key)){
                                var course = parseFloat(obj[key].Value)/parseFloat(obj[key].Nominal);
                                createState('Valuta.' + key, 0, {name: obj[key].Name});
                                setState ('Valuta.' + key, course);
                            }
                        }
                        log('Курсы валют обновлены');
                    }
                } catch (err) {
                    log("Ошибка парсинга! - " + JSON.stringify(err));
                    result = null;
                }
            }
        });
    }
    [/code]`[/spoiler][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
    

    Высокий уровень Децибел вреден для здоровья!

    http://blog.instalator.ru/

    1 Antwort Letzte Antwort
    0
    • I Offline
      I Offline
      instalator
      schrieb am zuletzt editiert von
      #2

      Добавил в шапку обновленную версию скрипта

      Высокий уровень Децибел вреден для здоровья!

      http://blog.instalator.ru/

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        silverow
        schrieb am zuletzt editiert von
        #3

        Расскажите как правильно пользоваться, пожалуйста. В скрипты добавил, запустил, переменные создались. Будет ли теперь само автоматом обновляться или нужно, что то сделать еще?

        P.S. может есть вариант с биржевыми курсами и стоимостью акций?

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          Pooh
          schrieb am zuletzt editiert von
          #4

          … schedule("0 7,16,20 * * 1-5", ...

          Настрой здесь как нужно (формат cron)

          https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
          https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
          https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
          https://www.timestope.com/freepooh - witness code: freepooh

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          602

          Online

          32.5k

          Benutzer

          81.7k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe