Время что дышло

Просмотр 15 сообщений - с 31 по 45 (из 56 всего)
  • Автор
    Записи
  • #39465
    a80808
    Участник

    Спасибо!

    #39466
    Mikhail
    Модератор

    При создании архивного среза в драйвере он привязывается не напрямую к каналам, а к тегам устройства. Теги уже привязываются к каналам автоматически при инициализации логики.

    #39470
    manjey73
    Участник

    @mikhail тут немножко подробнее.

    драйверу при создании slice недостаточно, что в тегах устройства в Сервере указана маска архивов?

    В моем случае создан часовой архив и снята галочка «По умолчанию», чтобы в архив не писались остальные каналы.
    Как-то выудить маску из Сервера можно? чтобы не указывать в настройках опроса, а оно само подхватывало?

    #39472
    manjey73
    Участник

    Время в верней строке ?

    1

    Я уже совсем запутался. Время в верхней строке какое ?

    #39473
    manjey73
    Участник

    А пир чтении из БД на 00:00 по UTC мы тут

    Получается время в верхней строке Московское? раз у меня часы (ПК синхронизирован по ntp) а при вытаскивании на 00:00 часов из БД данных оно показывается в 3:00 по Москве.
    И время ПК и в верхней строке совпадает с моим Московским.

    #39479
    manjey73
    Участник

    Ёшкин кот… я понял проблему со временем, которая происходит. наконец-то Семён Семёныч! 🙂

    При настройке формата Дата, Время, Дата и Время срабатывает преобразование за счет выставленного времени для Web сервера. (в моем случае +3 часа, ч.п. Москва)
    Чтобы на мнемосхему вывести текущее время для своего ч.п. надо ставить формулу DateTime.UtcNow — логично, учитывая, что время сервера по UTC

    А вот в другом случае, если проще выразиться ВРЕМЯ является именем нарицательным и не должно видоизменяться средствами WEB. Например время прибора в моем случае.

    Скрин в в этом посте это прекрасно демонстрирует.

    Теперь вопрос — каким образом это обойти в срезе ?

    В общем мне необходимо в ячейке отображать нарицательное время БЕЗ ИЗМЕНЕНИЙ.
    Возможно ли добавить в Форматы другие типы Дата, Время, Дата и Время чтобы web их не менял ?
    и желательно без костылей в виде формул в канале… потому что это частое явление на самом деле.

    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    #39483
    Romiros
    Участник

    У прибора есть свое локальное время. Драйвер его забирает, переводит в UTC и кладет в БД сервера. Если в web другой часовой пояс, то естественно и время будет другое. Если нужно подгонять под время сервера, то в драйвере надо учитывать часовой пояс сервера. Все же логично вроде?

    #39486
    manjey73
    Участник

    У прибора есть свое локальное время. Драйвер его забирает, переводит в UTC и кладет в БД сервера

    Все так и есть, читаю время счетчика и архива, отнимаю 7 часов (добавил настройки для этого) и записываю в БД по времени UTC.

    Но проблема в том, что время считанного архива, время счетчика я должен отображать таким, какое оно есть в приборе — это переменная другого типа (нарицательного) хоть и время.

    И из-за этого я постоянно то не то, то не там делал в коде…

    Вот сейчас на счетчике 14:20 и архив 14:00 — вот оно так и должно отображаться без махинаций по приведению к UTC, потом к локальному времени клиента.
    А Web этого не позволяет…

    #39487
    manjey73
    Участник

    зы, в общем покажите дураку пример кода драйвера для Коммуникатора при условии.

    1. прибор в зоне +7
    2. Коммуникатор 1 — в зоне -2 часа
    3. Коммуникатор 2 — в зоне +3 часа
    4 Клиент 1 — зона +4 часа
    5 Клиент 2 — зона +3 часа

    Я не понимаю, как в драйвере это все провернуть, чтобы все корректно отображалось в первую очередь.. Запись в БД то не проблема, знаем зону, выставили в настройках.
    А вот с остальным при формировании срезов и DeviceData.Set как ?

    #39510
    Mikhail
    Модератор

    Например время прибора в моем случае.

    На данный момент преобразовать время в строку по формуле. Чтобы можно было выбирать, преобразовывать ли время к конкретном канале, нужен какой-то признак в базе.

    #39511
    manjey73
    Участник

    нужен какой-то признак в базе — Форматы — как идет их обработка при использовании «Дата и время» G, d, T ?

    есть там вариант добавить «pureG» — G в чистом виде и т.д.?

    Если сервер и web будет знать через Форматы, что не надо преобразовывать, то и не будет этого делать.

    #39579
    Mikhail
    Модератор

    G, d, T — это форматы, которые поддерживаются .NET. Добавлять некие секретные строки, которые будут интерпретироваться специфическим образом — это не наш метод. Либо в БД нужно добавить поле, либо сделать настройку веб-приложения в целом.

    #39585
    manjey73
    Участник

    Я немного про другое 🙂 секретный код это то же самое что и G, d, T
    только с префиксом, который поймет и Сервер и WEB, или только WEB (кому это требуется) чтобы не преобразовывать дату к своей локальной зоне.

    ну пример — прификсом пусть будет - типа -G, -T, -d, Web видит это префикс, удаляет его и понимает как отображать время и дату, согласно форматированию .NET но не запускает процесс преобразования к локальному времени. всё

    Ну что-то вроде лайфхака, багофичи, назовите как угодно.
    Все зависит от обработки этого момента в коде (не смотрел и не искал).
    Думаю такая доработка не сильна сложна в плане небольшой модернизации. Может я не прав и в коде это достаточно сложно сделать?

    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    #39587
    manjey73
    Участник

    з.ы. я к тому, что по отношению ко времени, подобный префикс и обработка в коде было бы полезным. Так как Время действительно может быть «нарицательной» переменной, которое нельзя менять. А вы его настройками локальной зоны WEB сервера под одну гребенку закинули.

    Ну и просто указать это в документации. А так же можно было бы использовать и внутри драйверов при создании каналов и т.д.

    #39593
    manjey73
    Участник

    1

    Дневной архив

    Вопрос, как настроить архив и правильно указывать в коде, чтобы запись попала на 23:00 ?

    Сейчас поставил смещение Дневного архива 23 часа
    В коде соответственно slice = new DeviceSlice(Дата 0:00:00 // где время даты равно 0:00:00

    Как писало в нули, так и пишет, в таблице соответственно на 3-х часах по Москве.

Просмотр 15 сообщений - с 31 по 45 (из 56 всего)
  • Для ответа в этой теме необходимо авторизоваться.