Синхронизация времени

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Gibyte, 5 фев 2017.

  1. Mihail Vasilev

    Mihail Vasilev Нерд

    Это на родной для esp-шки lua. Ок, коротенько. Но оно сломается, когда/если яндекс решит отдать неправильную дату в заголовке. То есть вообще-то они не обязаны вам там отдавать корректную дату.
     
  2. ИгорьК

    ИгорьК Гуру

    Много что может сломаться, если ntp сервер будет перегружен.
    А что касается lua, то этот язык гораздо ближе к js чем си.
     
  3. Mihail Vasilev

    Mihail Vasilev Нерд

    Ну, вы можете взять pool.ntp.org и пройтись по всем.
     
  4. sys

    sys Злобный Буратино Модератор

  5. Gibyte

    Gibyte Нуб

    Заказал плату Ethernet shield.

    Т.к. погрешность в 5-10 мин не страшна буду реализовывать по средствам http запроса.
     
  6. Gibyte

    Gibyte Нуб

    Реализовал следующий код:

    function time() {
    var http = require("http");
    http.get("http://10.25.117.36", function(res) {
    res.on('data', function(data) {
    console.log(data);
    });
    });
    }

    SPI2.setup({baud: 3200000, mosi: B15, miso: B14, sck: B13});
    var eth = require('WIZnet').connect(SPI2, P10);
    eth.setIP();
    time();

    Данный код выводит в консоль время подскажите, а как заставить функцию time() возвращать время переменную.

    Страница http://10.25.117.36 показывает время в виде "2017-02-19 12:07:19"
     
  7. Mihail Vasilev

    Mihail Vasilev Нерд

    Это javascript, он асинхронный. Разнесите логику так, чтобы вам время обрабатывать в callback-e (вместо console.log) - и будет счастье.
     
  8. Mihail Vasilev

    Mihail Vasilev Нерд

    Но правильный способ - инициализировать системные часы по сети, а потом выдергивать время из бортовых часов - http://www.espruino.com/clock
     
  9. Gibyte

    Gibyte Нуб

    Спасибо, победил.

    function time() {
    var http = require("http");
    var oHttp = http.get("http://10.25.117.36/grouroom/time.php", function(res) {
    res.on('data', function(data) {
    year = data[0] + data[1] + data[2] + data[3];
    mouns = data[5] + data[6];
    day = data[8] + data[9];
    hour = data[11] + data[12];
    minute = data[14] + data[15];
    second = data[17] + data[18];
    strDate = year+"-"+mouns+"-"+day+"T"+hour+":"+minute+":00";
    prsDate = Date.parse(strDate);
    today.setClock(prsDate);
    console.log(today.getDate().toString());
    });
    });
    }

    SPI2.setup({baud: 3200000, mosi: B15, miso: B14, sck: B13});
    var eth = require('WIZnet').connect(SPI2, P10);
    eth.setIP();
    time();