Как запросить ленту cosm json с помощью библиотеки javascript cosm

Я новичок в веб-разработке, и я откусил больше, чем могу прожевать.

До сих пор я успешно создал веб-сайт для запроса последних данных на cosm.com.

Теперь я пытаюсь сохранить последние 10 точек данных из фида cosm.com в массив, используя библиотеку javascript cosm. Я не могу понять правильный синтаксис и не могу найти примеры, которыми можно было бы руководствоваться.

cosm.feed.history( 12068, duration:'30seconds', callback(data) );
console.log(data);

http://jsfiddle.net/spuder/29cFT/12/

http://cosm.github.com/cosm-js/docs/


ОБНОВЛЕНИЕ 2013-4-14 После реализации решения @bjpirt я заметил, что не возвращал «каждое» значение в течение указанного периода времени. Решил это, добавив в запрос «интервал: 0».

  cosm.datastream.history( cosmFeed1, cosmDataStream1, {duration:'60seconds', interval:0}, getHistory );

http://jsfiddle.net/spuder/ft2MJ/1/


person spuder    schedule 04.04.2013    source источник


Ответы (2)


@lebreeze прав со своим советом. Я заставил ваш JSFiddle работать так, что теперь он извлекает данные из Cosm API:

http://jsfiddle.net/nLt33/2/

Мне пришлось внести несколько изменений, чтобы заставить его работать, любое из которых вызвало бы у вас ошибки:

  • Идентификатор фида и идентификатор потока данных были неверными.
  • У вас не было функции обратного вызова
  • Параметры не были в объекте javascript

Кроме того, этот канал, похоже, не обновлялся в последнее время.

Вот обновленный код, который теперь работает нормально:

    //read only key
    cosm.setKey("-Ux_JTwgP-8pje981acMa5811-mSAKxpR3VRUHRFQ3RBUT0g");
    var cosmFeed = 120687;
    var cosmDataStream = "sensor_reading";

    $(document).ready( function()  {
        var success = function(data){
            for(var datapoint in data.datapoints){
                var dp = data.datapoints[datapoint];
                $('#stuff').append('<li>Value: ' + dp.value + ' At: ' + dp.at + '</li>');
            }
        }

        //Print out the last 10 readings or so
        cosm.datastream.history( cosmFeed, cosmDataStream, {duration:'1day'}, success ); 
    })

Трудно получить только последние x точек данных (это то, что мы должны изменить в API, я думаю) - обычно вы запрашиваете определенный период времени.

Надеюсь это поможет.

person bjpirt    schedule 05.04.2013
comment
Огромное спасибо. Моя конечная цель - увидеть, было ли какое-либо движение на датчике за последние 30 секунд. (которого в последнее время не было) Вытягивание последних 10 показаний может быть не лучшим способом, как вы предложили. Я изучу вариант периода времени. - person spuder; 06.04.2013

Возможно, вам придется обернуть параметры duration:'30seconds' json в {}.

Попробуйте что-то вроде:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://d23cj0cdvyoxg0.cloudfront.net/cosmjs-1.0.0.min.js"></script>
<script>..
  cosm.setKey( "APIKEY" );
  cosm.feed.history(40360, {duration:'30seconds'}, function(data){
    console.log(data);
    console.log(data.datastreams);
  });
</script>
person lebreeze    schedule 05.04.2013